編集性能をアップした新たなGAN!【SemanticStyleGAN】
3つの要点
✔️ 意味領域ごとの編集が可能なGAN
✔️ セマンティックマスクを用いて、潜在空間を意味領域ごとに分けることが可能な学習フレームワークを提案
✔️ 既存の画像編集手法と組み合わせることでより細かい編集が可能に
SemanticStyleGAN: Learning Compositional Generative Priors for Controllable Image Synthesis and Editing
written by Yichun Shi, Xiao Yang, Yangyue Wan, Xiaohui Shen
(Submitted on 4 Dec 2021 (v1), last revised 29 Mar 2022 (this version, v3))
Comments: CVPR 2022.
Subjects: Computer Vision and Pattern Recognition (cs.CV)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
StyleGANでは高品質な画像を生成できるだけでなく、潜在変数に粗い特徴から細かい特徴までがそれぞれ条件付けられており、これを用いて画像のスタイルの編集が可能となっていました。しかし、StyleGANの潜在変数の意味は比較的曖昧であり、異なる属性同士が相関しているため、属性操作などの編集をしようとした際に予期しない属性や部位が編集されてしまうといった問題がありました。
この問題に対処するため、新たなGANを提案する研究がいくつかありますが、これらは全体的な属性を操作することを対象としており、局所的な操作を可能とするものありませんでした。
局所的な操作とは、例えば顔画像の場合だと目だけ編集したり、髪だけ編集するといったことです。これらの操作は既存のモデルだと、目だけ編集しようとしても他の部位にまで影響が出てしまうことがありました。
今回紹介するSemanticStyleGANではセマンティックマスクを用いることで、潜在空間を意味領域ごとに分割し、局所的な操作を可能にしています。
上の画像はSemanticStyleGANを用いて顔画像を編集した結果です。
一番上の行に編集した意味領域と参照画像が示されており、指定している意味領域のみがうまく編集されており、他の領域に大きな影響を与えていないことがわかります。
提案手法
領域ごとに分離しながら、StyleGANを学習するための課題として2つ挙げられています。
- どのように領域ごとに切り分けるか。
- 領域ごとの意味付けをどのように行うか。
1に対しては領域ごとのローカル生成器を使い、それらを合成することで最終出力を得るような構造にすることで対処しています。2に対しては、RGB画像とセマンティックマスクのペアを結合したものを識別器の入力とし、RGB画像とセマンティックマスクの結合分布を学習するという方法で対処しています。
以下の図は学習フレームワークの全体の概要を示しています。
これから、ローカル生成器gk、Fusionモジュール、レンダリングネットワークR、学習方法についてそれぞれ説明していきます。
ローカル生成器
上の画像がローカル生成器の構造です。
入力が座標を符号化したフーリエ特徴量と潜在変数wで、深度値dkと特徴量fkを出力します。
また、潜在変数はwはwbase、wsk、wtkに分けられています。これらを分けて入力とすることで、Coarse、Structure、Textureに分けて学習することができ、推論時それぞれの要素の操作が可能となります。
ここで、この手法では最終出力画像のサイズを256x256としていますが、ローカル生成器は画素ごとに処理を行うため、フーリエ特徴量をそのまま256x256用意すると、計算量がかなり大きくなってしまいます。そこで性能と計算量のバランスをみて、入力のサイズを小さくしフーリエ特徴量を64x64にしています。
Fusionモジュール
ローカル生成器で出力した深度値dkと特徴量fkをFusionモジュールで融合します。
まず、上の式のように深度値dkを使ってセマンティックマスクmを生成します。
次にこのセマンティックマスクmを用いて、以下の式で特徴マップfを生成します。
特徴マップfは、セマンティックマスクmとローカル生成器で出力した特徴量fkを要素ごとにかけるだけです。これによって、(クラス数)x256x256のセマンティックマスクmと特徴マップfが生成され、次に説明するレンダリングネットワークRの学習に使われます。
レンダリングネットワークR
レンダリングネットワークRは、StyleGAN2の生成器を少し改良したものを使用します。
上の画像がレンダリングネットワークRの全体像です。
StyleGAN2のstyle modulationは除外し、入力は特徴マップのみとなっています。この時入力の特徴マップは16x16にリサイズしたものを使用しており、広い範囲でのクラス間の特徴を捉えられるようにしています。
出力として256x256のRGB画像とセマンティックマスクを得るために出力の分岐を増やしています。それぞれの分岐では前の段階で出力された画像からの残差を出力します。小さい解像度の出力に対し、アップサンプリングと合算を繰り返すことで最終的な解像度の出力を得ています。
学習
RGB画像とセマンティックマスクの結合分布を学習するためにそれら両方を識別器の入力とします。
しかし、単純に2つを結合して入力するとセマンティックマスクの勾配が大きいためにうまくいかないことがわかりました。
そこで以下の画像のような構造の識別器を用いることで学習を行った。
この構成にすることでセグメンテーション側のネットワークにおいてR1正則化で勾配にペナルティを与えられるようになり、学習できるようになりました。また、アップサンプリングして得られた最終的なマスクが粗いマスクから大きく外れないようにするための以下の正則化を損失関数に追加します。
ここで、∆mはレンダリングネットワークRにおけるセマンティックマスク側の分岐の出力です。
最終的な損失関数は以下の通りです。
基本的にはStyleGAN2の損失関数であり、そこに上で説明したセマンティックマスクに関する正則化と識別器におけるR1正則化を追加しています。
実験結果
潜在空間はちゃんと分離されているのか
まず、セマンティックセグメンテーションの領域ごとに分離して画像を生成できているかを確認するために、領域の成分を徐々に増やしながら生成した結果が以下の画像です。表示されている擬似深度マップは追加された領域のものです。
それぞれの領域が独立して生成できていることがわかります。また、3Dの情報を追加していないにも関わらず、擬似深度マップは意味のある形状を学習できていることが示されています。
編集能力
SemanticStyleGANでは画像編集をしやすくするためセマンティックマスクを用いて、潜在空間を領域ごとに分離しました。ここでさまざまな編集タスクにおいて、StyleGAN2(FFHQで学習)と比較し制御性が向上しているのかを確認します。まず実画像を編集するためには、GANの潜在空間に埋め込む必要があります。ここではReStylepspという手法を採用して、画像に対応する潜在変数を取得します。
ReStylepspによって得られた潜在変数で画像を再構成した結果を定量的に比較したのが下の表です。
参考として下段のStyleGAN2は、SemanticStyleGANを学習させているデータセット(CelebA-HQ)と同じデータセットで学習させた結果です。これらの再構成結果を定量的に見ると、それほど大きな差はなくStyleGAN2と再構成において、同程度の性能を保っていることがわかります。
本当に画像の編集能力が上がっているのかを確認するために、代表的な編集手法であるInterFaceGANとStyleFlowを使って比較しました。
上の画像が比較結果です。
StyleFlowとInterFaceGANで属性操作を行うモデルを作成し、局所的な部分を操作するような4つの属性(笑顔、ハゲ頭、前髪、髭)の編集結果画像と元の画像との差分マップが示されています。
StyleGAN2を用いた結果では潜在空間のもつれのせいで、編集したい部分以外の無関係な部分まで変更されてしまっているのがわかります。これに対し、SemanticStyleGANを用いた結果では、領域ごとに潜在空間が分離されているため、無関係なところは変更されず、編集したい部分だけ操作できていることがわかります。
まとめ
今回はCVPR2022に採択されたSemanticStyleGANを紹介しました。
この手法では、セマンティックマスクを用いて潜在空間を意味領域ごとに分離することで、局所的な編集の性能を向上させました。
論文には、顔画像のデータセット以外に全身画像のデータセットなどでもうまく機能することを示しています。しかし、この手法ではクラスごとにローカル生成器を作成するため、クラス数が多すぎるデータセットにはスケールしない問題があります。また、この研究に限らないことですが、GANの性能や制御性を向上させることによって、これらの技術を悪意を持って使用する人も出てきてしまいます。現在のGANの技術を用いて合成した画像は、人間が合成であるかどうかを見分けるのは難しいと思います。この論文でも言及しているように、その画像が合成であるかどうかを判別する技術もとても大切だと感じました。
この記事に関するカテゴリー