[論文メモ] BlendGAN: Implicitly GAN Blending for Arbitrary Stylized Face Generation

arxiv.org

概要

顔のスタイル変換。
layer-swappingによるスタイル変換はきれいだがモデルが2つ必要 and ターゲットスタイルの画像がたくさん必要になる問題がある。
この論文ではスタイル変換の手法としてBlendGANと、顔のアート画像データセットAAHQを提案する。
f:id:Ninhydrin:20211027090053p:plain

手法

ゴールは以下のGenerator  Gを学習すること。
f:id:Ninhydrin:20211026091845p:plain

 \hat{x}_fは顔画像、 \hat{x}_xはその顔をアートに変換したもの、 \textbf{z}_fは顔のアイデンティティを決定するコード、 \textbf{z}_xはスタイルを決定するコード、 iブレンドを決めるパラメータ。
全体像は図2参照
f:id:Ninhydrin:20211027090235p:plain

Self-supervised Style Encoder

スタイル用エンコーダ E_{style}の学習について。エンコーダの全体像は図3参照。
f:id:Ninhydrin:20211027090340p:plain
よくVGGのGram matrixをconcatして使う方法があるが次元が非常に大きく(~610,000)スタイル画像に対して分布がスパースになる。
そこで自己教師あり学習のSimCLRと合わせて次元を削減する。SimCLRについては以下を参照。
ai-scholar.tech

提案手法としてはVGGの各層から得たGram matrixをflattent and concatしてそれを4層のMLPに通してスタイルコード  z_sを得る。
これに対してSimCLRの要領で z_sをprojection headに入力してcontrastive learningを行う。
augmentationについてはアフィン変換のみ。
本来のSimCLRは色変換も行っているが、今回の目的スタイルを埋め込むことで、色はスタイルと関係があるので色変換は行わない。
スタイル埋め込みの学習はMLPのみ行い、学習済みのVGGのパラメータは固定。
lossはNT-Xent loss(SimCLRのもの)
f:id:Ninhydrin:20211026094214p:plain
 (i, j)は同じ画像に違うaugmentationをしたポジティブペア、 \verb|sim|()はコサイン類似度、 \tauは温度パラメータ。
図8はエンコード結果をt-SNEで可視化した図。
f:id:Ninhydrin:20211027090837p:plain

Generator

GeneratorはStyleGAN2のものをベースに。
標準正規分布からサンプルした顔のアイデンティティコード  \textbf{z}_fと、同じく標準正規分布からのサンプル or  E_{style}から得たスタイルコード \textbf{z}_sをmodulationの入力とする。
それぞれのコードはそれぞれのMapping NetworkでWの空間に変換され、 \textbf{w}_f \textbf{w}_sになる。
 \textbf{w}_f \textbf{w}_sは(入力する層の数) x (入力次元)になる。1024x1024の場合は18箇所入力できるので18 x 512になる。
weighted blending module(WBM)はGeneratorに入力するために、変換された2つのコードをブレンドした \textbf{w}にを生成する。

StyleGAN系のモデルではlatent codeの影響が解像度ごとに異なる。
低解像度は形状などに関わり、高解像度は色などに関わる。なので \textbf{w}_f \textbf{w}_sは全ての層で同じ割合でブレンドするべきではない。
WBMによるブレンドの戦略は以下の式。

f:id:Ninhydrin:20211026095629p:plain

 \odotアダマール積、 \alpha \in \mathbb{R}^{18}は学習可能なブレンドの比率、 \mathbf{m}(i, \theta) i番目の層でブレンドを行うかのマスク。
 i=0のときは \textbf{w}=\textbf{w}_s \odot \alpha + \textbf{w}_f \odot (\mathbb{1} - \alpha)となり、全ての層でブレンドした \textbf{w}を利用することになる。
 i=18のときは \textbf{w}=\textbf{w}_fとなりブレンドはされずアイデンティティの顔画像が生成される。
 0 < i < 18のときは低解像度の層ではスタイルは使われず、高解像度の層でスタイルをブレンドした \textbf{w}が使われ、アイデンティティを保ちつつスタイルを変換できる。

Discriminator

Discriminatorは3つ( D_{face}, D_{style}, D_{style_latent})で全てStyleGAN2のものを利用。
 D_{face}は実世界の顔画像に対するreal / fake。 i=18で生成した結果とFFHQの画像で比較する。
 D_{style}はアートの顔画像に対するreal /fake。 i=0で生成した結果と提案するデータセットAAHQで比較する。
 D_{style_latent}はprojection discriminatorでアート化した顔画像とそのアートスタイルコード \textbf{z}_sを入力とする。そしてアート化した顔画像が \textbf{z}_s由来かを識別する。

Training objectives

実世界の顔画像 x_f、アートの顔画像 x_sアイデンティティコード \textbf{z}_f ~ N(0, 1) \textbf{z}^{-}_s \textbf{z}_s以外のスタイルコードとする。目的関数は
f:id:Ninhydrin:20211026102302p:plain
f:id:Ninhydrin:20211026102322p:plain
f:id:Ninhydrin:20211026102341p:plain
f:id:Ninhydrin:20211026102401p:plain
となる。

実験

AAHQ

アート顔画像のデータセットとしてArtstation-Artistic-face-HQ (AAHQ)を作成。AAHQは解像度1024 x 1024の33245枚のアート顔画像からなるデータセット
Artstationから集めた。

結果

f:id:Ninhydrin:20211027090642p:plain
f:id:Ninhydrin:20211027091054p:plain
f:id:Ninhydrin:20211027091147p:plain

所感

スタイルをエンコードしてStyleGAN系を使って適用する正直よくあるやつ。
スタイルのエンコードにSimCLRを使うのは時代を感じる。前に読んだ論文ではGram matrixをflatten and concatしてPCAを行っていたがどちらが良いのだろうか。
アート画像じゃなく、アニメ画像の集合でやるとどうなるのかちょっと気になる。