全3514文字
PR
この記事は日経Robotics 有料購読者向けの記事ですが
日経Robotics デジタル版(電子版)』のサービス開始を記念して、特別に誰でも閲覧できるようにしています。
本記事はロボットとAI技術の専門誌『日経Robotics』のデジタル版です
本記事はロボットとAI技術の専門誌『日経Robotics』のデジタル版です

 障害物や壁など対象物までの距離を測れるLIDARなどの深度(depth、距離)センサはロボットや自動運転車などで広く使われている。

 一般に深度センサは変調したレーザーなどを環境に照射し、その反射波の位相差や到達時間を測定することで深度を推定している。こうしたレーザーなどを自ら照射する方式はアクティブセンサと呼ばれる。生物ではコウモリなどが音波でこのような仕組みを利用している。

 一方で人や動物は視覚で物体までの距離を推定できる。これらは自らは光を照射せず、受信した光のみを使うため、パッシブセンサと呼ばれる。視覚による深度推定では、両眼視差を利用したり、自分が動いた時に近くのものより遠くのものがゆっくり動くといった現象を利用して推定している。

著者の岡野原大輔氏
著者の岡野原大輔氏

 対象物を片目で見たり、写真に写った物体までの距離を推定できることから分かるように、静止画像だけからも距離をある程度は推定できることが分かっている。

 本来であれば静止画像から深度は一意に求まらない不定問題であるが、物体や環境についての事前知識を組み合わせることで深度を推定している(これを利用して本当は凹んでいるのに盛り上がっているように見える騙し造形もある)。

 近年の深層学習(ディープラーニング)を中心とした画像認識技術の進歩により、深度センサを使わなくても静止画像から直接深度を推定でき、さらに自己位置、自己移動を推定できるようになってきた。カメラは安く広く普及しておりコストを下げられるだけでなく、アクティブセンサが使えないような環境(たとえば鏡や透明な物体がある場合など)でも深度が推定でき、望ましい。

 この実現のためには従来、カメラと深度センサを両方備えた撮影機器を用いて通常画像と深度(距離画像)のペアからなる教師ありデータを作成し、教師あり学習を行う手法が主流だった。しかし最近は教師ありデータを使わず、動画データだけを使って深度推定を学習する手法が登場し、教師あり学習に匹敵する性能を上げはじめている。この学習は教師なし学習といえるが、近いフレーム間で成立する制約を利用して教師を作っており、自己教師あり学習と呼ぶことができる。

 さらに深度だけでなく副産物として自己位置推定も同時に解くため、動画から3次元環境とカメラ位置を同時に推定するSfM(Structure from Motion)を解くことができる。YouTubeなどの記録動画は膨大に存在するため、自己教師あり学習による深度推定は、ほぼ無限の学習データを利用することができる。今回はこの自己教師あり学習による深度、自己位置推定について解説する。

運動視差を利用

 この学習ではある視点からみた景色が別の視点でどのように見え方が変わるのか(運動視差)ということを利用して深度の教師データを作成する1)

 まず、この背景にある画像処理の基礎について簡単に説明しよう。空間中のカメラがある方向を向いて画像を撮影したとする。このとき、空間中に焦点距離だけ離れた位置に仮想的なスクリーンを設置し、カメラの中心と光源を結ぶ光線とスクリーンとの交点を並べたものが、得られる画像となる。

 環境中のカメラの位置、姿勢を表す行列をカメラの外部パラメータ行列とよび、カメラの焦点距離や、カメラのスクリーンの原点からのオフセットから成る行列を内部パラメータ行列とよぶ。環境中の座標(世界座標と呼ばれる)に外部パラメータ行列をかけるとカメラ座標系での位置へ変換でき、さらにそれに内部パラメータをかけると画像中の位置へ変換できる。

 ある位置、姿勢で撮影した画像$I_t$中の位置$p_t$が、別の位置、姿勢で撮影した画像$I_s$中のどの位置$p_s$に対応するかは次の式で求められる。

\[p_s \sim KT_{t \to s} D K^{-1} p_t\]

ここで、座標は同次座標を使って表し、$K$は内部カメラ行列であり$D$は深度、$T_{t \to s}$は視点間の相対姿勢行列(つまり自己位置移動)である。この式は視点が移動した時、遠くにある点は少ししか動かず、近くにある点は大きく動くということをより一般化した式である。

 一般に対応する位置$p_s$は整数ではなく小数となる。一方で元の画像$I_s$は整数の位置上にある画素で表現されているため、厳密には小数で表される位置に対応する画素は存在しない。そこで、小数に応じた双線形補間を使い、対応する画素をその近傍の画素の重み付き平均として求める。この双線形補間はソフト注意機構と同じように、複数の対応する画素候補がある中でどれが実際に対応するのかを誤差逆伝搬法で学習するのを可能としている。

 カメラの見え方で色などが変わらないとするならば、この$p_s$からサンプリングされた画素値と、$p_t$の画素値は一致するはずである。この画素値が一致するかを損失関数とする。

\[\sum_p |I_t(p) - \hat{I}_s(p)|\]

ここで、$\hat{I}_s(p)$は対応する画素から計算された推定した画素値である。この画素値の計算には上記の対応する位置を求める式を利用する。この損失関数は$T$および$D$も変数とした関数である。

 モデルは$I_t$を入力として深度を出力するネットワーク(Depth CNN)と、$I_s$と$I_t$を入力として相対姿勢を推定するネットワーク(Pose CNN)を用意し、それらの出力を使って先程の損失関数を定義する。この損失を最小化するように誤差逆伝搬法を使ってDepth CNN、Pose CNNを同時に学習する。

 この自己教師あり学習ではいくつかの仮定をおいている。1つ目は動いている物体は存在しないということだ。実際の映像では人や車、揺れる葉など動く物体が存在し、それらの姿勢変化も考慮しなければ対応する位置は求まらない。そのため学習の際には移動しそうな物体をあらかじめマスクして削除しておき、静止している環境、物体だけを対象に損失を計算することで精度を上げられると報告している2-3)

 もう1つは、内部パラメータ行列$K$が既知であり固定であるということだ。1つのカメラだけを使い、焦点距離を変えない場合はこれが成り立つが、様々な動画を集めてきた場合や、同じカメラであっても焦点距離が変わる場合はこの仮定は成り立たない。そのため、内部パラメータ行列もデータごとに推定する手法が提案されている3)。一般に並進移動だけでは内部パラメータ行列は一意に決まらないが、回転を含む場合は内部パラメータ行列は一意に決まる。

 最後の仮定は物体の対応する箇所は視点が変わっても画素値が変わらないことだ。実際は真の光源との関係によって視点が変わると画素値が大きく変わる場合がありうる。元の画素値を直接使わずにニューラルネットワークの途中の特徴量などを比較するといったことが必要となるだろう。

今後は他のセンサ情報とも融合

本記事はロボットとAI技術の専門誌『日経Robotics』のデジタル版です
本記事はロボットとAI技術の専門誌『日経Robotics』のデジタル版です

 今後は動く物体がある場合もモデル化できたり、不確実性を考慮した深度推定もできるようになるだろう。また、必ずしも単眼カメラだけで処理する必要はなく、ステレオカメラや複数カメラ、速度情報2)、IMU、GPSなどと組み合わせてより精度を上げることも考えられる。

1)T. Zhou et. al.,"Unsupervised Learning of Depth and Ego-Motion from Video," CVPR 2017. https://people.eecs.berkeley.edu/~tinghuiz/projects/SfMLearner/cvpr17_sfm_final.pdf
2)V. Guizilini et al., "PackNet-SfM: 3D Packing for Self-Supervised Monocular Depth Estimation," https://arxiv.org/abs/1905.02693
3)A. Gordon et. al.,"Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras," https://arxiv.org/abs/1904.04998
岡野原 大輔(おかのはら・だいすけ)
Preferred Networks 取締役副社長
岡野原 大輔(おかのはら・だいすけ) 2006年にPreferred Infrastructureを共同創業。2010年、東京大学大学院博士課程修了。博士(情報理工学)。未踏ソフト創造事業スーパークリエータ認定。東京大学総長賞。