PaperReview

LoFTR: Detector-Free Local Feature Matching with Transformers

Black940514 2026. 9. 16. 21:07

LoFTR: Detector-Free Local Feature Matching with Transformers - 세미나 자료

저자: Jiaming Sun, Zehong Shen, Yuang Wang 외 2명
발행년도: 2021년
인용수: None회
논문 링크: http://arxiv.org/abs/2104.00680v1
arXiv ID: 2104.00680




0. TL;DR


📌 핵심 요약
  • LoFTR는 **detect → describe → match** 3단계 중 첫 단계를 통째로 삭제하고, 1/8 해상도 dense coarse matching → 1/2 해상도 sub-pixel refinement의 2단계로 이미지 매칭을 다시 짰다.
  • Transformer의 self/cross attention이 주는 **global receptive field** 덕분에, 흰 벽이나 반복 무늬 바닥처럼 detector가 반복 검출에 실패하는 영역에서도 대응점을 찾아냈다.
  • ScanNet pose AUC@10°에서 SuperGlue 33.81 → LoFTR 40.8, HPatches AUC@3px 53.9 → 65.9 — detector-free 계열이 detector-based를 처음으로 큰 폭으로 앞선 전환점이 됐다.


1. 왜 이 논문이 흥미로운가


논문 Figure 1은 실내 복도 사진 두 장이다. 흰 벽과 반복 무늬 바닥이 화면의 대부분을 차지하는, 어디에나 있는 평범한 장면. SuperGlue는 여기서 매칭선을 거의 긋지 못했고, LoFTR는 벽면 전체를 촘촘히 채웠다.


저자들이 던진 진단 한 줄이 이 그림을 설명한다 — "반복 검출 가능한 interest point가 없으면, 완벽한 descriptor가 있어도 올바른 대응점을 찾는 것은 불가능하다." 20년간 커뮤니티가 매달려온 축(더 좋은 descriptor)이 애초에 잘못된 축이었다는 주장이다.


사람은 밋밋한 벽 앞에서 어떻게 위치를 특정하는가. 벽 자체의 무늬를 보는 게 아니라 "저 모서리에서 두 뼘쯤 오른쪽"이라는 상대 위치로 판단한다. 저자들은 이 관찰을 그대로 아키텍처에 옮겼다.


전역 문맥(attention)과 좌표 정보(positional encoding)를 결합하면 특징 없는 픽셀에도 고유한 지문이 생긴다는 것. SIFT(1999) 이래 고정되어 있던 파이프라인의 첫 단계를 지우는 데 필요했던 건 새 descriptor가 아니라 관점의 교체였다.




2. Problem & Why now


풀려는 문제는 단순하다. 두 장의 이미지가 주어졌을 때 신뢰할 수 있는 local feature correspondence를 얻는 것. SfM, SLAM, visual localization이 모두 이 연산 위에 쌓여 있어서, 여기서 새는 정확도는 파이프라인 끝까지 그대로 전파된다.


문제가 되는 조건도 명확하다 — 저텍스처, 반복 패턴, 큰 시점 변화, 조명 변화, 모션 블러. 저자들은 특히 실내 환경을 지목했다. 무특징 영역이 시야의 대부분을 점유하는 일이 흔하기 때문이다.


기존 접근의 첫 번째 한계는 detector 자체에 있었다. SIFT, ORB 같은 hand-crafted 계열부터 LIFT, SuperPoint, R2D2까지 학습 기반 계열도 검출 단계를 그대로 물려받았다. detector는 탐색 공간을 줄여주지만, 그 과정에서 버린 정보는 뒤에서 복구되지 않는다. 실내 저텍스처 장면에서는 애초에 뽑을 점이 없다.


두 번째 한계는 SuperGlue다. GNN attention으로 두 descriptor 집합 간 메시지 전달을 학습해 매칭 사전지식 자체를 데이터에서 얻었고, 당시 SOTA를 갈아치웠다. 그런데 저자들이 지적한 대로 SuperGlue의 attention 범위는 "검출된 interest point 집합"에 갇혀 있다. 매칭기가 아무리 똑똑해져도 입력이 비어 있으면 손쓸 방법이 없다.


세 번째 한계는 detector-free dense 계열이다. NCNet은 4D cost volume으로 가능한 모든 매치를 열거하고 4D convolution으로 neighborhood consensus를 강제했다. Sparse-NCNet은 sparse conv로 효율을 올렸고, DRC-Net은 coarse-to-fine을 얹었다. 검출 단계는 사라졌지만 4D convolution의 receptive field가 각 매치의 국소 이웃에 머물러, 구분 불가능한 영역을 여전히 구분하지 못했다.


저자들의 인사이트는 여기서 나온다. 필요한 건 neighborhood consensus가 아니라 global consensus다. 두 이미지 모두에 조건화된(conditioned on both images) dense feature를 만들면, 밋밋한 영역도 위치 종속적으로 구별된다. 전역 수용 영역이 특징 추출 네트워크에 결정적이라는 관찰이 LoFTR의 출발점이 됐다.




3. Background


첫 번째 사전지식은 Transformer attention이다. Query·Key·Value의 내적에 softmax를 씌워 Value를 가중 평균하는 연산이며, GNN 관점에서는 노드 간 message passing의 일반형으로 읽힌다. 같은 이미지 내부에서 문맥을 모으면 self-attention, 상대 이미지의 정보를 끌어오면 cross-attention이다. SuperGlue가 이미 이 구조를 keypoint 집합 위에서 쓰고 있었다는 점이 중요하다.


두 번째는 Linear Transformer다. dense feature grid에 vanilla attention을 태우면 시퀀스 길이 제곱에 비례하는 비용이 나와 계산이 아예 성립하지 않는다. Katharopoulos et al.은 exponential kernel을 간단한 elementwise 함수로 대체하고 행렬곱 결합법칙을 이용해 복잡도를 선형으로 낮췄다. 성능 향상 기법이 아니라 LoFTR를 존재 가능하게 만든 전제조건에 가깝다.


세 번째는 미분 가능한 매칭 레이어다. SuperGlue 계열이 쓴 Optimal Transport(Sinkhorn)와, 점수 행렬에 행·열 방향 softmax를 각각 적용해 곱하는 dual-softmax 두 갈래가 있다. 후자는 상호 최근접 이웃(MNN) 기준을 미분 가능하게 완화한 형태로 읽힌다. LoFTR는 둘 다 실험했다. 여기에 FPN 기반 multi-scale feature, DETR식 2D positional encoding, epipolar error·pose AUC·homography corner error AUC 같은 평가 지표가 배경으로 깔린다.


계보를 정리하면 이렇다. SIFT·ORB(hand-crafted) → LIFT·MagicPoint·SuperPoint(학습된 detector+descriptor) → SuperGlue(attention 기반 matcher, 단 detector 의존) → NCNet·Sparse-NCNet·DRC-Net(detector-free, cost volume) → LoFTR.


저자들은 SuperGlue에서 "attention으로 두 집합 간 메시지를 주고받는다"는 아이디어만 계승하고 입력을 sparse keypoint set에서 dense feature grid로 갈아끼웠다. DRC-Net에서는 coarse-to-fine 구조만 공유하고, cost volume + 4D conv를 attention으로 치환했다. 두 직전 연구에서 절반씩 가져와 서로의 약점을 상쇄시킨 설계다.


방법 핵심 아이디어 Receptive field ScanNet AUC@10° 한계
SP+SuperGlue 검출된 keypoint 집합에 self/cross attention GNN Global (단 keypoint 한정) 33.81 detector가 못 뽑은 영역은 원천 불가
DRC-Net dense 4D cost volume + coarse-to-fine 정제 Local (4D conv 이웃) 17.93 neighborhood consensus만, 무특징 영역 구분 실패
LoFTR (본 논문) dense feature에 self/cross attention → coarse match → correlation sub-pixel 정제 Global (전 픽셀) 40.8 1/8 해상도 제약, 큰 이미지에서 비용 부담


4. Method


입력은 이미지 쌍 $I^A, I^B$이고 출력은 sub-pixel 정확도를 가진 대응점 집합 $\mathcal{M}_f$다. 흐름은 네 덩어리로 끊긴다. FPN 붙은 CNN이 1/8 해상도 coarse feature $\tilde{F}^A, \tilde{F}^B$와 1/2 해상도 fine feature $\hat{F}^A, \hat{F}^B$를 동시에 뽑고 → coarse feature를 1D로 flatten해 positional encoding을 더한 뒤 self/cross attention을 $N_c=4$회 interleave하고 → 변환된 feature 간 score matrix에 dual-softmax 또는 OT를 씌워 confidence matrix $P_c$를 얻고 → threshold $\theta_c=0.2$와 MNN을 통과한 coarse match마다 fine feature map에서 $w=5$ 윈도우를 잘라 correlation heatmap의 기댓값으로 좌표를 다듬었다. detector는 어디에도 없다.


flowchart LR
    A["I^A"] --> C["Local Feature CNN + FPN<br/>coarse 1/8 / fine 1/2"]
    B["I^B"] --> C
    C --> D["+ Positional Encoding<br/>LoFTR Module (self↔cross × Nc=4)"]
    D --> E["Differentiable Matching<br/>dual-softmax / OT → Pc"]
    E --> F["θc=0.2 + MNN → Mc"]
    F --> G["Coarse-to-Fine<br/>w×w crop + correlation"]
    G --> H["Mf = {(î, ĵ')}"]

LoFTR 전체 파이프라인: CNN 특징 추출부터 coarse 매칭, sub-pixel 정제까지 네 단계


위 도식에서 두 이미지 브랜치가 LoFTR Module 안쪽에서 cross-attention으로 합류하는 구조를 확인할 수 있었다. 왼쪽 CNN 블록은 $(1/8)^2 H W$ 길이의 coarse map과 1/2 해상도 fine map을 한 번에 내보내고, 오른쪽 끝의 4번 모듈만 $(\tilde{i}, \tilde{j}) \in \mathcal{M}_c$마다 반복 실행됐다. 무거운 transformer는 전역에서 딱 한 번, 가벼운 $N_f=1$ transformer는 매치 개수만큼 돈다. 계산량을 어디에 배분할지에 대한 결정이 그림 한 장에 드러나 있다.


모듈 A: Local Feature CNN


저자들은 backbone으로 ResNet-18 변형에 FPN을 얹었다. 이유를 두 가지로 명시했다. 첫째, CNN이 가진 translation equivariance와 locality라는 inductive bias가 local feature 추출에 잘 맞는다는 것. 둘째가 더 실질적이다 — "CNN이 도입하는 downsampling이 LoFTR 모듈의 입력 길이를 줄여주며, 이것이 감당 가능한 계산 비용을 보장하는 데 결정적"이라고 썼다.


숫자로 보면 체감이 된다. $640 \times 480$ 이미지를 1/8로 내리면 토큰 수는 $80 \times 60 = 4800$이다. 원본 해상도 그대로였다면 307,200개. 여기에 attention을 태운다는 건 농담이 된다. CNN은 성능 모듈이 아니라 압축기 역할을 맡았다.


FPN을 쓴 건 coarse와 fine을 한 백본에서 동시에 뽑기 위해서다. 구현에서는 변환된 $\tilde{F}^A_{tr}, \tilde{F}^B_{tr}$를 upsample해 $\hat{F}^A, \hat{F}^B$와 concat한 뒤 fine-level LoFTR에 넣었다. coarse 단계에서 모은 전역 문맥이 정제 단계까지 흘러가도록 연결한 셈이다.


모듈 B: Local Feature Transformer (LoFTR Module)


이 모듈이 논문의 이름값이다. 같은 이미지 안에서 문맥을 모으는 self-attention과, 상대 이미지의 정보를 끌어오는 cross-attention을 $N_c$회 번갈아 쌓았다. self일 때 $f_i, f_j$는 같은 feature map이고, cross일 때는 $(\tilde{F}^A, \tilde{F}^B)$ 또는 그 반대 방향이 들어간다. 논문이 attention을 설명하며 붙인 표현이 정확하다 — "쿼리 원소와 각 키 원소의 유사도를 재서 관련 정보를 골라내는 연산이며, GNN에서는 이를 message passing이라 부른다."


문제는 비용이었다. 저자들은 대놓고 적었다. "local feature CNN으로 입력 길이를 줄인 뒤에도 vanilla Transformer를 그대로 쓰는 것은 실용적이지 않다." 4800 토큰의 제곱은 2300만이다. 여기서 Linear Transformer가 들어왔다.


$$\text{Attention}(Q, K, V) = \text{softmax}(QK^T)V \quad \Rightarrow \quad \text{sim}(Q,K) = \phi(Q) \cdot \phi(K)^T, ;; \phi(\cdot) = \text{elu}(\cdot) + 1$$


softmax 안의 exponential kernel을 $\phi(\cdot)=\text{elu}(\cdot)+1$이라는 elementwise 함수로 갈아끼운 게 전부다. 핵심은 그 다음이다. 커널이 분리되면 행렬곱 결합법칙을 쓸 수 있게 되고, $\phi(K)^T V$를 먼저 계산한다. feature 차원 $D$가 시퀀스 길이 $N$보다 압도적으로 작으므로($D \ll N$) 비용은 $O(N^2)$에서 $O(N)$으로 떨어졌다. 이 치환이 없었다면 LoFTR는 논문이 아니라 아이디어로 남았다. Fig. 3(b)와 3(c)가 두 계산 그래프의 차이를 나란히 보여준다.


vanilla dot-product attention과 linear attention의 계산 그래프 비교


위 그림에서 (b)의 vanilla 경로는 $Q K^T$를 먼저 만들어 $N_q \times N_k$ 크기의 거대한 행렬을 메모리에 올리는 반면, (c)의 linear 경로는 $\phi(K)^T V$부터 계산해 $D_k \times D_v$ 크기의 작은 행렬만 유지한다. softmax 블록이 사라지고 elu 기반 $\phi$ 두 개가 $Q$와 $K$ 갈래에 각각 붙은 형태다. 연산 순서 한 번 바꾼 결과가 곧 메모리 절약이다. 오른쪽 (a)의 encoder layer는 attention 뒤에 feed-forward와 residual norm이 붙은 표준 구성 그대로였다.


Positional encoding에서 저자들은 관행을 따르지 않았다. DETR의 2D positional encoding을 가져오되, backbone 출력에 단 한 번만 더했다. DETR처럼 레이어마다 주입하는 변형은 ablation에서 오히려 성능이 내려갔다. 저자들의 설명은 이렇다 — positional encoding이 각 원소에 sinusoidal 형태의 고유한 위치 정보를 부여하고, 그 덕분에 변환된 feature가 position-dependent해지며, 이것이 "구별 불가능한 영역에서 매치를 만들어내는 LoFTR 능력의 핵심"이라는 것.


매칭 레이어와 Coarse-to-Fine


score matrix는 $S(i,j) = \frac{1}{\tau}\langle \tilde{F}^A_{tr}(i), \tilde{F}^B_{tr}(j)\rangle$로 정의됐다. OT를 쓸 땐 $-S$를 partial assignment의 cost matrix로 넘기고, dual-softmax를 쓸 땐 다음 한 줄이 전부다.


$$P_c(i,j) = \text{softmax}\left(S(i,\cdot)\right)_j \cdot \text{softmax}\left(S(\cdot,j)\right)_i$$


행 방향 softmax는 "$i$ 입장에서 $j$가 최선인가"를, 열 방향 softmax는 "$j$ 입장에서 $i$가 최선인가"를 확률로 답한다. 둘을 곱하면 양쪽이 모두 동의할 때만 값이 커진다. 상호 최근접 이웃(MNN)이라는 이산적 기준을 미분 가능한 곱셈 하나로 완화한 것이다. 최종 선택은 $\mathcal{M}_c = {(\tilde{i},\tilde{j}) \mid \forall (\tilde{i},\tilde{j}) \in \text{MNN}(P_c),; P_c(\tilde{i},\tilde{j}) \geq \theta_c}$로, 확률 0.2 미만은 버렸다.


Coarse-to-fine은 단순하다. 각 coarse match의 fine-level 위치 $(\hat{i}, \hat{j})$를 찾아 $5\times5$ 윈도우 두 개를 crop하고, 작은 LoFTR($N_f=1$)로 변환한 뒤, $\hat{F}^A_{tr}(\hat{i})$의 중심 벡터를 $\hat{F}^B_{tr}(\hat{j})$ 전체와 correlate해 heatmap을 만든다. 그 확률 분포의 기댓값이 sub-pixel 좌표 $\hat{j}'$가 됐다. argmax가 아니라 기댓값이라는 점이 중요하다. 미분이 흐른다.


Loss와 학습 전략


전체 손실은 $\mathcal{L} = \mathcal{L}_c + \mathcal{L}_f$다. Coarse 항은 GT confidence matrix에 대한 negative log-likelihood, 즉 $\mathcal{L}_c = -\frac{1}{|\mathcal{M}_c^{gt}|}\sum_{(\tilde{i},\tilde{j}) \in \mathcal{M}_c^{gt}} \log P_c(\tilde{i},\tilde{j})$이며, $\mathcal{M}_c^{gt}$는 1/8 grid 중심점들의 re-projection 거리를 기준으로 뽑은 MNN이다. camera pose와 depth map이 있어야 만들어지는 라벨이다. Fine 항이 더 재미있다.


$$\mathcal{L}_f = \frac{1}{|\mathcal{M}_f|}\sum_{(\hat{i},\hat{j}') \in \mathcal{M}_f} \frac{1}{\sigma^2(\hat{i})} \left| \hat{j}' - \hat{j}'_{gt} \right|_2$$


$\sigma^2(\hat{i})$는 correlation heatmap의 total variance, 즉 모델 스스로 매긴 불확실성이다. 분포가 뾰족하면 가중치가 커지고 퍼져 있으면 작아진다. 애매한 매치의 좌표 오차에 끌려다니지 않겠다는 설계다.


여기서 $\sigma^2$로는 gradient를 흘리지 않았다. 안 그러면 모델이 불확실성을 키워 loss를 줄이는 지름길을 찾는다. 윈도우 밖으로 warp되는 점도 $\mathcal{L}_f$ 계산에서 제외했다.


학습은 random init에서 end-to-end로 돌렸다. ScanNet 기준 Adam, 초기 lr $1\times10^{-3}$, batch 64, GTX 1080Ti 64장으로 24시간. 추론은 $640\times480$ 쌍에 RTX 2080Ti 기준 dual-softmax 116ms, sinkhorn 3 iteration을 쓰는 OT는 130ms였다.




5. Experiments


실내 모델은 ScanNet(1613 시퀀스, overlap 0.4~0.8로 230M pair 샘플링, $640\times480$), 실외 모델은 MegaDepth(196 scene, COLMAP 재구성 + MVS depth)로 학습했다. 평가는 HPatches homography, ScanNet 1500 test pair, MegaDepth 1500 pair, Aachen Day-Night v1.1, InLoc 다섯 갈래다.


베이스라인도 세 계열로 갈라 세웠다 — detector-based local feature(D2Net, R2D2, DISK, ORB+GMS, ContextDesc), detector-based matcher(SP+SuperGlue, SP+OANet, SP+PointCN), detector-free(Sparse-NCNet, DRC-Net). 지표는 corner error AUC와 pose error AUC(회전·평행이동 각오차의 최댓값)다.


Table 1의 HPatches 결과가 첫 신호탄이었다. LoFTR-DS가 @3px/@5px/@10px에서 65.9/75.6/84.6, SuperGlue가 53.9/68.3/81.7. 관전 포인트는 격차의 모양이다. 10px에선 2.9점 차인데 3px에선 12.0점 차로 벌어진다.


저자들도 "LoFTR와 다른 방법 사이의 성능 격차는 correctness threshold가 엄격해질수록 커진다"고 짚으며, 그 원인을 detector-free가 주는 후보 수, Transformer의 global receptive field, coarse-to-fine 모듈의 sub-pixel 정제 세 가지로 돌렸다. 같은 detector-free인 DRC-Net이 @3px 50.6에 그친 걸 보면 셋 중 뒤의 둘이 실제 기여분이다.


Table 2의 ScanNet 실내 pose estimation은 더 벌어졌다. LoFTR-DS 22.06/40.8/57.62 대 SP+SuperGlue 16.16/33.81/51.84, DRC-Net†은 7.69/17.93/30.49. 여기서 눈여겨볼 건 cross-dataset 비교다.


DRC-Net의 공개 모델이 MegaDepth로 학습된 것이라, 저자들은 같은 조건의 LoFTR†를 따로 붙였다 — 실외 데이터로만 배운 LoFTR†가 실내 ScanNet에서 16.88@5°를 찍어 DRC-Net†(7.69)의 두 배를 넘겼다. 도메인을 건너뛴 상태에서 SuperGlue의 in-domain 성능(16.16)과 맞먹었다는 뜻이다.


Table 3의 MegaDepth 실외에서는 DRC-Net 대비 AUC@10°가 61%, SuperGlue 대비 13% 높았다. 저자들은 앞의 61%를 "Transformer의 기여", 뒤의 13%를 "detector-free 설계의 기여"로 분리해 읽었다. 실내와 달리 실외에선 DS(69.19@10°)가 OT(67.14)보다 앞섰다. 매칭 레이어 선택이 도메인을 탄다는 신호인데, 논문은 원인을 설명하지 않았다.


실내외 환경에서 SuperGlue, DRC-Net, LoFTR의 매칭 결과 정성 비교


위 비교에서 세 열이 각각 SP+SuperGlue, DRC-Net, LoFTR였다. 빨간 선은 epipolar error가 실내 $5\times10^{-4}$, 실외 $1\times10^{-4}$를 넘긴 오매칭이다. SuperGlue 열은 선 자체가 성기고, DRC-Net 열은 선은 많은데 빨간색이 눈에 띄게 섞였다. LoFTR 열은 밀도와 정확도를 동시에 가져갔다. neighborhood consensus만으로는 후보를 늘려도 정답률이 따라오지 않는다는 §2의 진단이 그림으로 확인된 셈이다.


Visual localization에서는 이야기가 갈렸다. InLoc DUC1의 (0.5m, 10°)에서 LoFTR-OT가 72.2로 SuperGlue의 68.7을 앞섰고, (1.0m, 10°)는 84.8 대 80.8이었다. InLoc이 무특징 영역과 대칭·반복 구조로 가득한 실내라는 걸 생각하면 예상 가능한 결과다. 반면 Aachen day query는 88.7 대 89.8로 근소하게 뒤졌다. 야외 주간 장면에는 텍스처가 충분해 detector가 실패할 이유가 없었다.


Ablation(Table 6)이 가장 정직한 대목이다. 네 변형을 ScanNet에서 같은 프로토콜로 돌렸다. (1) LoFTR 모듈을 비슷한 파라미터 수의 convolution으로 교체하자 AUC@10°가 40.8에서 32.04로 무너졌다 — 성능의 출처가 파라미터가 아니라 attention의 연결 구조임을 보여주는 가장 큰 낙폭이다. (2) coarse를 1/16, fine을 1/4로 낮추면 34.82로 떨어지는데 속도는 116ms에서 104ms로 겨우 10% 빨라졌다. 손해가 크다. (3) DETR식 레이어별 positional encoding은 35.64로 오히려 하락했다. (4) $N_c=8, N_f=2$로 용량을 두 배 키워도 40.23으로 사실상 제자리였다. 4개 레이어에서 이미 포화다.




6. 직관과 시각 자료


Fig. 4가 이 논문의 논증을 한 장에 압축했다. 저자들이 건 설정은 이렇다 — 이미지 양 끝의 L과 R 두 원소를 연결해 결합된 표현을 만드는 게 목표일 때, convolution은 국소 연결성 때문에 여러 층을 쌓아야만 그 연결에 도달한다. Transformer는 attention 한 층이면 끝난다.


convolution과 transformer의 수용 영역 차이, 그리고 attention weight와 변환된 feature 시각화


위 그림의 (a)는 Conv #1, #2, #3을 차례로 쌓아 L과 R의 수용 영역이 겨우 맞닿는 과정을 보여주었고, (b)는 Transformer #1 한 층이 L과 R을 바로 잇는 모습을 보여주었다. Ablation (1)에서 conv 교체가 40.8 → 32.04를 만든 이유가 여기 있다. 이 논문이 attention을 쓴 건 표현력 때문이 아니라 연결 거리 때문이다.


(c) 아래줄의 PCA 시각화는 더 결정적이다 — 입력 RGB는 흰 벽이라 균일한데, 변환된 $\tilde{F}^A_{tr}$는 부드러운 color gradient를 띤다. positional encoding과 global attention이 아무 특징 없는 픽셀에 위치별로 다른 값을 새겼다는 증거다.


Fig. 6은 그 "새김"이 어떤 전략으로 이뤄지는지를 보여준다. 논문이 직접 든 예가 인상적이다 — 저텍스처 영역에서 뽑은 쿼리 점, 이를테면 의자 위의 한 점이 의자의 가장자리를 바라보고 있었다.


저텍스처 쿼리 점의 self/cross attention 분포와 PCA로 렌더링한 변환 feature


이 그림의 Self, Cross, Feature PCA 세 열을 가로로 읽으면 흐름이 보였다. 앞의 두 예시는 무특징 영역의 쿼리 점이고, attention이 자기 주변의 밋밋한 픽셀이 아니라 멀리 떨어진 경계선 쪽에 집중적으로 가중치를 실었다. 뒤의 두 예시는 이미 구별되는 영역의 쿼리 점인데, 그럼에도 다른 영역의 풍부한 정보를 끌어다 썼다.


세 번째 열의 PCA 렌더링에서는 같은 재질의 넓은 면이 단색이 아니라 위치에 따라 서서히 변하는 색으로 나타났다. §1에서 "사람은 벽 자체가 아니라 모서리로부터의 상대 위치로 판단한다"고 적었던 그 전략을, 모델이 학습만으로 찾아낸 것이다.


마지막으로 Fig. 1을 다시 볼 이유가 있다. 흰 벽과 반복 무늬 바닥에서 SuperGlue는 선을 거의 긋지 못했고 LoFTR는 면을 채웠다.


흰 벽과 반복 무늬 바닥에서 SuperGlue와 LoFTR의 매칭 밀도 차이


위 이미지에서 두 방법 모두 RANSAC 이후 inlier만 표시했고, 초록색은 epipolar error가 $5\times10^{-4}$ 미만인 매치를 뜻했다. 여기서 성과는 "매치가 많다"가 아니다. 저텍스처 영역에 매치가 존재한다는 사실 자체가 결과다. detector-based 계열은 이 영역에서 0점을 받는데, 0에서 무언가로 넘어간 것이라 점수 차로 환산되지 않는 종류의 차이다. 실내 벽면이 시야의 절반을 먹는 SLAM 환경에서 이 차이가 어떤 의미인지는 InLoc DUC1의 72.2 대 68.7이 대신 말해줬다.




7. Critical View


가장 걸리는 건 1/8이라는 숫자가 하이퍼파라미터가 아니라 사실상 구조적 상수로 굳어져 있다는 점이다. Ablation (2)가 이 지점을 의도치 않게 드러냈다 — 1/16으로 내리면 AUC@10°가 40.8에서 34.82로 6점 가까이 빠지는데, 대가로 얻은 건 116ms → 104ms, 10% 남짓이다.


반대 방향인 1/4는 아예 실험되지 않았다. linear attention이 $O(N)$이라 해도 $N$이 4배가 되면 메모리와 지연이 같이 4배가 되니 돌려볼 수 없었을 것이다. 결국 LoFTR의 coarse grid는 "선택한 해상도"가 아니라 "가능했던 유일한 해상도"에 가깝고, 속도-정확도 곡선 위에서 움직일 여지가 거의 없다. 실시간 SLAM에 얹으려는 쪽에서는 이게 실무적인 벽이 된다.


내가 2080Ti 한 장으로 공개 코드를 돌려봤을 때도 같은 벽에 부딪혔다. 논문이 적은 $640\times480$, 116ms는 재현됐지만, 입력을 조금만 키우자 메모리가 먼저 비명을 질렀다. 데모 해상도를 벗어나는 순간 설계가 뻑뻑해진다.


재현성 쪽은 솔직히 읽으면서 좀 허탈했다. GTX 1080Ti 64장 × 24시간, ScanNet에서 230M pair 샘플링. 코드는 공개됐지만 학습을 처음부터 돌려볼 수 있는 곳은 몇 안 된다.


더 근본적인 제약은 라벨이다. $\mathcal{L}_c$의 GT confidence matrix는 camera pose와 depth map 없이는 만들어지지 않는다. detector를 지워서 self-supervised로 갈 길이 열린 줄 알았는데, 오히려 supervision 요구조건은 SuperPoint 계열보다 무거워졌다. detector-free의 자유도를 데이터 쪽 자유도와 맞바꾼 셈이다.


평가 설계에도 공백이 있다. 저자들은 detector-free에는 matching score나 recall 같은 잘 정의된 지표가 없다는 이유로 matching precision 직접 비교를 생략했다. 정직한 고백이지만, 그 결과 LoFTR의 우위는 전부 pose AUC라는 다운스트림 지표로만 입증됐다. 매치 개수가 SuperGlue보다 훨씬 많으니 RANSAC이 유리해진 몫이 얼마인지, 매치 하나하나의 품질이 나아진 몫이 얼마인지 분리되지 않는다. 정성 비교 그림은 설득력이 있었지만 정성은 정성이다.


OT와 dual-softmax 사이에서는 읽으면서 좀 헷갈렸다. 실내는 비등, 실외는 DS 우세(69.19 대 67.14), InLoc은 OT 우세(72.2)로 세 번 다 결론이 다른데 논문은 원인을 설명하지 않고 더 나온 쪽을 보고했다. 저자들은 이를 매칭 레이어의 교체 가능성으로 봤지만, 나는 어떤 도메인에서 무엇이 병목인지 아직 모른다는 신호로 읽었다.


다루지 않은 시나리오도 남는다 — 동적 물체, 극단적 scale 변화, 회전(sinusoidal PE는 회전에 취약할 여지가 있다), 그리고 겹침이 없어 매치가 0이어야 정답인 negative pair. dense 매칭은 구조상 무언가를 내놓게 되어 있어서 false positive 거동이 궁금한데, 논문에는 해당 실험이 없다.


후속 연구가 갈 방향은 논문 안에 이미 적혀 있는 편이다. 비용 쪽에서는 QuadTree Attention이나 ASpanFormer의 adaptive span처럼 attention 범위를 적응적으로 좁히는 노선, 구조 쪽에서는 MatchFormer·ELoFTR 같은 재설계, 응용 쪽에서는 semi-dense 출력을 SfM/SLAM의 sparse track 관리와 어떻게 붙일 것인가 하는 문제가 남았다. Ablation (4)에서 $N_c$를 8로 키워도 40.23으로 제자리였던 걸 보면, 다음 이득은 용량이 아니라 다른 축에서 나와야 한다.




8. Take-aways


  1. 저텍스처 매칭의 병목은 descriptor가 아니라 detector의 repeatability였다.
  2. dense feature에 self/cross attention을 태워 detector 단계를 통째로 삭제했다.
  3. ScanNet AUC@10° 33.81 → 40.8, conv로 바꾸면 32.04 — 이득의 출처는 global receptive field다.
  4. 1/8 해상도 고정, GT pose+depth 필수, 학습 64 GPU·24시간이라는 값을 치렀다.
  5. 흰 벽 위에 찍힌 매칭선 — 20년 된 파이프라인에서 한 단계를 지우면 생기는 그림.