[論文メモ] Projected GANs Converge Faster

arxiv.org
github.com

NeurIPS 2021


学習済みモデルを使ってGANの学習を効率化・高速化・高精度化する。
重要なのは
1) feature pyramidを使った複数のdiscriminatorによるマルチスケールからのfeedback
2) 学習済みモデルの高次特徴を有効活用するためのランダム射影

手法

一般的なGANの目的関数

特徴量を射影する関数集合 \{ P_l \}を使って提案するProjected GANの目的関数は以下の式2の形になる。

 \mathcal{L}このDと特徴射影の関数を使って学習するだけ。
ただし \{ P_l \}は全て固定であくまでGと \{ D_l \}だけ学習する。
また \{ P_l \}は以下の2つの条件を満たす必要がある。
1) 微分可能
2) 入力の十分統計量を保存する


 \mathbb{P}_Tを本物のデータの確率密度、 \mathbb{P}_GをGにより生成したデータの確率密度、 P_l \circ T P_l \circ G微分可能な固定の関数 P_lとの合成関数とする。 Gを固定した時、最適なDiscriminatorは l \in \mathcal{L}について

となる。証明は論文のappendix参照。

つまり P_lで特徴量に変換してからDiscriminatorを使って分布を一致させると P_lの表現の限界があるが収束時は真の分布に一致する。
 P_lで変換してGANをやってもいいんだよ!っといったかんじか。

モデル

主に射影するための関数 P_lとDiscriminator(D)について。

Multi-Scale Discriminators

学習済みモデルを固定して \{P\}とするが、解像度を L_1=64^2 L_2=32^2 L_3=16^2 L_4=8^2の4つからの特徴を利用する。
 L_lに対応するDを D_lとする。D_lはconvとspectral normで構成され、最終的な出力を同じ解像度(ここでは 4^2)にすると良いパフォーマンスが得られたそう。

Random Projections

深い層の特徴だけで全てをカバーするのは難しい。Dは特徴空間の部分集合に焦点を当てほかを無視することができると仮定。
つまり深い層の機能に特化した特徴だとDがそれ以外を無視して、画像全体の整合性を保つのは難しいということ?

全ての情報を平等に扱ってほしいのでランダム射影を挟む。
ランダム射影は元の特徴の情報を残しつつ、自明に戻せないことが必要。情報が欠落してはボトルネックになるし、自明に戻せると変換の意味がないから。
ランダム射影は1x1のconvをランダムに初期化して固定することで実現。
これをCross-Channel Mixing(CCM)とする。
Kingmaの初期化より初期化方法はランダムがよいらしい。

またCCMを拡張したCross-Scale Mixing (CSM)も作成。
よりU-Net的な構造にして高解像度な特徴に低解像度だがglobalな特徴を足し合わせたもの。

Pretrained Feature Networks

特徴抽出に利用する学習済みとして3つを実験。
1つ目はEfficientNet。ImageNetで学習されたモデルで大きさにより精度と計算コストのトレードオフがある。
2つ目はResNetでこれも様々な大きさがある。ImageNetへの依存も調査するためR50-CLIPも利用。
3つ目がViT系。

Ablation

どのDの組み合わせが良いのかFDとFIDの指標で調査。特徴抽出はEfficientNet。結果が表1。

No Projectionでは浅い層の特徴を省くほどパフォーマンスが低下。
深い層のよりセマンティックな特徴より浅い層(高解像度)は特徴のほうが重要。
Perceptual Dは全ての解像度の特徴を一度に使うタイプだが、独立に扱うのに比べ劣る。
CCMは(No Projectionにランダム射影追加)No Projectionに比べパフォーマンス向上。
CSMは深い層を使うとより向上。CSMは浅い層の特徴も使っているのでこれは当然な気もする。


どの学習済みモデルが良いのか調査した結果が表2。

ViTと比較するとImageNetの精度が高ければよいわけではないのがわかる。DeiTのFIDも十分に小さいのでtransformerが悪いわけではなさそう。convolutionの影響はありそうだが。
またR50-CLIPを比較するとImageNetである必要はなさそう。
EfficientNetが優れる。
また特徴抽出モデルをランダム初期化の状態で固定して学習すると学習済みモデルに比べ大きなFIDで収束する。

実験

SOTAのGANとの比較。速いしより小さいFIDに収束。


データセットの大きさによる比較。
Large Datasetsは25k~3Mぐらいの量。
Small Datasetsは400~4kぐらいの量。
ちなみにポケモンは833枚。

ただ問題もある。
1つ目が顔だけ浮いたような画像がされるfloating heads。AFHQで確認。
これは画像認識の学習済みモデルを使っているのが原因ではと考察。
画像認識では顔が重要で背景は気にしていない。実際、学習済みの識別モデルに背景を消して識別しても精度の低下はわずかだそう。

2つ目はアーティファクトが出る問題。FFHQで確認。最も良いFIDのモデルでも発生する。

所感

シンプルな方法で高速・安定にGAN学習できるのは嬉しい。
確かに、学習済みモデルをうまく利用することでDの学習を高速・安定にさせられそうではある。
以前に比較にも出ているFastGANを実験したが確かに早かったがそれより高速となると下手したら2~3時間でなんとかなるのでは?
ただアーティファクトの問題などはFastGANで実験したときもあり、学習は高速・安定でも結果が少々不安定というのは実用的ではないかも?(実用とは?)
データセットが少なくて済むのも嬉しい。工夫すればProjected GANでデータの水増しとかできないかな?
floating headsの問題は確かに画像識別のモデルを使う弊害っぽい。画像でreal/fakeではなく特徴量でreal/fakeなので仕方ない気がする。
セグメンテーションとかのモデルにすれば改善するかも?
まだ工夫の余地もありそう。