[논문리뷰] Grounding Image Matching in 3D with MASt3R (ECCV 2024)
매칭은 근본적으로 3D 문제다. 대응하는 픽셀이란 같은 3D 점을 바라보는 픽셀들이니까. MASt3R(“Matching And Stereo 3D Reconstruction”)는 DUSt3R의 3D 복원 능력 위에 matching 전용 head와 loss를 얹어, 극단적 시점 변화에 강인하면서도 픽셀 정확한 매칭을 얻는다.
논문 정보
| 항목 | 내용 |
|---|---|
| 제목 | Grounding Image Matching in 3D with MASt3R |
| 저자 | Vincent Leroy, Yohann Cabon, Jérôme Revaud |
| 소속 / 연도 | NAVER LABS Europe, ECCV 2024 (arXiv:2406.09756) |
| 분야 | CV / image matching, 3D reconstruction |
| 코드 | GitHub |
1. Introduction
image matching(같은 장면을 찍은 이미지들 사이의 픽셀 대응 찾기)은 mapping·localization·photogrammetry 등 모든 3D 비전 파이프라인의 핵심 부품이다. 전통적 접근은 keypoint 검출 → 불변 descriptor → 특징 공간 매칭의 3단계였고(SIFT가 COLMAP에 지금도 살아 있는 이유), 이후 SuperGlue 같은 전역 최적화 매칭과 LoFTR 같은 keypoint 없는 dense 매칭이 나왔다.
- keypoint 방식은 매칭을 “keypoint 주머니” 문제로 줄이면서 전역 기하 문맥을 버린다. 그래서 반복 패턴·저텍스처 영역에서 원리적으로 취약하다
- dense 매칭도 결국 매칭을 2D 이미지 공간의 문제로 다룬다. 하지만 대응이란 본질적으로 3D다: 대응 픽셀 = 같은 3D 점의 관측이고, 2D 대응과 3D 상대 pose는 epipolar 기하로 묶인 동전의 양면이다
- 그 증거로, 매칭용으로 설계되지도 않은 DUSt3R의 부산물 대응이 극난도 Map-free localization benchmark에서 기존 모든 keypoint·매칭 방법을 앞서고 있었다
다만 DUSt3R의 대응은 강인하지만 부정확하다. MASt3R는 이를 고치기 위해:
- DUSt3R 네트워크에 dense local feature를 출력하는 둘째 head를 붙이고 InfoNCE matching loss로 학습한다
- dense 매칭의 제곱 복잡도를 깨는 fast reciprocal matching을 제안한다. 수십 배 빠르면서 이론적 보장이 있고, 오히려 정확도도 오른다
- 고해상도 처리를 위한 coarse-to-fine matching을 더한다
[Figure 1] 카메라 이동으로 시각적 유사성이 크게 저하된 영역까지 이어지는 dense 대응(예측된 3D 기하에서 초점거리까지 도출되므로 calibration·pose·3D 복원의 standalone 방법이 된다)
결과는 극난도 Map-free localization에서 VCRE AUC 93%, 발표된 최고 방법 대비 30%p 절대 개선이다.
2. Related works
- keypoint 기반 매칭: SIFT류 검출-기술-매칭 파이프라인과 학습 기반 후속(SuperPoint, R2D2), 학습된 매처(SuperGlue, LightGlue)
- dense 매칭: LoFTR처럼 global attention으로 이미지 전체를 한 번에 매칭. 반복 패턴·저텍스처에 강하지만 여전히 2D 정식화
- DUSt3R: pointmap 회귀 기반 3D 복원 framework이자 본 논문의 출발점
3. Method
3.1 The DUSt3R framework
pointmap \(X^{a,b} \in \mathbb{R}^{H \times W \times 3}\) 은 이미지 \(I^a\) 의 각 픽셀 \(i = (u, v)\) 를 카메라 \(C^b\) 좌표계의 3D 점 \(X^{a,b}_{u,v}\) 에 대응시킨다. 카메라 1 좌표계로 표현된 두 pointmap \(X^{1,1}, X^{2,1}\) 을 회귀함으로써 DUSt3R는 calibration과 3D 복원을 한 번에 푼다. 이 논문은 양안(binocular) 케이스에 집중하며 global alignment 단계는 쓰지 않는다.
구조는 DUSt3R 그대로다. Siamese ViT encoder(\(H^1, H^2\)), cross-attention으로 정보를 교환하는 두 decoder(\(H'^1, H'^2\)), 그리고 encoder·decoder 표현을 이어 붙여 pointmap과 confidence를 회귀하는 head:
\[X^{1,1}, C^1 = \text{Head}^1_{3D}([H^1, H'^1]), \qquad X^{2,1}, C^2 = \text{Head}^2_{3D}([H^2, H'^2])\]
[Figure 2] 픽셀마다 3D 점·confidence·local feature를 회귀하고, 3D 점 또는 local feature를 fast reciprocal NN 매처에 넣어 대응을 얻는 제안 구조 개요(파란색이 DUSt3R 대비 기여)
Metric 예측. DUSt3R의 회귀 loss는 예측·정답을 각각 정규화 인자 \(z, \hat{z}\) (유효 3D 점의 원점까지 평균 거리)로 나눠 scale 불변으로 학습한다. 그런데 map-free localization처럼 metric scale이 필요한 용례가 있다. 그래서 정답이 metric인 데이터에서는 \(z := \hat{z}\) 로 두어 예측의 정규화를 끈다:
\[\ell_{regr}(v, i) = \left\lVert \frac{1}{z} X^{v,1}_i - \frac{1}{\hat{z}} \hat{X}^{v,1}_i \right\rVert \;\xrightarrow{\text{metric GT}}\; \frac{1}{\hat{z}} \left\lVert X^{v,1}_i - \hat{X}^{v,1}_i \right\rVert\]- \(v \in \{1,2\}\): view, \(i\): 정답 3D 점 \(\hat{X}^{v,1}_i\) 가 정의된 픽셀. 이렇게 하면 네트워크가 절대 척도를 직접 배우게 된다
최종 confidence-aware loss는 DUSt3R와 같다: \(\mathcal{L}_{conf} = \sum_{v} \sum_{i \in \mathcal{V}^v} C^v_i\, \ell_{regr}(v,i) - \alpha \log C^v_i\).
3.2 Matching prediction head and loss
pointmap의 reciprocal 매칭은 극단적 시점 변화에도 놀랍게 잘 되지만 부정확하다. (i) 회귀는 본질적으로 노이즈에 오염되고, (ii) DUSt3R는 매칭용으로 학습된 적이 없다.
Matching head. 그래서 dense feature map \(D^1, D^2 \in \mathbb{R}^{H \times W \times d}\) 를 출력하는 둘째 head를 단다.
\[D^1 = \text{Head}^1_{desc}([H^1, H'^1]), \qquad D^2 = \text{Head}^2_{desc}([H^2, H'^2])\]- head는 GELU를 낀 단순 2-layer MLP, 각 feature는 단위 노름으로 정규화, 차원 \(d = 24\)
Matching objective. 한 이미지의 descriptor가 상대 이미지에서 같은 3D 점을 보는 단 하나의 descriptor와만 매칭되게 하고 싶다. 정답 대응 집합 \(\hat{\mathcal{M}} = \{(i,j) \mid \hat{X}^{1,1}_i = \hat{X}^{2,1}_j\}\) 위에서 InfoNCE loss를 쓴다.
\[\mathcal{L}_{match} = -\sum_{(i,j) \in \hat{\mathcal{M}}} \log \frac{s_\tau(i,j)}{\sum_{k \in \mathcal{P}^1} s_\tau(k,j)} + \log \frac{s_\tau(i,j)}{\sum_{k \in \mathcal{P}^2} s_\tau(i,k)}, \qquad s_\tau(i,j) = \exp\!\left[ -\tau\, {D^1_i}^\top D^2_j \right]\]- \(\mathcal{P}^1, \mathcal{P}^2\): 각 이미지에서 대응에 참여하는 픽셀 부분집합, \(\tau\): temperature
- 본질적으로 cross-entropy 분류 loss다. 회귀와 달리 정확한 픽셀을 맞혀야만 보상이 있고, 근처 픽셀은 소용없다. 이것이 고정밀 매칭을 강하게 유도한다
최종 학습 목표는 둘의 결합이다: \(\mathcal{L}_{total} = \mathcal{L}_{conf} + \beta \mathcal{L}_{match}\).
3.3 Fast reciprocal matching
feature map에서 대응은 상호 최근접 이웃으로 뽑는다.
\[\mathcal{M} = \{(i,j) \mid j = \text{NN}_2(D^1_i) \ \text{and}\ i = \text{NN}_1(D^2_j)\}, \qquad \text{NN}_A(D^B_j) = \arg\min_i \lVert D^A_i - D^B_j \rVert\]문제는 naive 구현이 \(O(W^2 H^2)\) 라는 것이다. 모든 픽셀 쌍을 비교해야 하고, 고차원에서는 K-d tree 최적화도 비효율적이라 MASt3R 추론 자체보다 몇 자릿수 느려진다.
[Figure 3] fast reciprocal matching의 반복 NN 전파(왼쪽), 5회 반복이면 거의 모든 점이 수렴(가운데), 적당한 subsampling에서 속도와 성능이 함께 좋아지는 trade-off(오른쪽)
Fast matching. subsampling 기반 반복으로 푼다. \(I^1\) 의 격자에서 초기 픽셀 \(k\) 개 \(U^0\) 을 뽑고, NN으로 \(I^2\) 에 보냈다가(\(V^t\)) 다시 돌려보낸다:
\[U^t \mapsto \left[\text{NN}_2(D^1_u)\right]_{u \in U^t} \equiv V^t \mapsto \left[\text{NN}_1(D^2_v)\right]_{v \in V^t} \equiv U^{t+1}\]- cycle을 이룬 쌍(\(U^t_n = U^{t+1}_n\))이 곧 reciprocal 매칭이다. 수확하고 집합에서 제거한다
- 남은 점만으로 반복하면 몇 번 만에 대부분 수렴한다(그림 가운데). 최종 대응은 모든 회차의 수확을 합친 \(\mathcal{M}_k\)
복잡도는 \(O(kWH)\) 로, naive 대비 \(WH/k \gg 1\) 배 빠르다. 흥미롭게도 \(\mathcal{M}_k\) 는 전체 집합 \(\mathcal{M}\) 의 부분집합인데 outlier를 걸러내는 성질이 있어, 전체를 쓸 때보다 최종 정확도가 오히려 높다(그림 오른쪽, \(k=3000\) 에서 64배 빠르면서 더 정확).
3.4 Coarse-to-fine matching
attention이 이미지 면적에 제곱이라 MASt3R는 최대 변 512픽셀까지만 다룬다. 고해상도(예: 1M 픽셀) 이미지는 축소 매칭 후 대응을 업스케일해야 해서 정밀도가 깎인다. 표준 처방인 coarse-to-fine을 쓴다.
- 축소 이미지로 coarse 매칭 \(\mathcal{M}^0_k\) 을 얻는다
- 각 원본 이미지에 50% 겹치는 512픽셀 window crop 격자 \(W^1, W^2\) 를 만들고, coarse 대응의 90%가 덮일 때까지 window 쌍을 greedy하게 고른다
- 각 window 쌍을 독립적으로 매칭한다: \(D^{w_1}, D^{w_2} = \text{MASt3R}(I^1_{w_1}, I^2_{w_2})\), \(\mathcal{M}^{w_1,w_2}_k = \text{fast\_reciprocal\_NN}(D^{w_1}, D^{w_2})\)
- window 좌표의 대응을 원본 좌표로 되돌려 이어 붙이면 full-resolution dense 매칭이 된다
4. Experimental results
4.1 Training
- 데이터: Habitat, ARKitScenes, Blended MVS, MegaDepth, Static Scenes 3D, ScanNet++, CO3D-v2, Waymo, Map-free, WildRGB, VirtualKitti, Unreal4K, TartanAir + 내부 데이터의 14개 혼합. 이 중 10개가 metric 정답을 가진다
- 학습: 공개 DUSt3R와 같은 backbone(ViT-Large encoder, ViT-Base decoder)에 DUSt3R checkpoint로 초기화. epoch당 650k 쌍, 35 epoch, cosine schedule(초기 lr 0.0001), 최대 변 512에 종횡비 무작위화. coarse-to-fine이 줌아웃→줌인으로 동작하므로 무작위 crop 증강(주점 위치를 보존하는 homography 변환)으로 다양한 스케일을 보여 준다
- 대응 샘플링: matching loss의 정답 대응은 정답 pointmap \(\hat{X}^{1,1} \leftrightarrow \hat{X}^{2,1}\) 의 reciprocal 매칭으로 만들고, 쌍당 4096개를 샘플링한다(모자라면 무작위 거짓 대응으로 패딩)
- NN 구현: 3D 점 매칭은 K-d tree, \(d=24\) 특징 매칭은 FAISS
4.2 Map-free localization
단 한 장의 reference 이미지로, 지도 없이 metric 공간에서 카메라를 측위하는 극난도 benchmark다(460/65/130 장면). VCRE(Virtual Correspondence Reprojection Error)와 pose 오차로 평가한다. fast matching은 \(k = 3000\) (이후 실험 공통).
validation set에서의 변형 비교:
| 매칭 대상 | depth | Reproj.↓ | VCRE Prec.↑ | VCRE AUC↑ | Med. Err. (m, °)↓ | Pose Prec.↑ | Pose AUC↑ | |
|---|---|---|---|---|---|---|---|---|
| (I) DUSt3R | 3D | DPT | 125.8 px | 45.2% | 0.704 | 1.10m 9.4° | 17.0% | 0.344 |
| (II) MASt3R | 3D | DPT | 112.0 px | 49.9% | 0.732 | 0.94m 3.6° | 21.5% | 0.409 |
| (III) MASt3R-M | feat | DPT | 107.7 px | 51.7% | 0.744 | 1.10m 10.8° | 19.3% | 0.382 |
| (IV) MASt3R | feat | DPT | 112.9 px | 51.5% | 0.752 | 0.93m 3.0° | 23.2% | 0.435 |
| (V) MASt3R | feat | (auto) | 57.2 px | 75.9% | 0.934 | 0.46m 3.0° | 51.7% | 0.746 |
[Table 1] Map-free validation set에서의 loss·매칭 모드 ablation
- descriptor 매칭 > 3D 점 매칭(II vs IV). 회귀가 픽셀 대응에 본질적으로 부적합하다는 분석의 확인
- matching loss만 단독 학습(III)은 오히려 나쁘다(median 회전 10.8° vs 3.0°). decoder가 매칭 한 과제에 전념하는데도 그렇다. 매칭을 3D에 접지(grounding)하는 것이 관건이라는 뜻
- MASt3R 자체의 metric depth를 쓰면(V) 성능이 크게 뛴다. depth와 매칭이 서로를 돕는다
test set에서 SoTA와 비교:
| depth | Reproj.↓ | VCRE Prec.↑ | VCRE AUC↑ | Med. Err. (m, °)↓ | Pose Prec.↑ | Pose AUC↑ | |
|---|---|---|---|---|---|---|---|
| RPR | DPT | 147.1 px | 40.2% | 0.402 | 1.68m 22.5° | 6.0% | 0.060 |
| SIFT | DPT | 222.8 px | 25.0% | 0.504 | 2.93m 61.4° | 10.3% | 0.252 |
| SP+SG | DPT | 160.3 px | 36.1% | 0.602 | 1.88m 25.4° | 16.8% | 0.346 |
| LoFTR | KBR | 165.0 px | 34.3% | 0.634 | 2.23m 37.8° | 11.0% | 0.295 |
| DUSt3R | DPT | 116.0 px | 50.3% | 0.697 | 0.97m 7.1° | 21.6% | 0.394 |
| MASt3R | DPT | 104.0 px | 54.2% | 0.726 | 0.80m 2.2° | 27.0% | 0.456 |
| MASt3R | (auto) | 48.7 px | 79.3% | 0.933 | 0.36m 2.2° | 54.7% | 0.740 |
| MASt3R (direct reg.) | 53.2 px | 79.1% | 0.941 | 0.42m 3.1° | 53.0% | 0.777 |
[Table 2] Map-free test set에서의 SoTA 비교
VCRE AUC 93% 이상으로, 2위 발표 방법(LoFTR+KBR 63.4%) 대비 30%p 절대 개선이고, median 이동 오차는 기존 ~2m에서 36cm로 줄었다. metric depth 예측의 몫이 크지만, DPT depth를 쓰는 순수 매칭 변형도 이미 모든 기존 방법을 앞선다.
4.3 Relative pose estimation
CO3Dv2(41 카테고리)·RealEstate10K, 시퀀스당 10프레임의 45쌍, GT 초점거리 없이 essential matrix로 상대 pose를 푼다. MASt3R는 항상 쌍(pairwise)으로만 예측한다. multi-view를 쓰는 경쟁 방법들과 대비되는 지점이다.
| Methods | CO3Dv2 RRA@15 | CO3Dv2 RTA@15 | CO3Dv2 mAA(30) | RealEstate10K mAA(30) | |
|---|---|---|---|---|---|
| (a) | Colmap+SG | 36.1 | 27.3 | 25.3 | 45.2 |
| (a) | PixSfM | 33.7 | 32.9 | 30.1 | 49.4 |
| (a) | RelPose | 57.1 | - | - | - |
| (a) | PosReg | 53.2 | 49.1 | 45.0 | - |
| (a) | PoseDiff | 80.5 | 79.8 | 66.5 | 48.0 |
| (a) | RelPose++ | (85.5) | - | - | - |
| (a) | RayDiff | (93.3) | - | - | - |
| (a) | DUSt3R-GA | 96.2 | 86.8 | 76.7 | 67.7 |
| (b) | DUSt3R | 94.3 | 88.4 | 77.2 | 61.2 |
| (b) | MASt3R | 94.6 | 91.9 | 81.8 | 76.4 |
[Table 3-왼쪽] CO3Dv2·RealEstate10K에서의 multi-view pose 회귀. (a) multi-view, (b) pairwise 방법, 괄호는 10-view 결과가 없어 8-view 최고치
SfM 계열은 물체 중심 + 넓은 baseline(최대 180°) 때문에 크게 무너진다. MASt3R는 이동(RTA)과 mAA에서 두 데이터셋 모두 1위다. RealEstate에서 최고 multi-view 방법보다 mAA +8.7점, pairwise DUSt3R보다 +15.2점이다.
4.4 Visual localization
Aachen Day-Night(실외)·InLoc(실내)에서 절대 pose를 추정한다. 성공 기준 세 임계값에서의 측위 성공률(%)을 잰다.
| Methods | Aachen Day | Aachen Night | InLoc DUC1 | InLoc DUC2 |
|---|---|---|---|---|
| Kapture+R2D2 | 91.3/97.0/99.5 | 78.5/91.6/100 | 41.4/60.1/73.7 | 47.3/67.2/73.3 |
| SP+SuperGlue | 89.8/96.1/99.4 | 77.0/90.6/100 | 49.0/68.7/80.8 | 53.4/77.1/82.4 |
| SP+LightGlue | 90.2/96.0/99.4 | 77.0/91.1/100 | 49.0/68.2/79.3 | 55.0/74.8/79.4 |
| LoFTR | 88.7/95.6/99.0 | 78.5/90.6/99.0 | 47.5/72.2/84.8 | 54.2/74.8/85.5 |
| DKM | - | - | 51.5/75.3/86.9 | 63.4/82.4/87.8 |
| DUSt3R top1 | 72.7/89.6/98.1 | 59.7/80.1/93.2 | 36.4/55.1/66.7 | 27.5/42.7/49.6 |
| DUSt3R top20 | 79.4/94.3/99.5 | 74.9/91.1/99.0 | 53.0/74.2/89.9 | 61.8/77.1/84.0 |
| MASt3R top1 | 79.6/93.5/98.7 | 70.2/88.0/97.4 | 41.9/64.1/73.2 | 38.9/55.7/62.6 |
| MASt3R top20 | 83.4/95.3/99.4 | 76.4/91.6/100 | 55.1/77.8/90.4 | 71.0/84.7/89.3 |
| MASt3R top40 | 82.2/93.9/99.5 | 75.4/91.6/100 | 56.1/79.3/90.9 | 71.0/87.0/91.6 |
| MASt3R direct reg. top1 | 1.5/4.5/60.7 | 1.6/4.2/47.6 | 13.1/32.3/58.1 | 10.7/26.0/38.2 |
[Table 4] Aachen Day-Night·InLoc visual localization에서 retrieval 이미지 수(topN)에 따른 성공률 (Aachen: 0.25m,2° / 0.5m,5° / 5m,10°, InLoc: 0.25m / 0.5m / 1m, 10°)
retrieval을 늘리면(top40) Aachen에서 경쟁력 있는 성능, InLoc에서는 SoTA를 크게 능가한다. top1(reference 한 장)로도 잘 동작한다. 3D 접지 매칭의 강인함이다. 반면 매칭 없이 pose를 직접 회귀하면 성능이 크게 무너진다(마지막 행). 장면 스케일이 커질수록 회귀 오차가 커지며, 신뢰할 만한 pose에는 feature matching이 여전히 필수임을 보여 준다.
4.5 Multiview 3D reconstruction
얻은 매칭을 triangulation해 MVS를 수행한다. 매칭은 카메라 지식 없이 full resolution으로 하고, GT 카메라는 정답 좌표계에서의 triangulation에만 쓴다. DTU에서 zero-shot(학습·fine-tuning 없음)으로 평가한다.
| Methods | Acc.↓ | Comp.↓ | Overall↓ | |
|---|---|---|---|---|
| (c) | Camp | 0.835 | 0.554 | 0.695 |
| (c) | Furu | 0.613 | 0.941 | 0.777 |
| (c) | Tola | 0.342 | 1.190 | 0.766 |
| (c) | Gipuma | 0.283 | 0.873 | 0.578 |
| (d) | MVSNet | 0.396 | 0.527 | 0.462 |
| (d) | CVP-MVSNet | 0.296 | 0.406 | 0.351 |
| (d) | UCS-Net | 0.338 | 0.349 | 0.344 |
| (d) | CER-MVS | 0.359 | 0.305 | 0.332 |
| (d) | CIDER | 0.417 | 0.437 | 0.427 |
| (d) | PatchmatchNet | 0.427 | 0.277 | 0.352 |
| (d) | GeoMVSNet | 0.331 | 0.259 | 0.295 |
| (e) | DUSt3R | 2.677 | 0.805 | 1.741 |
| (e) | MASt3R | 0.403 | 0.344 | 0.374 |
[Table 3-오른쪽] DTU dense MVS 결과 (mm). (c) 전통 방식, (d) 이 도메인에 학습한 학습 기반, (e) zero-shot
zero-shot으로 DUSt3R(1.741mm)를 크게 넘어 0.374mm다. 카메라 calibration·pose를 매칭에 전혀 쓰지 않고, 이 카메라 셋업을 본 적도 없는데 도메인 특화 학습을 한 최고 방법들과 경쟁하는 수준이다.
5. Conclusion
매칭을 3D에 접지한 MASt3R는 여러 공개 benchmark의 카메라 pose·localization 과제에서 기준을 크게 끌어올렸다. DUSt3R를 매칭으로 성공적으로 개선해 강인함과 픽셀 정밀도라는 두 세계의 장점을 모두 얻었고, fast reciprocal matcher와 coarse-to-fine 방식으로 사용자가 정확도와 속도의 균형을 고를 수 있게 했다. reference 한 장(top1)의 few-view 환경에서도 동작하는 능력이 localization의 활용 범위를 크게 넓힐 것으로 저자들은 본다.