본문 바로가기

Computer Vision/3D Vision

Unsupervised Learning of Depth and Ego-Motion from Video

 

Zhou, Tinghui, et al. "Unsupervised learning of depth and ego-motion from video." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017.

Link

 

 

Abstract

  이 논문에서는 monocular depth, camera motion estimation을 위한 unsupervised learning framework를 제공한다. Monocular video sequence만으로 end-to-end learning을 통해 unsupervised learning을 실현한다. KITTI dataset 에서 supervised learning와 비슷한 성능을 보인다. 또한, 기존 SLAM 방법에 비해 pose estimation이 뛰어나다.

 

 

Introduction

  사람은 single image를 보더라도 depth를 추정하여 상황에 신속하게 대응할 수 있다. 이에 대한 한가지 가정은 연속적인 시각 경험을 통해 여러가지 내재된 내용을 학습한다. 예를 들어 도로는 평평하고 건물은 수직적인 형태를 가지고 있다는 것을 학습한다. 논문에서 제시하는 모델은 이를 모방한다. Image sequence를 통해 카메라 모션을 추정하고 이를 기반으로 depth에 대해 학습한다. 학습을 위해 추정한 pose는 실제 지상 구조와 일치한다. 

SFMLearner에 대한 코드는 아래 url에 있다.

github.com/tinghuiz/SfMLearner.

 

 

 

 

 

Related Work

Structure from motion

  움직임을 추정하는데에 다양한 변수가 고려된다. 예를들어, 작은 텍스쳐, 복잡한 구조, 가려짐 등에 의해 어려운 문제가 되고 이를 딥러닝을 통해 해결하고 있다. Feature matching, Pose estimation, Stereo 분야에서 많은 발전이 이루어지고 있다.

 

 

Warping-based view synthesis

  워핑기반 방법은 3D geometry에 대해 이해하는 것이 중요하며 이를 픽셀에 대응한다. 이 논문에서는 워핑 기반 뷰 합성을 하기 위해 이러한 기하학적 추론 능력을 학습한다.

 

 

Learning single-view 3D from registered 2D views

  3D structure에 대해 2D observation을 mapping하는 학습이 중요하다. 다른 논문에서 3D 추론에 대한 연구가 많이 이루어지고 있다. 직접 depth error를 최소화하는 것보다 CNN 기반으로 랜더링을 하거나 label없이 3D inferecne를 추정하는 것에 대해 연구하고 있다.

 

 

Unsupervised/Self-supervised learning from video 

  영상을 통해 visual representation을 구하는 것이 중요하다. 예를 들어, ego-motion, tracking, temporal ccoherence, object motion mask prediction 등이 있다.

 

 

 

Approach

  움직이는 카메라의 image sequence로 모델을 학습한다. 이 때, 대상의 움직임 없이 카메라의 이동으로 인해 image가 바뀌는 것이 지배적이라 가정한다.

 

 

 

 

View synthesis as supervision

  추정한 depth map과 pose를 통해 새로운 관점에서의 image로 projection할 수 있다. Pixel별로 error를 측정하여 loss를 계산할 수 있는데 아래와 같이 계산된다.

 

 

$I_1, ... I_N$은 image sequence를 의미하고 $I_S$는 source image이다. s는 image index, p는 pose index를 의미한다. 

정확한 error 계산을 위해, visibility를 handle하는 것도 중요하다. 이는 "explanability mask"를 추가해 따로 예측함으로써 설명이 가능한 객체와 불가능하는 객체를 분리하여 loss를 계산한다.

 

 

$\hat{E}_S$는 explanability mask로, score를 부여하여 explanability에 따라 가중치 정도를 달리한다. Mask가 0일경우 loss 계산이 필요없는 의미 없는 픽셀이다.

 

 

 

Differentiable depth image-based rendering

  이 프레임워크의 핵심은 이미지 rendering이다. depth network을 통한 depth map ($\hat{D}_t$)와 relative pose ($\hat{T}_{t -> s}$) 를 이용해 새로운 image projection을 한다. 공식은 computer vision의 이론에 근거하며 아래와 같다.

 

 

구한 좌표가 integer가 아닐뿐만 아니라 격자에 정확히 projection되지 않기 때문에 align하는 과정이 필요하다. 4-pixel neighbors가 값을 나눠가짐으로써 계산한다. 아래 그림처럼 주변 pixel의 weighted sum으로 계산한다. 

 

 

 

 

Modeling the model limitation

  이 논문에서 구현을 위해 크게 3가지의 가정을 했다.

 

1. 카메라를 제외한 나머지 물체는 모두 정적인 상태이다. SFM Learner의 pose network의 경우 3D 좌표계에서 여러가지 방향에서의 projection 결과를 통해 pose를 추정한다. 관찰된 물체가 움직이면 그의 projection결과도 달라진다. 물체가 정적 상태가 아니라면, depth network와 pose network가 같은 3D 좌표에 대해 연산을 하지 않기 때문에 학습에 방해가 된다.

 

2. Occlusion/disocclusion되는 물체가 없다. 즉, 어느 관점에서 보이지 않거나, 보이는 경우는 없어야 한다. Occlusion이 발생하여 특정 관점에서만 물체가 보인다면 다른 관점에서는 해당 물체에 대한 projection정보가 없기 때문에 학습에 문제가 된다.

 

3. 물체의 모든 표면은 Lambertian이라 가정한다. 관점이 달라질 때 같은 물체에서 반사된 빛이 달라지면, 관점 방향에 따라 잘못된 방향으로 학습될 수 있다. 즉, 물체의 3D 위치에 따라 빛이 달라 지지 않고 다른 원인에 의해 변경되는 것으로 학습할 수 있다. 그러므로, 영상의 모든 물체는 Lambertian이고 관찰 방향에 따른 영상 변화가 dominant해야한다.

 

 

Overcoming the gradient locality

  학습에서 가장 큰 문제는 픽셀 오차가 지배적이라서 low-texture region 또는 추측한 내용과 거리가 먼경우, 무시되는 경향이 있다는 점이다. 이를 극복하기 위하여 두가지의 스킬을 사용한다. 첫번째로, 작은 병목을 가지는 convolutional encoder-decoder 아키텍쳐를 사용한다. 두번째로, multi-scale과 smoothness loss를 사용함으로써 큰 영역에 대한 경우도 고려할 수 있도록한다. 이 논문에서는 두번째 방법을 사용하였으며, 최종 loss계산은 다음과 같다. 

 

 

Experiment

  아래 그림은 Cityscapes dataset으로 학습한 결과이다. Depth에 따라 형체가 분리되는 것을 관찰할 수 있다. KITTI dataset에 대해서도 잘 학습되며, 결과 또한 잘 보이는 것을 확인할 수 있다. (논문 참고)

 

 

 

 

 

Discussion

  Single-view depth estimation과 pose estimation을 위한 end-to-end learning pipeline을 제시하였다. 이 시스템은 groud-truth를 이용한 지도학습과 비슷한 성능을 보인다. 하지만 아직 해결되지 않은 몇가지 문제가 존재한다.

 

1. 영상의 dynamic과 occlusion을 명시적으로 고려하지 않는다. 이를 보완하기 위해 explainability mask를 도입하였으나 이는 암시적으로 고려한 것이라 성능이 크게 향상되지 않는다.

 

2. 이 프레임워크는 camera intrinsic parameter가 주어진상태에서 학습된다. 일반적인 사진은 주어지지 않기 때문에 범용성이 떨어진다.

 

3. 제시한 프레임워크는 단순한 depth map을 추정하는 것으로 전체 3D공간을 추정하지 않는다. 이를 전체 3D 표현으로 프레임워크로 확장하는 것도 흥미로운 과제이다.