티스토리 뷰

이 논문은 unsupervised한 방법으로 image depth를 구하는 모델을 학습시키는 방법이다. 학습에는 sequential한 이미지가 필요하고, 각 이미지의 pose를 이용해 한 이미지의 point들을 다른 이미지로 projection하고, projection된 위치의 점과 Intensity를 비교해 loss를 구한다. 여기서 pose도 model output이므로 gt없이 loss 계산이 가능해진다.

Figure2 in the paper

 

Overview

조금 더 구체적으로 살펴보면 다음과 같은 단계로 나누어 생각해 볼 수 있다.

1. $t$에서의 이미지 $I_{t}$를 depth CNN에 통과시켜 Depthmap $\hat{D_{t}}(p)$를 구한다.(Depth map은 모든 이미지 픽셀에 대한 depth를 가지고 있다.)

2. $t-1$, $t+1$의 relative camera pose(transformation matrix $\hat{T}_{t \to t-1}$)를 Pose CNN을 통해 구한다.

3. $t-1$, $t+1$시점의 이미지 픽셀을 $\hat{D_{t}}(p)$, $\hat{T}_{t \to t-1}$를 이용해 $t$시점으로 projection한다.

4. projection한 이미지 $\hat{I_{t-1}}(p)$, $\hat{I_{t+1}}(p)$와 실제 $t-1$, $t+1$의 이미지$I_{t-1}(p)$, $I_{t-1}(p)$의 각 픽셀별 Intensity를 비교해 loss를 구한다.

5. backpropagation으로 학습 진행한다.

각 단계를 구체적으로 살펴보자.

 

Network architecture

Figure4 in the paper

overview 1,2 에서 언급했 듯 두 개의 network가 사용된다. single-view depthmap을 구하는 network와 pose를 구하는 network이다. depthmap network는 encoder-decoder구조를 가진다.

pose network는 encoding한 후 1x1 convolution으로 $6 ∗ (N −1)$ output channel을 만들고 global average pooling으로 하나의 예측값을 구한다. 6은 $t$와의 상대적인 pose(3개의 3 Euler angles 과 3-D translation)를 의미하고, $N-1$은 $t$시점을 제외한 나머지 이미지들의 수를 의미한다. pose output의 Euler angles로 rotation matrix를 구하고 나머지 3-D translation는 각각 $t$가 되어 아래와 같은 transition matrix를 만들어 사용하게 된다.
$$
\begin{pmatrix}
r_{11}& r_{12} & r_{13}& t_{x} \newline
r_{21} & r_{22} & r_{23} & t_{y} \newline
r_{31} & r_{32}& r_{33} & t_{y} \newline
\end{pmatrix}
$$

또한 pose network encoding 결과를 다시 decoding하여 얻은 explainability network가 있다. 이 network에서 나온 결과 $\hat{E_{s}}(p)$는 2 ∗ (N − 1)$의 channel을 가진다. 이것의 역할은 사용할 픽셀을 정하는 것인데 아래에서 설명할 예정이다.

 

Differentiable depth image-based rendering

Figure3 in the paper

(이 파트를 이해하려면 camera geometry에 대한 어느 정도 기본 지식이 필요하다.)

기준시점은 $t$이고, 그 외의 모든 시점을 $s$($1 ≤ s ≤ N, s \neq t$)라고 하자. $t$시점의 이미지는 $I_{t}$, $s$시점의 이미지는 $I_{s}$이다. normalized plane에서 $I_{t}$의 위치와 같은 위치를 가지는 $I_{s}$의 점의 Intensity를 $I_{t}$의 같은 위치로 가져와 생성된 이미지가 $\hat{I_{s}}$이다. $I_{t}$의 point $p_{t}$와 $I_{s}$의 Point $p_{s}$는 normalized plane으로 옮겼을 때 같은 위치를 가진다. 따라서 같은 위치를 표현하므로 같은 색을 가질 것이라 가정하므로 학습이 될 수록 $I_{t}$와 $\hat{I_{s}}$의 차이가 작아져야 하고, 이를 Loss로 사용한다.

구체적으로 살펴보자. 우선, $p_{t}$의 위치가 $I_{s}$의 어느 점인지 찾아야 한다.

위 수식에서 $K$는 intrinsic paramter이고, 이미 알고 있어야 한다. 또한 동일한 카메라에서 찍힌 sequential한 이미지를 사용하므로 모든 이미지에서 동일하다. $p_{t}$에 $K^{-1}$을 곱해주면 camera coordinate의 nomalized plane에서의 위치를 알게되고, 여기에 Depth $\hat{D_{t}}(p_{t})$를 곱하면 camera coordinate에서 실제 위치가 된다. $\hat{T}_{t \to s}$는 $t$시점과 $s$시점의 상대적인 extrinsic parameter이므로 $\hat{T}_{t \to s}$를 곱하면 $s$시점의 camera coordinate으로 옮겨가게 되고, $K$를 곱하면 $I_{s}$에서의 point($p_{s}$)를 구할 수 있다.

이렇게 구한 $p_{s}$는 정수가 아닐 가능성이 높다. 하지만 intensity는 정수의 위치에만 존재하므로 linear interpolation으로 $p_{s}$의 Intensity를 구한다. 그리고 이 값이 $\hat{I_{s}}(p_{t})$의 값이 된다.

 

View synthesis as supervision

위에서 구한 $\hat{I_{s}}$으로 loss를 구한다.

$$
L_{vs} = \sum_{s} \sum_{p}\left| I_{t}(p) - \hat{I_{s}}(p) \right|
$$

 

Modeling the model limitation

하지만 이러한 방식에는 조건이 있다.

1. scene에 있는 물체는 움직이지 않아야 한다.

2. $t$시점과 $s$시점사이에 occlusion(다른 물체에 의해 가려지는 것)이나 disocclusion(다른 물체에 의해 가려진 것이 드러나는 것)이 있으면 안 된다.

3. 모든 표면이 lambertian(반사된 모든 빛의 세기가 같은 상황)이어야 한다. 그렇지 않으면 s시점의 intensity가 서로 달라질 수 있기 때문이다.

이러한 사용 가능 조건에 맞지 않는 픽셀들을 학습에서 제외하기 위해 explainability prediction network를 사용한다. 여기서 구한 mask $\hat{E_{s}}(p)$를 view synthesis loss에 적용해 픽셀별 weight를 준다.

$\hat{E_{s}}(p)$를 view synthesis loss에만 적용해 학습하면 $\hat{E_{s}}(p)$가 0이 되는 방향으로 학습이 될 것이다. 따라서 loss에 regularization term $L_{reg}(\hat{E_{s}}(p))$ 을 넣어 그러한 현상을 방지해준다.

 

Overcoming the gradient locality

최종 loss는 아래와 같다.
$$
L_{final} = \sum_{l}L_{vs}^{l} + \lambda_{s}L_{smooth}^{l} + \lambda_{e}L_{reg}(\hat{E_{s}}^{l})
$$

 

 

 

끝으로 이 논문은 몇 가지 주요한 challenge를 제시한다.

  1. 현재 network는 scene dynamics와 occlusion을 반영하지 못한다.
  2. 현재 network는 intrinsic parameter가 주어져야 하므로 random하게 수집된 영상에 대해서는 사용할 수 없다.
  3. 지금은 단순히 3D scene의 depth만 구하지만 3D volumetric representation으로 확장 가능할 것이다.

 

 

 

- reference: T. Zhou, M. Brown, N. Snavely, and D. G. Lowe. Unsupervised learning of depth and ego-motion from video. 2017

댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함