0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

論文まとめ:Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras の(1)

Last updated at Posted at 2021-03-20

はじめに

ICCV2019より以下の論文
[1] A. Gordon, et. al. "Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras" ICCV2019.
のまとめ

arXiv:
https://arxiv.org/abs/1904.04998

公式コードは公開されてないらしい

長くなったので2回にわけます。今回のその(1)は概要やロジック、次回のその(2)はオクルージョン対応や実験結果。

その(2):
https://qiita.com/masataka46/items/23d8652f356361d66c2f

概要

  • 単眼RGBのビデオカメラからdepth, 物体のmotion, カメラの内部パラメータを推定するモデル

preliminaries

まず論文中の式(1)導出から

$z$ :フレーム1のdepth
$z'$ :フレーム2のdepth
$p$ :フレーム1の画像上の座標
$p'$ :フレーム2の画像上の座標
$R$ :フレーム1からフレーム2への回転行列
$t$ :フレーム1からフレーム2への並進ベクトル
$K$ :カメラの内部行列
つまり

K = \left(
    \begin{array}{ccc}
      f_x & 0 & x_0 \\
      0 & f_y & y_0 \\
      0 & 0 & 1
    \end{array}
  \right)

ここで
$f$ :焦点距離
$x_0$ :画像中心のx座標
$y_0$ :画像中心のy座標

フレーム1の正規化座標とワールド座標を一致させると

\begin{eqnarray}
zp &=& KX \\
K^{-1}zp  &=& X \tag{M1}
\end{eqnarray}

$X$ :任意の点のワールド座標

フレーム2の正規化座標とワールド座標との関係は

z'p' = K(RX + t_{w \to 2}) \tag{M2}

(M2)に(M1)をぶち込んで

\begin{eqnarray}
z'p' &=& K(RK^{-1}zp + t) \\
z'p' &=& K R K^{-1} zp + Kt \tag{1}
\end{eqnarray}

となり論文中の(1)式と一致。

カメラ内部行列が求まることの根拠

カメラ内部行列を求める際の問題点

例えば上記(1)式の右辺第2項で内部行列 K と 遷移ベクトル t が全く違ってても Kt が正しければ、lossとしては問題なさそう。tildeを間違った推定値として

\tilde{t} = \tilde{K}^{-1}Kt

ならば

\begin{eqnarray}
\tilde{K} \tilde{t} &=& \tilde{K} \tilde{K}^{-1}Kt \\
 &=& Kt 
\end{eqnarray}

となる。そうするとカメラ内部行列が求まるのか疑問に思える。

しかし著者らの主張では右辺第1項目の制約から求まるそう。

カメラ内部行列が求まることの証明の概要

まず上記(1)式の場合、

\tilde{K} \tilde{R} \tilde{K}^{-1} = KRK^{-1}

とはならないことを示し、次に学習によって焦点距離が

\delta f_x < \frac{2f_x^2}{w^2 r_y} ; \ \delta f_y < \frac{2f_y^2}{h^2 r_x} \tag{3}

となることを示す。ここで

\| \delta f_x \|  = \| \tilde{f}_x - f_x \|

である。つまり焦点距離の推定値と実際の焦点距離との差。この差が縮まる -> 焦点距離の推定値が実際の値に収束する、ということ。

後者は 論文Appendix A3 までの証明と A3 から(3)式までの証明とにわける。

(1)式第1項目が間違った K の元では成り立たないことの証明

書きかけ

論文中(1)式から論文Appendix (A3)までの導出

まず論文中(1)式から論文Appendix (A3)を求める。不明点多いです。計算間違ってたら連絡ください

上記(3)式(論文中の(1)式)でrotationに関してはy軸に関する回転のみ考え、またtranslateは無いと仮定する。

まずカメラ内部行列の逆行列は

\begin{eqnarray}
K^{-1} &=& \left(
    \begin{array}{ccc}
      f_x & 0   & x_0 \\
      0   & f_y & y_0 \\
      0   & 0   & 1
    \end{array}
  \right)^{-1} \\

&=& \frac{1}{f_x f_y} 
\left(
    \begin{array}{ccc}
      f_y & 0   & -x_0 f_y \\
      0   & f_x & -y_0 f_x \\
      0   & 0   & f_x f_y
    \end{array}
  \right) \\

&=&  
\left( 
    \begin{array}{ccc}
      \frac{1}{f_x} & 0   & -\frac{x_0}{f_x} \\
      0   & \frac{1}{f_y} & -\frac{y_0}{f_y} \\
      0   & 0   & 1
    \end{array}
  \right) \\
\end{eqnarray}

次に回転行列 R だが、先に述べたように y 軸周りの回転角を $r_y$ とする。

R = \left(
    \begin{array}{ccc}
      \cos r_y & 0   & \sin r_y \\
      0   & 1 & 0 \\
      -\sin r_y   & 0   & \cos r_y
    \end{array}
  \right) \\

$r_y$ が小さいと考えて(?)、$\cos r_y = 1, \sin r_y = r_y$ とする?

R = \left(
    \begin{array}{ccc}
      1 & 0   & r_y \\
      0   & 1 & 0 \\
      - r_y   & 0   & 1
    \end{array}
  \right) \\

以上から、

\begin{eqnarray}
z' \left(
    \begin{array}{c}
      p_x' \\
      p_y' \\
      1
    \end{array}
  \right)
 &=& \left(
    \begin{array}{ccc}
      f_x & 0   & x_0 \\
      0   & f_y & y_0 \\
      0   & 0   & 1
    \end{array}
  \right)
 \left(
    \begin{array}{ccc}
      1 & 0   & r_y \\
      0   & 1 & 0 \\
      - r_y   & 0   & 1
    \end{array}
  \right)
 \left(
 \begin{array}{ccc}
      \frac{1}{f_x} & 0   & -\frac{x_0}{f_x} \\
      0             & \frac{1}{f_y} & -\frac{y_0}{f_y} \\
      0             & 0             & 1
    \end{array}
  \right) z
 \left(
    \begin{array}{c}
      p_x \\
      p_y \\
      1
    \end{array}
  \right) \\


&=& \left(
    \begin{array}{ccc}
      f_x - x_0 r_y & 0   & f_x r_y + x_0 \\
      -y_0 r_y   & f_y & y_0 \\
      -r_y   & 0   & 1
    \end{array}
  \right)
 \left(
 \begin{array}{ccc}
      \frac{1}{f_x} & 0   & -\frac{x_0}{f_x} \\
      0             & \frac{1}{f_y} & -\frac{y_0}{f_y} \\
      0             & 0             & 1
    \end{array}
  \right) z
 \left(
    \begin{array}{c}
      p_x \\
      p_y \\
      1
    \end{array}
  \right) \\


&=& \left(
    \begin{array}{ccc}
      1- \frac{x_0 r_y}{f_x} & 0   & \frac{x_0^2 r_y}{f_x} + f_x r_y \\
      -\frac{y_0 r_y}{f_x}   & 1 & \frac{x_0 y_0 r_y}{f_x} \\
      -\frac{r_y}{f_x}   & 0   & \frac{x_0 r_y}{f_x} + 1
    \end{array}
  \right)
 z

 \left(
    \begin{array}{c}
      p_x \\
      p_y \\
      1
    \end{array}
  \right) \\

&=& 
 z
 \left(
    \begin{array}{c}
      p_x - \frac{x_0 r_y}{f_x} p_x + \frac{x_0^2 r_y}{f_x} + f_x r_y  \\
      - \frac{y_0 r_y}{f_x} p_x + p_y + \frac{x_0 y_0 r_y}{f_x} \\
      -\frac{r_y}{f_x} p_x + \frac{x_0 r_y}{f_x} + 1
    \end{array}
  \right) \\

&=& 
 z \frac{1}{f_x}
 \left(
    \begin{array}{c}
      f_x p_x - x_0 r_y p_x + x_0^2 r_y + f_x^2 r_y  \\
      - y_0 r_y p_x + f_x p_y + x_0 y_0 r_y \\
      -r_y p_x + x_0 r_y + f_x
    \end{array}
  \right) \\

\end{eqnarray}

1行目と3行目の関係から

  \begin{cases}
   z' p_x' = z \frac{1}{f_x} ( f_x p_x - x_0 r_y p_x + x_0^2 r_y + f_x^2 r_y ) \\
   z' = z \frac{1}{f_x} (-r_y p_x + x_0 r_y + f_x)
  \end{cases}

下側を上側にぶち込んで

\begin{eqnarray}
(-r_y p_x + x_0 r_y + f_x) p_x' &=& f_x p_x - x_0 r_y p_x + x_0^2 r_y + f_x^2 r_y  \tag{4}\\

\end{eqnarray}

これを論文中式(3)

\Delta p_x = p_x' - p_x = r_y f_x + \frac{r_y (p_x - x_0)^2}{f_x}

にもっていくため変形する。

$p_x' - p_x$ の形にするには(4)式左辺の()内の形を右辺でも無理やり作るしかなさそう。

\begin{eqnarray}
(-r_y p_x + x_0 r_y + f_x) p_x' &=& f_x p_x - x_0 r_y p_x + x_0^2 r_y + f_x^2 r_y \\
&=& (f_x p_x + x_0 r_y p_x - r_y p_x^2 ) - 2 x_0 r_y p_x + r_y p_x^2 + x_0^2 r_y + f_x^2 r_y \\
(-r_y p_x + x_0 r_y + f_x) (p_x' - p_x) &=& - 2 x_0 r_y p_x + r_y p_x^2 + x_0^2 r_y + f_x^2 r_y \\
(-r_y p_x + x_0 r_y + f_x) (p_x' - p_x) &=& f_x^2 r_y + r_y (p_x - x_0)^2 \tag{5}\\
\end{eqnarray}

となり、論文中(3)式にかなり近付いた。ここで仮に

p_x = x_0 \tag{6}

を左辺だけに適用すると、上記(5)式は

\begin{eqnarray}
f_x (p_x' - p_x) &=& f_x^2 r_y + r_y (p_x - x_0)^2 \\
\Delta p_x &=& f_x r_y + \frac{r_y (p_x - x_0)^2 }{f_x}  \tag{7}
\end{eqnarray}

となり論文中(3)式に一致する。なぜこの仮定が成り立つ?わかる方いたら連絡ください

Appendix A3式から論文中3式までの導出

ここは導出が書かれているが省略が多く、やはり不明点が多い。

まずAppendix A3 から A5までがよくわからん。とりあえず、これは認めてしまう。

\Delta  \tilde{p}_x = r_y f_x + \frac{r_y f_x (p_x - x_0)^2}{\tilde{f}_x^2} \tag{A5}

チョー適当だが、(A5)式で $f_x = \tilde{f}_x$ とすると(7)と一致するので、そのような仮定を置いてるか?

(A5)式から(7)式を引いて

\Delta \tilde{p}_x - \Delta p_x = r_y f_x (p_x - x_0)^2 \frac{1}{\tilde{f}_x^2} - \frac{1}{f_x^2} \tag{A6}

次に(A6)から(A7)。

\begin{eqnarray}
\Delta \tilde{p}_x - \Delta p_x &=& r_y f_x (p_x - x_0)^2 \frac{1}{\tilde{f}_x^2} - \frac{1}{f_x^2} \tag{A6} \\
 &=& r_y f_x (p_x - x_0)^2 \frac{(f_x - \tilde{f}_x)(f_x + \tilde{f}_x)}{f_x^2  \tilde{f}_x^2} \\

\end{eqnarray}

ここで

f_x + \tilde{f}_x) \simeq 2 f_x

とすると

\begin{eqnarray}
\Delta \tilde{p}_x - \Delta p_x &=& r_y f_x (p_x - x_0)^2 \frac{(f_x - \tilde{f}_x) 2f_x^2}{f_x^2  f_x^2} \\
 &=& r_y (p_x - x_0)^2 \frac{(f_x - \tilde{f}_x)}{f_x^2} \tag{A7} \\
\end{eqnarray}

とAppendix A7 式と一致する。

次にA7式からA8式。

A7の右辺 $(p_x - x_0)^2$ の最大値を考える。

$x_0 \simeq \frac{w}{2}$ なので、

p_x = \frac{w}{2}

という最大値を考えると

\begin{eqnarray}
\Delta \tilde{p}_x - \Delta p_x &=& r_y (p_x - x_0)^2 \frac{(f_x - \tilde{f}_x)}{f_x^2} \tag{A7} \\
&<& \frac{r_y w^2}{wf_x^2} (f_x - \tilde{f}_x) \tag{A8}
\end{eqnarray}

次がよくわからんが、右辺は1より大幅に小さいので

\begin{eqnarray}
\frac{r_y w^2}{wf_x^2} (f_x - \tilde{f}_x) &\ll& 1 \\
\| f_x - \tilde{f}_x \| &=& \| \delta f_x \| \ll \frac{2f_x^2}{w^2 r_y} \tag{A9}
\end{eqnarray}

とA9となるらしい。

reference

[2] P. Fischer, "FlowNet: Learning Optical Flow with Convolutional Networks"

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?