DUSt3R

Wang 2024 · 논문

한 줄 요약 — 쌍별 3D 재구성을 피드포워드 Transformer가 이미지 쌍으로부터 밀집 포인트맵을 직접 회귀하는 문제로 재정의하여, 카메라 보정, 특징 매칭, 명시적 기하학적 모델이 전혀 필요하지 않습니다.

문제

실제 환경에서의 다중 뷰 스테레오는 먼저 카메라 내부/외부 파라미터를 추정해야 하는데, 이는 얻기 번거롭지만 대응 픽셀을 3D로 삼각측량하기 위해 필수적입니다. 보정, 검출, 매칭, 포즈 추정, 삼각측량으로 이어지는 전체 고전적 파이프라인은 취약한 단계들의 연쇄로, 각 단계가 실패할 수 있습니다. DUSt3R(“Dense and Unconstrained Stereo 3D Reconstruction”)는 반대의 입장을 취합니다: 보정이나 시점 포즈에 대한 사전 정보가 전혀 없이 임의의 이미지 집합을 재구성하며, 3D 구조를 직접 회귀합니다.

방법 및 아키텍처

포인트맵 표현: 네트워크 F\mathcal{F}는 두 개의 RGB 이미지 I1,I2RW×H×3I^1, I^2 \in \mathbb{R}^{W \times H \times 3}를 입력받아 두 개의 포인트맵 X1,1,X2,1RW×H×3X^{1,1}, X^{2,1} \in \mathbb{R}^{W \times H \times 3} — 픽셀별 3D 좌표 — 를 신뢰도 지도 C1,1,C2,1C^{1,1}, C^{2,1}와 함께 출력합니다. 두 포인트맵 모두 카메라 1의 좌표계로 표현되므로, 한 번의 순전파가 보정, 대응, 재구성을 함께 풀어냅니다. 동일한 이미지를 두 번 입력하면 단안 깊이가 나옵니다; 이 공식화는 단안과 양안의 경우를 통합합니다.

아키텍처 (CroCo 스타일, CroCo 사전학습으로 초기화): 가중치를 공유하는 샴 ViT-Large 인코더 F1=Encoder(I1)F^1 = \text{Encoder}(I^1), F2=Encoder(I2)F^2 = \text{Encoder}(I^2)가 있으며, 이어서 서로 얽혀 있는 두 개의 ViT-Base 디코더가 있는데, 각 블록은 자기-주의, 다른 뷰의 토큰에 대한 교차-주의, MLP를 수행합니다:

Gi1=DecoderBlocki1(Gi11,Gi12),Gi2=DecoderBlocki2(Gi12,Gi11),G_i^1 = \text{DecoderBlock}_i^1\big(G_{i-1}^1, G_{i-1}^2\big), \qquad G_i^2 = \text{DecoderBlock}_i^2\big(G_{i-1}^2, G_{i-1}^1\big),

G0v:=FvG_0^v := F^v입니다. 각 분기마다 하나의 DPT 회귀 헤드가 모든 디코더 토큰을 포인트맵 + 신뢰도 지도로 매핑합니다. 어떤 기하학적 제약도 전혀 강제되지 않습니다 — 네트워크는 기하학적으로 일관된 학습 데이터로부터 사전 정보를 학습합니다.

학습 목적함수: 뷰 vv의 각 유효 픽셀 ii에 대한 스케일 정규화 3D 회귀:

regr(v,i)=1zXiv,11zˉXˉiv,1,\ell_{\text{regr}}(v,i) = \left\| \frac{1}{z} X_i^{v,1} - \frac{1}{\bar{z}} \bar{X}_i^{v,1} \right\|,

여기서 z,zˉz, \bar{z}는 원점까지의 모든 유효 점들의 평균 거리이며, 예측을 신뢰할 수 있는 위치를 학습하는 신뢰도 가중 손실로 감싸집니다:

Lconf=v{1,2}iDvCiv,1regr(v,i)αlogCiv,1,Civ,1=1+expCiv,1~>1.\mathcal{L}_{\text{conf}} = \sum_{v \in \{1,2\}} \sum_{i \in \mathcal{D}^v} C_i^{v,1} \, \ell_{\text{regr}}(v,i) - \alpha \log C_i^{v,1}, \qquad C_i^{v,1} = 1 + \exp \widetilde{C_i^{v,1}} > 1.

모든 것이 부산물로 얻어집니다: 3D 포인트맵 공간에서의 상호 최근접 이웃을 통한 픽셀 매칭; X1,1X^{1,1}에 대한 픽셀 재투영 잔차의 Weiszfeld 방식 최소화를 통한 초점 거리; X1,1X1,2X^{1,1} \leftrightarrow X^{1,2}의 Procrustes 정렬 또는 PnP-RANSAC을 통한 상대 포즈; 참조 포인트맵에 대한 스케일링을 통한 절대 포즈(시각 위치화).

NN개 뷰에 대한 전역 정렬: 이미지 쌍에 대한 연결성 그래프 G(V,E)\mathcal{G}(\mathcal{V}, \mathcal{E})를 구축(네트워크 추론은 H100에서 쌍당 약 40 ms)한 다음, 전역 포인트맵 χn\chi^n, 엣지당 하나의 강체 포즈 PeP_e와 스케일 σe\sigma_e를 최적화합니다:

χ=argminχ,P,σeEvei=1HWCiv,eχivσePeXiv,e,eσe=1.\chi^* = \arg\min_{\chi, P, \sigma} \sum_{e \in \mathcal{E}} \sum_{v \in e} \sum_{i=1}^{HW} C_i^{v,e} \left\| \chi_i^v - \sigma_e P_e X_i^{v,e} \right\|, \qquad \textstyle\prod_e \sigma_e = 1.

번들 조정과 달리 이는 2D 재투영 오차가 아니라 3D 투영 오차를 최소화하며, 단순한 경사 하강으로 실행됩니다 — 몇백 단계, GPU에서 단 몇 초 만에 끝납니다. χn\chi^n에 대해 핀홀 파라미터화를 대입하면 모든 포즈 PnP_n, 내부 파라미터 KnK_n, 깊이 지도 DnD^n이 복원됩니다.

학습 데이터: 여덟 개의 데이터셋(Habitat, MegaDepth, ARKitScenes, Static Scenes 3D, Blended MVS, ScanNet++, CO3D-v2, Waymo)에서 얻은 850만 개의 쌍이며, 먼저 224px에서 학습한 다음 다양한 종횡비로 512px에서 학습합니다.

실험 결과

SLAM에서의 의미

DUSt3R는 기하학적 비전의 “3D 파운데이션 모델” 시대를 열었습니다: 하나의 사전학습된 네트워크가 고전적인 검출-매칭-삼각측량 파이프라인을 대체하며, 보정되지 않은 이미지에서도, 단 두 개의 뷰만으로도 동작합니다. 이는 MASt3R와 MASt3R-SLAM을 직접적으로 낳았고, VGGT와 같은 피드포워드 다중 뷰 모델에 영향을 미쳤으며, 이제는 학습된 포인트맵 회귀기가 프론트엔드이고 고전적 최적화가 백엔드인 SLAM 연구의 한 갈래 전체의 근간이 되었습니다. 그 가정들(오프라인 페어링, 전역 정렬 비용, 쌍별 스케일 모호성)을 아는 것은 후속 시스템들이 무엇을 고치는지를 설명해 줍니다.

관련 문서