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
    2023.06.02
    @tattaka_sun
    株式会社ディー・エヌ・エー + GO株式会社
    最近のVisual Odometry
    with Deep Learning

    View Slide

  2. AI
    所属:GO株式会社
    興味:Computer Vision・Computer Graphics・Deep Learning
    文責:@tattaka_sun

    View Slide

  3. AI
    ● 2フレーム以上のカメラ画像間の相対的な姿勢を
    追跡するタスク
    ● 初期位置から姿勢の変化を積分していくことで大局的な
    カメラの自己位置を求めることができる
    Visual Odometryって何?

    View Slide

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

    View Slide

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

    View Slide

  6. 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

    View Slide

  7. AI
    ● 精度
    ○ Hybrid >= Traditional > Supervised > Unsupervised
    ● データ要件(左になるほどゆるい)
    ○ Unsupervised = Hybrid(手法による) > Traditional > Supervised
    ● 複雑さ (左になるほど単純)
    ○ Supervised > Unsupervised > Hybrid >= Traditional
    それぞれの手法の性能比較(一般論としての傾向)

    View Slide

  8. AI 8
    Unsupervised Visual Odomety

    View Slide

  9. 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

    View Slide

  10. AI
    ● 論文名:
    ”Unsupervised Learning of Depth and Ego-Motion from Video”
    ● 単眼カメラ動画のみから深度情報とカメラの姿勢の変化を推定するこ
    とができる手法
    SfmLearner: Unsupervisedな手法の基本系

    View Slide

  11. 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な手法の基本系

    View Slide

  12. 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な手法の基本系

    View Slide

  13. AI
    ● 動物体やオクルージョンへの対処ができていない
    ○ photometric lossは動物体やオクルージョンがないという仮定のため、
    depth・pose推定の精度悪化の原因
    ○ explainability maskで暗黙的に除外できているかもしれないが...
    ● シーケンス内でのスケールの一貫性が担保できていない
    ○ depth・poseともに何らかの制約をかけないと担保できない
    SfmLearnerの課題

    View Slide

  14. AI
    前ページの課題の解決に加えて......
    ● カメラパラメータの推定
    ● ネットワーク構造の改良
    ● 損失関数の改良
    ● 推論時のfinetune
    など
    その他のUnsupervised VOの改善

    View Slide

  15. 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)
    動物体やオクルージョンへの対処

    View Slide

  16. 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)
    スケールの一貫性の制約

    View Slide

  17. AI 17
    動物体やオクルージョンへの対処

    View Slide

  18. 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)

    View Slide

  19. AI
    ● DepthNetとPoseNet、FlowNetを同時に学習させる
    ● 従来のphotometric lossに加えてターゲット・ソース画像から生成したものを
    それぞれお互いに一貫性を保つような損失関数を設計
    ● この手法もoptical flowが前方向・逆方向で大きく矛盾する箇所を
    損失の計算に使わないようにしている
    optical flowを使った手法②: DF-Net (ECCV’18)

    View Slide

  20. AI
    ● instance segmentationを用いて事前に物体のmaskを作っておき、
    物体領域と物体領域じゃない領域を分けてpose推定をする
    ○ photometric lossは物体領域と非物体領域のwarp結果を合成して計算
    ● 物体はカメラの距離に反比例して大きく写るため、
    物体クラスごとの大きさを定めておき正則化として用いる
    ● L1 lossに加えてSSIM lossも使用
    ● オンラインでfinetune
    動物体の情報を外部から与える手法①:struct2depth (AAAI’19)

    View Slide

  21. AI
    ● カメラパラメータを推測するようにした
    ○ 推論時にカメラパラメータがわかっている場合は補正して
    さらにVOの精度を上げることができる
    ● photometric lossを計算する際に、推定したdepthよりも
    ワープした結果前景にくるpixelだけを使用する
    ● 物体のbboxを与え、動物体として別でmotionを計算
    ● Layer Normalizationの平均と分散にガウシアンノイズ乗算
    ○ そのままだと平均と分散が安定しすぎてよくないらしい(謎)
    動物体の情報を外部から与える手法②: Depth from Video in the Wild (ICCV’19)

    View Slide

  22. AI
    ● photometric lossを計算する際、
    参照フレームごとのlossを平均するのではなく最小値をとる
    ○ オクルージョンへの対処
    ● ターゲット画像とwarp画像のphotometric lossがターゲット画像とソース画像の
    photometric lossよりも低い場合のピクセルのみを使う
    ○ ほとんど画像の動きがない領域(≒低テクスチャ・カメラと等速運動している領域)
    を除外する
    ● depthを以下のように
    正規化する(フレーム間の
    深度の合計で深度にフレーム数
    をかけたものを割る)
    その他: MonoDepth2 (ICCV’19)

    View Slide

  23. AI 23
    スケールの一貫性の制約

    View Slide

  24. 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

    View Slide

  25. AI
    ● depthを点群に投影し、点群の位置合わせを通じてスケールの一貫性を強制する
    Scale-aware geometric (SAG) lossを提案
    ○ 点群間の座標の差を使う代わりに、最小二乗法でそれらの
    相対運動パラメータを推定
    ● depth推定にscale推定のheadを追加
    depth推定に制約をかける手法②: SAG Loss (ICCV’21)

    View Slide

  26. AI
    ● 速度のGTが使える場合、poseに関してのみ教師あり学習を行うことで
    スケール一貫性の問題を解決
    ○ 推定した並進tの大きさとターゲット・ソース画像の時間差 * v_gtの差分をとる

    ● PackNetと呼ばれるchannel方向を分割して
    3D Convで処理するアーキテクチャを提案
    pose推定に制約をかける手法: PackNet (CVPR’20)

    View Slide

  27. AI 27
    Hybrid Visual Odometry

    View Slide

  28. 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

    View Slide

  29. 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)

    View Slide

  30. 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)

    View Slide

  31. AI 31
    Visual Odometryの評価

    View Slide

  32. AI
    KITTI (Odometry benchmark)が多くの研究で使われている
    ● 22のステレオ画像シーケンスのdataset
    ○ trainセット(00~10)とvalセット(11~21)で構成される
    ○ valデータセットがkittiのLBに投稿しないとスコアリングされないため、
    最近の研究ではtrainセットの09, 10が検証用として使われることが多い
    データセットについて

    View Slide

  33. 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どちらで評価しているかは論文次第......
    よく使われる指標について

    View Slide

  34. AI
    2020年に出たsurvey論文によるとD3VOはじめとするHybrid VOが強い
    (以下のmetricはt_err)
    結局SOTAってどれなんですか?

    View Slide

  35. 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を求
    める手法が個人的には納得感があり面白かった
    まとめ・感想とか

    View Slide

  36. 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
    参考文献(スライド中に記載がないもののみ)

    View Slide