[論文メモ] DyStyle: Dynamic Neural Network for Multi-Attribute-Conditioned Style Editing
GANの生成結果を操作する系の論文。
StyleGANなどは高精細な画像の生成を可能にしたが、生成結果のコントロールが難しい。
生成結果のコントロールするためにスタイル編集ネットワーク(StyleGANのlatent codeを生成する)を作成する手法がある。
しかしlatent codeを変化させると意図しない部分も同時に変化してしまい狙った箇所のみを変化させるのが困難。
GANSpaceやSeFaなどの手法ももあるがPCAを使ったデータドリブンな方法。
これらの手法はlatent spaceが線形であるという仮定。
実際はlatent spaceで複数要素がentangleしていて一つの属性を変化させると他のセマンティクスが予期せず変化してしまう。
latent spaceを線形に分離は限界がありStyleRigやStyleFlow、Hijack-GANなどはlatent codeを非線形な編集を行う。
StyleRigの結果は良いが顔の属性の詳細な制御はできない。
StyleFlowは学習時に属性の制御が明示的に課せられてはおらず、データの偏りの影響を受ける。
Hijack-GANは属性が直行しているという仮定をしている。
スタイル編集ネットワークは多様な属性に対応できる必要があり、学習時に操作する属性の構成に偏りがあるとそれの影響を受ける。
例えば実画像の編集を例で髪の色と年齢をを変えたいとした時、この属性構成が同じ確率でサンプリングされてほしい。
データセットで髪の色と年齢に相関があると片方を編集するともう一方も予期せず変化してしまうかもしれない。
これを避けるためには学習時、各属性が独立にサンプリングされてほしい。
そこで提案するDyStyleでは
1) 静的な学習データセットではなく、属性構成を均等にサンプリング
2) 各属性操作に特化したエキスパートで構成
を行う。
手法
提案するDynamic Style Manipulation Network(DyStyleNet)のアーキテクチャと学習方法について。
全体図は図3を参照(論文では図3と図2の画像が間違っていそう)
DyStyleではlatent codeとしてを扱う。は18個の512次元ベクトルでStyleGAN2の各層に利用される。
はMapping Networkの出力か学習済みのimage to code network(図3のEncoder)の出力。
DyStyleNetはを受け取り、操作後のlatent code を生成。このをStyleGAN2に入れて編集後の画像を得る。またからも編集なしの画像を得る。
はと指定した属性は変化しながらもアイデンティティは一致してほしく、そういった制約を課す。これらの制約は学習済みモデル(と)によって行う。
Dynamic network architecture
アーキテクチャは図2を参照。
編集する属性構成情報はでを1つずつ処理する。
このとき属性構成を単体で処理するのではなくとインタラクションすることで、各層で適当なstyle codeを生成できる(図2の緑の四角内部。とをFCに通したあとでアダマール積をとっている)。
各属性情報で処理したあと、Cross-Attentionで1つのfused proxy codeを得る。
Cross-Attentionの恩恵は2つ
1) 各属性とのインタラクション(顔画像に対しヨーとピッチを変更したとき、鼻や目の変化は両方の影響を受ける)
2) 可変な入力に対応できる(編集する属性数は可変)
またCross-Attentionの前にスイッチ(図だと赤字のdynamic)があり、編集する属性のみ入力する。
Cross-Attentionは式1を参照。
Training method
Training losses
lossは3つのlossの和。
は編集前の画像とのアイデンティティを保つためloss。学習済みのface identifierを使ったコサイン類似度を採用。
ただし、ターゲットの画像が写真とかではない場合、既存のidentifierではアイデンティティを保つのが難しいのでLPIPSを採用する。
は画像の質が落ちないようにする補正用のloss。がStyleGAN2のもとのの空間からはずれないようにする。
はが各属性に対応するためのloss。属性に関してはピッチ等の量的変数と髪の色等の質的変数がありそれぞれに適したlossを提案。
量的変数に対しては式3で定義するcontrastive lossを利用。
, はそれぞれ学習済みモデルで測定した, のi番目の属性の値。
はからへの変化量。は定数のしきい値。
質的変数については0か1の値を取る。これについても学習済みモデルを利用する。lossは式4。
はを入力としたときの学習済みモデルの最後から二番目の層の値。
なのでのときはコサイン類似度が高くなるように、それ以外はcross entropyという感じ。
Two-stage training strategy
DyStyleは2ステージで学習を行う
1ステージ目は1つの属性編集のみの学習。これにより各属性のエキスパートの学習ができる。
2ステージ目では複数の属性をランダムにサンプリング・編集して学習を行う。これによりエキスパート同士のコミュニケーションができ複雑な属性編集に対応できるようになる。
実験
比較対象はInterFaceGANとStyleFlow。
実装はPyTorch1.6で学習はTesla V100が1台。
結果は表1を参照。その他の実験については論文を参照。
Ablation studies
dynamic architectureとtwo-stage trainingの効果を検証。
dynamicに対しstaticは操作する属性に関わらず全てのスイッチをオンにしておく。
結果が図4と図5。学習が進むとdynamic + two-stageのが良いことが確認できる。
Appendix
Layer selection strategy
既存手法で特定の属性は特定のlatent vectorにのみ相関しているという観測結果がある。なので属性ごとに関与するlayerが決まっている。表3を参照。
例えばyawとpitchに関しては1~2層ののみ編集する。
また、使用した属性については表4を参照。
所感
シンプルな手法で学習もそこそこ早そうなのは良さそう。
実験結果の画像を見ても悪くはなさそうだが、多分チェリーピックなので完全に信用はできない。
各属性ごとにエキスパートを作るMixture of Experts の戦略や、スイッチを作り必要ない部分は完全に関与させないといった手法は応用できそう。
今回は属性がラベル付けされ明示的に別れていたのでスイッチを用意するdynamicな手法が適用できたが、逆にエキスパートを明示的に分けられない場合はMode-Adaptive Neural Networks for Quadruped Motion Controlのようにすると良いのかもしれない(これはモーション生成の論文だが)。
http://homepages.inf.ed.ac.uk/tkomura/dog.pdf
複数のネットワークを用意し、これらを混ぜる割合を別のネットワークで予測して学習する。
明示的にエキスパートとして学習しているわけではないが学習中に各ネットワークがエキスパート化してくるといった感じ。
tow-stage trainingは少々面倒だが、実験結果を見る感じ個々のエキスパートを先に学習することでエキスパートがしっかり特化しているように見える(口の開き方とか)。
口の開き方や髪の色については実際にはバイナリではなく、口の開き方についてはmiddleや髪の色については赤だとしても薄い赤等連続的な値な気がする。
学習済みモデルを利用するならその出力をターゲットとして連続値で学習すれば良さそうな気もする。
図のミス等少々読みにくい論文ではあった。