- Deep Homography Estimation에 관한 모든 것
- [16′ arxiv] Deep Homography Estimation : Deep Image Homography Estimation 핵심 리뷰
- [17′ ICCV] Hierarchical Homography Estimation : Homography Estimation from Image Pairs with Hierarchical Convolutional Networks 핵심 리뷰
- [18′ ACCV] Perspective Field Homography Estimation : Rethinking Planar Homography Estimation Using Perspective Fields 핵심 리뷰
- [18′ ICRA] Unsupervised Deep Homography: A Fast and Robust Homography Estimation Model 핵심 리뷰
- [19′ arxiv] Deep Mesh Flow: Content Adaptive Mesh Deformation for Robust Image Registration 핵심 리뷰
- [20′ ECCV] Content Aware Deep Homography Estimation : Content-Aware Unsupervised Deep Homography Estimation 핵심 리뷰
- [20′ CVPR] Dynamic Scene Deep Homography Estimation : Deep Homography Estimation for Dynamic Scenes 핵심 리뷰
- [21′ CVPR] Perceptual Loss for Robust Unsupervised Homography Estimation 핵심 리뷰
- [22′ arxiv] Depth Aware Deep Homography Estimation : Depth-Aware Multi-Grid Deep Homography Estimation with Contextual Correlation 핵심 리뷰
내용 요약
Meshflow를 output으로 내는 homography estimation model을 설명합니다.
1. 들어가며
이번 논문은 Deep homography estimation 방법론에 관한 논문입니다. 기존 방식들과 달리 2개의 image를 input으로 받아 meshflow를 output으로 내는 deep homography estimation 방법론을 설명합니다. 이를 위한 mask predictor와 segmentation network를 구성하는 방법을 설명합니다.
2. 제안 방법
제안 방법을 살펴보겠습니다. 제안 방법의 핵심은 H matrix 또는 perspective field 등을 예측하는 기존 방법과 달리 meshflow를 예측하는 모델을 사용한다는 것입니다. MeshFlow는 2개의 image view 사이의 non linear warping을 표현하는 motion model입니다. Optical flow와 유사하지만 각 픽셀 간의 관계가 아닌 mesh들 간의 motion을 예측한다는 점에서 computational complexity가 더 적다는 장점이 있습니다. Image를 HxW개의 grid로 나눈다면, 총 (H+1) x(W+1) 개의 vertices를 갖습니다. 이때 각각의 grid에 2d motion vector를 매칭 하면 (H+1) x(W+1) x2 size의 Meshflow가 나오게 됩니다.
2-1. Network structure
네트워크 구조를 살펴보겠습니다.
전체적으로 봤을 때 2개의 image를 input으로 받아 (H+1) x(W+1) x2 size의 mesh flow를 output으로 내는 구조를 하고 있습니다. 이렇게 구한 meshflow는 linear solver를 사용하여 homography matrix로 변환합니다. 크게 4가지의 모듈로 나누어 살펴보겠습니다.
2-1-1. Feature extractor
먼저 feature를 추출하는 역할을 수행하는 feature extractor입니다. FCN으로 구성되어 있으며 HxWx3 size의 image를 input으로 받아 HxWxC의 feature로 변환하는 역할을 합니다.
이때 f는 shared parameter network를 사용합니다.
2-1-2. Mask predictor
다음은 mask predictor입니다. Moving objects의 경우 depth가 달라지기 때문에 single homography로 align을 맞추는 건 불가능합니다. 따라서 RANSAC을 사용하여 inlier를 찾는 것처럼, 전체 feature 중 inliear를 찾기 위한 네트워크를 구성했습니다. 이 subnetwork는 inlier probability map, 즉 mask를 학습합니다. 이 mask는 feature map의 contents에 해당하는 부분으로 homography estimation에 많이 공헌하는 부분만 highlight 하도록 학습합니다. Mask의 size는 feature map과 동일하며 feature에 weight를 주는 역할을 수행합니다.
2-1-3. Meshflow estimator
이렇게 mask까지 곱해진 weighted feature G는 meshflow estimator로 들어가 meshflow를 냅니다. 이때 각 layer마다 나온 feature를 사용하면 n개의 서로 다른 scale의 G를 사용하여 meshflow를 예측할 수 있습니다. 저자들이 사용한 ResNet34를 예로 들면 총 3개 scale의 feature를 사용하게 되고, 마찬가지로 총 3개 scale의 meshflow가 나오게 됩니다. 이렇게 나온 3개 scale의 meshflow는 fusion을 위해 가장 큰 scale로 upscale 합니다. 이제 각 grid별로 3개의 meshflow를 선택할 수 있습니다.
2-1-4. Scene segmentation
이때 어떤 scale의 meshflow를 선택할지를 결정하기 위해 segmentation network를 사용합니다. Segmentation network는 2개의 image를 input으로 받아서 가장 큰 scale의 meshflow와 동일한 resolution의 segmentation map을 출력합니다. 이때 채널의 개수는 위에서 설명한 scale의 개수와 동일합니다. (ResNet34의 경우 3에 해당)
이렇게 나온 segmentation output을 사용하여 각 grid에 대해 가장 큰 값을 갖는 scale의 meshflow를 선택합니다.
- (u, v) : vertex coordinate on the mesh
2-2. Triplet loss for training
다음은 loss를 살펴보겠습니다. Loss의 구성은 전체적으로 content aware homography network와 유사합니다. 먼저 warped image와 target image가 같아지도록 loss를 구성합니다.
이렇게만 구성하면 모든 feature를 0으로 보내게 되므로 이를 방지하기 위해 image_a와 image_b가 같아지지 않도록 loss를 구성합니다.
추가로 제대로 학습되었다면 Hab와 Hba는 inverse 관계여야 함을 이용하여 loss를 구성합니다.
최종 loss는 다음과 같습니다.
2-3. Unsupervised content awareness learning
다음은 mask의 기능과 역할에 대해 살펴보겠습니다. 저자들이 주장하는 mask가 content aware 하게 학습되는 이유는 다음과 같습니다.
첫 번째로 feature에 weight를 주는 기능을 수행하기 때문입니다.
두 번째는 loss를 측정할 때도 masking 된 부분만 weighted 되어 계산되기 때문입니다. 이는 homography estimation을 위해 필요한 부분에만 집중하겠다는 의미이므로 unsupervised 방식으로 필요한 contents를 스스로 찾아낸다고 주장합니다. 이렇게 학습한 mask를 살펴보겠습니다.
다양한 scale을 사용하기 때문에 종합적인 mask를 계산하는 모습을 볼 수 있습니다.
위의 그림을 보면 차, 사람, 물 같은 moving objects들은 잘 걸러내고 robust feature만 잘 masking 하는 모습을 볼 수 있습니다.
3. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.
3-1. Datasets
저자들은 데이터셋을 총 5가지의 카테고리로 나누어 구성했습니다.
- SP : single plane
- MP : multi plane
- LF : large foreground
- LT : low texture
- LL : low light
3-2. Comparison with existing method
다음은 성능 비교를 살펴보겠습니다.
4. Ablations
다음은 ablations를 살펴보겠습니다.
4-1. Without mask
먼저 mask의 효과를 살펴보겠습니다.
Mask를 사용하면 모든 카테고리에 대해 성능이 오르는 모습을 볼 수 있습니다. 특히 LT에서 큰 폭의 성능 향상을 볼 수 있습니다.