Table of Contents
こんにちは、機械学習チームの鷲崎です。最近、弊社では、GANに関する技術調査を行っていまして、女性の声を男性の声に変換してみた!CycleGAN VCを用いた音声変換の説明 や GANs N' Roses: Stable, Controllable, Diverse Image to Image Translation の解説!などの解説記事をだしています。
本記事では、顔の向きや表情、年齢などの属性を変更する最新の顔編集技術である、Pivotal Tuning for Latent-based Editing of Real Imagesを解説します。Pivotal Tuningは、学習済みの生成器を入力データに対してわずかにチューニングする技術で、メイクが濃い顔やメガネをかけた人など、学習データにあまり含まれていないような画像に対しても納得感のある顔編集を可能にします。Pivotal Tuningによる顔編集技術を実際に試し、以下の動画のような結果が得られました。各属性において驚くべき編集能力を持っていることが分かります。
Pivotal Tuning
一般的な顔編集では、固定した重みを用いたStyleGANで、素晴らしい品質の生成を達成していました。しかし、学習に使用していないデータに関する潜在空間の分布は、編集能力に欠けています。そこで、Pivotal TuningによりStyleGANをチューニングすることで、対象の画像の潜在コードを編集能力の高い潜在コードに遷移させ、高性能な編集性能を達成します。
以下、詳細な手法に関して説明します。
1. Inversion
まず、編集能力の高い潜在コードを探索するInversionを行う必要があります。探索にはLearned Perceptual Image Patch Similarity (LPIPS)による知覚損失を使用します。これは、Perceptual path lengthと言う潜在変数の変化の滑らかさを表す指標でよく使用されます。LPIPS損失()は、VGGなどのモデルにより推定した画像の特徴量のL2距離により計算されます。LPIPS損失を含む以下の式を用いて潜在コードとノイズを最適化することで、対象とする潜在コードを計算できます。
はを重みとした生成器による生成画像で、は対象となる実際の画像です。, はノイズに関する正則化の割合と損失です。ノイズ正則化は、ノイズ情報の影響を防ぎinversionの性能を改善するために使用されています。
2. Pitovatl tuning
pivotal tuningは、Inversionにより求めた潜在コードを用いて、生成器の重みを学習します。損失は、LPIPS損失と実画像と生成画像のL2誤差を用いて、以下の式になります。
しかし、この損失では、大幅に潜在コードを修正し、逆に視覚的な品質が損なわれることがあります。そこで、局所的な修正に留めるための損失を追加する必要があります。論文では、まず、ガウス分布に則ったランダムなベクトルとStyleGANの射影ネットワークを用いて計算される潜在コードを用いて、pivotal tuningの潜在コードをわずかにシフトさせた潜在コードを計算しています。
そして、この潜在コードを用いてオリジナルの生成器とチューニング中の生成器の画像を比較しています。
ここでは、オリジナル生成器による画像を、チューニング中の生成器による画像をとしています。 この損失により、オリジナル生成器とチューニング中の生成器において、わずかに遷移させた潜在コードを入力として生成した顔編集画像の誤差を小さくするように学習できます。つまり、顔編集を行った際の潜在コードがオリジナルの生成器から大きくズレないように学習しています。これにより、視覚的な品質の劣化を防いでいます。
上記をまとめて、Pivotal tuningにより学習される重みは、
により最適化されます。
まとめ
本記事では、学習済みのStyleGANを対象画像に対してわずかにチューニングすることで、ロバストな編集が可能にするPivotal tuningについて解説しました。学習後に、対象の画像に対してチューニングを行うという処理は、挙動が分かり辛いため実際の機械学習システムに取り入れるのは難しいと思っていました。しかし、チューニングの度合いを制限する処理に関しても提案されており、実際、かなり精度が向上していたこともあり、未知のデータに対する対処法の一つとしてシステムに取り入れても良いかもしれないと思いました。