Slide 1

Slide 1 text

DUSt3R勉強会 Turing株式会社 E2E⾃動運転チーム 岩政 公平

Slide 2

Slide 2 text

Agenda            Goal ● 基盤モデルとは ● SfM / MVSについて ● DUSt3Rとは ● DUSt3Rの派⽣研究 ❏ DUSt3Rが何をするか理解する 想定読者 ● 深層学習の仕組みを知っている ● ViTを知っている ● 3D空間での座標変換を知っている

Slide 3

Slide 3 text

Fig. 1 Figure 1: Given an unconstrained image collection, i.e. a set of photographs with unknown camera poses and intrinsics, our proposed method DUSt3R outputs a set of corresponding pointmaps, from which we can straightforwardly recover a variety of geometric quantities normally difficult to estimate all at once, such as the camera parameters, pixel correspondences, depthmaps, and fully-consistent 3D reconstruction. Note that DUSt3R also works for a single input image (e.g. achieving in this case monocular reconstruction). We also show qualitative examples on the DTU, Tanks and Temples and ETH-3D datasets] obtained without known camera parameters. For each sample, from left to right: input image, colored point cloud, and rendered with shading for a better view of the underlying geometry. 図1: 制約のない画像コレクション、すなわちカメラの姿勢や内部パラメータが未知の写 真群が与えられた場合、我々の提案手法 DUSt3Rは対応する ポイントマップ の集合を 出力します。これにより、通常は一度に推定するのが困難なカメラパラメータ、ピクセル 間対応、深度マップ、そして完全に一貫性のある 3D再構成といった様々な幾何学的量 を容易に回復することが可能となります。なお、 DUSt3Rは単一の入力画像に対しても 機能し(e.g., 単眼再構成の達成 )、既知のカメラパラメータを用いずに 得られたDTU、 Tanks and Temples、ETH-3Dの各データセットでの 定性的な例 も示しています。各サ ンプルでは、左から右へ、入力画像、カラーのポイントクラウド、そして下地の幾何学構 造をより良く表現するためにシェーディングでレンダリングされたものが順に表示され ています。

Slide 4

Slide 4 text

https://europe.naverlabs.com/research/publications/dust3r-geometric-3d-vision-made-easy

Slide 5

Slide 5 text

https://europe.naverlabs.com/research/publications/dust3r-geometric-3d-vision-made-easy

Slide 6

Slide 6 text

DUSt3Rを使いたい⽅

Slide 7

Slide 7 text

SfM / MVS / COLMAPについて Structure from Motion (SfM) ● 複数枚の2次元シーン画像から3次元構造を推定する技術 ● 成果物: カメラ位置 (回転‧並進)、スパースな3D点群 など Multi View Stereo (MVS) ● シーン画像とSfMの結果をもとに、より密な3次元再構成を⾏う技術 ● 成果物: 密な3D点群、テクスチャマッピング など COLMAP ● SfMやMVSのパイプラインを統合した汎⽤的なOSS

Slide 8

Slide 8 text

SfMの流れ http://theia-sfm.org/sfm.html#global-sfm-pipeline

Slide 9

Slide 9 text

基盤モデルとは “膨⼤なデータセットに基づいてトレーニングされた基盤モデル (FM) は、デー タサイエンティストによる機械学習 (ML) へのアプローチを⼀変させた⼤規模な 深層学習ニューラルネットワークです。” AWS, “基盤モデルとは何ですか ?” https://aws.amazon.com/jp/what-is/foundation-models/

Slide 10

Slide 10 text

視覚基盤モデル ImageNet [Deng+ 2009] ● ImageNetなどの⼤規模データの教師あり学習により汎⽤的な特徴抽出を可能に! ● CLIPによる対照学習でVision-Languageの統⼀的なマッピングが可能に! ● 3次元視覚認識の基盤モデルは存在するのか? → DUSt3R! CLIP [Radford+ 2021]

Slide 11

Slide 11 text

DUSt3R

Slide 12

Slide 12 text

DUSt3Rの概要 1. Pair-wiseな2枚の画像に対してshared weightsなViTで特徴トークンを抽出 2. Transformer Decoderで互いの特徴トークン同⼠でCross-Attentionを⾏う 3. Headで元の画像サイズでdepthmapとconfidence mapを予測する 2枚の画像を⼊⼒として各画像の相対的な深度の点群を出⼒する基盤モデル カメラパラメータ推定や対応点検出などはこの出⼒を⽤いて解く

Slide 13

Slide 13 text

*Vision Transformer (ViT) ViT [Dosovitskiy+ 2020] ● ViTは画像認識においてTransformerを⽤いた⼿法 (当時のCNNのSoTAと同様の性能) ● MAEやCLIPなど教師データを必要としない⾃⼰教師あり学習が様々提案 ○ ViTはVLMにも広く⽤いられて、Gemma 3にはSigLIP [Zhai+ 2023] が採⽤ MAE [He+ 2021]

Slide 14

Slide 14 text

*CroCo [Weinzaepfel+ NeurIPS2022] ● マスクされた画像に対してペアになる参照画像を⽤いて復元する⾃⼰教師あり学習 ● ViTで特徴トークンに変換し絶対位置エンコーディング後にCrossBlockでMaskを復元 ○ CrossBlock: Self-Attention → Cross-Attention → MLP 90% マスク

Slide 15

Slide 15 text

*CroCo v2 [Weinzaepfel+ ICCV2023] ● CroCoから、学習データ作成、RoPEの導⼊、モデルサイズを⼤きくする改善 ● Stereo matchingやoptical flowの下流タスクの事前学習として効果的 ● DUSt3Rのベース構造で、事前学習はこのCroCo v2を採⽤

Slide 16

Slide 16 text

*Depth Prediction Transformer (DPT) [Ranftl+ 2021] ● 画像特徴トークンを⼊⼒にTransformer構造で深度推定を⾏う構造 ● 雑に⾔えばTransformer版のU-Net

Slide 17

Slide 17 text

出⼒について pointmap X を出⼒する: W, Hは⼊⼒画像サイズとcamera1座標系におけるx, y, z. ここでworld-to-camera n に変換する変換⾏列 P として nでの点群をm視点で⾒た時の座標に変換すると以下: そのため   はcamera1での点群を同じcamera1座標系での座標値であり    はcamera2での点群をcamera1座標系に変換した座標値である. Confidence C には座標値と対応して、正しいかどうかの確信度を予測する(詳細は後述): *hは[H, W, 4]として新しい軸を1で埋める関数 *Pは[4, 4]の同次変換⾏列で基準に対する回転/並進の姿勢を表現

Slide 18

Slide 18 text

DUSt3Rの損失関数: 3D Regression loss GTのpointmapを作成する. GTにはカメラの内部⾏列        とdepthmap        から画像ピクセルを(i, j)とすると: 視点 v∈{1, 2} として、GT における有効なdepthmapのみで以下の回帰損失を計算する: ここで z はスケールの曖昧性を処理するためにnormalizeする(そのため相対的な深度の予測): *⼀般的な3D-to-2Dの射影変換の逆変換を⾏うイメージ *i はpixelに対応するindex

Slide 19

Slide 19 text

DUSt3Rの損失関数: Confidence-aware loss “sky” や “translucent object” など定義付けが困難な3D pointが存在する. ここでpixelごとにconfidence C を予測して、最終的には以下の損失関数: α は正則化項でありコード上では0.2に設定され、また C は以下の式で1以上の値にする: これにより確信度は低い場合は αlogC の値が⼩さくなり ⽐較的ペナルティが⼤きくなる⼀⽅で、確信度が⼤きい 場合はこの正則化項のペナルティが⼩さくなる. この確信度の出⼒は明⽰的な教師は⽤いない.

Slide 20

Slide 20 text

Pointmapを⽤いた下流タスク Point matchingや内部パラメータの復元などはpointmapを⽤いた最適化問題 Point matching: から への最⼩の距離のペアと から への 最⼩の距離のペアが同じ時にその点間でマッチング

Slide 21

Slide 21 text

内部パラメータの復元 Recovering intrinsics: を画像上に投影して、その投影誤差を最⼩化する焦点距離を最適化 ( f1 )。 主点は中⼼、画像は正⽅形であると仮定して、Weiszfeldアルゴリズムで⾼速に推定

Slide 22

Slide 22 text

姿勢推定 Relative pose estimation ● Point matchingと内部パラメータ推定の結果を⽤いて2点群間でPnP-RANSAC Absolute pose estimation ● 既知の3D情報を⽤いてスケールファクターを推定 Global optimization ● Bundle Adjustment (BA) は2Dへの再投影誤差を最⼩化するが、3D空間で最適化する ● 点群ペアごとに変換⾏列      とscaling factor     で以下の式: ● 標準的な勾配降下法で最適化可能なためGPUではわずかな時間で計算可能

Slide 23

Slide 23 text

DUSt3Rの学習詳細 学習データセット ● 深度付き多視点データセットから 850万画像ペアを作成 ● 屋内、屋外、合成データ、物体、 運転シーンなどの多様なデータ 学習について ● 最⼤512pxの画像を⼊⼒したいため段階的な学習を⾏う ○ 最初に224x224pxの画像を学習したのちに512pxの画像で継続学習をする ○ テスト時に異なる画像形状に汎化できるようdata augmentでランダムな アスペクト⽐でcenter cropした後にresizeする ● モデル構造はEncoderがViT-Large、DecoderはViT-Base + DPT-head

Slide 24

Slide 24 text

結果: カメラ姿勢 ● 2枚の画像のカメラ姿勢データセットでの評価 ● SoTA相当ではないが、Visual localizationに特化した学習をせずとも⾼精度

Slide 25

Slide 25 text

結果: カメラ姿勢 ● 複数枚画像でのカメラ位置推定データセットで評価 ● こちらはSoTA相当 (GAはGlobal Alignment) SuperPoint / SuperGlue

Slide 26

Slide 26 text

結果: 単眼深度推定 ● ペアの画像を同じ画像で⼊⼒して深度推定 (pointmapの z の値だけ取り出す) ● Indoorでもoutdoorでも汎化できている ● CroCoによる事前学習および⼊⼒解像度の⾼解像度化で精度良化 同ドメインで 教師あり学習 同ドメインで ⾃⼰教師あり学習 異なるドメインで 教師あり学習

Slide 27

Slide 27 text

結果: 多視点深度推定 ● 複数枚画像から深度評価を⾏うタスクで、絶対スケールで信頼度による重みづき平均 ● データによってはCOLMAPよりも⾼精度で、特に⾼速

Slide 28

Slide 28 text

結果: 多視点ステレオ ● 複数枚画像から点群を推定するタスク ● 定量評価はかなり悪く、これは他の⼿法は正確なカメラ姿勢が既知であるため ○ むしろその情報を使っていないため、カメラ姿勢なしでの精度は今後に期待

Slide 29

Slide 29 text

DUSt3Rのまとめ ● ViTベースでpair-wiseが画像から3D 点群を予測する基盤モデル ● 850万ペアの様々なドメインで教師あり学習 → ⾼い汎化性能 ● COLMAPと⽐べて⾮常に⾼速だが、精度はイマイチなタスクもある ● 出⼒はあくまでpointmapであり、point matchingなどは後処理的に⾏う

Slide 30

Slide 30 text

派⽣⼿法: MASt3R [Leroy+ CVPR2024] ● DUSt3Rの構造に新しくlocal featureを出⼒するHeadを追加 ● DUSt3Rの損失関数に加えてpoint matchingの損失関数を追加 ● データセットが実スケールの時に点群スケールを正規化しない i.e., 実スケールで出⼒

Slide 31

Slide 31 text

派⽣⼿法: MASt3Rでの相対カメラ姿勢推定 Ⅱ. 追加データセットの学習、マルチタスク学習によって精度改善 Ⅲ. point matchingの損失関数のみで学習 Ⅳ. DUSt3Rの損失関数も追加で、Ⅲと⽐較して精度改善 Ⅴ. 実スケールのまま出⼒で、⼤幅に精度改善

Slide 32

Slide 32 text

派⽣⼿法: MonST3R [Zhang+ ICLR2025] ● 動的なシーンに対応したDUSt3R系の⼿法 ● 時系列で関係する2フレームからpointmapを出⼒後に後処理的にoptical flowを計算 ● 動的なGlobal Alignmentに対応 (フレームに対応した3D点群の構築が可能) https://monst3r-project.github.io/

Slide 33

Slide 33 text

派⽣⼿法: Fast3R [Yang+ CVPR2025] ● 任意の複数枚の画像を⼊⼒可能にしたDUSt3R系の⼿法 (テスト時は1,500枚でも可能) ● Cross-AttentionのところをカメラIDによるpositional encodingをしてSelf-Attention ● DUSt3R系で必要だったGlobal Alignmentを⾏う必要がなく⽐較的⾼速

Slide 34

Slide 34 text

Fast3RのTransformer構造の利点 ● 学習時は最⼤20枚画像を⼊⼒ ● DeepSpeed ZeRO stage 2 training, FlashAttentionによるメモリ効率の改善

Slide 35

Slide 35 text

VGGT [Wang+ CVPR2025] ● Fast3R-likeな構造で後処理で求めていたカメラパラメータやmatchingも同時に解く ● Global AttentionとFrame内でのAttentionのAlternating-Attention (AA) がいいらしい ● 様々な3DタスクでSoTA もうこれでいいのでは…

Slide 36

Slide 36 text

VGGTのデモページ https://huggingface.co/spaces/facebook/vggt

Slide 37

Slide 37 text

VGGTの結果 ● 多視点ステレオといったDUSt3Rでは 困難なタスクもパフォーマンス改善 ● カメラ姿勢推定では後処理を使わずに 従来⼿法よりも⾼精度(BAするとさら に改善)

Slide 38

Slide 38 text

VGGTの学習 Lcameraは、基準のカメラに対する4次元のrotation quaternion, 3次元のtranslation, 焦点距離fx, fyの9次元ベクトルをGTを⽤いてHuber lossで計算 Ldepthは、各画像の深度マップのGTとの差を計算。確信度に関するマップ情報も使⽤。 深度マップの勾配に基づく項を加えて細部の整合性も担保。 Lpmapは、GTとのpointmapの差を評価。 Ltrackは、3D点に対応する2D位置を推定するタスクの損失。 詳しくは論⽂や実装へ…

Slide 39

Slide 39 text

まとめ ● Transformerベースで3D Computer Visionの基盤モデルが登場 ● 点群出⼒の他に動的シーンの対応や直接カメラパラメータ推定などが可能に ● まだCOLMAPが得意な領域もたくさんあるが、⾼速なため使い分けてたい ● モデル構造や学習も⼤事だがデータセット作成が⼤変そう ● ここで紹介したDUSt3R系のモデルは全て⾮商⽤ライセンス (CC BY-NC 4.0)

Slide 40

Slide 40 text

No content