Digging Into Self-Supervised Monocular Depth Estimation
Problem
- Depth-from-color 문제는 비싼 LIDAR 센서를 대신할 좋은 대안으로 매력적인 분야이다. 하지만 이를 supervised learning을 통해 학습하기 위해서는 정확한 ground truth depth 데이터가 필요하다.
- 최근 이를 극복하기 위하여 self-supervised 방법이 제안되고 있는데, monocular video 환경에서의 연구들은 depth map의 추정 뿐 아니라 ego-motion 또한 동시에 추정해야 하는 어려움이 있고, stereo data를 활용한 방법에서는 occlusion이나 texture-copy artifacts 등이 풀어야할 문제이다.
Essence
- Monocular depth estimation의 성능을 향상시키기 위한 3가지 구조적, 로스를 제안한다.
- 가려진 픽셀을 처리하는 새로운 appearance matching loss
- 카메라와 상대적인 움직임이 없는 경우를 처리할 간단하면서도 새로운 auto-masking 방법
- Depth artifacts를 줄이고자 입력 해상도에서 수행되는 multi-scale appearance matching loss
Detail
Self-supervised Training
- 기존의 방법들과 같이 depth estimation을 위해서 다른 시점의 another 이미지에서 target 이미지로의 view-synthesis 를 prediction 하는 network를 학습시켰다.
- 보통 이러한 방법들은 photometric reprojection error를 loss
L_p
로 설정하고 이를 줄이도록 학습시킨다.
L_p = \sum_{t'} pe(I_t, I_{t' \rightarrow t})
I_{t' \rightarrow t} = I_{t'} \langle proj(D_t, T_{t \rightarrow t'}, K) \rangle
- 여기서
pe
가 photometric reconstruction error를 의미하며,proj
는 depth와I_{t}
에서I_{t'}
로의 poseT_{t \rightarrow t'}
를 이용하여 projection된 위치를 의미한다. - 보통 error는 bilinear sampling된 픽셀 값의 L1 distance를 사용하지만, 여기서는 L1 distance에 SSIM을 추가하였다.
pe(I_a, I_b) = \frac{\alpha}{2} (1 - \text{SSIM} (I_a, I_b)) + (1 - \alpha) || I_a - I_b||_1, \alpha=0.85
- 또한 [15]에서와 같이 edge-aware smoothness 로스를 추가하였다.
L_s = |\partial_x d_t^\ast|e^{-|\partial_x I_t|} + |\partial_y d_t^\ast|e^{-|\partial_y I_t|}
- 여기서
d_t^\ast = d_t / \bar{d}_t
으로 mean-normalized inverse depth를 의미한다. - 학습에서는 target 이미지 앞 뒤의 2개 이미지를 source 이미지로 하여 pose와 depth를 estimation 하도록 학습시켰다.
-
Stereo 방식에서는 stereo pair의 다른 이미지를 source 이미지로 사용하면 된다.
Per-Pixel Minimum Reprojection Loss
- Reprojection error를 계산할 때 보통은 여러 source 이미지로부터 계산된 error를 모두 ㅕㅇ균하는 방법을 사용한다.
- 이는 target 이미지에서는 보이지만 어떤 source 이미지에서는 보이지 않는 경우 문제가 된다.
- 예를 들면, depth estimation을 정확하게 해냈음에도 불구하고 어느 한 source 이미지에서 해당 위치가 다른 물체로 인하여 가려졌을 경우 픽셀 값의 차이는 error로 계산되어 페널티로 작용한다.
- 이러한 상황이 생길 때는 egomotion에 의해 이미지 밖으로 위치가 벗어나는 경우에도 생기고, 가려진 픽셀에서도 생긴다.
- [40, 61]의 연구처럼 error를 masking 하는 방법을 이미지 밖으로 벗어나는 경우를 처리할 수는 있지만, 가려짐을 처리할 수는 없다.
- 이를 해결하기 위해 논문에서는 평균 대신 minimum을 사용하기로 하였다.
L_p = \min_{t'} pe(I_t, I_{t' \rightarrow t})
Auto-Masking Stationary Pixels
- 보통 monocular를 이용한 방법에서는 static scene을 가정으로 한다.
- 만약 카메라가 정지해 있거나, 움직이는 물체가 존재할 경우 이 가정이 깨지고 성능이 떨어지게 된다. 이는 depth map에서 무한대로 멀리 있는 hole로 나타나게 된다.
-
여기에 착안하여 새로운 auto-masking 방법을 제안하였다. 만약 target 이미지와 source 이미지 사이에 appearance 변화가 없으면 이를 계산에서 제외하도록 하였다.
- 이는카메라가 움직이지 않는 상황이나 카메라와 동일한 속도로 물체가 움직이는 부분을 무시할 수 있게 해준다.
- 이전의 방법들처럼 픽셀 마다 mask
\mu
를 할당하여 loss로 사용하되, 이전에는 mask를 네트워크가 estimation하도록 하거나, 혹은 객체 움직임에서 추정해 냈지만 여기에서는 더 간단한 방법을 사용하였다. - 바로 warp된 source image와의 reprojection error가 warp하지 않은 source image보다 작은 경우, 이러한 상황으로 판단하여 mask를 0으로, 그렇지 않으면 1로 할당하였다.
\mu = \left[ \min_{t'} pe(I_t, I_{t' \rightarrow t}) \lt \min_{t'} pe (I_t, I_{t'}) \right]
Multi-scale Estimation
- Bilinear sampler에 의한 local minimum에 빠지는 것을 막기 위해 multi-scale depth prediction을 사용한다.
- 이전 방법들은 각 스케일에 대해서 별도로 loss들을 계산하여 이를 합하는 방법을 사용하였다.
- 하지만 이 방법들은 낮은 해상도에서 low-texture 영역으로 인한 hole들을 생성하는 경향이 있음을 발견하였다. 이는 texture-copy artifacts에서도 마찬가지다.
- 논문에서는 photometric error를 저해상도의 이미지에서 계산하는 대신 저해상도 depth map을 원래의 해상도로 업샘플한 뒤, 높은 해상도에서 error를 계산하도록 하였다.
- 이는 패치 매칭과 비슷한 과정인데, 저 해상도의 한 depth는 고해상도로 warping 될 경우 patch에 해당되기 떄문이다.
* 최종적으로 사용될 loss는 L = \mu L_p + \lambda L_s
이다.