Introduction
Interest points란 같은 장면, 또는 물체를 다른 각도와 환경에서 촬영한 서로 다른 이미지에서 반복되는 점들을 말합니다. 이미지로부터 interest points를 뽑아내는 기술은 Simultaneous Localization and Mapping (SLAM), Structure-from-Motion (SfM), 카메라 calibration, 그리고 image matching까지 여러 필드에서 사용되는 첫번째 단계입니다.
Human pose estimation과 같은 문제는 많은 양의 이미지에서 사람 관절의 위치를 라벨링하여 데이터를 구축한 후 supervised learning으로 해결할 수 있었습니다. 하지만 위에서 설명한 일반 이미지의 interest points를 찾는 것은 사실 ill-defined 문제일뿐 아니라 라벨링하기에도 너무 많기 때문에, supervised learning으로 직접적으로 해결하기 어렵습니다.
기존에도 이 문제를 neural net을 사용하여 해결하고자 하는 시도는 있었지만, interest point와 descriptor 둘 중 하나에 제한적이거나, 다른 알고리즘으로부터 만들어진 GT로 supervision이 필요하거나, 전체 이미지에 convolutional 하지 않고 patch-based인 한계 등이 여전히 남아있었습니다.
본 논문에서는 이러한 문제를 해결하기 위하여 self-supervised learning 기법을 도입하였습니다.
(a) 각종 도형들과 기하학적인 패턴으로 만들어진 합성 데이터셋으로부터 corner를 검출하는 interest point pre-training 단계로 base detector를 만듭니다.
(b) MS COCO와 같은 일반 이미지로 unlabeled image에 base detector를 적용하여 pseudo-GT를 만드는데, 이 pseudo-GT의 recall을 높이기 위하여 같은 이미지에 여러번 random homography를 적용한 결과를 조합합니다.
(c) 만들어진 pseudo-GT를 사용하여 interest point loss를, 그리고 같은 이미지를 warping한 이미지와의 매칭을 사용한 descriptor loss를 사용하여 최종적인 SuperPoint를 학습시킵니다.
Proposed Method
- SuperPoint Architecture
- Shared Encoder: 3개의 non-overlapping max-pooling을 가지는 VGG-style 인코더를 사용하여 spatial 크기를 /8로 낮춥니다. Encoder의 결과물인 feature map의 각각의 위치를 cell 이라고 부르겠습니다. 각각의 cell은 8x8 pixel에 대응합니다.
- Interest Point Decoder: 이 부분은 크기의 feature map을 reshape하여 크기의 결과물로 만듭니다. Reshape은 pixel shuffle 방식을 사용합니다. Feature map 채널의 수가 8x8=64 가 아니라 65인 이유는 "no interest point"을 의미하는 dustbin 채널을 하나 추가하였기 때문입니다.
- Descriptor Decoder: 연산량을 줄이기 위해 /8 크기에서 계산을 하고, bi-cubic interpolation을 통해 크기를 키웁니다. Description의 normalization을 위해 L2-normalization을 합니다.
- Loss Functions
구조는 Mask R-CNN과 유사하게 shared encoder (feature extractor)와 interest point decoder 및 descriptor decoder의 두 multi-head 구조로 이루어졌습니다.
Loss function은 interest point에 대한 loss와 descriptor에 대한 loss의 합으로 이루어집니다.
는 cell의 중심점을 의미합니다. 즉 은 homography 관계의 두 feature map 각각의 cell들의 correspondence를 의미합니다.
- Synthetic Pre-Training
Interest point를 라벨링한 대규모 데이터셋은 없기 때문에, 학습을 위하여 우선 합성 데이터셋으로 모델을 pre-training합니다. 이 데이터셋의 이미지들은 사각형, 삼각형, 직선, 그리고 타원들로 이루어져있습니다. 이 기하학적인 도형들의 Y-junctions, L-junctions, T-junctions, 작은 타원의 중점, 선분의 끝점들로 interest point를 정의하여 label ambiguity를 제거할수 있었습니다. 데이터셋이 만들어진 뒤에는 또 homographic warp를 하여 학습 샘플을 만들었습니다.
SuperPoint의 detector 부분만을 이 합성 데이터셋에 학습시켰습니다. 결과는 아래와 같습니다.
- Homographic Adaptation
합성 데이터셋에 학습된 base detector를 실제 이미지에 적응시키기 위해 self-supervised learning을 사용합니다.
단일 base detector로 의미있는 pseudo-GT를 만들기 위하여, 하나의 unlabeled image에 여러번 homography를 적용한 뒤 나온 결과를 다시 inverse homography를 적용하여 원래 이미지 축에서 결과를 평균합니다.
Random homography를 만들때에는 현실적인 카메라의 움직임을 모방하기 위하여 완전히 랜덤한 homography 대신 일정한 translation, scale, rotation, symmetric distort를 조합하였습니다.
적용하는 homography의 갯수는 hyperparameter인데, 100개 이후에는 늘려도 큰 향상이 없어서 100개로 사용했습니다.
위 과정은 반복되어 self-supervision 자체의 성능을 높일수 있습니다. 이를 Iterative Homographic Adaptation이라고 부르겠습니다.
Experiment
학습에는 MS-COCO 2014 데이터셋을 사용하였습니다. 80,000장의 training 셋을 240x320으로 리사이즈한 뒤 흑백으로 바꿨습니다.
Descriptor size는 D=256 loss에서 을 사용하였습니다.
Hinge loss에서 를 사용했습니다.
실험을 위해 PyTorch, Adam, batchsizae=32를 사용했습니다.
테스트를 위해 HPatches 데이터셋을 사용했습니다. 이 데이터셋은 57개의 큰 조도 변화와 59개의 큰 시각 변화 scene을 포함합니다. 결과는 아래와 같습니다.
위 표에서 은 correct distance를 의미합니다.
Matching에는 descriptor 값으로부터 nearest neighbor 방식의 matching과 RANSAC을 사용했습니다.
정성적인 결과는 아래와 같습니다.
Conclusions
Optional subsections (Heading 3)
Share article