Upgrade to Pro — share decks privately, control downloads, hide ads and more …

最近のVisual Odometry with Deep Learning

tattaka
June 05, 2023

最近のVisual Odometry with Deep Learning

社内のCV輪講で使用した資料です。
2017年以降に発表されたDeep Learningを用いたVisual Odometryの手法についてまとめました。

tattaka

June 05, 2023
Tweet

More Decks by tattaka

Other Decks in Research

Transcript

  1. AI 処理の流れとしては、 1. カメラ画像の取得 2. カメラ画像の歪み補正 3. 画像特徴の抽出 4. 画像特徴の追跡

    5. RANZACなどを用い、特徴点の対応から基本行列を推定する 6. 基本行列から回転行列Rと並進ベクトルtを計算 7. 並進ベクトルを実世界のスケールに合わせて、 カメラの自己位置を計算 8. (後処理・最適化など) 従来のVisual Odometry
  2. AI 処理の流れとしては、 1. カメラ画像の取得 2. カメラ画像の歪み補正 3. 画像特徴の抽出 4. 画像特徴の追跡

    5. RANZACなどを用い、特徴点の対応から基本行列を推定する 6. 基本行列から回転行列Rと並進ベクトルtを計算 7. 並進ベクトルを実世界のスケールに合わせて、 カメラの自己位置を計算 8. (後処理・最適化など) 従来のVisual Odometry Deep Learningでどうにかする
  3. AI Deep Learningを用いたVisual Odometryの分類 Deep VO+Traditional VO 組み合わせ方はいろいろ • CNN-SVO

    (ICRA’19) • D3VO (CVPR’20) • DF-VO (ICRA’20) End-to-End VO Hybrid VO Supervised VO Unsupervised VO 教師ありでposeを推論 CNN+RNNの構造が多い • DeepVO (ICRA’17) • DeMoN (CVPR’17) 単眼 or stereoのビデオ だけで学習 大体depth推定とセット • SfmLearner (CVPR’17) https://arxiv.org/pdf/1709.08429.pdf https://arxiv.org/pdf/1704.07813.pdf https://arxiv.org/pdf/2003.01060.pdf
  4. AI • 精度 ◦ Hybrid >= Traditional > Supervised >

    Unsupervised • データ要件(左になるほどゆるい) ◦ Unsupervised = Hybrid(手法による) > Traditional > Supervised • 複雑さ (左になるほど単純) ◦ Supervised > Unsupervised > Hybrid >= Traditional それぞれの手法の性能比較(一般論としての傾向)
  5. AI Deep Learningを用いたVisual Odometryの分類 Deep VO+Traditional VO 組み合わせ方はいろいろ • CNN-SVO

    (ICRA’19) • D3VO (CVPR’20) • DF-VO (ICRA’20) Hybrid VO Unsupervised VO 単眼 or stereoのビデオ だけで学習 大体depth推定とセット • SfmLearner (CVPR’17) End-to-End VO Supervised VO 教師ありでposeを推論 CNN+RNNの構造が多い • DeepVO (ICRA’17) • DeMoN (CVPR’17) https://arxiv.org/pdf/1709.08429.pdf https://arxiv.org/pdf/1704.07813.pdf https://arxiv.org/pdf/2003.01060.pdf
  6. AI • 論文名: ”Unsupervised Learning of Depth and Ego-Motion from

    Video” • 単眼カメラ動画のみから深度情報とカメラの姿勢の変化を推定するこ とができる手法 SfmLearner: Unsupervisedな手法の基本系
  7. AI • ネットワーク構成 ◦ Depth CNN ▪ UNet likeな構造 ▪

    1枚の画像を入力として depth mapを出力する ◦ Pose CNN ▪ Encoder-Decoder構造 ▪ Encoderは連続した3フレームを入力として、中心のフレーム画像(t)と近傍 フレーム画像(t-1, t+1)間の相対pose (R, t)を出力する ▪ Decoderはexplainability maskを出力する • 深度画像の大きさに対応するsoftmaxで正規化されたベクトル • lossの計算に使う SfmLearner: Unsupervisedな手法の基本系
  8. AI • 学習の手順 1. depth mapと相対poseを出力する 2. depth mapと相対pose(t→t+1, t→t-1)を用いて、座標変換を行うこと

    でソース画像(t)から擬似的にターゲット画像(t-1, t+1)を生成する ▪ 3. lossの計算 ▪ 生成画像とターゲット画像のL1 loss (Photometric Loss) を計算 ▪ explainability maskが1の部分のみ計算 ▪ depth mapのsmoothさを計算 ▪ pixel値がなだらかになるように ▪ explainability maskが1に近づく ような正則化 4. modelを更新 SfmLearner: Unsupervisedな手法の基本系
  9. AI • optical flow推定の併用 ◦ GeoNet (CVPR’18) ◦ DF-Net (ECCV’18)

    ◦ GLNet (ICCV’19) ◦ Every Pixel Counts++ (TPAMI Vol. 42) • 動物体の情報を外部から与える ◦ Depth from Videos in the Wild (ICCV’19) ◦ struct2depth (AAAI’19) ◦ SGDepth (ECCV’20) ◦ PVO: Panoptic Visual Odometry (CVPR’23) • その他 ◦ MonoDepth2 (ICCV’19) ◦ ManyDepth (CVPR’21) 動物体やオクルージョンへの対処
  10. AI • stereoカメラの使用 ◦ UnDeepVO (ICRA’18) ◦ UnDEMoN (IROS’18) •

    depth推定に制約をかける ◦ vid2depth (CVPR’18) ◦ SC-Depth v1, 3 (NeurIPS’19, ArXiv’22 preprint) ◦ SAG(scale-aware geometric) Loss (ICCV’21) • pose推定に制約をかける ◦ Li et al. (ICCV’19) ◦ PackNet (CVPR’20) ◦ LTMVO (ECCV’20) ◦ MotionHint (ICRA’22) スケールの一貫性の制約
  11. AI • DepthNetとPoseNetを学習させ、depth mapと相対poseからoptical flowを計算 • 学習ずみのDepthNetとPoseNetから出力されたoptical flowを使い、 ResFlowNetを学習する ◦

    depthと同じく生成したflowをターゲットにwarpさせることで学習できる ◦ 順方向・逆方向のflowで矛盾が大きい箇所はlossの計算から除外 • 1段目のdepthとposeで大域的な動き・非動物体を担当させ、 optical flowで動物体を表現 optical flowを使った手法①: GeoNet (CVPR’18)
  12. AI • instance segmentationを用いて事前に物体のmaskを作っておき、 物体領域と物体領域じゃない領域を分けてpose推定をする ◦ photometric lossは物体領域と非物体領域のwarp結果を合成して計算 • 物体はカメラの距離に反比例して大きく写るため、

    物体クラスごとの大きさを定めておき正則化として用いる • L1 lossに加えてSSIM lossも使用 • オンラインでfinetune 動物体の情報を外部から与える手法①:struct2depth (AAAI’19)
  13. AI • カメラパラメータを推測するようにした ◦ 推論時にカメラパラメータがわかっている場合は補正して さらにVOの精度を上げることができる • photometric lossを計算する際に、推定したdepthよりも ワープした結果前景にくるpixelだけを使用する

    • 物体のbboxを与え、動物体として別でmotionを計算 • Layer Normalizationの平均と分散にガウシアンノイズ乗算 ◦ そのままだと平均と分散が安定しすぎてよくないらしい(謎) 動物体の情報を外部から与える手法②: Depth from Video in the Wild (ICCV’19)
  14. AI • photometric lossを計算する際、 参照フレームごとのlossを平均するのではなく最小値をとる ◦ オクルージョンへの対処 • ターゲット画像とwarp画像のphotometric lossがターゲット画像とソース画像の

    photometric lossよりも低い場合のピクセルのみを使う ◦ ほとんど画像の動きがない領域(≒低テクスチャ・カメラと等速運動している領域) を除外する • depthを以下のように 正規化する(フレーム間の 深度の合計で深度にフレーム数 をかけたものを割る) その他: MonoDepth2 (ICCV’19)
  15. AI • SC-Depth v1 ◦ 生成された深度画像のスケールが一貫しているかの拘束を追加 ◦ フレームI_aとI_bがあったとして、I_aから生成されたD_aをwarpさせたD_abと D_bを補完したD_b'を比較する ◦

    MonoDepth2と同様のマスキング • SC-Depth v3 ◦ 大規模データセットで教師あり学習されたdepth netの出力を pseudo labelとして使用 depth推定に制約をかける手法①: SC-Depth v1, 3 (NeurIPS’19, ArXiv’22) SC-Depth v1 SC-Depth v3
  16. AI Deep Learningを用いたVisual Odometryの分類 Deep VO+Traditional VO 組み合わせ方はいろいろ • CNN-SVO

    (ICRA’19) • D3VO (CVPR’20) • DF-VO (ICRA’20) Hybrid VO Unsupervised VO 単眼 or stereoのビデオ だけで学習 大体depth推定とセット • SfmLearner (CVPR’17) End-to-End VO Supervised VO 教師ありでposeを推論 CNN+RNNの構造が多い • DeepVO (ICRA’17) • DeMoN (CVPR’17) https://arxiv.org/pdf/1709.08429.pdf https://arxiv.org/pdf/1704.07813.pdf https://arxiv.org/pdf/2003.01060.pdf
  17. AI • 従来のDSO(Direct Sparce Odometry)とUnsupervised VOを融合させたHybrid VO ◦ 従来のDSO: ▪

    フレーム画像間のマッチング->差分計算 ->差分が最小化するようにカメラ位置をニュートン法で最適化 (back-end部分) ▪ poseの初期値を等速運動モデルと仮定してtrackingする • 最適化に用いるdepth, poseの初期値をNNの出力とする • 従来のphotometric lossは輝度の変化が一定であるという仮定があるが、 I_ab = a*I + bの形で定式化し、a, bを予測する • 教師なしで深度推定のuncertainty mapを推定することで、 動物体などの影響を軽減 Hybrid VO①: D3VO (CVPR’20)
  18. AI • DLでposeを直接推論するのはあまりロバストじゃない →optical flowを教師なしで学習するのは比較的正確かつ容易なため、 optical flowを使って画像間の疎な対応からpose変化を計算 (E-tracker) ・flowが正確でない時のみdepthを使って対応関係を計算 (PnP-tracker)

    • flowの順・逆方向の矛盾が少ない(≒非動物体・オクルージョン)ところから 対応点をサンプリング • SC-Depthの枠組を用いてdepthのスケールの一貫が取れているので、 計算したposeはdepthのスケールに準ずる • depth netの学習の際のみpose netを用いる Hybrid VO②: DF-VO (ICRA’20)
  19. AI • ATE (Absolute Trajectory Error) ◦ gtとpredの軌跡を最小二乗法を用いて 位置合わせしてから全ての差分の平均値をとる ◦

    単位は[m] • t_err (RTE, Relative Translation Error) ◦ 全シーケンスから800mまでの100mごとの平均並進誤差 ◦ 単位は[%] • r_err (RRE, Relative Rotation Error) ◦ 全シーケンスから800mまでの100mごとの平均回転誤差 ◦ 単位は[°/100m] ATE、t_err・r_errどちらで評価しているかは論文次第...... よく使われる指標について
  20. AI • Unsupervised VOにおける主な課題は ◦ 動物体・オクルージョンの対処 ◦ スケールの一貫性 • Unsupervised

    VOの出力を初期値として Traditional VOを用いるとより正確な推定ができる • supervised・unsupervisedともにVOのみをEnd-to-Endで 処理する手法についてはネタ切れ感がある ◦ そのためかCV系の学会での数は減ってきている気がする ◦ 3D visionに関してはNeural Radiance Fieldsなどに人気が移っている? (NeRF+SLAMとかはあるにはある) • poseを直接推定せずに、optical flowを経由して画像の対応点からposeを求 める手法が個人的には納得感があり面白かった まとめ・感想とか
  21. AI • Essential Matrix (基本行列) と R, T の復元 •

    patrick-llgc.github.io/Learning-Deep-Learning/ • Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras • A Benchmark for the Evaluation of RGB-D SLAM Systems 参考文献(スライド中に記載がないもののみ)