かぷかぷ笑う

非IT系エンジニアの趣味エンジニアリング

【超訳】SC-FEGAN: Face Editing Generative Adversarial Network with User's Sketch and Color【論文まとめ】

前略

SC-FEGAN1がQiitaで紹介2されており、素晴らしい画像の変換精度で驚いた。ハゲをフサフサにするところは笑ったけど。 実装意欲が湧いてきたので、論文を読んで超訳英語を書いたので、ここに残す。私の英語スキルは微妙なので注意。また、超訳どころか、ところどころ異次元翻訳してます(産業界での問題点とかそういう部分ね)。間違ってたらこっそり教えてください。

論文まとめ

概要

自由なマスクやスケッチ、色を与えることで、画像を編集することができる最新のシステムを開発した。従来とは異なり、自由な色や形を入力として使うことができる。スタイル損失を追加したネットワークを訓練することで、大部分を消去しても、現実的な画像を生成できる。我々の提案したSC-FEGANはユーザーの直感的な入力で高品質な画像を生成することに適している。

導入

既存の技術と提案手法の紹介

  • Deepfillv23 : スケッチの入力を受け取れる。色は入力に受け取れない。
  • GuidedInpating4 : 他の部分画像の入力を受け取り、欠損部を修復する。細部を修復できない。
  • Ideepcolor5 : 白黒画像に対して、色の入力を受け取れる。オブジェクトの構造を変えたり、欠損部を修復できない。
  • FaceShop6 : スケッチと色を入力として受け取れる。修復部分のエッジがいびつになる。大部分が消されていると意味のある合成画像を生成できない。
  • SC-FEGAN(提案手法) : SN-patchGANのDiscriminator使用(エッジの歪みを改善できる)。大部分が消されても顔画像を編集できるように従来の損失のみならず、スタイル損失を同時に使う。スケッチと色を入力として受け取れる。

  • 提案手法の概要

    • Gated Convolutional Layer を使用したU-net7に似たネットワーク。
    • フリーフォームのマスク、色、スケッチのデータを作成。このデータは、定型的な入力(四角いマスクとかのこと?)に代わって、訓練に使用する不完全な画像の作成に使われる。
    • SN-patchGANのDiscriminator使用。スタイル損失を追加したネットワークを訓練する。大部分の消去にも対応でき、マスクのエッジ部分に対してもロバストである。精細なヘアスタイルやイヤリングの画像生成を行うことができる。

関連技術

市販の画像編集ソフトによる加工はプロじゃないとできないよね。だけど、GANの進化で絵が下手くそな俺にも簡単に編集できるようになってきたぜ! 深層学習を使用した流行りの画像編集手法のうち、画像補間と画像変換の分野の成果について話すよ!(異次元翻訳)

  • 画像変換

    • Pix2Pix8 : セグメンテーションをスタイル変換したり、白黒画像をカラーにしたりできる。ただし、対応関係のある訓練データが必要。
    • CycleGAN9 : 訓練データ間に対応関係がある必要がない。
    • StarGAN10 どんなターゲットドメインに対しても、画像を柔軟に変更可能。
    • Ideepcolor : 色のマスクを使って、モノクロ画像をカラーに変換できる。
  • 画像補間 : 画像補間は、1)消去部分を補間する、2)ユーザの入力に対して適切に画像を補間する、の2タスクがある。過去の研究で、消去部分の補間画像の生成が試みられた。

    • U-netを使用したアーキテクチャ11 : U-netとローカル・グローバルDiscriminatorを使用した。新しく塗りつぶした部分と完全に補間された画像のそれぞれ両方に対して、Discreminatorは生成画像が本物か偽物かを判断する。
    • Deepfillv112 : 四角いマスクとグローバル・ローカルDiscriminatorを使用して、コンテクストなattentionを使用することで、性能が大きく上がった。しかし、エッジの修復が雑。
    • Deepfillv2 : Deepfillv1から、四角いマスクをフリーフォームのマスクに、ローカル・グローバルDiscriminatorをSN-patchGANのDiscriminatorに変更した。さらにマスク部分を学習するGated Convolutional layerを使用した。 提案したネットワークはDeepfillのCoarse-Refined netではなくU-netを使用した。end-to-endで学習できるようになった。

手法

レーニングデータ

CelebA-HQ13データセットを使用。 29000枚の2セットのトレーニングデータセットと1000枚のテストデータ。512×512にリサイズしてからスケッチや色を適用した。 目を精細に表現するために目の部分のフリーフォームマスクを使用した。また、適切なスケッチと色をsegmentation GFC14で作成(重要ステップ)。髪の部分は顔のパーツと形などが異なるので、ランダムにマスクを適用した。

  • 目の部分のフリーフォームマスク : Deepfillv2に似た手法を使った。ただし、顔画像を訓練する際に、目の複雑な部分を表現するために、目の部分が始点となるようにランダムなフリーフォームマスクを適用した。また、ランダムにGFCを使って髪のマスクを追加した。
  • スケッチとカラードメイン : スケッチと色についてはFaceShopに似た手法を使用した。ただし、ビットマップをベクタに変換するAutoTrace15ではなく、HEDエッジ検出器16を使用して、ユーザの入力を顔画像に変換するスケッチ画像を生成するようにした。

その後、曲線部をスムージングして細かいエッジを消去。カラー画像の生成は3サイズのメディアンフィルタを適用後、20回バイラテラルフィルタを使用。GFCでセグメント化し、各セグメントの中央値の色を適用。 スケッチデータを作るときには、ヒストグラム均等化をして、HEDをかける。曲線はスムージングして、小さいオブジェクトは消す。 最後に、上述した処理によって得られたフリーフォームマスクとカラー画像を乗算し、カラーブラシした画像を取得する(Figure 2)。 SC-FEGAN_Fig2

ネットワークアーキテクチャ

U-netとSN-patchGANを基にしたネットワーク。end-to-endであり、512×512の画像に対して、高品質な画像を生成し、安定的で高速な学習ができるようになった。 入力は以下の通り(詳細は下のGenerator、Discriminatorの項目にある)。

  • Generatorが受け取る入力
    • RGB画像
    • マスクを挿入した画像
  • Discriminatorが受け取る入力
    • 補間済み画像
    • オリジナル画像

敵対的トレーニングを向上するために、Discriminatorにユーザーの入力を与えた。従来のGANに様々なロスを追加した。

Generator

  • U-netを使用した。
  • 各層はGated Convolution Layerを使用した。その後ろに入力と出力以外全てにLRNを適用した。
  • エンコーダの入力(512×512×9)について、
    • 編集部をマスキングしたRGB画像(3チャネル)、
    • 消去領域の構造を説明するバイナリスケッチ(1チャネル)、
    • マスクのカラー画像(3チャネル)、
    • バイナリマスク(1チャネル)、
    • マスク部をノイズ(1チャネル)。
  • 2ストライドで7回ダウンサンプル。
  • アップサンプルの前にdilated convolutionsを適用した。
  • 逆畳み込み(transposed convolutions)でアップサンプルした。
  • 出力以外のそれぞれの層でleaky ReLUを適用し、出力はtanhとした。
  • 結果的に16層のネットワークで、512×512のRGB画像を出力した。
  • ロス計算前に生成画像に対して、マスク領域以外を元画像に戻した。
  • Generatorの損失はPartialConv17のもので、per-pixel losses, perceptual loss, style loss, total variance lossと一般的なGANの損失を適用。
  • Figure 3のようになる。 SC-FEGAN_Fig3

Discriminator

DiscriminatorはSN-PatchGANの構造を使用した。Deepfillv2とは違って、GANの損失にReLUは適用しなかった。また、3×3の畳み込みカーネルを使用して、gradient penalty lossを適用した。Discriminatorがゼロに近い値のパッチを出力しないように、式を追加した。以下の式が、損失関数の全容である。


\begin{aligned}
L_{G\_SN} &= \mathbb{E} \left[ D(I_{comp}) \right], \\
L_G &= L_{per-pixel}+\sigma L_{percept}+\beta L_{G\_SN} \\
&\quad+\gamma (L_{style}(I_{gen})+L_{style}(I_{comp})) \\
&\quad+vL_{tv}+\epsilon \mathbb{E} \left[ D(I_{gt})^2 \right], \\
L_D &=\mathbb{E} \left[ 1-D(I_{gt}) \right]+\mathbb{E} \left[ 1+D(I_{comp}) \right] +\theta L_{GP}.
\end{aligned}

Generatorは L_Gによって、Discriminatorは L_Dによって訓練される。 L_{style} L_{percept}は追加の損失で、髪型のような大きな領域を編集する場合に重要である。各項は以下の通りである。


Ground truthとGeneratorの L^ 1距離 L_{per-pixel}


\begin{align}
L_{per-pixel}=\frac{1}{N_{I_{gt}}} \left\| M\odot(I_{gen}-I_{gt}) \right\|_1 \\
\quad+\alpha \frac{1}{N_{I_{gt}}} \left\| (1-M)\odot(I_{gen}-I_{gt}) \right|_1.
\end{align}

であり、 N_aは特徴量 aの数、 Mはバイナリマスクマップ、 I_{gen}はGeneratorの出力である。消去部分により大きな重みを与えるために \alpha > 1を使った。


知覚損失 L_{percept}

 L^ 1距離であるが、ImageNetで事前学習済みのVGG-1618の特徴空間に射影した後の画像から計算する。


\begin{align}
L_{percept}=\sum_q \frac{ \left\| \Theta_q(I_{gen})-\Theta_q(I_{gt}) \right\|_1}{N_{\Theta_q(I_{gt})}}+\\
\sum_q \frac{ \left\| \Theta_q(I_{comp})-\Theta_q(I_{gt}) \right\|_1}{N_{\Theta_q(I_{gt})}}.
\end{align}

 \Theta_q(x)は入力 xが与えられた時の、VGG-16の q番目の特徴マップであり、 I_{comp}は消去されていない部分を直接Ground truthにした I_{gen}の補間画像である。 qはVGG-16から選択された層で、pool1pool2pool3を使用した。


スタイル損失 L_{style}

グラム行列を使って2画像の内容を比較する。スタイル損失は以下の式で計算され、


\begin{align}
L_{style}(I)=\sum_q \frac{1}{C_qC_q} \left\| \frac{(G_q(I)-G_q(I_{gt}))}{N_q} \right\|_1,
\end{align}

 G_q(x)=(\Theta_q(x))^ T (\Theta_q(x))はグラム行列であり、VGG-16のそれぞれの特徴マップの自己相関を計算する( I I_{gen} I_{comp}のどっち?)。特徴マップが H_q \times W_q \times C_qの形状の時、グラム行列の出力は C_q \times C_qの形状となる。


総変動損失 L_{tv}

 L_{tv}=L_{tv-col}+L_{tv-row}はfast-neural-style19で提案され、知覚損失からのcheckerboard artifacts(GANでよく見るチェス盤のような変な縞模様、ご注文は機械学習ですか?の記事20で紹介された英語記事21がわかりやすい)を改善する。以下の式で計算され、


\begin{align}
L_{tv-col} &= \sum_{(i,j) \in R} \frac{\left\| I_{comp}^{i,j+1}-I_{comp}^{i,j} \right\|_1}{N_{comp}}, \\
L_{tv-row}&= \sum_{(i,j) \in R} \frac{\left\| I_{comp}^{i+1,j}-I_{comp}^{i,j} \right\|_1}{N_{comp}},
\end{align}

 Rは消去部分の領域である。


WGAN-GP22の損失 L_{GP}

WGAN-GPの損失は訓練を改善し、次の式で計算される


\begin{align}
L_{GP}=\mathbb{E} \left[ ( \left\| \nabla_U D(U) \odot M \right\|_2 - 1)^2 \right].
\end{align}

 U I_{comp} I_{gt}からのDiscreminatorの入力間の直線に沿って、均等にサンプルされたデータ点である(つまり、生成画像と本物画像の間の直線を均等にサンプルした点のことで、Qiitaの記事23がわかりやすい)。この式は生成画像を高品質にするのに重要である。


我々の研究では、 \sigma=0.05, \beta=0.001, \gamma=120, v=0.1, \epsilon=0.01, \theta=10を使用した。

結果

近年の成果と顔編集の結果を比較した。全ての実験はNVIDIA(R) Tesla(R) V100 GPU、Power9 @ 2.3GHz CPU、Tensorflow v1.12、CUDA v10、Cudnn v7、 Python3で行った。テストでは、入力のサイズと形状に関わらず、512×512の解像度を得るのに、GPUで44ms、CPUで53msかかった。 (ソースコードここ)。

画像を除去した場合の結果比較

Coarse-Refined構造とU-netの構造の結果を比較した。Deepfillv2で使われたCoarse-Refined構造は修復段階で出力にブラーをかけた。これは出力の L^ 1損失が常にcoarse networkの損失よりも小さいためであることを我々は発見した。coarse networkは不完全画像を使って修復領域の粗い推定を生成する。この粗い画像はrefined networkに渡される。このような仕組みで、Ground truthと不完全画像の粗い修復の間の変換をrefined networkに学習させる。畳み込み処理によってこれを実現するために、入力データへのブラー処理は簡易的な方法として行われる。checkerboard artifactsは改善されるが、多くのメモリと訓練時間を要する。 Figure 4に我々のシステムにCoarse-Refined構造のネットワークを使用した結果を示した。我々のシステムは知覚損失とスタイル損失によってその問題を改善している。Figure 5はVGGの損失の有無の比較結果である。最近の研究であるDeepfillv1の公開されたテストシステムとの比較も行なった。Figure 6はフリーフォームマスクにおいて、構造と形状の質が良い結果となったことを示している。 SC-FEGAN_Figure4

SC-FEGAN_Fig5

SC-FEGAN_Fig6

顔画像の編集と修復

Figure 7はスケッチと色の入力による様々な結果を示している。 - 直感的にヘアスタイル、顔、眼、口の顔画像の特徴の編集ができることがわかる。 - 大部分が消されていても、ユーザによるスケッチが与えられれば、正しい結果を生成することができる。 - ネットワークは小さな描画誤差は許容するので、ユーザは直感的にスケッチや色で編集できる。 - ユーザは直感的に顔画像を編集でき、影や細かな形状も反映したリアルな生成画像を、スケッチと色の入力から得ることができる。 Figure 9はユーザが大部分を編集しても、十分な入力があれば、高品質な合成画像を得ることができることを示している。 SC-FEGAN_Fig7 SC-FEGAN_Fig9

さらに、ネットワークの学習のデータセットに対する依存度を確認するために、全ての領域を消去して実験した。Deepfillv1は顔画像の不鮮明な画像を生成したが、SC-FEGANは髪の不鮮明な画像を生成した(Figure 10)。 これは、スケッチや色のような追加情報がなければ、顔の要素の形や位置は、ある依存値を持つことを意味する。よって望ましい方向性に画像を修復するためには追加の情報を追加することのみが必要である。 さらに、SC-FEGANは多くの部分が消された画像を入力としても、自由なスケッチと色の入力のみで顔画像を生成できる(Figure 10)。

SC-FEGAN_FIg10

興味深い結果

GANはしばしば訓練データに強く依存した画像を生成する。Deepfillv2は同じCelebA-HQデータセットを使用したが、スケッチデータセットの作成にはlandmarkのみを使用した。Faceshopにおいて、AutoTraceはデータセットの小さい細部を消去した。我々の研究では、全ての領域にHEDを適用し、マスク領域にそれを拡張するようにすると、イヤリングを伴った顔画像を生成する素晴らしい成果を得ることができた。Figure 8にそのような興味深い結果を示した。これらの例は、我々のネットワークが小さい細部の学習が可能であり、小さな入力であっても、意味のある結果を生成することを示している。

SC-FEGAN_Fig8

まとめ

この論文では、フリーフォームマスク、スケッチ、色の入力をとり、end-to-endで学習可能な最新のGANの損失を持つ生成ネットワークによる、最新の画像編集システムを紹介した。他の研究との比較により、我々のネットワークの構造と損失関数が画像修復(inpainting)結果を大きく改善することを示した。celebA-HQに基づく高解像度の画像を使って訓練し、多くのケースで様々な良い現実的な編集画像を得られることを示した。我々のシステムは一度の処理(end-to-end)で、大きな領域の編集と修復に対して素晴らしい成果を示し、ユーザは簡単に高品質で現実的な結果を得ることができる。

終わりに

上手く巨人の肩に乗った成果で、この論文だけでも最近のGANについて色々と勉強できた。 調べている最中、この記事の論文の調査とまとめ方がいいなと思った。特にこのスライドの48ページのまとめ方は簡単でいい。これからは簡単に論文を紹介していくのも面白いかな(でないとサボりがち)


  1. Youngjoo Jo, Jongyoul Park. SC-FEGAN: Face Editing Generative Adversarial Network with User’s Sketch and Color. **arXiv preprint arXiv:1902.06838, 2019.

  2. https://qiita.com/Phoeboooo/items/e34d75c1c005e15c9db7

  3. J. Yu, Z. Lin, J. Yang, X. Shen, X. Lu, and T. S. Huang. Free-form image inpainting with gated convolution. arXiv preprint arXiv:1806.03589, 2018.

  4. Y.Zhao,B.Price,S.Cohen,andD.Gurari.Guidedimagein- painting: Replacing an image region by pulling content from another image. arXiv preprint arXiv:1803.08435, 2018.

  5. R. Zhang, J.-Y. Zhu, P. Isola, X. Geng, A. S. Lin, T. Yu, and A. A. Efros. Real-time user-guided image colorization with learned deep priors. arXiv preprint arXiv:1705.02999, 2017.

  6. T. Portenier, Q. Hu, A. Szabo, S. Bigdeli, P. Favaro, and M. Zwicker. Faceshop: Deep sketch-based face image edit- ing. arXiv preprint arXiv:1804.08972, 2018.

  7. O. Ronneberger, P. Fischer, and T. Brox. U-net: Convo- lutional networks for biomedical image segmentation. In International Conference on Medical image computing and computer-assisted intervention, pages 234–241. Springer, 2015.

  8. P. Isola, J.-Y. Zhu, T. Zhou, and A. A. Efros. Image-to-image translation with conditional adversarial networks. CVPR, 2017.

  9. J.-Y.Zhu,T.Park,P.Isola,andA.A.Efros.Unpairedimage- to-image translation using cycle-consistent adversarial net- workss. In Computer Vision (ICCV), 2017 IEEE Interna- tional Conference on, 2017.

  10. Y. Choi, M. Choi, M. Kim, J.-W. Ha, S. Kim, and J. Choo. Stargan: Unified generative adversarial networks for multi- domain image-to-image translation. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2018.

  11. S. Iizuka, E. Simo-Serra, and H. Ishikawa. Globally and locally consistent image completion. ACM Transactions on Graphics (TOG), 36(4):107, 2017.

  12. J. Yu, Z. Lin, J. Yang, X. Shen, X. Lu, and T. S. Huang. Generative image inpainting with contextual attention. arXiv preprint arXiv:1801.07892, 2018.

  13. T. Karras, T. Aila, S. Laine, and J. Lehtinen. Progressive growing of gans for improved quality, stability, and variation. arXiv preprint arXiv:1710.10196, 2017.

  14. Y. Li, S. Liu, J. Yang, and M.-H. Yang. Generative face completion. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), volume 1, page 3, 2017.

  15. M. Weber. Autotrace, 2018. http://autotrace.sourceforge.net.

  16. S. ”Xie and Z. Tu. Holistically-nested edge detection. In Proceedings of IEEE International Conference on Computer Vision, 2015.

  17. G. Liu, F. A. Reda, K. J. Shih, T.-C. Wang, A. Tao, and B. Catanzaro. Image inpainting for irregular holes using par- tial convolutions. arXiv preprint arXiv:1804.07723, 2018.

  18. O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, et al. Imagenet large scale visual recognition challenge. International Journal of Computer Vision, 115(3):211–252, 2015.

  19. J. Johnson, A. Alahi, and L. Fei-Fei. Perceptual losses for real-time style transfer and super-resolution. In European Conference on Computer Vision, pages 694–711. Springer, 2016.

  20. http://musyoku.github.io/2017/03/18/Deconvolution%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%ABPixel-Shuffler%E3%82%92%E4%BD%BF%E3%81%86/

  21. https://distill.pub/2016/deconv-checkerboard/

  22. I. Gulrajani, F. Ahmed, M. Arjovsky, V. Dumoulin, and A. C. Courville. Improved training of wasserstein gans. In Advances in Neural Information Processing Systems, pages 5767–5777, 2017.

  23. https://qiita.com/triwave33/items/5c95db572b0e4d0df4f0