見出し画像

VPS(Visual Positioning Service/System)について調べる

GPS(Global Positioning System)が地球の位置を特定するのに対し、VPSはスマートフォンやスマートグラスのカメラで得た画像から生成した3Dメッシュを用いて、向きや方位を含む高精度な位置情報を特定する技術を表す。

これがどういう技術を使って成立しているのかに興味があり、ググって調べたメモ。

## Area Learning

Area Learningをオンにすると、Tango搭載デバイスのカメラから見える特徴的な物体(ランドマーク)をいくつか記憶し学習します。
収集したデータをArea Description File(ADF)とも表現しています。そして、再び同じ空間に行くと保存されたADFを読み込み、前見たぞと認識するという流れです。
ADFは、写真のように画像で保存されるのではく、大量の点で物体を記憶します。
Area Learningは、2つのことを記憶します。1つは点群に見るランドマーク、もう1つは数学的記述(同じ空間であれば見てる角度が任意でも配置関係・距離を計算し同じ場所だと認識する技術)です。

## Google AI Blogの記事

そもそもVPSというワードを知ったのは、Googleが2017年にTango絡みで発表した技術の紹介記事から。

で、そのGoogleのAIチームの公式ブログに記事があった。

VPS first creates a map by taking a series of images which have a known location and analyzing them for key visual features, such as the outline of buildings or bridges, to create a large scale and fast searchable index of those visual features. To localize the device, VPS compares the features in imagery from the phone to those in the VPS index. 

(Google翻訳: VPSはまず、既知の位置を持つ一連の画像を取得し、建物や橋の輪郭などの主要な視覚的特徴についてそれらを分析することでマップを作成し、それらの視覚的特徴の大規模で高速な検索可能なインデックスを作成します。 デバイスをローカライズするために、VPSは電話の画像の機能とVPSインデックスの機能を比較します。 )

"key visual features, such as the outline of buildings or bridges",  "create a large scale and fast searchable index of those visual features" このへんもっと具体的にい知りたい。

To deliver global localization with VPS, we connected it with Street View data, making use of information gathered and tested from over 93 countries across the globe. This rich dataset provides trillions of strong reference points to apply triangulation, helping more accurately determine the position of a device and guide people towards their destination.

(Google翻訳: VPSでグローバルなローカライズを実現するために、世界中の93か国以上から収集およびテストされた情報を活用して、ストリートビューデータに接続しました。 この豊富なデータセットは、三角測量を適用するために数兆個の強力な参照ポイントを提供し、デバイスの位置をより正確に決定し、人々を目的地に導くのに役立ちます。)

画像1

(同記事より)

The problem is that the imagery from the phone at the time of localization may differ from what the scene looked like when the Street View imagery was collected, perhaps months earlier. For example, trees have lots of rich detail, but change as the seasons change and even as the wind blows. To get a good match, we need to filter out temporary parts of the scene and focus on permanent structure that doesn't change over time. That's why a core ingredient in this new approach is applying machine learning to automatically decide which features to pay attention to, prioritizing features that are likely to be permanent parts of the scene and ignoring things like trees, dynamic light movement, and construction that are likely transient. This is just one of the many ways in which we use machine learning to improve accuracy.

(Google翻訳: 問題は、ローカライズ時の携帯電話からの画像が、おそらく数か月前にストリートビュー画像が収集されたときのシーンとは異なる場合があることです。 たとえば、木には多くの豊かな詳細がありますが、季節が変わると風が吹くと変化します。 良好な一致を得るには、シーンの一時的な部分を除外し、時間とともに変化しない永続的な構造に注目する必要があります。 このため、この新しいアプローチの中心的な要素は、機械学習を適用して、注意を払う機能を自動的に決定し、シーンの永続的な部分である可能性が高い機能に優先順位を付け、木、動的な光の動き、建設のようなものを無視することです 一時的。 これは、機械学習を使用して精度を向上させる多くの方法の1つにすぎません。)

## 関連する論文を検索してみる

技術の概要についての情報は得られたが、結局のところ具体的な実装手法がわからない。たとえばあらかじめ現実世界の3Dモデルデータを持っているとして、リアルタイムにカメラ画像から生成したメッシュとどう照合して位置を特定するのか、とか。

Google Scholarで"visual positioning smartphone", "3d mesh search"等々のキーワードで論文検索してみたらぞろぞろと関連論文が出てきたが、まずは概要を掴みたいので日本語で検索してみた。

ここから先は

1,418字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/