안녕하세요. 이번 리뷰는 CricaVPR(CRoss Image Correlation-Aware)입니다. 저자는 현재 VPR에서 혼자 SOTA를 찍고 부수고를 스스로 반복하는 Lu Feug입니다. CricaVPR은 그 중에서도 가장 많은 인용수를 달성한 논문입니다. 한번 알아보겠습니다.
Introduction
기존 VPR은 NetVLAD나 GeM pooling(현재는 SALAD가 일반적으로 제일 좋음)을 이용해서 local feature들의 공간정보를 통합한다고 얘기합니다. 하지만 이러한 aggregation은 공간정보를 날려버리는 특성상, 이미지에서 중요한 landmark에 유독 쏠리는 본질적인 특징이 있습니다.
저자는 이것이 어려운 환경일 때는 robustness를 떨어뜨린다고 주장합니다. 특히, perceptual aliasing(유사한 다른 장면)에 취약하다고 합니다.
그래서 현재까지의 방법론들은 이걸 해결하기 위해서 reranking을 이용하여 local feature들을 직접 비교해주었습니다. 하지만, 이는 global retrival보다 횔씬 많은 연산과 메모리를 필요로합니다.
또한 추가적인 문제로, 기존까지의 VPR은 이미지 한장만 고려한다고 주장합니다. cross-image들을 활용한다면 더 풍부한 descriptor를 얻을 수 있을텐데 이를 사용하지 않을 이유가 없다고합니다. 그리고 이러한 cross-image를 통해, 환경과 시간대에 강인함을 챙길 수 있다고 합니다.
저자들은 한가지 contribution을 추가로 제시합니다. 바로 parameter-efficient transfer learning(PETL) adapter입니다. VPR task는 흔히 DINOv2와 같은 foundation backbone을 사용하는데 이걸 전체 fine-tuning하는 것은 catastrophic forgetting을 유발합니다.
이를 방지하기 위해 PETL을 통해, VPR에 필요한 정보만 효율적으로 foudnation model이 학습하도록 합니다. 또한 대부분의 PETL module들은 language-oriented adapter를 사용하는데 이는 VPR에 사용할 수 없기에 novel한 adatpter의 필요성을 주장합니다. 자세한 내용은 method에서 다루겠습니다.
Related Work
– Parameter-efficient Transfer Learning
대규모로 학습된 foundation model의 일반화 성능을 유지하면서 fine-tunign하기 위해서 NLP에서 소수의 파라미터만 finetuning하는 PETL를 사용했습니다. 그래서 저자도 model을 frozen 상태로 두고, 삽입한 task-specific adapter만 학습시키는 방식을 택했습니다. Convpass가 본 논문과 가장 유사한 방식으로 convolutional bypass를 사용하여 이미지의 local inductive bias를 주입합니다. 저자는 거기에 추가적으로 multi-scale convolution adapter를 사용하여 주었습니다.
Methodology
핵심 아이디어는 batch 내 다른 이미지들을 attention의 Key, Value로 활용하여 Query 이미지의 representataion을 강화하는 것입니다.
– batch 구성
먼저 CricaVPR는 어떻게 batch를 구성하는지 알아봅시다(대부분의 VPR이 동일함)
이전의 VPR 논문들은 anchor, positive, negatives로 구성되는 triplet으로 batch를 구성하였습니다.
그러나 Multi-Similarity(MS) loss가 VPR에 효과적이라는 것이 알려진 이후 부터는 PK sampling이 주류가 되었습니다.
PK sampling은 Batch 안에 P개의 place, 각 place당 K장으로 batch로 구성합니다.
GSV-Cities와 같은 데이터셋은 place단위의 여러장의 사진으로 구성되었습니다. 즉, 랜덤한 place를 P개 고르고 place마다 K개의 랜덤한 사진을 골라서 구성하는 것입니다. 이는 VPR을 place classification 문제로 변환하여 높은 성능 향상을 보였습니다.
따라서 batch의 구성은 같은 place에 해당하는 K개의 이미지와 무관한 (P-1)*K개의 negative들입니다.
– Cross-image Correlation-aware Place Representation

먼저 이미지를 한개의 descriptor로 변환하는 과정부터 설명하겠습니다.
ViT backbone의 patch token의 출력은 B \times W \times H \times D입니다.
이를 1×1, 2×2, 3×3 총 14개의 region으로 분해한 후, 각 region에 GeM pooling을 적용하여, B \times 14 \times D로 만들어줍니다. 그리고 flatten하여 B \times 14D의 descriptor가 됩니다.
그리고 Cross-image corrleation을 학습하는 방법입니다.
B \times 14 \times D의 feature들을 각각 2-layer Vanilla Transformer Encoder를 태웁니다.
이때 14개의 descriptor를 f_i = \{f_i^1, f_i^2, ..., f_i^B \}라고 표기할때, i-th의 feature들이 batch안의 이미지들과 상호작용합니다. 즉, 14 \times B \times D로 transpose한 후 self-attention을 취한다고 생각하면 될 것 같습니다. 그렇게 transformer을 통과한 output을 flatten한 후에 한번에 L2-norm을 취한 것이 최종 descriptor가 됩니다.
다음은 Multi-scale Convolution-enhanced Adaptation입니다.
AnyLoc은 fine-tuning 없이도 DINOv2가 VPR에 효과적임을 보인 논문입니다. 그러나 VPR은 pre-trained와 상당한 gap이 있기에 tuning이 필요합니다. 이를 위해, lightweight adapter를 붙이고, DINOv2는 얼리는 방법들이 있었습니다. 주로 bottleneck(e.g. 768 -> 384 -> ReLU -> 384 -> 784)가 Vanilla Adapter로 사용되었습니다. 그러나 Convpass는 convolution layer를 이용하는 것이 local inductive bias를 학습할 수 있어 더 효율적이라는 것을 밝혀냈습니다. 그러나 저자는 improper local bias가 VPR에 악영향을 미친다는 것을 알아냈습니다. 그래서 저자는 GoogLeNet에서 영감을 받아 Multi-scale convolution adapter를 제안합니다. 아래 Figure 4.을 통해 명확히 파악할 수 있습니다.

Experiments

데이터셋은 VPR에서 항상 쓰이는 데이터셋들(Pitts30k, MSLS, Tokyo24/7, Nordland, SVOX, AmsterTime)입니다. 그중 SVOX는 night, overcast, rain, snow, sun, old로 다양한 condition을 평가하기 좋은 데이터셋이고, AmsterTime은 현대 거리뷰와 역사적인 흑백 사진과 매칭하는 시간차이가 큰 데이터셋입니다.

Table 2.는 다른 방법론들과 성능 비교를 보여줍니다. CricaVPR과 MixVPR은 GSV-cities(현재 사실상 VPR 표준 학습 데이터셋)으로 학습하였고, CosPlace와 EigenPlaces는 SF-XL로 학습되었습니다. 그리고 Patch-NetVLAD와 TransVPR은 reranking을 하는 Two-Stage method입니다. 그리고 원래 CricaVPR의 descriptor는 768*14=10752여야하지만, PCA를 통해 4096으로 차원축소를 진행하였습니다.
데이터셋 별로 얘기를 하자면 Pitts30k에서는 CricaVPR이 일반적으로 더 batch내 다양한 특징을 파악하여 성능이 올라감을 보여줍니다. 그리고 더 어려운(severe condition과 lacking landmark) MSLS-val에서는 성능 향상이 dramatic하지 않습니다(물론 SOTA긴 합니다).

Table 3.는 더 어려운 데이터셋들을 따로 모아놨습니다(R@5,10은 supplementary에 있습니다). 모든 데이터셋에서 큰 격차로 성능이 향상되는 것을 볼 수 있습니다. place 기반 데이터셋이 아닌 기차 주행 데이터셋인 Nordland에서 크게 성능이 올랐습니다. 그리고 흑백 및 수백년이 차이가 나는 query인 AmsterTime에서도 큰 차이를 보입니다. 그리고 visual한 변화가 큰 SVOX-Night/Rain에서도 큰 차이를 보입니다.
이는 CricaVPR이 extreme한 차이가 날 때, batch를 활용해서 condition에 robust한 feature를 학습할 수 있다는 것을 알 수 있습니다.
– Ablation

Table 4.는 Crica의 학습이 진짜 도움이 되냐?를 보여주는 ablation입니다. AdaptGeM/SPMG/SPM에 Crica 학습 방식을 붙이면 전부 높은 성능 향상이 일어납니다. 즉, batch를 보는 학습 방식이 정말 효율적이라는 것을 보여줍니다.

Table 5.는 adatper에 대한 ablation입니다. MulConv Adapter가 가장 높은 성능을 보이는 것을 보여줍니다. 하지만 개인적인 의견으로는 VanillaAdapter와 특 차이가 없지 않나? 라는 생각은 듭니다. 그리고 Table 3.에서 보인 어려운 데이터셋에 대한 결과는 없는게 조금 아쉽습니다. 또 하나 주목할만한 점은 Full Tuning한 것은 걱정한대로 Catastrophic Forgetting이 일어난 것을 볼 수 있습니다.
Limitation
저자들이 제시하는 limitation은 두가지입니다.
먼저 PCA로 차원을 512까지 낮추면 Pitts30k에서는 잘되는데 다른 데이터셋에서는 성능이 안나오더라 입니다.
그리고 두번째로는 batch size가 1이면 Cross 학습을 못하므로 의미가 없다입니다.
하지만 해소되는 않는 추가적인 의문들이 있습니다.
결국 이 방법론은 batch에 의존적입니다. batch를 어떻게 뽑냐에 따라 결과가 항상 변화합니다. 이는 항상 일관된 descriptor를 뽑아야하는 VPR의 기조와는 다릅니다. 또한 코드를 확인해보면 train때는 positive/negatives mining을 하지만 inference때는 sequential하게 batch를 가져옵니다 (심지어 place 기반 데이터셋도 sequential하게 사용합니다). 저자가 이걸 limitation에도 적어두지 않아서, 후에 SciceVPR가 신나게 비판하면서 static한 방법론을 제시합니다.
그리고 inference때도 batch로 받아야하는데, train때는 문제 없지만 추론 때 여러장의 이미지를 사용하는 것이 fair한 비교인지 개인적인 의문이 있습니다. 게다가 Nordland는 주행 데이터이고, CricaVPR은 sequential하게 batch를 구성해서 inference를 진행하기에 sequential 데이터를 이용하는 SeqNet과 같은 방법론과 비교도 해야하지 않나 생각이 듭니다.
그리고 batch를 통해 test 데이터셋의 분포를 파악 가능하므로 TTA-like가 아닌가 생각이 듭니다. 물론 저자의 언급은 없습니다.
Visualizations


안녕하세요 정우님
궁금하게 생겨 질문드립니다 . Crica라는 논문이 제시하는게 학습방식인거 같은데 맞나요 ? 학습할 때는 배치 안에 여러 장이 묶여 있어서 서로 정보를 주고받는거 같은데. Inference할 때는 보통 쿼리 이미지가 한 장씩 들어올텐데 이때는 다른 이미지랑 상호작용을 못할 것 같은데 어떻게 되는지 궁금합니다
안녕하세요 우진님. 좋은 질문 감사합니다.
이 논문은 inference때도 여러장 씩 입력을 받습니다.
inference때 sequential하게 batch를 구성해서 batch들끼리 정보를 교환하여 최종 descriptor를 만들어냅니다.
그래서 데이터셋의 구성이 바뀌거나 순서가 바뀌면 결과가 달라진다는 치명적인 단점이 존재합니다.
감사합니다.
안녕하세요 정우님, 좋은 리뷰 감사합니다. 간단한 질문 하나만 드리려고 합니다.
리뷰 초반에 기존 모델들이 ‘Perceptual aliasing(유사한 다른 장면)’에 취약하다고 언급하셨는데, VPR이 현실의 어떤 시스템에 쓰이길래 단순히 ‘비슷해 보이는 풍경’을 잘못 인식하는 것이 치명적인 문제가 되는 건가요? Perceptual alisasing이 문제인 이유와 VPR의 궁극적인 활용 목적이 궁금합니다.
안녕하세요 재윤님 좋은 질문 감사합니다.
먼저 fig 12.를 보시면 이해에 도움이 될 것 같습니다.
해당 figure는 기차가 4계절 동안 주행하면서 촬영한 데이터셋입니다.
물론 해당 기차는 야외이기에 GPS가 작동하지만,
GPS가 작동하지 못하거나(실내, 터널 등) 고장난 상황에서도 위치를 인식하기 위해 일반적으로 VPR을 사용합니다.
fig 12.를 다시보면 사람이 봐도 얼추 비슷합니다. 중앙에 철도가 있고 주위에 나무가 있습니다.
하지만 정답과 오답의 거리를 측정해보면 100km넘게 떨어진 지역입니다
때문에 시각적으로 유사(perceptual aliasing)하더라도 정확하게 구별해내는 것이 VPR에서는 정말 중요합니다.
감사합니다.