논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Unsupervised Learning of Depth and Ego-Motion from Video

Problem

  • 하나의 이미지에서 깊이를 구하는 일은 사람은 아주 쉽게 해내는 반면 컴퓨터비전에서는 매우 어려운 분야이다.
  • 다른 연구들에서는 supervized learning을 이용하여 학습시켰다. 따라서 camera paremeter나 depth map의 GT가 존재하여야만 했다.

Essence

  • 이 논문에서는 별도의 GT 없이 image sequence를 입력 받아 camera motion과 depth map을 prediction하는 네트워크는 end-to-end로 학습하는 방법은 제안한다.
  • 입력된 이미지들로부터 6-DoF의 ego-motion 파라미터를 추정하고, 동시에 depth map으로 표현되는 scene structure를 추정한다.
  • 추정된 두 정보를 통해 프레임 간 view synthesis 생성한 뒤 둘간의 차이를 loss로 삼아 학습을 진행하였다.
  • 이 방법은 end-to-end로 가능하며, 별도의 레이블링이나 GT가 필요없는 unsupervized 방식으로 볼 수 있다.

Detail

  • 학습에 사용되는 데이터는 short image sequences이다.

View synthesis as supervision

  • 이 방법의 핵심은 view synthesis를 생성하는 것이다.
  • Source 이미지와 그에 대한 depth map이 주어지고, target 이미지로의 transformation이 주어질 경우, target 이미지를 생성해 낼 수 있다. 앞으로 소개할 방법은 fully differentiable 하므로 CNN의 학습에 사용될 수 있다.
  • 먼저 여러 source 이미지들을 I_s, target 이미지를 I_t라고 할 경우, source로부터 생성한 target 이미지 \hat{I}_s를 학습하기 위한 objective function은 다음과 같이 정의할 수 있다.

\mathcal{L}_{vs} = \sum_s \sum_p | I_t(p) - \hat{I}_s(p) |

  • 여기서 p는 픽셀 위치를 의미하며 \hat{I}_s는 source 이미지로부터 target 이미지로 warpping된 이미지를 의미한다.

  • \hat{I}_s의 생성하기 위해서는 prediction된 depth map \hat{D}_t와 4x4 camera transformation matrix와 \hat{T}_{t \rightarrow s}, 그리고 source 이미지 I_s가 필요하다.

  • 기존의 다른 연구들에서는 이 objective function을 학습하기 위해서 pose 정보가 필요했으나 이 논문에서 사용하는 framework를 사용하면 pose 정보 없이 학습이 가능하며, pose 정보 또한 prediction 해낼 수 있다.

Differentiable depth image-based rendering

  • 만약 Depthmap과 transformation matrix, source 이미지가 주어졌을 경우, target 이미지에서의 한 픽셀 위치는 p_t에 해당하는 source 이미지에 위치는 다음과 같이 계산될 수 있다.

p_s \sim K \hat{T}_{t \rightarrow s} \hat{D}_t (p_t) K^{-1} p_t

  • 이 위치의 픽셀 값은 differentiable bilinear sampling 방법을 통해 주변 4개 픽셀의 가중치 합으로 계산할 수 있다.

Modeling the model limitation

  • Monocular 비디오에서 view synthesis를 생성할 때 가정되는 것이 3가지가 있다.
  • 움직이는 객체가 없어야 하고, 두 이미지에서 가려지거나 서로 교차하는 영역이 없어야하고, surface가 Lambertian이어서 photo-consistency에 차이가 있을 경우 이는 다른 영역임을 의미하여야 한다.
  • 이 가정이 깨지는 경우, 학습 중 gradient가 부정확하게 되어 학습이 올바르게 되는 것을 방해할 것이다.
  • 따라서 학습을 좀 더 robust하게 하기 위하여 exaplainability prediction 네트워크를 추가하였다.
  • 출력되는 target-source 쌍의 각 위치마다 soft mask \hat{E}_s를 출력하게 하여 view synthesis의 결과가 잘 되었는지를 가라키게 하고자 한다.
  • 이를 적용하여 앞의 objective function은 다음과 같이 변경하였다.

\mathcal{L}_{vs} = \sum_s \sum_p \hat{E}_s (p) | I_t(p) - \hat{I}_s(p) |

  • \hat{E}에 대한 직접적인 supervision이 없기 떄문에 단순히 학습을 하면 trivial solution인 0을 내놓도록 학습이 될 것이다.
  • 따라서 항상 label을 1을 갖도록 하는 cross-entropy loss인 regularization term \mathcal{L}_{reg}(\hat{E}_s)를 추가하였다.

Overcoming the gradient locality

  • 하나 남은 이슈는 학습 시 그래디언트가 pixel intensity 차이에서 생겨나는 것에 기인하는데, estimation된 위치가 low-texture 영역이거나, 실제 정확한 위치보다 멀게 estimation 된 경우 학습이 잘 이루어지지 않는다.
  • 이를 해결하기 위하여 2가지 전략을 생각했는데, 한가지는 depth network의 출력을 globally smooth하게 만들어 의미있는 영역에서 그 주변 영역으로 전파가 쉽도록 하는 방법과, 다른 한가지는 multi-scale과 smoothness loss를 추가하여 그래디언트가 큰 영역으로 바로 퍼지도록 하는 방버을 생각하였다.
  • 여기서는 현재 구조에 영향을 덜 끼치는 두번째 전략을 선택하여 depth map의 second order gradient의 L_1 norm 줄이도록 하였다.
  • 다음이 최종 objective function이다.

\mathcal{L}_{final} = \sum_l \mathcal{L}^l_{vs} + \lambda_s \mathcal{L}_{smooth}^l + \lambda_e \sum_s \mathcal{L}_{reg} ( \hat{E}_s^l)

  • 여기서 l은 서로 다른 이미지 스케일을 의미하고 s는 source image index, \lambda들은 각 loss들의 weight들이다.

network arthitecture

  • Depth prediction을 위한 네트워크는 DispNet을 수정하였다.

  • 출력되는 depth는 1/(\alpha \ast sigmoid(x) + \beta), \alpha=10, \beta=0.1로 제한하여 depth가 항상 positive이고 적절한 범위 내로 출력되도록 하였다.
  • Pose를 위해서는 target view와 모든 source 이미지를 concatneate한 뒤 입력으로 사용하였다.

  • 네트워크는 7개의 stride2 convolution과 끝에 1x1 convolution을 붙여 6 \ast (N-1)개의 출력을 내도록 하엿다. 6은 Euler angle 3개와 3차원 translation 3개를 의미한다.
  • 끝으로 global average pooling을 하여 spatial location마다 prediction된 파라미터들을 평균내도록 하였다.

  • Explainability mask는 pose network의 5개의 encoding layer의 출력에 각각 deconvolution layer를 붙여 만들었다.

  • 출력 채널은 2 \ast (N-1)이고 softmax로 학습 시켜 explainability를 prediction하도록 하였다.
  • 실제로는 positive에 해당하는 두번째 채널이 loss에 참여하게 될 것이다.

  • 전체 framework를 다시 정리하면 다음과 같다.

  • Target 이미지로부터 depth map을 추정하고, target의 앞 뒤 이미지 sequence까지 입력으로 하여 pose를 추정한다.
  • 추정된 두 정보를 이용하여 source이미지의 픽셀 값과 target 이미지로 proejction 시킨 위치의 픽셀 값과의 차이를 계산하고 이를 loss로 이용하여 두 네트워크에 gradient를 전파시켜 학습이 이루어지게 된다.


Add a Comment Trackback