LoginSignup
6

More than 3 years have passed since last update.

posted at

updated at

論文まとめ&実装例:SPIGAN: PRIVILEGED ADVERSARIAL LEARNING FROM SIMULATION

はじめに

ICLR 2019 に accept された以下の論文
[1] K. Lee, et. al. "SPIGAN: PRIVILEGED ADVERSARIAL LEARNING FROM SIMULATION"
のまとめ。

arXivのリンク
https://arxiv.org/abs/1810.03756

現時点(2019/4/13)で本論文を実装したコードで公開されてるものは私のだけみたい。
https://github.com/masataka46/SPIGAN

概要

  1. simulatorで作成した画像を realな画像に変換する、domain adaptation 分野の論文
  2. real な画像に対するアノーテーション無しで目的タスクの推論値を求められる
  3. simulatorからの画像はGANでrealにするが、その際に simulator ならではの情報(例えばdepth情報)を利用するのが特徴的

以下の図が1例。

SPIGAN_img01.png

[1]のFigure 1より

左から simulator で生成した画像、それを realにしたもの、depth情報の推論値、セグメンテーションの推論値。

背景

semantic segmentation などはアノテーションの労力が多大にあり、それが学習のボトルネックになっている。アノテーション無しで学習することが出来れば楽だろう。

モデルの概要

モデルの概要は以下の図。

SPIGAN_img02.png

[1]Figure2 より

最上段部分に注目すると、左から画像 $x_s$ 入れて generator で $x_f$ に変換する。

その $x_f$ と実際の画像 $x_r$ を discriminator に入れて real か fake かを判別する。

この部分だけ見ると、ありがちな画像変関係の GAN。

これに中央左寄り、認識タスク(この場合 semantic segmentation)を推論する task predictor $T$ を加えた。これも先行研究で既にある。

本モデルの特徴は中央右寄り Previlege Infomation (この場合depth情報)を推論する Previleged Network $P$ 。

目的関数と学習方法

目的関数全体

全体は以下。

\min_{\theta_G, \theta_T, \theta_P} \max_{\theta_D} \alpha \mathcal{L}_{GAN} + \beta \mathcal{L}_T + \gamma \mathcal{L}_{P} + \delta \mathcal{L}_{perc}

1項目から adversarial loss、task prediction loss、PI regularization、perceptual regularization。

各項の $\alpha, \beta, \gamma, \delta$ は重みづけ。

adversarial loss

adversarial loss は 最小二乗損失で安定化させる。

\mathcal{L}_{GAN}(D, G) = \mathbb{E}_{x_r \sim P_r}[(D(x_r;\theta_{D}) - 1)^2] + \mathbb{E}_{x_s \sim P_s}[D(G(x_s;\theta_{G});\theta_D)^2] 

$x_r$ :realな画像
$p_r$ :realな画像が従うデータ生成分布
$x_s$ :simulatorで作成した画像
$p_s$ :simulatorで作成した画像がデータ生成従う分布
$\theta_G$ :generatorのパラメータ
$\theta_D$ :discriminatorのパラメータ

task prediction loss

task predictor $T$ に 合成画像 $x_s$ と それをreal化した画像 $G(x_s, \theta_G)$ を入力し、ラベルとの loss を計算することで、両者のラベル情報を保持することを狙う。

semantic segmentation タスクの場合、ピクセルレベルでの交差エントロピーを計算する。

\begin{eqnarray}
\mathcal{L}_T (T, G) &=&\mathcal{L}_{CE} (x_s, y_s) + \mathcal{L}_{CE} (G(x_s, \theta_G), y_s)\\
 \mathcal{L}_{CE}(x,y) &=& \frac{-1}{WH}\sum_{u,v}^{W,H} \sum_{c=1}^{C} \mathbb{1}_{[c=y_{u,v}] } \log(T(x;\theta_T )_{u,v})\  
\end{eqnarray}

$W$ :画像の幅
$H$ :画像の高さ
$u$ :画像の横ピクセル
$v$ :画像の縦ピクセル
$C$ :物体のクラス
$\theta_T$ :task predictor のパラメータ
$mathbb{1}$ :indicator 関数
$y_s$ :セグメンテーションのラベル

PI regularization

タスク特有の情報(previlege infomation)で制約をかける。depth情報の場合は、previleged network $P$ に合成画像 $x_s$ と それをreal化した画像 $G(x_s, \theta_G)$ を入力し、depth ラベルとの loss を計算する

これにより合成画像 $x_s$ と それをreal化した画像 $G(x_s, \theta_G)$ のdepth 情報が維持されることを狙う。

推論値とラベルとの差のL1ノルムでlossを求める。

\mathcal{L}_P (P,G) = \| P(x_s;\theta_P) - z_s \|_1 + \| P(G(x_s, \theta_G);\theta_P) - z_s \|_1

perceptual regularization

合成画像 $x_s$ と それをreal化した画像 $G(x_s, \theta_G)$ を意味的に近くするため、さらに perceptual loss を用いる。

\mathcal{L}_{perc}(G) = \| \phi (x_s) - \phi (G(x_s;\theta_G)) \|_1

$\phi(x)$ :VGG19などの学習済みモデルの中間層からの出力。

詳しくは、[6]に計算方法が書かれていて、

\mathcal{L}_{I,L}(\theta) = \sum_l \lambda_l \| \Phi_l (I) - \Phi_l (g(L;\theta)) \|_1

となっている。 $l$ はVGG19の conv1_2、conv2_2、conv3_2、conv4_2、conv5_2で、これら出力に対して差のL1を計算する。

$\lambda_l$ は各層に対する重み付けで、出力テンソルの要素数を逆数にしたものを初期値とし、学習によって最適化される変数。

学習方法

以下の2ステップで学習する
1. $\theta_G, \theta_T, \theta_P$ を固定し、$\theta_D$ を学習する
2. $\theta_D$ を固定し、$\theta_G, \theta_T, \theta_P$ を学習する

実験と結果

データセット

  1. synthetic domain に用いた dataset:SYNTHIAのSYNTHIA-RAND-CITYSCAPES(Cityscapesに似た合成画像)
  2. target domain に用いた dataset:Cityscapes と Mapillary Vistas datasets
  3. target domain の dataset は training と test に分ける
  4. 学習中はtarget domain のラベル情報を使わない

メトリクス及びablation studyの設定

  1. メトリクスはカテゴリーごとの IoU 及び mean IoU
  2. ablation studyは PI (previlege information)なしで効果を検証する

アーキテクチャ

generator:2 down-samplingのconv+9 residual block+2 deconv
discriminator:PatchGANのような3層
task predictor:標準的なFCN8s
privileged network:標準的なFCN8s

perceptual loss 計算時の $\phi$ :学習済みVGG19のconv1_2, conv2_2, conv3_2, conv4_2, conv5_2 からの出力

ハイパーパラメータの設定

loss の各項重み:
adversarial loss, task loss, privileged loss, perceptual loss ぞれぞれ $\alpha = 1, \beta = 0.5 \gamma = 0.1, \delta = 0.33$

data augmentation

random crop

最適化

Adam

比較モデル

  1. FCNs ([2])
  2. CDA ([3])
  3. LSD ([4])
  4. CBST ([5])

結果(1)

SYNTHIAデータセットで学習してCityscapesで評価したものは以下。

SPIGAN_img04.png

[1]Table1より

上側がcrop前の解像度320x640、下側が512x1024の場合。

各行はそれぞれのモデル、各列はカテゴリーで、最右がmean IoU。

まず mean IoUでみた場合、pribileged networkを含めたSPIGANが最も良い。

またSPIGAN-no-PI と SPIGAN(PI含む)を比較した場合、数%のmIoU改善に寄与している。

結果(2)

SYNTHIAデータセットで学習してCityscapes, 及びVitasで評価したものは以下。

SPIGAN_img05.png
[1]Table2より

こちらはFCNsのみとの比較になるが、いずれのカテゴリーにおいてもFCNsを上回っている。

また同様に、SPIGAN-no-PI と SPIGAN(PI含む)を比較した場合、mIoU改善に寄与している。

出力例

SPIGAN_img07.png
[1]Figure6より

上段からsimulatorからの画像、privileged netowrk を入れない場合のadapted 画像、privileged netowrk を入れない場合のadapted 画像。

一番右側の例では、simulatorの画像に影が入っているため、privileged networkがない場合はこの部分を影がある道路と認識できず、混乱した画像となっている。

一方、privileged networkがある場合は、深さ情報から道路だとわかるためか、影のある道路をうまく表現できている。

自分の学習例

上記作成したーコードで学習させてみた結果。

trainResultImage_19042401_bc64_bcp64_resta5_19.png

左からSYNTHIAの合成画像、それをgeneratorでadaptedした画像、合成画像に対するセグメント推論(task predictorからの出力)、adapted画像に対するセグメント推論、セグメントの正解値。

合成画像がCityScapeっぽい青みがかった色になっている。

以下は20epoch学習後のCityScapeデータのvalidationに対する推論。

RealResultImage_19042401_bc64_bcp64_resta5_19.png

左からCityScape画像、それに対するセグメント推論、セグメントの正解値。

やはり学習データに対する推論に比べて精度が落ちる。特に学習データにないもの・・・例えば画像下側に映り込んだ車の一部・・・に対する推論がうまくいってない。

実装のハマりどころ

ネットワークに関しては普段からGAN系を実装していれば、特に問題無し。

SYNTHIAのデータは要注意。実際は人や車等、複数ある物体に関してインスタンスごとに色分けされている。しかしその色に規則性が見当たらない。

なので、先行研究でSYNTHIAを使った方が作成した修正データを利用した。

reference

[2] Judy Hoffman, Dequan Wang, Fisher Yu, and Trevor Darrell. Fcns in the wild: Pixel-level adversar- ial and constraint-based adaptation. arXiv preprint arXiv:1612.02649, 2016b.

[3] Yang Zhang, Philip David, and Boqing Gong. Curriculum domain adaptation for semantic segmen- tation of urban scenes. In International Conference on Computer Vision, 2017.

[4] Swami Sankaranarayanan, Yogesh Balaji, Arpit Jain, Ser Nam Lim, and Rama Chellappa. Learning from synthetic data: Addressing domain shift for semantic segmentation. In Computer Vision and Pattern Recognition, 2018.

[5] Yang Zou, Zhiding Yu, BVK Vijaya Kumar, and Jinsong Wang. Unsupervised domain adaptation for semantic segmentation via class-balanced self-training. In European Conference on Computer Vision, 2018.

[6] Qifeng Chen and Vladlen Koltun. Photographic image synthesis with cascaded refinement networks. In International Conference on Computer Vision, Oct 2017.

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
What you can do with signing up
6