[論文メモ] GAN-Supervised Dense Visual Alignment

arxiv.org

github.com

CVPR2022


GANを使ったDense Visual Alignmentの学習

手法

学習済みのGANによるサンプル \boldsymbol{x}とその \boldsymbol{x}を生成する潜在変数を操作して得られたサンプル \boldsymbol{y}のペア ( \boldsymbol{x},  \boldsymbol{y})を利用した教師あり学習

このペアデータを使ってネットワーク f_{\theta}: \boldsymbol{x} \rightarrow \boldsymbol{y}を学習する。

画像の空間的なアライメントをする手法にCongealingという既存手法がある(らしいけどよく知らない)。

そこからもじり本手法をGANgealingと呼ぶ。

まずは一般的なGANと同じく潜在変数  \boldsymbol{w} \in \mathbb{R}^{512}を入力としてジェネレータ Gを学習する。
これにより \boldsymbol{w} \in \mathcal{W}を使って画像を生成出来る。
ここで固定されたベクトル \boldsymbol {c} \in \mathbb{R}^{512}を考える。
 \boldsymbol {c}からは常に同じ画像 G(\boldsymbol {c})が生成される。
 \boldsymbol{x} = G(\boldsymbol{w}) \boldsymbol{y} = G(\boldsymbol{c})にワープするSpatial Transformer  Tを学習する。
そのために最適化するloss関数は以下の式(2)。 lは2枚の画像間の距離関数。

GANgealingでは \boldsymbol{c}を調整して Tが変換を見つけられるようにする。

あくまでデータセットの分散が小さい場合に有効で、そうでない場合はこの方法だと難しい。
そこですべてのサンプルを G(\boldsymbol{c})に寄せるのではなく、サンプルごとに属性は異なりアライメントだけ統一した画像をターゲットにする。
ターゲット画像もGで生成するので、入力の初めの方は \boldsymbol{c}を使い、後半は \boldsymbol{w}を使うことでアライメントを統一しつつ、属性をサンプルに適したターゲット画像を生成できる。
これによりlossは以下の式(3)になる。距離関数 lはperceptual loss。 G(\verb|mix|(\boldsymbol{c}, \boldsymbol{w}))が潜在変数を混ぜた画像。

GはStyleGAN2を採用する。

Spatial Transformer Parameterization

Spatial Transformer  Tは画像からワープのためのグリッド \boldsymbol{g} \in \mathbb{R}^{H \times W \times w}を回帰する。
実験をした結果 Tに制約は必要なかった。ただ、
total variationと \mathcal{L}_{\verb|I|}(T) = || \boldsymbol{g} ||^2_2(identity mappingを防ぐ)の正則化を課した。

Parameterization of c

 \boldsymbol{c}はパラメータを \alpha_iとして以下の式(4)。

 \bar{\boldsymbol{w}} \boldsymbol{w}の平均、 \boldsymbol{d}_iはi番目のprincipal direction。
学習では \alpha_iを最適化する。
最終的なlossは式(5)。

Joint Alignment and Clustering

非常に多様なポーズが含まれるデータに対しての適用は難しい。
そこで \boldsymbol{c} TをK個用意してmodeを複数用意する(クラスタ)。
学習時は最もlossが小さい \boldsymbol{c}_k T_kのペアを更新する。

テスト時はfake image  G(\boldsymbol{w})を使って最適な T_kクラスタ\newcommand{\argmin}{\mathop{\rm arg~min}\limits} k^* ~ \argmin_k \mathcal{L}_{\verb|align|}(T_k, \boldsymbol{c}_k)を使う。
しかし、入力したいreal image  \boldsymbol{x}に似たfake image  G(\boldsymbol{w})が必要だがそれを求めるのはコストが掛かる(GAN Inversionとか)。そこでクラスタ  kを直接予測する。
画像を入力としてクラスタを予測。lossはクロスエントロピー。正解ラベルは上記の k^*

実験・結果

詳しくは論文参照。


所感

Congealingというものを知らなかったので、そちらも勉強しておく必要がある。
StyleGAN等で浅い層へのstyle vectorがposeに影響するという性質をうまく使っている。
以前にあったimage manipulation 論文でも似たようにしてreal imageと生成画像のposeを揃えていた。
ターゲットオブジェクトのある箇所を操作(例えば顔の頬にシールを貼る)等が出来るのは面白い。
また簡易的にセマンティックセグメンテーションのラベルデータも作成できそう。