Grounding Image Matching in 3D with MASt3R, Vincent Leroy, NaverLabs, arXiv 2024
일반적으로 Image Matching은 2D문제로 다뤄지고 있었습니다. 반면 이전 연구인 DUSt3R(이전글) 에서는 Transformer기반으로 두 이미지의 pixel과 3D pointmap의 correspondence 예측을 통해 3D공간상에서 Image Matching 문제를 풀었습니다. MASt3R는 DUSt3R의 후속 논문으로써, Image Matching을 3D문제로 다루면서 퀄리티를 향상시키고 속도를 개선하는 방법에 대해 다룹니다. MASt3R은 DUSt3R대비 고해상도로 많은 이미지수를 커버 할 수 있다는 것도 장점으로 내세우고 있습니다.
위 그림은 논문 첫페이지에서 가져왔습니다. 2개 입력 이미지의 공통 영역이 아주 적음에도 불구하고, 2D문제가 아니라 3D문제로 풀었기 때문에, Image Matching이 잘 된다는 것을 보여주는 이미지인 것 같습니다. 어떻게 Image Matching을 3D문제로 풀어내는지 알아보겠습니다.
기존 Image Matching의 문제점
문제1) 전통적인 Image Matching은 1) keypoint 추출, 2) 지역적으로 불변하는 특징(=discriptor)으로 변형, 3)feature공간에서 거리를 비교하여 keypoint 매칭으로 나눠져 있습니다. 조명 변화와 시점 변화에도 정확하고, 적은keypoint수를 사용해 밀리초 단위로 매칭이 가능합니다. 하지만 geometry context를 무시하게되고 반복패턴이나 low-texture 영역에 대해서는 에러를 발생하게 됩니다.
해결1) 이를 위해, local descriptor를 사용하기 보다 global descriptor를 사용하는 SuperGlue(2020)와 같은 기법이 제안되었습니다.
문제2) SuperGlue방법론의 문제는 keypoint의 descriptor가 충분히 인코딩 되지 않는다면, image matching 도중에 global context를 활용 할 수 없습니다.
해결2) 이를 위해, keypoint를 사용하지 않고 이미지를 한번에 매칭하는 dense holistic matching이 제안되었습니다. 이는 global attention 기법의 발전으로 가능하게 되었다고 합니다. 대표적으로 LoFTR 에서는, 이미지를 전체로 간주하여 계산함으로써 dense한 correspondence를 만들면서 반복 패턴과 low-texture 영역에 강인하게 만들었습니다.
문제3) LoFTR(2021)는 Map-free localization bechmark의 VCRE 평가에서 낮은 성능을 보였습니다. 이에 대해서 저자는 현실에서 matching task는 같은 3D point에 대응되는 pixel들인데, 기존 matching 접근법들은 2D 문제로만 다뤘기 때문이라고 합니다.
해결3) 3D point와 2D pixel간의 correspondence를 다루는 DUSt3R를 활용합니다. DUSt3R은 초기에 3D Reconstruction을 목적으로 만들어진 연구이지만, 적은수의 이미지들로 2D Image Matching도 가능했습니다.
문제4) DUSt3R이 3D Reconstruction 목적으로 만들어졌기에, 시점 변화엔 강인하지만 Image Matching에선 상대적으로 부정확합니다. MASt3R에서는 DUSt3R을 활용하여 Image Matching에 특화하는 방법에 관해 다룹니다.
Overview
MASt3R을 이해하려면, DUSt3R 알고리즘 이해가 선행적으로 되어야 합니다. 이전글 참고바랍니다.
크게 4가지로 알고리즘이 구성되어 있습니다.
- DUSt3R framework : scale normalization를 제외하고 DUSt3R을 그대로 사용합니다.
- Matching Prediction Head : DUSt3R 추가적인 head를 붙여, Image Matching 정확도를 향상시킵니다.
- Fast Reciprocal Matching : 이미지의 부분pixel들로 matching해서 속도를 향상시킵니다.
- Coarse-to-fine Matching : 저해상도에서 reciprocal matching하여 2개 이미지 내 관련 있는 영역(=window)을 선택하고, 고해상도에서 해당 영역으로 fine matching을 수행해서 속도를 향상시킵니다.
DUSt3R framework
회색이 기존 DUSt3R이고, 파란색이 MASt3R에서 추가된 부분입니다. DUSt3R이 변경되고 추가된 부분만 설명하겠습니다.
DUSt3R에서는 3D Reconstruction이 목적이므로, scale에 불변(=invariant)하도록 만들기 위해 각 viewpoint 좌표계에서 depth값을 normalization해주었습니다. 하지만 MASt3R에서는 Scale을 고려하기 때문에, normalization 을 없앴습니다.
이전글 내 Loss파트의 수식(3)을 없애고, Regression Loss 수식에서 scale factor z는 GT의 $\bar{x}$와 같은 값으로 사용합니다.
MASt3R은 DUSt3R의 Confidence Loss를 동일하게 사용합니다.
Matching Prediction Head
MASt3R은 DUSt3R와 동일하게 $Head_3D$ 에서 pointmap과 confidence를 출력합니다. $Head_3D$를 그대로 두는 이유는, extreme한 viewpoint 변화에도 pointmap을 잘 만들기 때문입니다. 다만 예측된 pointmap은 correspondence를 찾는 관점에서 정밀하지 못하고, 최적값을 찾지 못합니다. noise에 영향받기 쉽고, matching을 위해 훈련된적이 없기 때문입니다.
다른 연구들에서 invariant한 feature space에서 reciprocal matching을 찾았었던 것을 참조해서 MASt3R에서 활용합니다.
$Head_{desc}$는 $Head_3D$와 동일한 입력을 받아 WxHxd크기(d=24)의 local feature map을 출력합니다. $Head_{desc}$는 2-layer의 MLP로 구성되어 있고 non-linear GELU activation 함수를 사용합니다. 이 Head 출력값에 대한 Matching Loss는 아래와 같습니다.
해당 수식에 의미를 자세히 써보겠습니다.
위 수식은 Constrative Learning에 사용되는 infoNCE Loss를 변형한 수식입니다. infoNCE Loss에 대해 간단히 설명하자면, positive sample에 대해서 feature간의 내적이 커지도록 만들고, negative sample에 대해서 feature간의 내적이 작아지도록 만들어, feature기반으로 학습이 되도록 하는 Loss입니다.
2개 이미지에서 모두 나타나고 3D point가 일치하는 pixel쌍을 positive sample로 두고, 그렇지 않은 pixel쌍에 대해선 negative sample로 둡니다.
논문에서 2개 이미지에서 모두 나타나고 3D point가 일치하는 pixel쌍을 나타내는 수식은 아래와 같습니다.
$$ \hat{\mathcal{M}} = \{(i, j) \mid \hat{X}^{1,1}_i = \hat{X}^{2,1}_j $$
1번 이미지 viewpoint를 중심좌표계로 두고, 1번 viewpoint에 나타난 이미지 pixel과 2번 viewpoint에 나타난 이미지 pixel의 3D point좌표가 동일한 집합을 나타냅니다.
$$ \mathcal{P}^1 = \{ i \mid (i, j) \in \hat{\mathcal{M}} \} \quad \text{and} \quad \mathcal{P}^2 = \{ j \mid (i, j) \in \hat{\mathcal{M}} \} $$
$\mathcal{P}^1$은 $\hat{\mathcal{M}}$ 집합내에서 1번 이미지 viewpoint에서 나타난 pixel 집합을 의미합니다.
$\mathcal{P}^2$은 $\hat{\mathcal{M}}$ 집합내에서 2번 이미지 viewpoint에서 나타난 pixel 집합을 의미합니다.
Matching Loss에 log안에 분자는 positive sample에 해당하고, 분모는 negative sample에 해당합니다. $s_{\tau}(i,j)$는 cross-entropy형태로 구성되어 있으며, $D$는 feature vector로써 $Head_{desc}$의 출력값에 해당됩니다. 1번 이미지의 i와 2번 이미지의 j가 동일여부에 따라, 두개의 feature vector가 조정되게 됩니다. 동일하다면 두개의 feature vector의 cross-entropy가 작아지게 하고, 다르다면 커지게 합니다.
전체 Loss는 방금 언급한 Matching Loss와 DUSt3R의 Confidence Loss로 구성이 됩니다.
Fast Reciprocal Matching
위에서 언급한 네트워크로 feature map $D^1$과 $D^2$를 획득한 후에 pixel correspondecne를 추출하게 됩니다.
1번째 이미지의 pixel i와 가장 유사도가 높은 2번째 이미지의 pixel j와
2번째 이미지의 pixel j와 가장 유사도가 높은 1번째 이미지의 pixel i를
갖는 pixel쌍 i,j를 찾기 위해서, 식 (14)와 같이 거리기반의 Nearset Neighbor를 사용합니다. 이렇게 2개 이미지에 대해 모든 pixel을 비교하게 될 경우 시간복잡도는 $O(W^2H^2)$가 나옵니다. 이 연산을 줄이기 위해 Fast reciprocal(=상호간의) matching 기법을 제안합니다.
최초에 1번째 이미지 내 하나의 grid에서 적은수의 k개의 pixel을 균등하게 샘플링합니다. $U^t$로 표기합니다.
그리고 NN을 사용해서 $U^t$와 2번째 이미지내 pixel과 mapping을 합니다. $V^t$로 표기합니다.
다시 NN을 써서 $V^t$와 1번째 이미지내 pixel과 mapping을 합니다. $U^{t+1}$로 표기합니다.
만약 $U^t$와 $U^{t+1}$이 같게 된다면 reciprocal matches 집합에 추가합니다.
논문에 언급된 수식은 아래와 같습니다.
이렇게 한번 loop를 돌고나서 다음 loop는 또 다른 k개의 pixel을 균등하는 것부터 시작하게 되는데, loop t에서 matching한 정보를 기반으로 loop t+1에서 샘플링한 pixel에 대한 matching값을 예측할 수 있습니다. (<- 이부분은 정확하게 해석되지 않아서 추측성 입니다.) 때문에 loop가 진행 될 수록 pixel pair 예측을 잘하게 되어 수렴하게 됩니다. 몇번의 loop를 진행하게되면 un-converged point의 갯수가 감소하게 됩니다. 아래는 loop(=iteration step t)가 진행됨에 따라 activte한(=un-converged한) correspondeces pair 갯수의 변화를 보여 줍니다.
결과값은 각 loop t에서 획득한 pair집합들을 모두 종합하여, 최종적으로 reciprocal pair 집합이 만들어집니다. 논문에서 $ \mathcal{M}_k = \bigcup_t \mathcal{M}^t_k$ 으로 표기하고 있습니다. 이렇게 하게 될 경우, 모든 pixel pair를 모두 비교하지 않기 때문에, 전체 시간복잡도는 O(kWH)가 됩니다.
아래 그래프를 보면 k가 3000일 때 가장 좋은 matching 성능과 속도를 보이는 것을 볼 수 있습니다.
Coarse-to-fine Matching
위에서 언급한 reciprocal matching 집합을 계산 할 때는 512x512 해상도로 줄여서 만듭니다. 고해상도의 이미지에 대해 reciprocal matching 을 계산하게 되면은 연산량이 많아져 이를 줄이기 위한 방법으로 제안하고 있습니다. 문제는 저해상도로 연산한 경우 matching 정확도가 정확하지 않을 수 있으므로 고해상도로 높여서 feature macthing이 필요로 합니다.
비교할 이미지의 원본 해상도를 너비가 W pixel 높이가 4 pixel 형태인 window로 crop합니다. 1번째 이미지에대한 window, 2번째 이미지에 대한 window의 전체쌍에 대해 논문에서는 $(w_1, w_2) \in W^1 \times W^2$ 로 표현하고 있습니다. reciprocal matching 집합에서 가장 많은 pair를 포함하는 window 쌍을 선택합니다. 그 후에 window pair를 하나씩 greedy하게 추가해서 reciprocal matching 집합이 90% 커버 할 때까지 수행합니다. 이를 수식적으로 아래와 같이 표현하고 있습니다.
reciprocal matching집합은 coarse한 해상도에서 계산하고, 각 window pair에서 correspondences 계산은 원본 이미지에서 수행되기 때문에 dense하고 full-resolution matching을 가능하게 합니다. (<- 이부분은 의역이 많이 되었습니다. 잘못 해석 됬을 수 있으므로 논문에서 내용 재확인 바랍니다.)
Experiments
논문에서는 4가지 관점으로 모델을 평가하고 있습니다.
Map-free Localization
Relative pose estimation
Visual Localization
Multiview 3D reconstruction
'Camera Model' 카테고리의 다른 글
[개념 정리] Fronto Parallel Plane (0) | 2024.05.26 |
---|---|
[개념 정리] Bundle Adjustment (0) | 2024.05.16 |
[개념 정리] Image Projection 과 matrix (0) | 2024.05.07 |
[개념 정리] SfM(Structure from Motion) of COLMAP - 1부 (7) | 2024.05.03 |
[논문 리뷰] DUSt3R (arXiv 2023) : Pose-free 3D Reconstruction (0) | 2024.04.22 |
댓글