身体性のあるシステム(例:自動車、ロボット)のカメラでの画像認識・3Dの認識では、どういう枠組みで、外界を認識するかという方法に3種類の方法がある。
- each frame
- multi frame
- multi view それらによってタスクの設定が異なり、実装されるアルゴリズムも異なってくる。
- 単眼カメラ
- 3Dカメラ
カメラからの立体形状の理解については、次の6通りの組合せがある。 6通りに分割された各範囲の中では、カメラやアルゴリズムが置換え可能であることを期待する。 6通りについてそれぞれ、利点・欠点が異なる。
これらの理解は、3D形状の理解だけではなく、物体検出・セグメンテーション・追跡・姿勢推定・行動分類・行動予測などさまざまな画像認識タスクの場合でも分類される。
mono camera | stereo camera (3D camera) | |
---|---|---|
each frame | (1) | (2) |
multi frame | (3) | (4) |
multi view | (5) | (6) |
- 利点:
- 枠組みが簡単になる。単一フレームで処理ができるので、単一フレームで結果が出せる。他の処理と組合せやすい。
- 単一フレームで評価できるので、評価が簡単になる。
- 多様性のあるデータを処理する時に、独立なデータを増やしやすい。
- 欠点:
- 時系列的に安定しない。精度が出にくい。
- 単一フレームで可能な出力
- 単一の視点位置からのdepth画像、もしくはそれを変換した点群データになる。
- 利点:
- 複数フレームの情報を使うので、時系列的に安定しやすい。
- 対象物とカメラ間の相対的な移動を検出できる。
- ベイス推定を用いることで、それまでに観測した範囲だけを使って、尤もらしい値を返すことができる。
- 欠点:
- 複数フレームを使う分だけ処理が複雑になりやすい。
- 最新フレームで可能な出力
- 最新フレームの視点位置からのdepth画像、もしくはそれを変換した点群データになる。
- 独立性のある十分な数のデータがある。
- 利点:
- 十分にまんべんなく収集されたデータを使うので、3Dの復元が容易になっていることが期待される。
- 十分に数が集まってから復元に着手するので、無駄な作業が発生しない。
- 欠点:
- 一度に大量のデータを処理するために、メモリの消費量・計算量が大規模になってしまう。
- リアルタイム性を求めることはできない。
- 課題:
- 動いてかつ変形している物体の扱いが難しい。
- 何を実施し、何を実施しないのか選択が難しい。
- 最新フレームで可能な出力
- 最新フレームの視点位置からのdepth画像、もしくはそれを変換した点群データになる。
- case2の場合に比べて、物体の見えている情報が多いので、点群としての欠損が少ない。
(1) 単眼深度(depth)推定
- paperswithcode Monocular Depth Estimation 最近、伸びている分野。単眼カメラでdepthを算出できる。 学習によって単眼カメラの画像からdepthを推定するもの。 (ライブラリ自体は視差相当量を出すものになっている。そのため深度の絶対値は不明である)
(2) stereo libraries 従来は、ステレオ計測の手法によって算出されるもの。 近年は対応点がとれない領域に対しての深層学習(もしくはViT)によって推測されるものになっている。
(3) Dynamic-multiframe-depth
単一フレームでの単眼深度推定では、時系列としての安定性が欠けている場合が多いです。 そのため、移動方向や速度を算出するには、不安定すぎて使いものにならない。 人が対象物への絶対的な深度を推定できているとは、私には思えない。 できているのは、対象物間の深度の大小関係、深度の時系列的な安定性であると思う。 そのできている範囲の中でコーヒカップの位置と自分の手の位置とを評価し、 自分の手の位置を補正するように動かす。
(4) 複数フレームでのステレオ画像を用いた復元 注意:multi-frame でのデータセットの例が、圧倒的に車載カメラに偏っている。 そのため、ロボットの頭部で見る画像がロボットの歩行や頭部の姿勢変化によって変わるような動画での例が 少なそうである。
(5) 通常の多視点形状復元 どうしても、計算量が多くなりがちである。 そのため実機での動作は、特定のタイミングに実施し、計算終了を待つ必要がであるだろう。 計算量を減らすためには、以下のような取り組みがされている。
- 事前にカメラパラメータを明らかにしてある。
- 撮影したタイミングにおけるカメラ位置がわかるように、床面の数カ所にマーカーを配置している。
- カメラ自体IMUをもたせて、カメラの姿勢がわかるようにしている。
その単一フレームでは見えていない領域についても点群を持っているため、 その情報を利用した動作生成ができる。
ただ、この分野もiPhoneという組み込みデバイスの中で実現できる時代になっている。 iPhoneでできるのならば、他の組み込みデバイス(例 Jetson AGX Orin)でも実現できる可能性があるだろう。
動いている対象が入っているときの3D再構築の例
(6) ステレオカメラを用いた多視点形状復元 上記の例では、単一カメラであったものを、ステレオカメラで毎フレーム取得することで、 単眼カメラの場合よりも少ないフレーム数での3次元形状の復元を目指す。