- 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 핵심 리뷰
내용 요약
Multi grid feature flow를 예측하는 deep homography estimation 방법론을 설명합니다.
1. 들어가며
이번 논문은 Deep homography estimation 방법론에 관한 논문입니다. Image를 multi grid로 나눠 flow를 예측하는 방법을 사용합니다. 이때 flow를 예측하기 위해 feature 간의 correlation을 측정하는 방법을 제안합니다. 또한 depth별 동일한 homography를 적용하기 위한 depth aware shape preserved loss를 제안합니다.
2. 제안 방법
제안 방법을 살펴보겠습니다.
2-1. Network overview
먼저 network 전체 구성을 살펴보겠습니다.
제안하는 네트워크는 input으로 2개의 image를 받아 feature flow를 output으로 낸 뒤 이를 homography matrix로 변환하는 방식을 사용합니다. Feature extractor는 scale별 feature를 추출하며 각 scale별 feature를 사용하여 순차적으로 homography를 계산하는 residual homography learning 방식을 사용합니다. 주요 모듈을 하나씩 살펴보겠습니다.
2-2. Contextual correlation
먼저 contextual correaltion module입니다. 이는 추출한 2개 이미지의 feature로부터 서로 간의 contextual correlation을 계산하여 feature flow로 변환하는 역할을 수행합니다.
2-2-1. Correlation volume
먼저 기존 방법으로 사용되었던 cost volume 방식과 contextual correlation 방식을 비교해보겠습니다.
먼저 cost volume은 각 픽셀 별 correlation을 구하는 방식인 반면 contextual correlation은 패치 별 correlation을 구하는 방식이라는 차이가 있습니다. 이로 인해 computational complexity가 contextual correlation이 훨씬 작다는 장점이 있습니다.
두 번째 차이점은 cost volume은 correlation을 cosine similarity로 구하는 반면, contextual correlation은 convolution 연산으로 구한다는 차이가 있습니다. 그림을 보면 contextual correlation을 구하기 위해 target feature의 patch들을 쌓아 HW개의 convolution filter를 만들고, 이를 reference feature와 각 패치에 대해 convolution 연산을 수행하여 correlation volume을 만드는 모습을 볼 수 있습니다.
위의 내용을 종합하여 Cost volume을 수식으로 표현하면 다음과 같습니다.
Contextual correlation을 수식으로 표현하면 다음과 같습니다.
2-2-2. Scale softmax
이렇게 구한 correlation volume은 HxWx(HW)의 사이즈를 갖는 텐서입니다. 우리의 목표는 각 패치에 대해 reference feature와 target feature의 correlation을 구하는 것이므로 각 패치에 대해 HW개의 값을 softmax 해줍니다. 이때 constant scale factor alpha를 곱해서 class 간의 거리를 늘려줍니다.
이 alpha의 효과를 visualize 해보면 다음과 같습니다.
Scale factor alpha를 곱해줬을 때 명확하게 correlation이 높은 patch만 큰 값으로 남는 모습을 볼 수 있습니다.
2-2-3. Feature flow
이제 위에서 구한 scale softmax값을 사용하여 feature flow로 변환해야 합니다.
Scale softmax값은 각 패치에 대해 correlation 값을 갖고 있으므로 이 값과 인덱스를 이용하여 feature flow를 계산합니다.
- p : correlation volution with scale softmax
- m : feature motion
- mod {} : modulus operation (나머지 값)
2-3. Backward multi grid deformation
다음은 multi grid deformation 과정을 살펴보겠습니다.
기존 방식대로 multi grid를 forward deformation을 하면 warped multi grid에 대해 각 픽셀과 매칭 작업을 수행해야 합니다. 하지만 deformed 된 grid는 irregular 하므로 이 과정이 쉽지 않습니다. 따라서 저자들은 이 과정을 반대로 수행하는 backward multi grid deformation 방법을 제안합니다.
2-4. Unsupervised training
실제 scene data에서는 ground truth homography가 존재하지 않기 때문에 unsupervised 방식으로 학습합니다.
2-4-1. content alignment loss
첫 번째 loss는 content alignment loss입니다. Warp가 제대로 되었다면 target image와 warped image의 차이가 작도록 loss를 구성합니다.
- E : all one matrix
Feature를 multi scale로 추출했으므로 모든 feature에 대해 loss를 적용하면 다음과 같습니다.
2-4-2. Depth aware shape preserved loss
다음은 depth aware shape preserved loss를 살펴보겠습니다. 아이디어의 핵심은 동일한 depth를 갖는다면 동일한 homography를 가져야 한다는 것입니다. 따라서 동일한 depth grid에 대해 동일한 homography가 나오도록 loss를 구성합니다.
먼저 depth를 측정하기 위해 pretrained depth estimation model을 사용하여 depth level을 측정합니다. 이렇게 구한 depth map을 n개의 레벨로 나눕니다. 이렇게 구한 레벨별 인접한 grid들의 feature flow가 일직선이 되도록 loss를 구성하면 다음과 같습니다.
모든 grid에 대해 위의 loss를 적용하면 다음과 같습니다.
2-4-3. Objective function
최종 loss는 위의 두 loss를 종합하여 구성합니다.
3. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.
3-1. Synthetic dataset
먼저 synthetic dataset에서의 성능입니다.
제안 방법은 real dataset을 target으로 하고 있지만 synthetic dataset에서도 좋은 성능을 내는 모습을 볼 수 있습니다.
3-2. Real dataset
다음은 real dataset에서의 성능입니다.
Traditional solution은 resolution이 낮아질수록 feature detection이 어려워지면서 성능이 낮아지는 모습을 볼 수 있습니다. 또한 대부분의 learning 방법론들은 overlapping이 적은 문제는 잘 못 푸는 모습을 볼 수 있습니다. 이는 long rage correlation을 학습하지 못하기 때문입니다.
3-3. Robustness analysis
다음은 low texture/low light 환경에서의 실험 결과를 살펴보겠습니다.
잘 작동하는 모습을 볼 수 있습니다.
3-4. Cross dataset validation
다음은 UDIS-D로 학습한 뒤 image stitching에서 사용되는 dataset으로 test 해보겠습니다. Image stitching에서 사용하는 데이터셋은 다양한 scene에 다양한 degrees of parallax를 갖는다는 특징이 있습니다.
그럼에도 잘 작동하는 모습을 볼 수 있습니다.
3-5. Compared with cost volume
다음은 feature를 추출한 뒤 correlation을 구하는 방식에 따른 성능을 비교해보겠습니다.
결과는 다음과 같습니다.
먼저 concat을 하면 아무것도 못 배운다는 걸 알 수 있습니다. Convolution도 concat과 크게 차이 없는 성능을 보입니다. Cost volume을 하면 성능이 개선되는 모습이지만 파라미터가 매우 늘어나며 속도가 느려집니다. 반면 CCL은 성능도 좋아지고 속도도 빠른 모습을 볼 수 있습니다. 이는 cost volume과 달리 patch level에서 flow를 계산하기 때문입니다.
4. Ablations
다음은 ablations를 살펴보겠습니다.
4-1. Contextual correlation
먼저 contextual correlation의 효과를 살펴보겠습니다.
Contextual correlation을 사용할수록 성능이 증가하는 모습을 볼 수 있습니다.
4-2. Number of grids
다음은 grid의 개수에 따른 성능을 살펴보겠습니다.
Grid는 잘게 쪼갤수록 성능이 늘어나는데, 8×8에서 가장 성능이 좋은 모습을 볼 수 있습니다.
4-3. Depth aware shape preserved loss
다음은 depth aware shape preserved loss의 효과를 살펴보겠습니다. 위의 table 결과를 보면 32개의 depth level로 나눌 때 가장 성능이 좋은 모습을 볼 수 있습니다.
위의 그림을 보면 depth aware term을 추가하면 grid가 이상하게 찌그러지는 현상을 막아주는 모습을 볼 수 있습니다.