본 논문은 place recognition을 수행하는 방법론을 제시합니다. Place recognition은 특정 장소에 대한 이미지가 query로 들어왔을때 query가 DB에 있는 어떤 장소와 제일 match되는지를 알려주는 task 입니다.
Introduction
Intro
해당 논문은 Net-VLAD(2015 CVPR) 라는 방법론을 기반으로 하고 있습니다. Net-VLAD는 query 이미지와 DB에 있는 모든 이미지를 동일 네트워크를 통해 feature로 변환 시키고, 변환된 feature space상에서의 euclidean distance를 이용하여 얼마나 가까운지를 ranking을 매기게 됩니다.
저자들은 place recognition 방법론을 크게 2가지로 분류하여 설명합니다. 한가지는 global descriptor matching으로 이미지 한장을 feature로 변환하여 DB에 있는 이미지와 비교하는 방식입니다. 앞의 Net-VLAD가 global descriptor matching의 한 방법입니다. 다른 한가지 방법은 local descriptor matching으로 pixel-scale의 정밀도를 우선 처리합니다. (key point를 통해 match하는 방법론)
저자들은 해당 2가지 방법의 장점을 모두가 가지는 방법론을 제시합니다.
Previous Work
Net-VLAD
Net-VLAD는 이미지를 input으로 받고, 해당 이미지의 feature를 output해주는 네트워크입니다. 입력은
H x W x C
이고, 출력은 D-dimension vector 입니다.우선적으로, 입력 이미지를 CNN network의 입력으로 넣어 feature를 뽑아줍니다. 저자들은 VGG network에서 pooling layer를 제외하여 사용했습니다. Pooling layer가 없기 때문에 CNN 출력 feature의 spatial size는 입력 이미지와 동일합니다. (사이즈 :
H x W x D
) 해당 feature를 H x W = N 개의 D-dimensional descriptor로 간주하여 다음 단계가 진행됩니다. 여기서 Net-VLAD 저자들은 VLAD라는 computer vision에서 feature를 extraction하는 방법론으로부터 아이디어를 얻었습니다. VLAD는 N개의 descriptor를 K개의 descriptor로 (일반적인 경우에 N > K)로 pooling해주는 방법론 입니다.
학습데이터들의 bag of words들 중 가장 특징을 잘 나타낼 수 있는 cluster center K개를 정해줍니다. 그리고 아래 식을 통해 K개의 descriptor로 pooling 합니다.
: CNN으로 뽑은 N개의 descriptor중 i-th descriptor
: cluster center
: 가 -th cluster에 속하면 1, 속하지 않으면 0
Backpropagation을 위해서 도 위 처럼 hard하게 나타내지 않고 back propagation이 되는 형태로 모델링한것이 net-vlad의 아이디어입니다.
Proposed Method
저자들은 새로 네트워크를 학습하는 방법론을 제시하거나, 새로운 모델구조를 제안한것이 아닙니다. 단지, 학습된 Net-VLAD 를 기반으로 inference time에서 더 좋은 matching algorithm을 제안했습니다. 저자들은 제시한 matching algorithm을 Patch Net-VLAD로 명명합니다.
Patch-level Global Features
Net-VLAD의 경우, 이미지 한장에 대하여 feature를 뽑게 되는데, Patch Net-VLAD는 Patch 단위로 feature를 뽑습니다. Patch size는 저자들이 미리 정한 hyper-parameter로 뽑게 되는데, 기본적으로 5를 많이 사용합니다. Net-VLAD의 경우, 입력 이미지 1장에 feature가 한개뿐이지만, Patch Net-VLAD는 여러개의 feature가 나오게 됩니다. feature 갯수에 대한 정확한 계산식은 아래와 같습니다.
d_x : patch size of x-axis
d_y : patch size of y-axis
W, H : image size
S_p : stride
Mutual Nearest Neighbors
이전 단계에서 뽑아 놓은 feature를 통해 mutual nearest neighbors를 찾는 작업입니다. Query에서의 i-th patch가 reference 이미지의 모든 patch들 중 j-th patch 와 가장 유사하고, Reference 이미지의 j-th patch가 query의 모든 patch들 중 i-th patch와 유사한 경우에 (i, j)를 mutual nearest neighbor로 정의합니다.
Mutual nearest neighbor를 찾을때는 2개의 descriptor set에 대하여 exhaustive search를 하였습니다.
Spatial Scoring
앞에서 구한 Mutual nearest neighbor를 이용하여 해당 match들이 얼마나 좋은지에 대하여 수치적으로 비교합니다.
첫번째 방법은 RANSAC을 사용합니다. RANSAC 알고리즘의 error tolerance를 이용하여, 공간적으로 match가 coherent 한지 확인합니다.
두번째 방법은 저자들이 제안한 방법으로, RANSAC이 계산시간이 많이 걸리기 때문에 비교적 간단한 연산을 통해 scoring을 합니다.
: horizontal direction between patch locations for the matched patch
vertical에 대해서도 위와 같은 방식으로 계산할 수 있다. (higher is better)
그후 score식을 아래와 같이 계산한다. mean offset에서 많이 벗어나면 벗어날 수록 match가 잘 되지않은 것입니다.
Multiple Patch Size
여러 크기의 patch size를 활용하기 위해서, 저자들은 각 patch size에서 구해진 score를 weighted sum하는 형태를 제안 했습니다.
s_{i, spatial} : i-th patch size에서 matching score
w_i : i-th patch size의 weight
Experiment
모든 이미지는 640 x 480으로 리사이즈를 하여 사용하였고, Net-VLAD를 학습하여 feature extractor로 사용했습니다. Net-VLAD는 Pittsburgh 30K 와 Mapillary Street를 이용해 학습하였습니다.
single scale patch 인 경우는 5 x 5 patch를 사용했고, multi scale인 경우에는 patch size는 [2, 5, 8], 각 해당 weight는 [0.45, 0.15, 0.4] 입니다.
Comparison with S.O.T.A algorithms
Ablation study
Inference time
Samples
Share article