はじめに
NIPS2017から W. Lai らの Semi-Supervised Learning for Optical Flow with Generative Adversarial Networks をまとめてみた。
Supplementary Materialはこちら
[2] http://vllab.ucmerced.edu/wlai24/semiFlowGAN/nips17_semiFlowGAN_supp.pdf
要点
- CNNやGANs的な仕組みを使って Optical Flow を推定する仕組みである
- 従来の手法と違い、ラベルが付いていないVideoを加えて半教師あり学習を行う
- 従来の手法で用いる明るさの恒常性や空間的な滑らかさがこの手法では必要なくなる
- これにより従来の教師あり学習、あるいはベースラインとなる半教師あり学習の性能を上回った
図1はこのモデルで生成された Optical Flow の一例。

左上(Input images)は移動前と移動後の2枚を重ねている。特に中央の人物が移動している。この画像ペアに対し Ground truth は右上、本論文の手法は右下。
モデルのアーキテクチャ
本モデルのざっくりしたアーキテクチャは以下の図2。

左が Baseline とする semi-supervised な手法。明るさの恒常性や空間的滑らかさを想定している。右が本論文の手法。上記2つの想定を用いず、代わりにGANsの仕組みで学習させている。
上側のラベルがある場合に注目する。左から移動前と移動後の2枚の画像を CNN へ入力する。そうすると Optical Flow の推定量が算出される。まずこの推定量と Ground truthで比較し EPE loss を求める。一方で2枚の画像から Flow warp error image を作成し、これを識別器へ入力する。
次に下側のラベルがない場合に注目する。移動前と移動後の2枚の画像を CNN へ入力し、Optical Flow を算出する。またこの Optical Flow 及び2枚の画像から Flow warp error image を作成し、これを識別器へ入力する。
adversarial な loss と EPE loss とで学習を行う。そうすると、 ラベルありの場合、EPE loss により CNN(generator)は精度を増す。一方ラベルがない場合、adversarial な loss により CNN(generator)は精度を増す。
loss の計算
まず定義から。
入力画像を $(I_1, I_2)$ とする。
モデルにより生成する Optical Flow を $f= \left[ u, v \right]$ とする。
Ground truth の Optical Flow を ${\hat{f}}= \left[ {\hat{u}}, {\hat{v}} \ \right]$ とする。
EPE loss は以下で求める。
L_{EPE} (f, \hat{f} \ )=\sqrt{(u-{\hat{u}} \ )^2+(v-{\hat{v}} \ )^2}
次に flow warp error image は $y$ を生成器経由、 $\hat{y}$ を Ground truth 経由として以下で求める。
y=I_1 - {\mathbb{W}}(I_2, f) \\
\hat{y} =I_1 - {\mathbb{W}}(I_2, \hat{f} \ )
この flow warp error image を識別器に放り込むので、adversarial な loss は以下。
L_{adv}(y, \hat{y} \ )={\mathbb{E}}_{\hat{y} \ } \left[ \log D(\hat{y} \ ) \right] + {\mathbb{E}}_{y} \left[ \log(1- D(y)) \right]
よって loss 全体では以下。
\min_G \max_D L_{EPE}(G)+\lambda_{adv}L_{adv}(G,D)