[論文メモ] Discovering Interpretable Latent Space Directions of GANs Beyond Binary Attributes

openaccess.thecvf.com
github.com

CVPR2021

学習済みStyleGANから特定の属性操作をした画像を生成する。

よくある手法では属性のスコア情報やバイナリラベルを利用するが、それだとスタイルなどの抽象的な属性の変更は難しい。
提案手法ではターゲット属性の画像データセットを用いてそれを実現する。

手法

2つのDiscriminatorと1つのClassifierがメイン。
ベースのモデルはStyleGANでMapping Network  G_{map}とSynthesis Network  G_{syn}からなる。
潜在変数 z G_{map}を用いて中間潜在変数 w \in \mathcal{W}にし、それを入力として G_{syn}が画像を生成する。
目的はこの wに加える、属性のdirection  \thetaを見つけること。編集後の画像 x_fは以下の式で得られる。

 \alpha \in \mathbb{U}[-\beta, \beta]で属性変更を調整するパラメータ。

学習のために、ターゲットとなる属性のデータ S_{data}(x) = \{ x_i | i = 1,...,N\} \in Rが必要( Nはデータ数)。なおネガティブサンプルは必要なく、ポジティブサンプル(ターゲット属性のデータ)のみ必要。

アーキテクチャ

Attribute Assessor  D_{attr}

 D_{attr}は入力された画像がターゲットの属性画像がどうかを判断する。
real画像としては属性のデータ Rからのサンプル、fake画像として G_{syn}が生成した画像 x_rの属性を編集した画像  x_fを受け取る。
これにより \thetaがターゲットの属性方向になる。

Original Discriminator  D_{syn}

 D_{attr}だけだと元の分布から離れていく可能性があるのでそれを抑制する。
 D_{syn}はベースとなるStyleGANを学習するときに一緒に学習したDiscriminatorでパラメータは固定する。
lossは以下。

ただし、 g_1(x) = RELU(1 + x), g_2=RELU(a - x)

Identity Classifier  C_{id}

 C_{id}は入力された画像のアイデンティティを特定するためのClassifier。
始めに潜在変数 z K個用意して、それから生成した画像 x_{r_k} = G_{eyn}(G_{map}(z_k))と編集した画像 x_{f_k} = G_{syn}(G_{map}(z_k) + \alpha\theta) k番目のクラスとして学習を行う(正解クラスとのクロスエントロピー)。
なお C_{id} \thetaの学習と同時に行う。

Training Objectives for Direction Discovering

全体としてのlossは D_{syn}による \mathcal{L}_{dis} C_{id}を使ったIdentity loss  \mathcal{L}_{id} D_{attr}を使ったadversarial loss \mathcal{L}_{adv}からなる以下の式。




なお、f_1,f_2スカラー関数(詳しくは不明)、 d^{cos}はコサイン距離、 f^r_{id}, f^f_{id}はそれぞれ C_{id} x_r,x_fを入力して得られた特徴量。

実験・結果

例の如く省略。詳しくは論文参照。
9つのアニメ属性と7つの人間属性で実験。
9つのアニメ属性は、7つのキャラクター属性 (open mouth, blunt bangs, hair length, black hair, blonde hair, pink hair)と3つのスタイル(Itomugi Kun, コミック, ちびまる子ちゃん)
データ数は不明?

使用したスタイル例は図4。



所感

アイデンティティlossを入れているので、入力のアイデンティティは保たれてる感じがある(ほんまか?)。
生成結果と、生成に使った潜在変数を少し操作して得られた画像を同じクラスとみなしてクラス分類するのは、イラスト等で同じ絵柄の同じキャラクターを複数集めるのが困難な場合に役立ちそう。
Kクラスをどれくらいに設定すべきなのか、属性データはどれくらい必要なのか等が不明なのが辛い。Ablationがほしい(Ablationはlossに関して)。
確かに、バイナリ特徴で表現できないような抽象的なスタイルに関しては適していそうだが、操作したい属性のデータを集めるのは少々面倒な気がする(どれくらいの量必要なのかもわからないし)。
そしてなぜちびまる子ちゃん