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

最近のVisual Odometryと Depth Estimation

最近のVisual Odometryと Depth Estimation

社内勉強会で使用した資料です。
RNNによる反復更新を用いたVisual Odometryとゼロショット深度推定の手法についてまとめました。

Shigeki Kobayashi

September 27, 2024
Tweet

More Decks by Shigeki Kobayashi

Other Decks in Research

Transcript

  1. AI 5 Visual Odometryの位置付け 櫻田健. “Visual SLAM入門〜発展の歴史と基礎の習得〜”. https://speakerdeck.com/ksakurada/visual-slamru-men-fa-zhan-falseli-shi-toji-chu-falsexi-de?slide=24 VO 動画

    局所的バンドル調整 (キーフレームのみ ) 累積誤差の修正はできない (保持するキーフレームは 直近数フレームのみで良い )
  2. AI 6 Visual Odometry (SLAM含む) の棲み分け 間接法 直接法 特徴点 ベース

    Optical Flow ベース E2E DROID-SLAM (NeutIPS’21) DPVO (NeutIPS’23) DSO (TPAMI’18) 深層学習あり LSD-SLAM (ECCV’14) DF-VO (ICRA’20) ORB-SLAM (TRO’15) MONO-SLAM (ICCV’03) CNN-SLAM (CVPR’17) 教師なし学習 DualRefine (CVPR’23) D3VO (CVPR’20) SfMLearner (CVPR’17) DVSO (ECCV’18) 間接法:特徴点マッチング or Optical Flowで推定した対応点を元に再投影誤差を最適化 (一部の研究は相対姿勢を推定のみ) 直接法:逆投影 or 再投影した画素の輝度値の誤差を最適化
  3. AI 7 Visual Odometry (SLAM含む) の棲み分け 間接法 輝度値ベース 特徴点 ベース

    Optical Flow ベース E2E DROID-SLAM (NeutIPS’21) DPVO (NeutIPS’23) DSO (TPAMI’18) 深層学習あり LSD-SLAM (ECCV’14) DF-VO (ICRA’20) CNN-SLAM (CVPR’17) 教師なし学習 DualRefine (CVPR’23) D3VO (CVPR’20) SfMLearner (CVPR’17) DVSO (ECCV’18) 間接法:特徴点マッチング or Optical Flowで推定した対応点を元に再投影誤差を最適化 (一部の研究は相対姿勢を推定のみ) 直接法:逆投影 or 再投影した画素の輝度値の誤差を最適化 本資料で紹介する研究 共通点:RNNを用いた反復更新 ORB-SLAM (TRO’15) MONO-SLAM (ICCV’03)
  4. AI ▪ RNNを用いて推論結果を反復して更新する ▪ ECCV’20のbest paperであるRAFTで提案された ▪ 上記をVisual SLAMに適応させたDROID-SLAMがすごい ▪

    単眼カメラ、ステレオカメラ (TartanAir、EuRoC)、RGB-Dカメラ(TUM-RGBD) など多様な データセットで当時のSOTAを達成 ▪ シミュレーターの合成画像から学習したモデルでも実画像データセットでSOTAを達成 ▪ VOとしても良好な性能を発揮し近年のベースラインとしてよく参照される 本資料ではDROID-SLAMおよびその派生のVOに関する研究について紹介 8 RNNを用いた反復更新 RNNを用いてOptical Flowを反復して更新している例 (RAFT)
  5. AI ▪ 多視点の深度マップとカメラ姿勢を同時最適化するE2EのSLAMシステムを提案 ▪ RNNで算出したOptical Flowに基づいて深度マップとカメラ姿勢を反復して多視点 最適化 a. 再投影で得た対応点の修正量をconvGRUで算出 b.

    修正された対応点と一致するように多視点の深度マップとカメラ姿勢の更 新量を密なバンドル調整で算出し、深度マップとカメラ姿勢を更新 c. 上記の2ステップを反復して行うことで深度マップとカメラ姿勢を最適化 9 DROID-SLAM (NeurlPS’21)
  6. AI ▪ 共通視野のあるフレームを特定するためフレームグラフを用いる ▪ ノード:フレーム ▪ エッジ:共通視野があるフレーム間 ▪ フレームグラフは学習時も推論時も出力のカメラ姿勢を用いて再計算される ▪

    既に地図作成された領域にカメラ姿勢が推論されたら、long range connectionをフレームグラフに追加してループクロージングを行う フレームグラフ
  7. AI ▪ 画像からの特徴抽出において重要なところはRAFTから引っ張ってきている ▪ 出力は1/8の密な特徴マップ ▪ ピクセル毎の相関 (correlation volume) を生成する

    ▪ 共有視野のあるフレームペアのそれぞれのフレームから抽出された特 徴ベクトルの内積 ▪ マルチスケールのcorrelation volumeを得るために最後の2次元の average poolingを取る 特徴抽出
  8. AI 12 1. 現在のフレームペアにおいて、カメラ姿勢と深度マップを用いて再投影を行い対応点を算出 2. correlation volumeから対応点の特徴を取り出す 3. convGRUで対応点の修正量rと確信度wを算出 4.

    修正された対応点p*と確信度wを入力として密なバンドル調整 (DBA)を行い、カメラ姿勢と 深度マップの更新量を算出 (4) (5) a. この処理は多視点に対して同時に行う 5. 多視点のカメラ姿勢と深度マップを更新 6. lossを計算 7. 上記処理を反復 微分可能な再帰的最適化 (Update Operator) の手順
  9. AI ▪ 初期化 ▪ 12枚のフレームを集める ▪ Optical Flowが16ピクセル以上の場合のみ、前のフレームを保持 ▪ 3つの隣接するフレームにエッジを追加してupdate

    operatorを10回実行 ▪ フロントエンド ▪ 新しいフレームに対して特徴抽出 ▪ フレームグラフに追加 ▪ Optical Flowの平均が近い3つのフレームに対してエッジを追加 ▪ update operatorを数回適用して、カメラ姿勢と深度マップを更新 ▪ 新しいフレームがトラッキングされた後、キーフレームを削除 ▪ フレームペア間のOptical Flowの平均から削除するキーフレームを決定 ▪ 該当する候補がない場合は最も古いキーフレームを削除 ▪ バックエンド ▪ 全てのキーフレームに対してバンドル調整を行う ▪ 完全なバンドル調整はキーフレームに対してのみ ▪ 非キーフレームは姿勢のみのバンドル調整 ▪ 数千のフレームとエッジからなるフレームグラフ全体にupdate operatorを適用 SLAMシステム
  10. AI ▪ ECCV2020 TartanAir SLAM competitionの上位3つの結果 ▪ Super Point +

    Super Glue + COLMAPと比べても精度高い 実験 (ECCV 2020 SLAM Competition)
  11. AI ▪ 推論にはRTX3090 x2が必要 ▪ 1GPUでトラッキングと局所的なバンドル調整を実行 ▪ 1GPUで大域的なバンドル調整とループクロージングを実行 ▪ フロントエンドは8GBのGPUで動く

    ▪ 全部の組み合わせのcorrelation featureを保持するのでメモリが圧迫される ▪ 5000フレームまである動画だと24GBのGPUが必要 推論速度とメモリ使用量
  12. AI ▪ DROID-SLAMの著者の後続研究 ▪ DROID-SLAMは共通視野のあるフレームペアのcorrelation volumeを事前に計算、 保持する必要があり計算量、メモリ使用量ともに大きかった ▪ DROID-SLAMをベースとして疎な表現 (パッチ)

    を用いた手法を提案 ▪ RNNで算出したoptical flowに基づいてパッチの深度とカメラの姿勢を反復して多視点 最適化 (6) ▪ 精度を保ちながら、DROID-SLAMの1.5〜8.9倍 (平均3倍) 速く、57〜29% (平均30%) のメモリ効率性 19 DPVO (NeurlPS’23)
  13. AI ▪ パッチとビデオフレームの関係を表すためにパッチグラフを使用 ▪ グラフのエッジはパッチとフレームを接続 ▪ パッチの軌跡は単一のパッチを複数フレームに再投影した集合になる ▪ 隣のフレームに投影することもあるので、台形になったりする (元の正

    方形とは限らない) ▪ グラフは動的で、新しいビデオフレームが受信されると、新しいフレームと パッチが追加され、古いものは削除される パッチグラフ パッチの軌跡の例
  14. AI ▪ パッチグラフの各エッジ毎にcorrelation feature (パッチ毎の相関) を計算 ▪ フレームi -> jにパッチkを再投影

    ▪ パッチkと再投影位置のフレームjの特徴マップの各ピクセルの内積を取る ▪ 内積を取るときにフレームjの特徴マップと対応するピクセルはバイリニア補 間で生成 Correlation Feature
  15. AI ▪ パッチは疎だが同じオブジェクト内に属していれば相関が高くなる ▪ この相関を活用するためにパッチグラフ内のエッジ間で情報を伝達させる ▪ これはSuperGlueと一緒 ▪ エッジとその近隣エッジが定義されるときその集約関数を定義 (5)

    ▪ ψ, Φは全結合層、σはシグモイド ▪ 2つのsoft aggregationを実行 ▪ パッチ集約:フレーム間をまたぐ同一のパッチの情報を集約 ▪ フレーム集約:フレーム内の異なるパッチの情報を集約 Softmax Aggregation
  16. AI ▪ 更新量δを足す前と足した後の再投影されたパッチが一致するように深度マッ プとカメラ姿勢を最適化 (6) ▪ 以下2つはfactor headで予測されたfactor ▪ δは再投影したパッチの更新量

    ▪ Σはそれぞれのパッチの重み ▪ ||.||Σ はマハラノビス距離 ▪ ω (T, P) もP′kjも同じ再投影されたパッチ ▪ 線形化された目的関数に対してガウス-ニュートンを2回反復 Differentiable Bundle Adjustment
  17. AI ▪ tartanAir dataset (合成データ) を学習データに使用 ▪ 学習はRTX3090で3.5日 ▪ 最初の1000ステップではGTのポーズを固定しパッチの深度のみを推定させる

    ▪ その後ポーズと深度の両方を推定する ▪ Optical Flowの大きさが16~72pxの間にある軌跡をサンプリング ▪ ハードサンプリングだが学習不可能ではない ▪ カメラ姿勢とOpical tFlowのGTが必要 ▪ poseのloss (7) ▪ GがGT, Tがpred ▪ 最終的なloss (8) 学習
  18. AI ▪ 初期化 ▪ 8フレーム集まるまで待ちupdate operatorの更新を12回行う ▪ Optical Flowの平均が8ピクセル以上のフレームのみを集める ▪

    フロントエンド ▪ 新しいフレームから特徴とパッチを抽出 ▪ パッチの深度は前の3フレームの全てのパッチの中央値として初期化 ▪ 各パッチが抽出されたフレームからr内の隣接フレームにそのパッチのエッジを追加 ▪ 最適化 ▪ エッジが追加されたあとupdate operatorで1回の更新 ▪ その後バンドル調整の反復を2回行う ▪ 最後の10キーフレーム以外のすべてのポーズは固定 (最適化対象外) VOシステム
  19. AI ▪ update operatorのどのコンポーネントが重要かablation (b) ▪ 1d convもsoft aggregationも効いてる ▪

    パッチの選択方法で比較 ▪ なんかrandom samplingがいいらしい (c) ▪ 理由は書いてない 実験 (Ablation)
  20. AI ▪ 深度推定モデルとカメラ姿勢推定モデルの教師なし学習が注目されている ▪ SfMLearnerがベース ▪ カメラ姿勢はPoseNetベースのモデルから直接推定される ▪ 幾何的な制約がなく従来手法に劣る ▪

    モデルから推定された深度マップとカメラ姿勢をエピポーラ拘束を満たすように反復し て更新 ▪ 教師なしで学習された深度マップとカメラ姿勢を幾何学的に一貫させる 35 モチベーション
  21. AI 深度推定モデル ▪ DIFFNet ▪ backbone: HRNet カメラ姿勢モデル ▪ PoseNetベース

    ▪ backbone: ResNet18 36 深度推定モデルとカメラ姿勢推定モデル
  22. AI ▪ ターゲット画像とソース画像から特徴抽出 ▪ 抽出されたそれぞれの特徴からcorrelation volume (ピクセル毎の相関) を計算する ▪ 推定された姿勢に基づいてエピポーラ線に沿っている特徴のみに対して相関を計算

    する ▪ 全ペアのピクセル相関を計算する必要がない ▪ DROID-SLAMでは事前に全ペアのcorrelation volumeを計算していたが、この研究では その場で計算を行う 37 エピポーラサンプリング
  23. AI ▪ 推定された深度を用いてエピポーラ線上の特徴をサンプリングする ▪ D k [u]:エピポーラ線上のサンプリング候補 ▪ サンプリング範囲を深度に依存させる ▪

    深度推定は一般的にエラーが距離とともに増加するため ▪ マルチスケールでサンプリングを行う ▪ m s の特徴とエピポーラ線上の候補からサンプリングされたm t の特徴の絶対差分を計算 (5) ▪ 絶対差分で得たマッチングコストを深度とともに2層のCNNでエンコードし更新モジュールの入力とす る エピポーラサンプリング
  24. AI ▪ エピポーラサンプリングで得た対応する特徴が一致するように姿勢を更新する ▪ 直接に特徴の誤差を取る (8) ▪ 信頼度重みWは2つの信頼度を組み合わせる ▪ 特徴マップから計算される信頼度

    ▪ 動的物体やテクスチャレスな領域への対応 ▪ 隠れ状態から計算される信頼度 ▪ 深度の精度が高い領域により高い信頼度を割り当てる ▪ 隠れ状態はマッチングコストの履歴を保持 40 特徴アライメントに基づくカメラ姿勢更新 カメラ姿勢の更新量
  25. AI ▪ KITTIで学習して評価 ▪ GPU:RTX 3090 x1 ▪ バッチサイズ:12 ▪

    入力画像解像度は以下の2パターン ▪ 640x192 ▪ 960x288 ▪ Optimizer: Adam 実験
  26. AI 紹介する研究 絶対深度 相対深度 Depth Anything 教師モデルで擬似ラ ベルを付与してラベ ルなしデータを活用 metric3D

    カメラの焦点距離 に応じて入力画像 をリサイズ metric3Dv2 深度ラベルのみから 深度と法線を推定 uniDepth 球面座標系を用いてカメ ラパラメータと深度推定 の問題を分離 Depth Anything v2 合成データを活用 MiDaS 多様なデータ セットで学習で きるように損失 関数を設計
  27. AI ▪ 深度推定のデータセットは場所、アノテーション方法 (LiDAR, ToF, SfM) などあらゆる条件が異なっていた ▪ 多様なデータセットでの学習方法を提案しzero-shotで相対深度推定 ▪

    GT、予測の視差のスケールとシフトを合わせる (5) (6) ▪ 予測とGTの視差の差分が低い順に一定の割合Umまでのデータを使う (7) ▪ Umは実験的に0.8とする ▪ つまりGTと予測の差分が大きい2割のデータは使わない 48 MiDaS (TPAMI’22)
  28. AI ▪ 深度推定のデータセットはたくさんあるが以下の条件が全部違う ▪ 場所:屋内/屋外 ▪ 物体:動的/静的な物体 ▪ 精度:レーザー、ToF、SfM、ステレオ、人間によるアノテーション、 合成データ

    ▪ 画像品質、カメラ設定 ▪ データセットのサイズ ▪ インターネットの画像はアノテーションがなく、品質が低い、カメラパラ メータがない ▪ テストデータが学習データと同じ環境 (カメラパラメータ、深度アノテー ション、環境) では良好な性能を発揮するが異なる特性を持つ場合は難しい ▪ 多様なデータセットで学習することで汎化性の向上を試みる 49 従来のデータセット
  29. AI ▪ 多様な形式でGTが提供されるため多様なデータセットで学習することは困難 ▪ 絶対的な深度 (レーザー、既知のキャリブを持つステレオ) ▪ 未知のスケールでの深度 (SfM) ▪

    視差マップ (未知のキャリブレーション) ▪ 多様なデータソースを活用できる出力空間と損失関数の設計が必要 ▪ 主な問題は3つ ▪ 深度の表現が直接な深度表現と逆深度表現 ▪ スケールの曖昧さ ▪ シフトの曖昧さ 多様なデータセットでの学習
  30. AI ▪ MSEは外れ値に頑健でない ▪ どのデータセットでもラベルにノイズがある ▪ スケールとシフトにより頑健な損失関数を定義 1. GT、予測の視差のスケールとシフトを合わせる (6)

    2. 予測とGTの視差の差分が低い順に一定の割合Umまでのデータを使う (7) a. Umは実験的に0.8とする b. つまりGTと予測の差分が大きい2割のデータは使わない Scale and Shift Invariant Loss (2つ目)
  31. AI ▪ ラベルなしデータも含めた6200万枚以上のデータセットで学習しzero-shotで深度推定 ▪ ラベル付きデータセットでteacherモデルTを学習 ▪ Tを用いてラベルなしデータに擬似深度ラベルを付与 ▪ ラベル付き/ラベルなしデータセット両方を用いてstudentモデルSを学習 ▪

    より不変な特徴を捉えるためラベルなし画像に対しては以下の摂動を与える ▪ cutmix ▪ color jitterとガウシアンブラー ▪ DINOv2とのcos類似度を高める損失関数を追加することで意味情報を捉える特徴を学習 ▪ semantic segmentationの事前学習モデルとしても有効性を確認 54 Depth Anything (CVPR’24)
  32. AI ▪ ラベル付きデータセットでの学習はMiDaSと同じlossを採用 ▪ 6つのデータセットから150万枚のラベル付き画像を収集 ▪ ラベルなし画像は大規模な8つのデータセットから合計6200万枚以上を収集 ▪ teacherモデルにはDINOv2を使用 ▪

    studentモデルはteacherモデルからファインチューニングするのではなく 再初期化 ▪ 事前学習されたsemantic segmentationのモデルで空の領域を深度0とした 55 要点
  33. AI ▪ Depth Anything V1 (認識モデルベース) はmarigold (拡散モデルベース) より以下の点で劣る ▪

    透明物体、反射面 ▪ 細かい境界 ▪ シミュレーターからの合成画像を学習に用いることで上記の問題を克服 ▪ 従来の実画像の深度データセットにはラベルノイズが多い ▪ 透明な物体や反射面はRGB-D, LiDARなどのセンサーで深度を取れない ▪ teacherモデル (DINO-v2-G) を合成画像のみで学習 ▪ studentモデルを擬似ラベル付き実画像で学習 ▪ 高解像度画像、シーンの多様性、透明物体への正確なラベルを持つ評価用データセットを構築 56 Depth Anything V2 (arxiv’24)
  34. AI ▪ 昨今の単眼深度推定はモデルアーキテクチャの観点から2つのグループに分けられる ▪ 1つはDINOv2など識別モデルに基づくもの ▪ もう1つはstable diffusionなど拡散モデルに基づくもの ▪ それぞれの代表としてmarigoldとDepthAnythingを比較

    ▪ marigoldは詳細なモデリングに優れており透明な物体や反射にも対応 ▪ Depth Anythingは複雑なシーンに対応しており比較的軽量 ▪ どちらの強みも持つ基盤モデルを提案 ▪ 透明な物体 (ガラス)、反射面 (鏡、スクリーン) ▪ 詳細な推定 (椅子の脚などの細い物体、小さい穴) ▪ 推論効率 ▪ 改善のために必要なのはdata-centricな取り組み 認識モデルベースと拡散モデルベースの比較
  35. AI ▪ それぞれのデータセットのラベル付き画像の数 ▪ Depth Anything v1:1.5M ▪ Metric3D v1:

    8M ▪ Metric3D v2: 16M ▪ ラベル付き実画像の欠点 ▪ 透明な物体の深度を測れない ▪ テスクチャレス、または繰り返しパターンに対して脆弱なステレオマッチング ▪ 動的な物体に脆弱なSfM ▪ ラベルが粗い (右図a) ▪ ラベルが粗い実画像のデータセット使うと 予測も荒くなる (右図c) ▪ 透明物体の深度推定のコンペの結果は以下 ▪ MiDaS: 25.9% ▪ depth anything v1: 53.5% ▪ depth anything v2: 83.6% ラベル付き実画像の欠点
  36. AI ▪ 最近の拡散モデルベースの研究 (depthFM, geowizard) を参考に合成画像の みをトレーニングに使用 ▪ 合成画像の利点 ▪

    ラベルが細かい ▪ 透明な物体や反射面にも正確 ▪ プライバシーの問題もない 合成画像の利点
  37. AI 合成画像を使うにはいくつかの課題がある ▪ 1. ドメインの違い ▪ 合成画像は色がクリーンでレイアウトが整然としているが実画像はランダム性がある ▪ 2. シーンカバレッジの違い

    ▪ 3Dモデリングしてシーンを作らなければならないのでカバレッジを上げるの大変 ▪ 4つの事前学習済みエンコーダを用いて単眼深度推定を合成画像のみで学習し実画像で推論 ▪ DINOv2-Gだけ良い結果 (右図 5) ▪ DINOv2-Gの一般化能力に依存すれば良さそうだが問題あり ▪ 学習データに少ないシーンに対応できない ▪ 空や人の頭部など (右図 6) ▪ 計算効率の悪さ 合成画像使用の課題
  38. AI ▪ teacher model ▪ モデル:DINO-v2-G (合成画像のみで学習しても一定の精度が出ることを確認) ▪ データ:合成画像のみ ▪

    student model ▪ モデル:より軽量なモデル ▪ データ:擬似ラベル付き実画像 ▪ この構成によって合成データの欠点であった以下2つを克服 ▪ ドメインギャップ ▪ シーンカバレッジ ▪ ラベル付き実画像のデータは一切使わない Depth Anything V2
  39. AI ▪ 既存の評価ベンチマークには以下の問題あり ▪ 多様性 ▪ 鏡や細かい物体に対するノイジーなラベル ▪ 低解像度 (500x500程度)

    ▪ 近年はより高解像度 (1000x2000) の画像に対して正確な深度推定が求められる ▪ 上記3つの項目を考慮し、相対的な単眼深度推定のための多用途な評価ベンチマークを構築 ▪ 疎な相対深度のGTラベルを作成 ▪ 疎なため既存のベンチマークを置き換えられるわけではない A New Evaluation Benchmark: DA-2K
  40. AI 1. キーポイントを等間隔に配置してSAMを用いてオブジェクトマスク生成 2. ランダムに2つのキーポイント選ぶ 3. それら2つのキーポイントに対する4つのモデルの相対深度が一致していれば承認 4. 一致していなければ手動でアノテーション a.

    他2人のアノテーターによって3重チェック 5. 深度推定の重要な8つのシナリオ (図b) に対してGPT4を用いて多様なキーワード生成 6. それらのキーワードに対してflickrを用いて画像をダウンロード 7. 1000枚の画像に対して2000のピクセルペアをアノテーション A New Evaluation Benchmark: DA-2K (パイプライン)
  41. AI ▪ 多様なデータセットで学習できるようにするためにカメラモデルの標準化を行うモジュール を提案 ▪ f_cを標準化後の焦点距離とする (固定値で実験的に1000に設定) ▪ fはデータセットから得た既知の焦点距離 ▪

    方法1 ▪ GTの深度マップをf_c/fでスケーリング ▪ 方法2 ▪ 入力画像をf_c/fでリサイズ ▪ 光学中心もこれに応じて移動 ▪ GTの深度マップもリサイズ (スケーリングはなし) 67 Metric3D (ICCV’23)
  42. AI ▪ 深度推定と合わせて法線推定も行う基盤モデルを提案 ▪ 法線よりも深度のアノテーションがされているデータセットの方が圧倒的に多い ▪ GTの深度から法線の学習も行う ▪ 先出のDROID-SLAM (RAFT)

    と同じくRNNを用いて深度と法線を同時最適化 (右図) ▪ 各ステージに深度と法線を推定するためのprojection headを2つ用意 ▪ 疑似的な法線マップを推論結果の深度マップから最小二乗法で算出 ▪ 疑似的な法線マップと推論結果の深度マップの類似度を近づけるような損失関数を計算 し深度と法線の一貫性を保つ Metric3D v2 (arxiv’24)
  43. AI ▪ カメラの内部パラメータを必要としないzero-shot絶対深度推定を提案 ▪ 深度推定とカメラの内部キャリブレーションの2つのサブタスクに分離するため に擬似球面表現の出力空間を用いた (左図) ▪ 擬似球面表現は方位角、仰角、log深度で定義される ▪

    この表現だとカメラパラメータ (方位角、仰角) と深度が分離される ▪ デカルト表現 (x, y, z) だとカメラパラメータと深度が分離されず曖昧になる ▪ 球面調和関数で角度表現を埋め込み、cross attensionでdepth moduleの条件付 けをする (右図) 73 UniDepth (CVPR’24 highlight)
  44. AI ▪ 深度推定とカメラの内部キャリブレーションという2つのサブタスクに分離す るために擬似球面表現を利用 ▪ 基底が方位角、仰角、log深度で定義される ▪ 擬似球面表現の強みはカメラ (方位角、仰角) と深度

    (zlog) 成分が分離され ること ▪ デカルト表現 (x, y, z) だと分離されない ▪ この出力空間ではカメラパラメータをテンソル HxWx2として表現する ▪ HxWは入力画像の高さと幅、最後の次元は方位角と仰角 ▪ 角度の密な表現はラプラス球面調和関数符号化を介して埋め込むことができ る 疑似球面表現
  45. AI ▪ カメラモジュールの出力の角度の埋め込みから入力シーンの深度スケールに 関する事前知識を獲得することが重要 ▪ カメラモジュールの内部表現はfx, fy, cx, cy ▪

    これらに対応するトークンはスカラー値Δfx, Δfy, Δcx, Δcy ▪ これらはカメラパラメータを直接表すわけではなく以下の式のように乗算誤 差とする ▪ これにより入力画像サイズに対する不変性を保つ ▪ 推定された内部パラメータに基づいて逆投影 -> rayの生成 -> 方位角と仰角 の抽出 -> 角度のテンソルを生成 ▪ 光線は正規化され単位球上のベクトルを表す ▪ 球面調和関数で角度のテンソルから埋め込みを作成 -> cross attensionで depth moduleの条件付け ▪ depthのdecoderはMLP カメラパラメータのための角度テンソル
  46. AI ▪ CVPR2024 workshopで開催された単眼深度推定のコンペ ▪ 評価データセットにはSYNS-Patchesを使用 ▪ 多様なシーン、環境を含んでいる ▪ 住宅地、工業地帯、農地、屋内など

    ▪ 高品質で密度の高いLiDARデータ (平均78.20%のカバー率) ▪ 評価指標は画像ベース (MAE, RMSE, absRel)、point cloudベース (Fスコア、IoU、 Chamfer距離)、エッジベースのものを混合して使用 78 The Third Monocular Depth Estimation Challenge (概要)
  47. AI 79 The Third Monocular Depth Estimation Challenge (手法)  順位

    network supervision training 1 DepthAnything (BEiT384-L) ・ステレオ画像を教師データとして使用 ・SILog loss、SSII loss, gradient loss RPNL lossを複合して使用 CityScapesでfinetune 3 DepthAnything + NAFNet image reconstruction loss (monodepth2 で使われていたもの ) + smoothness loss NAFNetだけ学習 4 DepthAnything (VIT-L) + ZoeDepth ・色々なデータセットを使用 ・SILogを使用 NYUv2、KITTI, virtual KITTI, DIODEを使用 6 2つのネットワークを使用 ・DepthAnything (ViT-L) + zoeDepth ・Metric3D (ConvNext-L) + LeRes 1つ目のネットワークは SILog lossを使用 2つ目のネットワークは公開されている重 みをそのまま使用 ・KITTIでfinetune ・2つのネットワークの平均を最 終結果として使用 他チームも含めて大体Depth Anything
  48. AI 研究の流れがかなり早い コンペ開始時点ではDepth Anythingが最新のモデルだった (arxivに出た日付順) ▪ MiDaS: 2019/07 ▪ zoeDepth:

    2023/02 ▪ Metric3D: 2023/07 ▪ Depth Anything: 2024/01 ▪ Metric3D v2: 2024/03 ▪ uniDepth: 2024/03 ▪ Depth Anything v2: 2024/06 81 それぞれの研究とコンペの時期 3rd Monocular Depth Estimation Challenge Open 3rd Monocular Depth Estimation Challenge Close
  49. AI ▪ 最近のVisual Odometry ▪ RNNを用いた推論結果の反復更新 ▪ 最近のDepth Estimation ▪

    以下の点を工夫して多様なデータセットで学習することでzero-shotで深 度推定 ▪ スケール・シフト不変な損失関数の設計 ▪ ラベルなし/合成データの活用 ▪ 絶対深度推定する場合は多様なカメラパラメータへの対応 84 まとめ