機械学習を生成モデル手法(GAN、VAE等)について勉強したことをまとめたノート(忘備録)です。現在執筆中
- VAE
- GANs
- GAN [Generative Adversarial Networks]
- DCGAN [Deep Convolutional GAN]
- Conditional GAN(cGAN)
- WGAN [Wasserstein GAN]
- 【外部リンク】WGAN-gp [improved Training of Wasserstein GANs]
- ProgressiveGAN(PGGAN)
- SAGAN [Self-Attention Generative Adversarial Networks]
- StyleGAN
- 【外部リンク】InfoGAN [Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets]
- 【外部リンク】GAN-Tree: An Incrementally Learned Hierarchical Generative Framework for Multi-Modal Data Distributions
- 【外部リンク】[RSGAN,RGAN,RaGAN] The relativistic discriminator: a key element missing from standard GAN
- フローベースの生成モデル [Flow-based Generative Models]
- 自己回帰型モデル [Autoregressive Models]
- image-to-image
- セマンティック・セグメンテーション
- Inpainting
- 人物画像生成
- 顔特化系(Face Swap, etc)
- 仮想試着システム [Virtual Try-On]
- 【外部リンク】VITON: An Image-based Virtual Try-on Network
- 【外部リンク】CP-VTON [Toward Characteristic-Preserving Image-based Virtual Try-On Network]
- 【外部リンク】MG-VTON [Towards Multi-pose Guided Virtual Try-on Network]
- 【外部リンク】[WUTON] End-to-End Learning of Geometric Deformations of Feature Maps for Virtual Try-On
- 【外部リンク】Generating High-Resolution Fashion Model Images Wearing Custom Outfits
- 【外部リンク】Poly-GAN: Multi-Conditioned GAN for Fashion Synthesis
- 【外部リンク】Virtually Trying on New Clothing with Arbitrary Poses
- 【外部リンク】FW-GAN: Flow-navigated Warping GAN for Video Virtual Try-on
- 【外部リンク】Robust Cloth Warping via Multi-Scale Patch Adversarial Loss for Virtual Try-On Framework
- 【外部リンク】ClothFlow: A Flow-Based Model for Clothed Person Generation
- text-to-image
- 補足事項
- 【補足】ベイズ推定 ~ 変分ベイズ法まで
- 【補足】KLダイバージェンス [Kullback-Leibler(KL) diviergence]
- 【補足】JSダイバージェンス [Jensen-Shannon(JS) divergence]
- 【補足】Inception score
- 【補足】Earth-Mover 距離(Wassertein距離)
- 【補足】U-Net
- U-Net のアーキテクチャ
- U-Net の学習方法
- U-Net の適用例
- 【補足】Minibatch discrimination
- 【補足】 Style Transfer における正規化手法(INとAdaIN)
- 【補足(外部リンク)】ResNet(残差ネットワーク)
- 【補足(外部リンク)】グラフ畳み込みネットワーク(GCN)
- 参考サイト
ここでの前提の話として、変分ベイズ法に関しては、補足の「ベイズ推定から変分ベイズ法まで」を別途参照。
(生成モデルの分野における)オートエンコーダーとは、教師なし学習のもとで、データを表現するための特徴を獲得するために、以下のようなアーキテクチャと処理手順を持った手法である。
【オートエンコーダーの処理手順】
- 入力データ(上図では手書き数字画像データ)x を、エンコーダー(ニューラルネットワーク)で潜在変数 z に変換する。
この様子は、見方を変えると入力データの符号化しているようにみなせるため、この入力データを変換するニューラルネットワークをエンコーダーと呼ぶ。
又、潜在変数 z の次元が、入力データ x より小さい場合、このエンコーダーでの処理は次元削除になっているとみなすことも出来る。 - 潜在変数 z を、デコーダー(ニューラルネットワーク)に入力し、元の画像に再変換する。
この様子は、見方を変えるとエンコーダーで符号化した潜在変数を、再度(入力データである画像に)復号化しているようにみなせるため、この潜在変数を変換するニューラルネットワークをデコーダーと呼ぶ。
このようなオートエンコーダーの内、以下のようなアーキテクチャ図のように、潜在変数 z を生成する分布が、正規分布 N(0,1) であるように設定した( z~N(0,1) )オートエンコーダーを、VAE [Variational AutoEncoder] という。(これに対して、通常の AutoEncoder は潜在変数 z を生成する分布を仮定していない。)
※ より厳密な言い方をすれば、VAE では、この事後分布 q_ϕ(z|x) と事前分布 p_θ(z) の間のKLダイバージェンスを解析的に計算可能にするために、事前分布 p_θ(z) が正規分布に従っていると仮定する。
※ 詳細は、「【補足】ベイズ推定から変分ベイズ法まで」の項目参照
※ ここで、VAE におけるエンコーダーは、正規分布に従う潜在変数 z を直接出力するのではなく、潜在変数 z が従う正規分布の平均値 μ(x) と分散値 σ(x) を生成していることに注意。
VAE の学習の目的は、潜在変数 z から画像を生成する確率分布 p_θ (x) の最大化である。
但し、確率分布のままでは扱いづらいため、その対数尤度 の最大化を考える。
結論から述べると、この対数尤度 は、以下の式ように、変分下限 [ELBO : Evidence Lower BOund] なるものととKLダイバージェンスの和で表現できる。(詳細計算略)
ここで、KLダイバージェンスの項 はその定義より、常に0以上の値となるが、VAE の学習の目的である、
のときは0の値となるので、対数尤度
を最大化したければ、変分下限 L(θ,ϕ,x) を最大化すれば良いことが分かる。
次に、この変分下限 L(θ,ϕ,x) は、以下の式に変形出来る。(詳細計算略)
従って、変分下限 L(θ,ϕ,x) を最大化するためには、KLダイバージェンスを最小化し、復元誤差を最大化すれば良いことが分かる。
まとめると、VAE の学習の目的である対数尤度 の最大化したければ、変分下限 L(θ,ϕ,x) を最大化すれば良いが、
そのためには、2つの確率分布 のKLダイバージェンス
を最小化し、
復元誤差
を最大化すれば良いこととになる。
GAN は、Generator(生成器)と Discriminator(識別器)という2つの機構から構成される生成モデルである。
生成器は、学習用データと同じようなデータ(偽物画像)を生成する。
一方、識別器は、(この学習用データと、生成器が出力した偽物画像を入力とし)、これらのデータが、学習用データから来たものであるのか、或いは、生成器から来た偽物画像であるのかを識別する。
そして、この生成器と識別器の双方が、敵対的に学習していくにつれ、次第に、識別器が本物の学習用データと見分けがつかないデータを生成することが出来るようになるという流れとなる。
※ このとき、完全に学習が進むと、生成器は、データが本物画像なのか偽物画像なのかを、完全に見分けがつかなくなるので、識別率が 50% となる。
尚、この生成器と識別器による処理は、一種の関数とみなせるが、この表現として、一般的に、多層パーセプトロン(MLP)が用いられる。
※ ニューラルネットワークを用いると、既存の最尤推定による生成モデルでは爆発的に増加する計算量を誤差逆伝搬法で解決できる。
識別器の損失関数は、以下のような式で与えられる。
※ この式の、 の部分は、ゲーム理論で言うところの、min-max 法(想定される最小の利益が最大になるように最適化)に相当する式になっている。(ゲームは、2プレイヤーのゼロサムゲーム)
ここで、この損失関数の式は、以下のような識別器の動作の意味に対応している。
① 識別器は、本物画像 x が入力されたとき、本物画像 x を(正しく)本物に判定するように を出力しようとする。
⇒ 第1項 の最大化に対応
② 識別器は、偽物画像 が入力されたとき、偽物画像
を(正しく)偽物に判定するように
を出力しようとする。
⇒ 第2項 の最大化に対応
ここで、この損失関数の式は、以下のような生成器の動作の意味に対応している。
➀ 識別器が、偽物画像 を(正しく)偽物だと判断し、
を出力する
⇒ 生成器は識別器を騙すことに失敗しているので、損失関数 L_G の値は大きくなる。(=大きくなるように定義している)
➁ 識別器が、偽物画像 を(誤って)偽物だと判断し、
を出力する。
⇒ 生成器は識別器を騙すことに成功しているので、損失関数 L_G の値は小さくなる。(=小さくなるように定義している)
ここでは、密度比推定の観点から、GANにおける識別器が果たす役割を、理論的に再解釈する。
先の VAE では、デコーダー側での潜在変数 z から画像を生成する確率分布 p_θ (x) が、正規分布やベルヌーイ分布の形になると仮定した上で、その確率分布の対数尤度を最大化するように学習していた。
一方、GANでは、このような生成器の確率分布 の具体的な形を仮定することなしに、暗黙的な生成モデルとして考えている。
従って、VAEのときのように、確率分布の対数尤度 を直接評価できないので、モデルの分布
と真の分布
の密度比
でモデルの分布がどのくらい真の分布っぽいかの尤度を評価することになる。
ここで、データ集合 X のうち、
半分のデータがモデルの分布 から生成されてものと考え、そのラベルを y=0 とし、
もう半分のデータが真の分布 から生成されてものと考え、そのラベルを y=1 とすると、
モデルの分布と真の分布は、ラベルが設定された際の条件付き確率分布
で表現できる。
従って、密度比の式は、
つまり、観測データ x が、モデルの分布 から来たのか?真の分布
から来たのか?を予想するような識別モデル
を学習出来れば、密度比を推定することが出来る。
この識別モデルこれはまさに、先に述べた識別器 D そのもの役割であり、従って、識別器 D は、密度比を推定しているともみなすことも出来る。
※ 識別器によって、GAN における尤度推定を、NNが得意としている分類問題に置き換えている点に注目。
GAN の学習の目的は、モデルの分布と真の分布を近づけ とすることである。このことは、以下で見るようにモデルの分布と真の分布間のJSダイバージェンスを最小化していることに一致する。
ここで、上式の赤字の項 は、識別器の損失関数そのものであるので、損失関数を最小化することは、JSダイバージェンスを最小化することと等価であることが分かる。
そして、このJSダイバージェンスを最小化することは、モデルの分布と真の分布の2つの分布を一致させることであるので、
結局のところ、
「GANの学習の目的であるモデルの分布と真の分布を近づけ とすること。」
⇔「(真の分布とモデルの分布の)JSダイバージェンスを最小化すること。」
⇔「(識別器の)損失関数を最小化すること。」
の関係が成り立つことが分かる。
GANの学習の難しさの要因には、大きく分けて以下のような要因がある。
- 損失関数の収束性の問題
- モード崩壊
- 勾配損失問題
- 生成画像のクオリティーの評価が、損失関数から判断し難い
GANの学習の難しさの1つの要因に、損失関数の収束性の問題がある。
-
GANは、識別器と生成器の2人プレイヤーゼロサムゲームになっているが、このゲームの最適解は、ナッシュ均衡点になる。
-
識別器の損失関数
の形状が、上図のような凸関数であれば、SGDによってナッシュ均衡点(=鞍点)に収束されることが保証されるが、非凸関数の場合は、保証されない。(GANではニューラルネットワークにより損失関数を表現するので、関数の形状は非凸関数) -
このような非凸関数に対して、SGDで最適化(=鞍点の探査)を行っていくと、ナッシュ均衡点(=鞍点)に行かず、振動する可能性がある。
例えば、損失関数が L(a,b)=a×b という単純な形であった場合にも、SGDで生成器と識別器を交互に最適化していくと、以下の図のように、損失関数の値が発散する。
学習が不十分な識別器に対して、生成器を最適化した場合や、生成器への入力ノイズ z の潜在変数としての次元が足りたていない場合などにおいて、生成器による生成画像が、ある特定の画像(例えば、MNISTでは数字の3などの特定の画像)に集中してしまい、学習用データが本来持っている多様な種類の画像(例えば、MNISTでは数字の0~9の画像)を生成できなくなってしまう問題がある。
GANにおいて発生するこのような問題を、モード崩壊といい、GANの学習の困難さの要因の1つになっている。
※ ここでいうモード(流行)とは、最頻出値のこと。
先に見たように、学習が十分でない識別器に対して、生成器を最適化すると、モード崩壊が発生してしまう。
それを防ぐために、ある生成器 G の状態に対しての識別器を完全に学習すると、今度は勾配損失問題が発生してしまう。
このように、GANでは、モード崩壊と勾配損失問題が互いに反して発生してしまうというジレンマを抱えている。
DCGAN は、GAN における生成器と識別器の内部を、「”プーリング層なし”の全て畳み込み層で構成される CNN 」に置き換えたものである。
CNN は、画像認識タスクにおいて、優れたモデルになっているが、DCGAN もまた、画像生成において、(通常の GAN や他の生成モデルに比べて)優れたモデルになっている。
上図は、DCGAN の全体のアーキテクチャ(ネットワーク構成は略式表記)と、生成器・識別器内部の詳細なネットワーク構成を示したアーキテクチャ図である。
DCGAN における生成器と識別器の構造は、以下のような特徴を持つ。
➀ 生成器:Generator
- 通常の CNN とは異なり、プーリング処理を行わない。(プーリング層は存在しない)
- deconvolution(逆畳み込み)を用いて、アップサンプリングする。
※ deconvolution という言葉は別の他の手法で既出のため、厳密には、deconvolution ではなく fractionally-strided convolution 或いは transposed convolution である。 - 活性化関数として、Relu を使用。但し、出力層の活性化関数は tanh(※通常の GAN の generator と同じ)
- batch normalization で学習させる。
但し、全ての層に適用されると学習が不安定となってしまうため、generator の出力層には適用しないようにする。
➁ 識別器:Discriminator
-
通常の CNN とは異なり、プーリング処理を行わない。(プーリング層は存在しない)
-
その代わりに、ストライド幅 2 の畳み込みで、ダウンサンプリングする。
-
全結合層 [fully connected layer] を取り除き、代わりに、GAP : global average pooling で置き換える。
即ち、1つの特徴マップに対し、それらの平均をとって、1つの出力ノードに対応させる。(下図)
-
通常の GAN の discriminator とは異なり、全ての層の活性化関数として、
Leaky ReLU () を使用する。
これは、通常の Relu では、x≦0 の領域で、勾配が 0 になるために、学習を進めることが出来なくなってしまうのに対し、Leaky Relu では、x≦0 の領域でも、勾配が 0 とはならないので、学習を進めることが出来るようになることに起因する。
-
batch normalization で学習させる。
但し、全ての層に適用されると学習が不安定となってしまうため、discriminator の入力層には適用しないようにする。
従来の GAN では、潜在変数としての入力ノイズ z の値を動かすことで、様々な種類の画像を生成することができた。
しかしながら、画像の生成過程において、今生成している画像がどのような種類(例えば、MNISTでは数字の番号)の画像であるのかを、GAN自身が知ることはできないかった。
Conditional GAN(cGAN)は、従来の GAN の入力に、生成する画像のクラスラベルなどの条件 y を付与することにより、GAN自身に、今どのような種類の画像を生成しているのか?といった、データの生成過程を指示することを可能にし、結果として、条件 y で指定した特定の画像のみを生成することが出来るようにする。
上図は、cGAN のアーキテクチャを示した図である。
cGAN では、従来の GAN に対して、生成器の入力と識別器の入力の双方に、正解となるクラスラベルなど条件 y を入力している。
※ このアーキテクチャ図では、代表的な条件 y として、クラスラベルとしているが、他にも様々な条件(アノテーションなど)を入力することが出来る。
但し、この例では、GANのアーキテクチャに対応できるように、
- 識別器へのクラスラベル y の入力は、one-hot エンコードされた画像データのフォーマット(正解画像を白画像、それ以外を黒画像)で入力し、
- 生成器へのクラスラベル y の入力は one-hot エンコードされたバイナリデータの系列のフォーマット(正解を0、それ以外を0)で入力している。
※ cGAN のアルゴリズム自体には、このようなエンコード手法などの具体的な含まれないことに注意。
(従来のGANのアーキテクチャに組み込める形であれば、どのような方法でもよい。)
cGAN の生成器と識別器の損失関数は、従来のGANの損失関数に対して、クラスラベルなどの追加条件 y の制約を加えた式(=条件付き確率)で表現できる。
即ち、識別器の損失関数 L_D は、
そして、先のアーキテクチャ図で示しているように、従来の GAN と同じく、これらの損失関数を誤差逆伝搬法で逆伝搬することで、生成器と識別器の学習を逐次行う。
既存のGANにおける(識別器の)学習は、先で見たように、JSダイバージェンスを最小化していることと同値であった。
しかしながら、このJSダイバージェンスの最小化に基づく学習では、以下のような問題点が存在する。(詳細は後述)
-
学習回数に対する loss 値の変化の様子が、生成画像のクオリティに比例しない。(=生成画像のクオリティが損失関数の値から判断しずらい)
-
モード崩壊が発生することがある。
-
損失関数の収束性に問題があり、学習が不安定
そこで、Wasserein GAN では、JSダイバージェンスではなく、Earth-Mover 距離(EMD)(=Wassertein距離ともいう)と呼ばれる別の距離指標を使用する。
(※厳密には、このWassertein距離の双対表現の式を近似した式)
これにより、既存の GAN(=JSダイバージェンス最小化)で発生する上記の問題を回避することが出来る。
概略で挙げたように、従来のGANにおける問題点の1つは、
- 真の分布とモデルの分布の台が重ならない場合において、勾配消失問題が発生する。
という問題である。
ここでは、この問題点の詳細と、WGANにおける解決策を見ていく。
GANでの学習の目的は、真の分布 とモデルの分布
の2つの確率分布を互いに一致させることであるが、この2つの確率分布の台(Suup)が、上図のように互いに重ならない場合を考える。
※ θ は、生成器のニューラルネットワークの重みパラメーター
このような2つの確率分布の台が交わらない極端なケースの例として、以下のような図のようなケースで、JSダイバージェンスを計算する。
この計算結果を図示すると、以下のような図となる。
真の分布とモデルの分布が重なる θ=0 の部分で、JSダイバージェンスの値が不連続となっている。一方、真の分布とモデルの分布が重ならない θ≠0 の部分では、JSダイバージェンスの値が一定値となっていることが分かる。
※ この様子を確率分布の系列 で考えると、この系列は、JSダイバージェンスのもとで、θ_t→0 で収束していないとも言える。
ここで、GANの目的は、真の分布とモデルの分布を一致させるでことあり、これをJSダイバージェンスの最小化で行っていた。
しかしながら、上図では、学習の余地がある、真の分布とモデルの分布が重ならない θ≠0 の部分において、JSダイバージェンスの値が一定値となっているために、その勾配の値が0になっていまうために、結果として、JSダイバージェンスを最小化して、誤差逆伝搬で学習するのに必要な勾配値が得られないという、いわゆる勾配消失問題が発生していることが分かる。
このように、真の分布とモデルの分布の台(Supp)が互いに重ならない場合において、従来のGANのJSダイバージェンスの最小化による学習では、勾配消失問題が発生してしまう。
Wassertein GAN では、この勾配消失問題を回避するために、Earth-Mover距離(Wassertein距離)を使用するが、このEarth-Mover距離(Wassertein距離)は、以下のように定義される。
(※ Earth-Mover距離 の詳細は、「【補足】Earth-Mover 距離(Wassertein距離)」参照のこと)
このEarth-Mover距離を、先のJSダイバージェンスと同様にして、2つの確率分布の台が交わらない極端なケースで計算すると、
となる。
この計算結果を図示すると、以下のような図となる。
真の分布とモデルの分布が重なる θ=0 の部分で、EMDの値が0なっている。
一方、真の分布とモデルの分布が重ならない θ≠0 の部分では、EMDの勾配が一定値となっていることが分かる。
つまり、学習が完了していない、真の分布とモデルの分布が重ならない領域において、誤差逆伝搬での学習に必要な、EMDの勾配値が得られているので、勾配消失問題は発生していないことが分かる。
先でみたように、Wassertein GAN では、以下のように定義される、Earth-Mover距離(Wassertein距離)を使用する。
但し、この式では、GANで扱うような画像の次元が大きい場合に、現実的に計算可能ではないので、この式の双対表現の式を利用する。
※ このEarth-Mover距離を計算することは、線形計画法を解くことに一致するので、元の式(主問題)に対する双対表現が得られる。
ここで、関数 は、K-リプシッツ連続な関数であることが、元のEarth-Mover距離の制約条件から要請される。
また、このリプシッツ連続性の条件は、先の2つの確率分布の台が互いに重ならない場合で発生する勾配消失問題でみたように、一定の勾配が得られて学習がうまくいくための要件になっているとみなすことも出来る。(上図参照)
WGANでは、上図のアーキテクチャ図のように、このリプシッツ連続な関数 f を、
ニューラルネットワークで構成されたクリティック(=従来の識別器)で表現する。
※ このクリティックは、従来のGANの識別器のように、入力データが本物か偽物かの 0 or 1 の2値を sigmoid 活性化関数で活性出力するのではなく、リプシッツ連続な関数 f の出力(=連続値になる)をそのまま出力する。そのため、もはや従来の識別器とは異なる機能となっているため、識別器ではなくクリティックという。
このとき、クリティックのニューラルネットワークの重みパラメーターを w とし、この関数 f をパラメーター付きの関数で表記すると、先の Earth-Mover 距離の双対表現の式は、以下の式で近似できる。(導出略)
そしてWGANでは、クリティックの損失関数 として、このEarth-Mover 距離の双対表現の近似式で採用する。
そして、上記のアーキテクチャ図で示したように、この勾配を誤差逆伝搬することで、学習を行う。
-
クリティックの学習と生成器の学習の更新間隔:
従来のGANでは、損失関数(=JSダイバージェンス)が途中で勾配消失するために、ある生成器の出力に対して、最適途中までしか識別器を学習させることしかできず、そのために、
「識別器の損失関数を更新(1回)→生成器の損失関数の更新(1回)」 を、各々1回ずつ繰り返すことで、生成器と識別器の学習を逐次行っていた。一方、先に述べたように、WGANの損失関数(=EMD)では、ほとんどいたるところで連続で微分可能あり、誤差逆伝搬での学習のための勾配が得られ続けるので、ある生成器の出力に対して、クリティックの最適状態まで、学習を続けることが可能である。
従って、WGANでは、正しい損失関数を計算するために
「識別器の損失関数を更新(n_critic=5 回)→生成器の損失関数の更新(1回)」というように繰り返すことで、生成器と識別器の学習を逐次行なう。
これにより、安定した学習や、モード崩壊の防止を実現できる。 -
リプシッツ連続な関数 f の実現と重みクリッピング:
ここで、何度も述べているように、クリティックの出力となる関数は、∀w∈W に対して、リプシッツ連続な関数である必要があるが、WGANでは、このことをニューラルネットワークで実現するために、単純に、−c≤w≤c (例えば c=0.01) の範囲で重みクリッピングを行うことで実現する。
※ 但し、この重みクリッピングによる方法では、勾配爆発や、低い値にクリッピングしすぎることによる勾配消失の問題が発生する可能性がある。
※ 後述の WGAN-gp では、このような問題が起らないように、重みクリッピングによるリプシッツ連続性の実現ではなく、勾配ノルムに制限項を加えることで、リプシッツ連続性を実現する。(詳細は「 [WGAN-gp] improved Training of Wasserstein GANs」参照) -
最適化アルゴリズムの選択:
最適化アルゴリズムとして、Adam のようなモーメンタムベースの最適化アルゴリズムを使用すると、ときどき学習が不安定になるという実験的結果がある。(※ この理論的根拠はまだない?)v そのため論文では、最適化アルゴリズムとして、モーメンタムベースのアルゴリズムではない RMSProp を採用している。
以上のことを踏まえて、最終的に WGAN のアルゴリズムは、以下のようになる。
先に述べたように、WGANでは、従来の GAN で問題になっていた、(真の分布とモデルの分布の台が互いに重ならない場合に発生する)勾配消失問題を回避することが出来るが、その他にも以下に上げるようないくつかの利点が存在する。
※ 勾配消失問題の回避を含めたこれらの利点の原因は、互いに独立したものではなく、いづれもWGANの損失関数(=EMDの近似)の連続性やクリティックの出力のリプシッツ連続性に起因していることに注目。
-
学習が安定している:
先に述べたように、WGANの損失関数(=EMD)では、ほとんどいたるところで連続で微分可能あり、誤差逆伝搬での学習のための勾配が得られ続けるので、ある生成器の出力に対して、クリティックの最適状態まで、学習を続けることが可能である。
従って、WGANでは、正しい損失関数を計算するために、
「識別器の損失関数を更新(n_critic 回)→生成器の損失関数の更新(1回)」 というように繰り返すことで、生成器と識別器の学習を逐次行うことが可能となり、
従来のGANでの、「識別器の損失関数を更新(1回)→生成器の損失関数の更新(1回)」 での方式より、学習が安定化する。 -
モード崩壊が発生しない:
モード崩壊は、十分に最適化されたいない識別器に対して、生成器を最適化し、画像を生成することで発生する。
先に述べたように、WGANの損失関数(=EMDの近似)では、ほとんどいたるところで連続で微分可能あり、誤差逆伝搬での学習のための勾配が得られ続けるので、ある生成器の出力に対して、クリティック(=識別器)の最適状態まで、学習を続けることが可能である。
従って、モード崩壊の発生原因である、十分に最適化されたいないクリティック(=識別器)という状況が発生しないため、モード崩壊も発生しない。 -
生成画像のクオリティを loss値から判断できる:
従来のGANにおいては、学習の経過において、loss 値が減少したからといって、必ずしも生成画像のクオリティが良くなるとは限らない。
そのため、良いクオリティの生成画像を得るために、学習をいつ止めるべきなのかを目視していなくてはいけないという問題が存在した。
一方 WGAN では、学習回数に対する loss 値の変化の様子が、生成画像のクオリティに比例することが、実験的に示されている。(理論的には?)
そのため、良いクオリティの生成画像を得るために、生成画像が都度目視せずとも、学習の完了(=loss値の0付近への収束)まで待つだけでよい。
このことを示したのが、以下の図である。
※ この性質は、理論的には、クリティックの出力が、リプシッツ連続で、ほとんどいたるところで線形な関数で表現できていることに起因?
従来の image-to-image 変換タスク(=1対1に対応している画像間を変換すること)では、タスクの種類に応じて個別にアルゴリズムを構築していた。
pix2pix は、image-to-image 変換タスクを、cGAN を用いて実現することにより、様々な種類の image-to-image 変換タスクを、汎用的なフレームワークで実現出来る。
※ 通常の GAN では、生成タスクが主な用途であるが、pix2pix はこのような image-to-image の変換タスクが主な用途である。
具体的には、以下の例のような、image-to-image 変換タスクを共通のフレームワークで実現できる。
上図は、例えば、航空写真を地図に変換する image-to-image 変換タスクにおける、pix2pix のアーキテクチャ図を示した図である。
この pix2pix のアーキテクチャには、主に、以下のような特徴がある。
-
アーキテクチャのベースとしては、cGAN を採用:
cGAN のアルゴリズムにおいて、入力画像 x を変換前の画像(航空写真)とし、追加条件 y として、変換後の画像(地図画像)とすることで、cGAN での image-to-image 変換タスクを実現している。 -
生成器 G のネットワークとしては、U-Net を採用:
- U-Net は、セマンティックセグメンテーションのタスクにおいて重要となる「局所的な特徴量と、画像全体の特徴の両方を捉えること」 を同時に実現できる。
- より詳細には、Encoder 側の浅い層から、画像全体の大域的な特徴量を skip connection 経由で、Decoder 側に送り、Encoder 側の深い層からの、画像の局所的な特徴量を skip connection 経由で、Decoder 側に送る。
そして、Decoder 側で、これら skip connection で送られてきた大域的特徴量と局所的特徴量を保持したたま、アップサンプリングを行い、変換前と同じ解像度の画像を出力する。
結果として、「局所的な特徴量と、画像全体の特徴の両方を捉えること」 を同時に実現できる。(詳細は、【補足】U-Net の項目参照) - pix2pix では、生成器のネットワーク構成として、U-Net を採用することで、このセマンティックセグメンテーションのタスクにおいて重要となる「局所的な特徴量と、画像全体の特徴の両方を捉えること」 を同時に実現できるようにしている。
-
識別器 D には、Patch GAN を採用:
- Patch GAN では、識別器に入力された画像をより小さな(=局所的な)複数の小領域(=パッチ)に分解した上で、これら各バッチに対して、本物か偽物かの判定を行い、最後に、全ての応答を平均化して、識別器の最終的な出力とする。
- この Patch GAN の仕組みにより、識別器がある程度大域的な判定を残しつつ、局所的な特徴量でのみ判定に専念できるので、学習パラメーター数を大幅に減らすことができ、結果として、学習を効率的に進めることができる。
- 尚、Patch GAN という名前がついているが、この PatchGAN 自体は、GAN 全体のアルゴリズムではなく、単に、識別器のみに対してのアルゴリズムであることに注意。
- Patch GAN では、識別器に入力された画像をより小さな(=局所的な)複数の小領域(=パッチ)に分解した上で、これら各バッチに対して、本物か偽物かの判定を行い、最後に、全ての応答を平均化して、識別器の最終的な出力とする。
-
生成器 G に入力する入力ノイズ z は、dropout で実現:
- 生成器 G に入力する入力ノイズ z は、従来の GAN のように、確率分布 U(0,1) or N(0,1) から直接サンプリングして実現するのではなく、生成器のネットワークの複数の中間層に、直接 dropout を施すという意味でのノイズとして実現する。
- 生成器 G に入力する入力ノイズ z は、従来の GAN のように、確率分布 U(0,1) or N(0,1) から直接サンプリングして実現するのではなく、生成器のネットワークの複数の中間層に、直接 dropout を施すという意味でのノイズとして実現する。
このようなアーキテクチャのもとで、識別器 D は、入力されたデータのペアが、学習データに含まれている{変換前の画像(本物の航空写真), 変換後の画像(地図)}というペアなのか、或いは、{ 変換元画像から生成器が生成した画像(偽物の航空写真)、変換後の画像(地図)> のペアなのかという判断を行う。
そして、従来の GAN と同じように、この識別器による判定結果が、50% - 50% になるように、生成器と識別器の学習を、交互に実施していく。
pix2pix は、cGAN をベースに構築されているが、cGAN の識別器の損失関数 L_D と生成器の損失関数 L_G は、以下のように定義された。
pix2pix でのアーキテクチャにそうように書き換えると、
pix2pix では更に、生成器での損失関数 L_G に対して、この cGAN の損失関数をベースにして、L1正則化の項
を追加する。
これにより、生成器での損失関数は、以下のようになる。
この L1正則化の項目は、変換後の本物画像 x と生成器が生成した偽物画像 が、”ピクセル単位” でどの程度異なるのか(=局所的な特徴量)を表している。
セマンティックセグメンテーションのタスクにおいては、「局所的な特徴量と、画像全体の特徴の両方を捉えること」 が重要となる。
pix2pix では、既存の cGAN の損失関数に、L1正則化項を追加することにより、
局所的な特徴量をL1正則化で捉え、全体的な情報の正しさを識別器で捉え判定することを可能にしている。
※ 同じような理由で、L2正則化も考えられるが、L2よりL1のほうが、生成画像のぼやけが少ない傾向があるので、pix2pix では、L1を採用している。
image-to-image 変換のタスクにおいて、一般的に利用可能な学習用データは、左下図のような x と y が対応した画像でペア付けされた学習用データではなく、その多くは右下図のような対応した画像でペア付けされていない学習用データである。
CycleGAN は、このようなペア付けされていないx to学習用データに対しても、image-to-image 変換タスクが適用できるようにした、GAN ベースの image-to-image アルゴリズムの1つである。
その主な特徴は、GANの生成器において、入力画像 x から変換画像 y への写像 を学習するだけでなく、別の生成器で、その逆の変換画像 y から元の入力画像 x への写像
も学習し、これら写像(=生成器)G, F による各々の写像先を一致させる(
)ための cycle consistency loss を導入しいる点にある。
この cycle consistent な仕組みにより、ペア付けされていない学習用データに対しても、image-to-image 変換タスクが適用出来るようになり、従来の image-to-image 変換手法(pix2pix など)よりも優れたパフォーマンスを発揮することが可能となる。
上図は、例えば、地図を航空写真に変換する image-to-image 変換タスクにおける CycleGAN のアーキテクチャ図を示した図である。
この CycleGAN のアーキテクチャには、主に、以下のような特徴がある。
-
cycle consistent な仕組み:
従来の GAN での生成器では、入力画像 x から変換画像 y への写像のみを、真の分布とモデルの分布が一致するように学習するが、このように学習された写像に関しての入力画像 x と変換画像 y の対応関係が、image-to-image の意味で意味のある画像のペアになっていることは保証されない。これは、このような真の分布とモデルの分布の一致させ方が、その制約の弱さ(=自由度の高さ)故に、無限通り存在し、結果として得られる学習された写像も、無限通り存在してしまうことに起因する。
そのため、CycleGAN では、cycle consistent な仕組みにより、写像の制約を強め(=自由度を小さくし)、学習された写像に関しての入力画像 x と変換画像 y の対応関係が、image-to-image の意味で意味のある画像のペアになるようにする。具体的には、上図のアーキテクチャ図のように、変換画像を元の画像に戻す生成器(=写像)
を導入し、これら写像(=生成器) G, F による各々の写像先を一致させる(
)ようにするための、cycle consistency loss を導入する。(※ この損失関数に関しての詳細は後述)
この順方向の cycle consistency 要件と、その逆方向の cycle consistency 要件
により、写像の制約が強まり、結果として得られる学習された写像の取り得る範囲も狭まり、この写像に関しての入力画像 x と変換画像 y の対応関係が、image-to-image の意味で意味のある画像のペアになるようになる。
-
CycleGAN の損失関数:
CycleGAN の損失関数は、以下で定義される adversarial loss と consistency loss の和で定義される。
そして、この損失関数の minmax で生成器と識別器を最適化する。
-
adversarial loss :
従来の GAN のように、本物画像と生成器が生成した偽物画像に対しての、識別器の判定結果を元にした損失関数で、真の分布とモデルの分布の2つの分布を一致させるように働く。
但し、CycleGAN では、上図のアーキテクチャ図のように、順方向の写像を学習する生成器 G とそれに対応した識別器 D_Y。及び、逆方向の写像を学習する生成器 F とそれに対応した識別器 D_X の2つの経路が存在するので、adversarial loss もそれに対応して2つ存在することになる。 -
cycle consistency loss :
cycle consistent 要件(
)を実現する損失関数。
上図のアーキテクチャ図における緑線とオレンジ線で示した部分に対応しており、
変換前の画像 x を生成器 G で写像し、生成器 F で逆写像したときの、画像 F(G(x)) が、元の画像 x と一致する()ように、その画像間のL1ノルム
で、順方向の cycle consistency loss を定義する。
同様にして、変換後の画像 y を生成器 F で写像し、生成器 G で逆写像したときの、画像 G(F(y)) が、元の画像 y と一致する(
)ように、その画像間のL1ノルム
で、逆方向の cycle consistency loss を定義する。
※ 後述の実験結果で見るように、単方向の cycle consistency loss のみでは、学習が不安定になりモード崩壊が発生してしまう傾向があるため、双方向の cycle consistency loss を採用している。
-
-
生成器のネットワーク構成:
生成器のネットワーク構成としては、上図のように、以下の3つのネットワークを順に連結したものを採用する。
① ダウンサンプリングを行うための、ストライド幅2の2つの畳み込み層
② いくつかの residual blocks(ResNet のブロック)
③ アップサンプリングを行うための、ストライド幅 1/2 の2つの逆畳み込み層ここで、ResNet の residual blocks 数は、入力画像のサイズによって切り替える。即ち、
128 × 128 の入力画像 ⇒ 6 つの residual blocks
256 × 256、及びそれ以上の解像度の入力画像 ⇒ 9 つの residual blocks※ このネットワーク構成は、Johnson らの論文「Perceptual Losses for Real-Time Style Transfer and Super-Resolution」 (https://arxiv.org/abs/1603.08155) で提案されているネットワーク構成をベースとしている。
※ pix2pix の生成器のネットワーク構成は、U-Net であるが、その後発である CycleGAN の生成器のネットワーク構成が、 Johnson らの論文ベースのネットワーク構成(conv + residual blocks + deconv)である理由は?
→ 単純に生成画像の品質が向上するため?学習時間が短縮するため?あるいはその両方? -
識別器のネットワーク構成:
pix2pix と同様にして、PatchGAN の構造を採用する。(各パッチのサイズは 70 × 70 ピクセル)
この Patch GAN では、識別器に入力された画像をより小さな(=局所的な)複数の小領域(=パッチ)に分解した上で、これら各バッチに対して、本物か偽物かの判定を行い、最後に、全ての応答を平均化して、識別器の最終的な出力とする。
これにより、識別器がある程度大域的な判定を残しつつ、局所的な特徴量でのみ判定に専念できるので、学習パラメーター数を大幅に減らすことができ、結果として、学習を効率的に進めることができる。 -
instance normalization:
先の生成器のネットワーク構成でベースとしている Johnson らの論文と同じように、batch normalization ではなく、instance normalization を使用する。※ GAN による image-to-image 変換手法(CycleGAN, StarGAN、GANimation など)の多くで、batch norm ではなくて instance norm を採用しているのは、元々 Style Transfer の分野において、batch norm を instance norm に置き換えることで、生成画像の品質において大きな向上が観測が報告されたため、この知見取り入れたことによる。
※ batch norm を instance norm に置き換えることで、学習安定化の改善効果が得られるが、生成画像の品質の向上効果はあるのか?また、ablation study 等での生成画像の品質向上の定性的定量的比較結果はある?
-
損失関数の誤差2乗和への置き換え:
学習を安定化させることを目的として、先に定義した損失関数
における負の対数尤度計算(赤字部分)を、誤差2乗法の計算に置き換える。
これにより、生成器 G の学習は、
で表現できる。
また識別器 D の学習は、
で表現できる。
※ この手法は、他論文 (https://arxiv.org/abs/1611.04076) で提案されている手法。 -
識別器の学習に生成器からの生成画像を履歴を使用:
一般的な GAN では、生成器が生成した最新の生成画像で識別器の学習を行うが、その方法では、損失関数のエポック数経過による変化が発振して不安定になる傾向がある。
CycleGAN では、損失関数を安定化させる目的で、生成器が生成した最新の生成画像ではなく、生成器が生成した画像の過去の履歴 50 回分のバッファを使用して識別器の学習を行う。
※ この手法は、他論文(https://arxiv.org/abs/1612.07828) で提案されている Shrivastava et al’s strategy という手法。
以下の表は、CycleGAN の論文中での各実験で共通する実験条件を示している。
※ 学習用データ等のその他の実験条件は、各実験ごとに異なるものを使用。
論文中の各実験は、以下のような評価指標に基づいて評価される。
-
AMT perceptual studies:
Cycle GAN が生成した偽物画像、或いは、性能比較のためのベースライン手法が生成した偽物画像と本物画像を被験者に見せて、被験者の主観的な判断で、その画像が本物か偽物かの判定を行う。
ツールとしては、Amazon Mechanical Turk (AMT) を使用。
テストするアルゴリズム毎に、25人の被験者でテスト。
試行回数は、50 回。(この内最初の 10 回は、被験者の正解不正解での反応をみるための練習試行。残りの 40 回が、各アルゴリズムが被験者をだました割合を計算するための本番試行)
地図 [map] ↔ 航空写真 [aerial photo] の image-to-image 変換タスクの実験評価で使用される。 -
FCN score :
全結合ネットワーク(FCN)で、生成された写真から、(セマンティックセグメンテーションされた)ラベルのラベルマップを予想する。
都会の風景 [cityscapes] ↔ 写真 [photo] の image-to-image 変換タスクの実験評価で使用される。 -
Semantic segmentation metrics :
写真 [photo] ↔ ラベル [labels] のパフォーマンスを評価するために、他論文の Cityscapes benchmark (https://arxiv.org/abs/1604.01685) から、ピクセル単位での正解率、クラス単位での正解率、IOU の平均値を含む標準的な指標を使用する。
各種 image-to-image 変換タスクに対しての実験結果を以下に示す。
-
地図 ↔ 航空写真の変換タスクでの各種手法の比較結果:
上図は、地図 ↔ 航空写真の変換タスクにおける、各種手法の定性的な比較結果を示している。
いずれの手法も、右端の正解データ(Ground truth)と完全に一致するような画像は生成出来ていないが、この内、pix2pix と CycleGAN が最も正解データに近い画像を生成出来ていることが見てとれる。
上表は先に述べた AMT perceptual studies での、地図 ↔ 航空写真の変換タスクにおける、各種手法の定量的な比較結果を示している。
生成画像は、解像度 256×256 での地図画像 → 航空写真、及び、航空写真→地図画像である。
CycleGAN の手法のみが、およそ 1/4 の確率で被験者を騙せるような偽物画像を生成出来ていることが見てとれる。 -
都会風景画像 ↔ ラベル画像の変換タスクでの各種手法の比較結果:
上図は、都会風景画像 ↔ ラベル画像の変換タスクにおける、各種手法の定性的な比較結果を示している。
pix2pix と CycleGAN が、最も正解データ(右端の Ground truth)に近い画像を生成出来ていることが見てとれる。
上の2つの表は、それぞれ、ラベル画像 → 都会風景画像、都会風景画像 → ラベル画像の変換タスクに関して、先に述べた FCN score と Semantic segmentation metrics(ピクセル単位での正解率、クラス単位での正解率、IOU) での各種手法の定量的な比較結果を示した表である。
全ての指標で、CycleGAN が最も高いパフォーマンスを示していることが見てとれる。 -
都会風景画像 ↔ ラベル画像の変換タスクでの ablation study での比較結果:
上の2つの表は、それぞれ、ラベル画像 → 都会風景画像、都会風景画像 → ラベル画像の変換タスクに関して、CycleGAN の完全な損失関数とそれから一部の損失関数項を抜き取ったモデル(右側の式)での所謂 ablation study での比較結果を示している。
総合的に見て、全ての項ありの CycleGAN (ours) が最も高いパフォーマンスを発揮しており、それ故に、CycleGAN ではこの完全な損失関数を採用している。上図は、都会風景画像 ↔ ラベル画像の変換タスクにおける、CycleGAN の損失関数の ablation study での定性的な比較結果を示している。
GAN alone と GAN + forward、GAN + backward では、入力画像 Input を変えても、同じ画像を生成しており、モード崩壊が発生していることが見てとれる。このように単方向の cycle concictncy loss のみの損失関数では、モード崩壊が発生してしまう傾向があるため、CycleGAN では、完全な損失関数をもつ CycleGAN (ours) を採用している。
-
CycleGAN の限界:
上図は、CycleGAN での image-to-image 変換タスクのいくつかの失敗ケースを示している。上図左側にある犬 ↔ 猫の変換ように形状の幾何学的な変更が必要な image-to-image 変換タスクにおいては、形状全体の大域的な特徴ではなく、局所的な特徴のみの最小限で変換していまっていることが見てとれる。
このような変換となってしまう原因としては、以下のような理由が考えられる。-
cycle consistency loss の効果が強すぎる:
cycle consistency loss は、入力画像のサイクリックな写像後の画像が元の入力画像に一致させるといったように、恒等写像の形に近い写像に誘導する効果があるが、犬 ↔ 猫の変換タスクのような全体の形状を大きく変換する変換タスクを実現する写像は、このような恒等写像とは大きく異なる写像となるので、cycle consistency loss が不利に働いてしまう。 -
識別器の PathGAN による判定:
CycleGAN では、識別器の内部構造として PatchGAN を採用しているが、PatchGAN で行われる判定は、各パッチ内の局所的な特徴量のみでの判定であり、犬 ↔ 猫の変換タスクで、局所的な特徴量のみで変換してしまっている。
また、上図右側にあるの馬 ↔ シマウマの変換もうまく変換出来ていないが、これは、この CycleGAN が、ImageNet にある野生の馬とシマウマ画像のペアで学習を行っており、乗馬している人の画像で学習を行っていないためだと考えられる。
-
従来の GAN ベースの image-to-image 変換手法(pix2pix や CycleGAN など)は、
1つのデータセット内での1対1の2つのドメイン間での image-to-image 変換を想定しているものであった。
※ ここで用いられる ”ドメイン” という用語は、同じ属性(髪の色、性別、年齢など)をもつ集合を意味していることに注意。
しかしながら、それぞれ別の属性ラベルが付与されている複数のデータセットが利用できれば便利である。例えば、CelebA データセットには、女性・黒髪などの顔の見た目に関する40種類の属性ラベルが付与されており、RaFD データセットには、喜び・怒りなどの感情に関する8種類の属性ラベルが付与されているが、これら2つのデータセットを組み合わせられれば、より多くの image-to-image 変換(例えば、黒髪 ↔ 喜びの表情、女性 ↔ 怒りの表情など)が出来るようになる。
StarGAN は、このような複数データセット内での多対多の複数ドメイン間での image-to-image 変換タスクを、効率的かつ効果的に実現する GAN ベースの image-to-image 変換手法である。
その基本的なコンセプトは、上図右側のアーキテクチャ図のように、
複数のデータセットでの複数のドメイン(図では1〜5。この内1〜3がデータセットA、4〜5が別のデータセットB)間で共通の生成器(G)を使用し、複数のデータセット内での全ての可能なドメイン間の写像を同時に学習するようにするものである。
そしてこの際に、生成器(G)への入力として、入力画像だけでなく変換したいドメインのラベル情報 c も受け取ることで、入力画像 x を所望の目標ドメイン c での画像 y へ変換出来るようにする。
※ 従来の1対1のドメイン間での GAN ベースの image-to-image 変換(pix2pix, CycleGAN など)でも、複数ドメイン間の image-to-image 変換は実現できるが、この場合上図左側のように、存在するドメインペアの全ての組み合わせで、別途モデルを用意する必要があり、それ故に、非効率的で非効果的であり、また拡張性やロバスト性に限界がある。
上図は、StarGAN のアーキテクチャ図を示した図である。
この StarGAN のアーキテクチャには、主に、以下のような特徴がある。
-
複数ドメイン間の写像を行う生成器(G):
複数のデータセットでの複数のドメイン間の imge-to-image 変換を可能にするために、上図のように複数のデータセットから構成される複数のドメイン(図では1〜5。この内1〜3がデータセットA、4〜5が別のデータセットB)間で共通の生成器(G)を使用し、複数のデータセット内での全ての可能なドメイン間の写像を同時に学習するようにする。 この際に、生成器(G)への入力として、入力画像だけでなく変換したいドメインのラベル情報 c も受け取ることで、入力画像 x を所望の目標ドメイン c での画像 y へ変換出来るようにする。
(言い換えれば、この生成器 G が、複数のドメイン c に対して、G(x,c) → y となるように学習を行う。)ここで、このドメインラベルは、one-hot ベクトルによって表現される。
また、全てのドメイン間の写像を公平に学習するために、変換後の画像が所属する目標ドメインラベル c は、ランダムに生成されるようにする。 -
識別器のドメインラベルを分類する補助的な分類器:
本物画像 x の所属するドメイン c' と、生成器が生成した偽物画像 G(x,c) の所属するドメイン c が、各々正しいドメイン c',c に分類されることを生成器と識別器が学習するために、上図のように、識別器に従来の入力画像が本物画像か偽物画像なのかを判別するネットワーク D_src に加えて、ドメインラベルを分類する補助的な分類器 [auxiliary classifier] D_cls を追加する。
そして、後述で定義する domain classification loss とその損失値からの誤差逆伝播で、本物画像 x と偽物画像 G(x,c) の所属するドメインが、各々所望のドメイン c',c に分類されるように生成器と識別器を学習する。
※ この補助的な分類器 [auxiliary classifier] は、ACGAN の論文で提案されているもの。 -
損失関数:
StarGAN の生成器の損失関数と識別器の損失関数は、以下で定義される3つの損失関数(adversarial loss、domain classification loss、cycle consistency loss)の線形結合
で定義される。-
adversarial loss:
従来の GAN のように、本物画像と生成器が生成した偽物画像に対しての、識別器の判定結果を元にした損失関数で、真の分布とモデルの分布の2つの分布を一致させるように働く。
実際の StarGAN では、学習安定化のために、以下のように定義されるWGANの損失関数を使用する。
-
domain classification loss :
本物画像 x の所属するドメイン c' と、生成器が生成した偽物画像 G(x,c) の所属するドメイン c が、それぞれ正しいドメイン c',c に分類されるように生成器と識別器を学習させるための損失関数。-
識別器側の domain classification loss:
識別器の補助分類器 D_cls は、ドメインラベル c′ に所属する本物画像 x が入力されたとき、本物画像 x の所属ドメインを、(正しく)c′ に判定するようにを出力しようとする。
⇒の最小化に対応
-
生成器側の domain classification loss:
生成器としては、変換後の偽物画像 G(x,c) の所属ドメイン c が、(正しく)c に判定するように、補助分類器にを出力させようとする。
⇒の最小化に対応
※ 識別器としてWGAN を適用するときは、D_cls(c|G(x,c)) = 0.0 ~ 1.0 で活性化された値ではなく、そのままの関数値となるが、ここでは簡単にこの損失関数の効果を理解するために活性化された値(0.0 ~ 1.0)で説明している。
-
-
cycle consistency loss :
CycleGAN で提案されている cycle consistency loss。
入力画像 x を生成器で写像して、別の逆方向の生成器で逆写像したもの G(G(x,c) | c') が、元の入力画像 x に一致するという cycle consistent 要件を実現する損失関数。
画像の ”ピクセル毎” のL1ノルムで定義されている。
-
-
マスクベクトル:
StarGAN では、複数のデータセットにおける複数のドメインラベルを扱うことを目的としているが、この際に、各データセット内では、複数のデータセット内での全てのドメインラベル情報の内の一部しかわからないケースが発生する。
※ これは例えば、CelebA データセットと RaFD データセットの2つのデータセットでの複数ドメイン間での image-to-image 変換タスクを考えた場合に、複数のデータセット内での全てのドメインラベル情報は、顔の外面の{髪の色、性別、年齢・・・}ラベルと表情ラベル{幸福、怒り、・・・}の両方から構成されるが、CelebA データセットでは、顔の外面ラベル{髪の色、性別、年齢・・・}という一部しか存在せず、逆に、RaFD データセットでは、表情ラベル{幸福、怒り、・・・}という一部しか存在しないといったケースのことである。このようなケースでは、先の cycle consistency loss の式で、画像のピクセル毎のL1ノルムを計算するのに必要な完全なドメインラベル情報 c',c が得られないことになるので、学習が行えず問題である。
この問題を解決するために、StarGAN では、データセットに該当しないドメインラベルを0、該当するドメインラベルを1に割り当て、0に割り当てられたデータセットのドメインラベルは無視できるようにするためのマスクベクトル m を導入し、以下に定義されるドメインラベルの統一バージョン c ̃ を使用する。
※ 例えば、データセット1が4つのドメインを持ち、データセット2が3つのドメインを持ち両者を利用するとき、データセット2でのドメインラベルの統一バージョンは、
とかける。 ここで、マスクベクトルの1番目の要素が0で指定されており、データセット1のドメインラベルは無視される意味合いとなる。 -
生成器のネットワーク構成は、CycleGAN ベース:
生成器のネットワーク構成は、CycleGAN の生成器のネットワークと同様にして、以下の3つのネットワークを順に連結したものを採用する。
① ダウンサンプリングを行うための、ストライド幅2の2つの畳み込み層
② 6つの residual blocks(ResNet のブロック)
③ アップサンプリングを行うための、ストライド幅 1/2 の2つの逆畳み込み層 -
識別器として、PatchGAN を採用:
image-to-image のタスクにおいては、画像の高周波成分(=局所的な特徴量)と低周波成分(=大域的な特徴量)の両方を捉えることが重要となるが、StarGAN においては、この識別器の PatchGAN の構造により、画像の高周波成分(=局所的な特徴量)を強く捉えることを可能にしている。
-
instance normalization を採用:
生成器に対しては、instance normalization で正規化処理を行う。
識別器に対しては、正規化処理を適用しない。
以下の表は、StarGAN の論文中での実験の実験条件を示している。
-
CelebA データセットでの定性的な比較:
上図は、CelebAデータセットに対して、従来のGAN手法(DIAT、IcGAN、CycleGAN)の cross-domain モデルで学習したものと、StarGAN で学習したモデルからの生成画像を比較した図である。
※ 従来のGAN手法(DIAT、IcGAN、CycleGAN)の cross-domain モデルは、CelebAデータセット内の全ての可能な属性のペアで複数回学習したものである。StarGAN での生成画像が、最もクオリティの高い画像を生成出来ていることが見てとれる。
この理由としては、従来のGAN手法での cross-domain モデルでの学習では、各々のドメイン間のモデル(上図では、例えばG21,G12)を、固定されたドメイン間の変換対(上図では、1↔2)でのみ学習するために、そのドメイン間のモデルが過学習してしまう傾向があるのに対し、
StarGAN では、ランダムに目標ドメインを定め、モデル(G)が全ての可能なドメイン間(上図では、1〜5)を一様に学習することで、より汎化能力が高いモデルになっているために、結果として上図の比較において最も品質の高い画像が生成出来ているこということが考えられる。 -
CelebA データセットでの AMT による定量的な比較:
上表は、従来のGAN手法(DIAT、IcGAN、CycleGAN)でのシングルモデル、及び cross-domain モデルが生成した生成画像と、StarGAN が生成した生成画像に対して、Amazon Mechanical Turk (AMT) を利用して定量的に評価したものを比較した表である。
表中のパーセンテージは、比較対象の4種類の手法で生成した画像をシャッフルし、それを被験者に見せて、知覚的なリアリズム、属性での変換品質、人物の元の特徴の保存性の面で、どれが最も正しく変換されているかを選んでもらった統計値を表している。
被験者数は、シングル変換タスクで 100 人、複数変換タスクで 146 人である。シングル属性の変換タスクにおいて、部分的に StarGAN に近い値となっている従来のGAN手法も存在するが、マルチ属性の変換タスクにおいては、全ての変換タスクにおいて、StarGAN の性能が優位に高いことが見てとれる。
-
RaFD データセットでの定性的な比較:
上図は、RaFD データセットに対して、従来のGAN手法(DIAT、IcGAN、CycleGAN)の cross-domain モデルで学習したものと、StarGAN で学習したモデルからの生成画像を比較した図である。
StarGAN が最も自然な表情で、人物の元の特徴を保存した画像を生成出来ていることが見てとれる。
このような結果となる理由としては、学習用データ数の違いによる汎化能力の違いが考えられる。
具体的には、RaFD 画像は、1ドメインあたり500 枚の画像という比較的少ない数のサンプルから構成されており、そのため、従来のGAN手法(DIAT、IcGAN、CycleGAN)の cross-domain モデルでは、2つのドメイン間を学習するとき、一度に 1000 枚の学習用画像を使用するのみである。
一方、StarGAN では、その構造により全ての可能なドメイン間でのデータ全体 4000 枚を学習用データとして使用できるので、これは自然にデータオーギュメンテイションが行なわれていることを意味し、結果として、汎化能力の高いモデルとなっているということである。 -
RaFD データセットでの定量的な比較:
上表は、RaFD データセットで学習した ResNet-18 を顔表情分類器として利用し、各手法が生成した生成画像をこの分類器で識別した場合の、分類エラー率を示した表である。
※ この分類器 ResNet-18 の、学習に用いた RaFD データセットでの正解率は、99.55% である。StarGAN が最も低い分類エラーとなっており、最も本物と見分けがつかない画像を生成出来ていることが見てとれる。
また、モデルのパラメーターの数に関しても、StarGAN が最もパラメーター数の少ないモデルになっており、その観点からは扱いやすいモデルになっていることが見てとれる。 -
複数のデータセット(CelebA+RaFD)での定量的な比較:
上図は、StarGAN の複数データセットでの生成画像の効果を把握するために、RaFD のみの単一のデータセットで学習した StarGAN (StarGAN (SNG))と、CelebAとRaFDの複数のデータセットで学習した StarGAN (StarGAN (JNT))での生成画像を定性的に比較した図である。
複数のデータセットで学習した StarGAN のほうが、よりクリアで品質の高い画像が生成出来ていることが見てとれる。
-
マスクベクトルの効果の定性的な比較:
上図は、1番目のデータセットを CelebA、2番目のデータセットを RaFD とした場合に、複数のデータセットで学習した StarGAN の生成画像におけるマスクベクトルの効果を把握するために、適切なマスクベクトル [0,1] での生成画像と誤ったマスクベクトル [1,0] での生成画像を定量的に比較した図である。
誤ったマスクベクトル [1,0] では、狙いとしている表情の変化が行われておらず、狙いとしていない年齢の変化が行われてしまっていることが見てとれる。
これは、誤ったマスクベクトル [1,0] では、RaFD での表情ラベルが無視され、CelebA での顔の属性ラベルの "young" が採用されたために発生した振る舞いであり、適切なマスクベクトルと誤ったマスクベクトルの両者の比較から、マスクベクトルの役割が適切に動作していることがわかる。
従来の畳み込みでは、1回の畳み込み演算で局所的な受容野からの情報のみが畳み込まれるために、画像全体に渡っての大域的な特徴を取り込むためには、複数の畳み込み層を重ねていく必要がある。
一方で、大域的な特徴量を取り込もうとして複数の畳み込み層をモデルに組み込むと、今度はパラメーター数が増えて学習が安定化しずらくなり、また計算効率も低下するという問題も発生する。
SAGAN では、畳み込み時における attention 構造を GAN にも導入する。
これにより下図のように、画像の離れた部分の長距離依存性(=大域的な特徴量)を少ない計算コストで捉えることを可能になり、従来の(畳み込みベースの)GAN における、上記のような畳み込み時の局所性や計算効率の問題を解決出来る。
上図は、SAGAN の attention 構造で取り込まれている部分を視覚化した図である。画像中の色分けされた各点に対して、(attention map の中で)最も attention された部分を対応する色の矢印で表現している。attention を構造を導入することに、画像の離れた部分の情報が取り込まれていることが見てとれる。
上図は、SAGAN の畳み込み時におけるアーキテクチャを示した図である。SAGAN のアーキテクチャには、主に以下のような特徴がある。
-
生成器&識別器での畳み込み時の attention 構造の追加:
SAGAN では概要で述べたように、画像の離れた部分の長距離依存性(=大域的な特徴量)を少ない計算コストで捉えることを可能にする目的として、生成器と識別器での畳み込み時に、以下のような処理で構成される attention 構造を導入している。-
まず、畳み込み層での中間層からの特徴マップ x に対して、以下のように定義される attention map を作成する。
※ この β_(j,i) は、中間層からの特徴マップ x の j 番目の領域を合成するときに、モデルが i 番目の領域に関与する(=注意を向ける)度合いを表している。 -
この attention 付きの出力に学習可能なスカラー値をかけて元の特徴マップ x に加算したものを、最終的な出力とする。
※ ここで、この学習可能なスカラー値の初期値は0であるので、この attention 構造による効果は、まず通常の畳み込みのように画像の近傍のみに強く作用するが、その後徐々に学習しながらこのスカラー値を変化させることで、画像の離れた部分で非局所的に強く作用していく動作となる。
-
-
スペクトル正則化 [spectral normalization] :
SAGAN では、学習を安定化させることを目的として、生成器と識別器の両方で、batch norm を spectral normalization に置き換える。
※ spectral normalization の元論文では、識別器のみに適用することになっていたが、SAGAN では生成器と識別器の両方に適用する。
※ これは、生成器への spectral normalization の適用は、パラメーターの大きさの増大を防ぎ、異常な勾配で学習されることを防止出来るので学習を安定化させることが出来き、また、1回の生成器の更新に対する識別器の更新回数を少なく出来るので、計算コストも著しく減少させる効果もあったためである。 -
two- timescale update rule (TTUR) :
two- timescale update rule (TTUR) は、生成器と識別器で別の学習率を使用する手法のことである。
WGAN では、1回の生成器の更新に対して、複数回の識別器の更新(一般的には5回)を行っていたが、SAGAN ではこの TTUR を採用し、生成器と識別器で別の学習率を使用することで、この1回の生成器の更新に対しての複数回の識別器の更新回数をより少なくするようにする。
これにより、より最適化の遅い識別器の計算効率を上げることができる。
SAGAN の損失関数は、シンプルに以下のような adversarial loss のみとなる。
但し、学習を安定化させることを目的として行われる、負の対数尤度計算の最小二乗誤差関数への置き換え(LS-GAN)は行わず、代わりに、ヒンジ損失関数項で置き換える。
※ ヒンジ損失関数では、ある範囲外からは勾配が0になるので、生成器と識別器の不健全な競争の結果として、識別器が不本意に強くなりすぎることを防止でき、結果して学習を安定化させる効果があると考えられる。
以下の表は、SAGAN の論文中での実験の実験条件を示している。
-
上図は、SAGAN で導入されている各種学習安定化手法の効果を検証するために、ベースラインモデルと SAGAN、及びその ablation study での学習経過を比較した図である。
比較に使用したベースライン手法と SAGAN の ablation study の詳細は以下の通り。-
baseline SN on D :
spectral normalization が、識別器のみに課され、又、two- timescale update rule (TTUR) も適用されないベースラインモデル。 -
SN on G/D :
spectral normalization が、生成器と識別器の両方に課され、又、two- timescale update rule (TTUR) が適用されない SAGAN。 -
SN on G/D + TTUR :
spectral normalization が、生成器と識別器の両方に課され、又、two- timescale update rule (TTUR) が適用される SAGAN。
spectral normalization が、生成器と識別器の両方に課すことで学習の安定性が向上し、更に、two- timescale update rule (TTUR) も適用することで、生成画像の品質(=ISスコア)が学習を進めるほど単調に増加していることも見てとれる。
※ ベースラインモデルでは、1回の生成器の更新で5回識別器更新することで、この学習不安化を回避しているが、SAGAN では、two- timescale update rule (TTUR) では 1 : 1 の生成器と識別器の更新でも学習は安定化する。
-
-
self-attention の効果:
上表は、self-attention の効果を定量的に検証するために、attention 構造なしのモデルと attention 構造ありの SAGAN とその ablation study を比較した表である。
※ ここで、feat_k は、k x k の特徴マップを attention 構造に追加することを意味している。no attention の列と feat の列との比較から、ateention 構造を導入すると生成画像の品質が向上していることが見てとれる。
又、feat_k の k x k 値の比較から、attention 構造に追加する特徴マップのサイズが大きくすると、生成画像の品質が向上していることが見てとれる。これは、attention 構造に追加された特徴マップのサイズが大きいほど、より画像の離れた部分で段階的に非局所的に強く作用していていくことが可能になるためだと考えられる。
上図は、attention 構造の効果を視覚的に検証するために、SAGAN の生成器ネットワークの出力層手前の中間層からの attention map を視覚化したものである。(右3枚の画像)
左側の色付き画像中の色分けされた各点に対して、attention map の中で、最も attention された部分を対応する色の矢印で表現している。attention は、単に画像内の空間的な隣接性に基づいて行われるだけではなく、ピクセルの色や質感の類似性によっても行われていることが見てとれる。(左上の鳥の画像など)
また、attention が空間的に離れた場所で行われているものもあることが見てとれる。(右上の犬の画像の緑点と緑線)
GAN において、高解像度の画像生成が困難で有ることの理由としては、以下のような要因が考えられる。
-
高解像度の画像では、(低解像度のときに比べて画像の詳細が分かるので、)正解画像と偽物画像の識別が簡単なタスクとなる。そのため、生成器と識別器の学習が十分に行えない。
-
高解像度の画像を扱うのにより多くのメモリを消費するので、より小さなミニバッチサイズで学習を行う必要がある。その結果として、学習が更に不安定になる。
-
学習に時間がかかる。
ProgressiveGAN では、このような GAN における高解像度の画像生成における問題点を回避することで、高解像度の画像生成を可能にしている。
その基本的なコンセプトは、
「生成器と識別器を、より簡単な低解像度の画像から段階的に学習させて、学習の段階が進むにつれて、高解像の情報をもつ新しい層を追加していく」
というものである。
これにより、上記の問題の回避と、学習の劇的な高速化が可能となる。
上図は、PGGAN のアーキテクチャ全体を段階的な(Progressiveな)ネットワーク構成と学習と共に示した図である。
また上表は、このアーキテクチャにおける各種ネットワークの設定値を示した表である。
この PGGAN のアーキテクチャには、主に、以下のような特徴がある。
-
Progressive なネットワークの構成と学習(Progressive growing of GANs)
PGGAN の基本的なコンセプトは、概要で述べたように、「生成器と識別器を、より簡単な低解像度の画像から段階的に学習させて、学習の段階が進むにつれて、高解像の情報をもつ新しい層を追加していく」 というものである。
PGGAN ではこれを実現するためのアーキテクチャとして、上図のようなアーキテクチャを採用している。
このアーキテクチャでの処理は、以下のような段階的な(Progressive な)処理で行われる。- Training Progresses 1
まず、4×4の低解像度で、従来のGANの構造に従って、学習が安定化するまで十分に生成器と識別器を学習する。 - Training Progresses 2
次に、生成器にアップサンプリングを行う nearest neightbor フィルタリングと2つの逆畳み込み層を追加し、識別器にダウンサンプリングを行う average pooing と2つの畳み込み層を追加したネットワークで、8×8 の解像度で、学習が安定化するまで十分に生成器と識別器を学習する。 - Train Progresses 3~9
同様の処理を、16×16 → 32×32 → 64×64 → ・・・ の解像度と、それに対応するために追加されるアップサンプリング用の nearest neightbor フィルタリングと逆畳み込み層、及び、ダウンサンプリング用の average pooing と畳み込み層で段階的に行っておき、最終的には、1024×1024 の解像度を生成出来るように学習していく。
※ この Training Progresses 1 ~ Training Progresses 8 は、例えば、それぞれ1エポック間に渡って学習し、最後の Training Progresses 9 を残りのエポックを学習させるなどの実装が考えられる。
※ また後述の滑らかな解像度の変換を、1エポック間に渡って行う場合、「1エポック目(Training Progresses 1)、2エポック目(Training Progresses 1 ~ 2)、3エポック目(Training Progresses 2)、4エポック目(Training Progresses 2 ~ 3)、5エポック目(Training Progresses 3)、・・・、15エポック目(Training Progresses 8 ~ 9)、16~最終エポック目(Training Progress 9)」といった実装となる。※ 画像の自動生成にタスクにおいては、画像の大域的特徴量と局所的特徴量の両方を捉えることが重要であるが、このProgressive なネットワークの構成での処理は、単に画像を高解像度化するだけでなく、低解像度での処理で画像で大域的特徴量を先に捉え、高解像度での処理で後で局所的特徴量を捉えるという効果も考えられる。
※ 尚、PGGAN の公式実装では、4 × 4 の解像度スケールでの潜在変数 z の入力時に、PixelNorm で正規化する処理を入れている。
ここでの PixelNorm は、後述で説明する、学習の安定化を目的とした生成器の各畳み込み層の後の中間層からの出力である特徴ベクトルに対して行う、”各ピクセル毎の”正規化処理ではなくて、 shape = 512(C)×1(H)×1(W) の潜在変数に対して PixelNorm(※shape=512×1×1 なので実質チャンネル次元を正規化しているのみ)して、超球面上の点に変換することで、潜在変数をランダムに変化させても超球面上の点を動くようにし、滑らかな補完を実現するものである。 - Training Progresses 1
-
滑らかな解像度の変換:
PGGAN では、上で述べたように、画像の解像度をnearest neightbor フィルタリングと average pooing とを用いて、それぞれ2倍 or 1/2 倍の倍々でアップサンプリング or ダウンサンプリングしていくが、例えばある解像度で十分に学習されたネットワークであっても、この倍々処理を急激に行うと、非滑らかな変化を生じさせてしまう。
そのため、PGGAN では、アップサンプリング or ダウンサンプリングのための新しい畳み込み層をネットワークに追加するときに、画像の RGB 値を線形補間によって、滑らかに変化させるようにする。上図は、この線形補間による滑らかな解像度の変換の様子を、16×16 → 32 × 32 での切り替え時の例で示した図である。
- (a) : 遷移開始時の様子。特に線形補間は行われない。(α=0)
- (b) : 遷移途中での様子。0<α<1 を補間係数として、
生成器側(G)で、特徴ベクトルから変換したRGB情報(toRGB)を、それぞれで混ぜ合わせる。
また、識別器側(D)で、RGBから再変換された特徴ベクトル(fromRGB)を、それぞれで混ぜ合わせる。
そして、学習が進むに連れて α = 0 → 1 とすることで、滑らかな線形補間を行う。 - (c) : 遷移完了時の様子。線形補間も完了している。(α=1)
※ この遷移(α=0.0 ~ 1.0)は、例えば、1エポック間の学習を通じて行うようにする。(1エポック開始時点:α=0.0、1エポック完了時点:α=1.0)
- (a) : 遷移開始時の様子。特に線形補間は行われない。(α=0)
PGGAN では、前述のような高解像度の画像生成のための工夫だけでなく、生成画像の多様性向上とモード崩壊防止のための工夫も提案している。
-
minibatch standard deviation(簡略化された minibatch discrimination)での生成データの多様性の向上とモード崩壊の防止:
GAN における課題の1つに、モード崩壊というものがある。
minibatch discrimination では、このモード崩壊を防止するために、識別器にミニバッチデータ内のデータの多様性を検出出来る仕組みを導入している。
(※ minibatch discrimination についての詳細は、後述の 「【補足】 Minbatch discrimation」 を参照のこと。)PGGAN では、この minibatch discrimination の仕組みを大幅に簡略化した仕組みである minibatch standard deviation を導入することで、minibatch discrimination のように、新しいハイパーパラメータを必要とすることなく、生成データの多様性を向上させ、モード崩壊を防止している。
以下の図は、この minibatch standard deviation での全体的な処理の流れを示した図である。
上図に示した、minibatch standard deviation における、各処理の詳細は、以下のようになる。
-
ミニバッチデータ内の各画像データの各ピクセル値(RGB値)に対して、同じ位置に対応しているピクセル値(RGB値)で、標準偏差を計算する。
計算した標準偏差は、H×W×C 分あるので、これを各ピクセルが、標準偏差値となるような H×W×C のテンソルとする。
※ このテンソルは、ある画像とミニバッチ内でのその他の画像間のピクセル単位での標準偏差となっているが、これは見方を変えると、ミニバッチ内でのデータの多様性を示していることになる。従って、この処理により、識別器にデータの多様性を認識できる構造が入っていることになる。 -
全ての高さ(H)と幅(W)、チャンネル数(C)で、この各ピクセル(=標準偏差値)を平均化し、スカラー値を取得する。
-
得られるスカラーをコピーし、結合することで、1つのH×Wのテンソル(=特徴マップ)を取得する。
-
一般的に、GAN においては、学習を安定化させることを目的として、batch normalization の仕組みがネットワークに導入されている。
しかしながら、この PGGAN では、GAN において batch norm による学習安定化効果は見られないとして、別の学習安定化のための工夫を使用している。
※ batch norm が GAN において学習安定化効果があるか否かは議論の余地がある。
※ batch norm は、共変量シフトを取り除く効果があるという議論もあるが、これにも議論の余地がある。
batch norm を用いない PGGAN の学習安定化(と学習速度向上)のための工夫は、以下の2つの仕組みから構成される。
尚、この2つの手法ともに、学習可能なハイパーパラメータを含んでいない。
-
Equalized learning rate
一般的には、ディープラーニングにおいては、学習率が減衰するような最適化アルゴリズム(Adamなど)を用いて、ネットワークの重みを更新する。
PGGAN では、このような重みの更新ではなく、以下に示すようなもっと単純な方法で、ネットワークの重みを更新する。 -
Pixelwise feature vector normalization in generator
生成器と識別器の不適切な競争の結果として、生成器と識別器からの出力信号(=偽物画像と判別結果)が制御不能になることを防止するために、
PGGAN では、生成器の各畳み込み層の後の、中間層からの出力(=特徴ベクトル)に対して、”各ピクセル毎に”、以下のような特徴ベクトルの正規化処理を行う。この正規化手法により、(batch norm と同様にして、)学習の際の変化の大きなに応じて、信号を増幅 or 減衰出来るようになるので、結果として学習の安定化が得られる。
-
SWD と MS-SSIM による生成画像の品質評価:
GAN の生成画像の品質評価を定量的に行うために、SWD [sliced Wasserstein distance] と MS-SSIM [Multi-scale statistical similarity] とによる評価を行う。ここで、この SWD [sliced Wasserstein distance] では、結論のみ述べると、本物画像と偽物画像(=生成画像)の統計的類似性を評価することが出来る。
望ましい生成器は、生成画像の局所的な画像の構造が、全ての解像度スケールで学習用データである本物画像と類似していると考えられるので、SWD により本物画像と生成画像(=偽物画像)の類似性を評価することが出来れば、結果として望ましい生成器であるかを判断出来る。尚、この SWD [sliced Wasserstein distance] による本物画像と偽物画像の類似度計算は、大まかに以下のように行われる。
① Progreesive growing の各解像度スケールに対応したラプラシアンピラミッドのある各解像度レベル(最初は 16 × 16)から、画像の局所的情報をもつ本物画像と偽物画像 descriptors(7×7pixel の近傍)を取得する。
② それぞれの descriptors の平均値と標準偏差を求め これらを正規化する。
③ 正規化された descriptors の画像の統計的類似性を SWD を使って計算する。
④ これを、Progreesive growing の各解像度スケールに対応した、ラプラシアンピラミッドの各解像度レベル(16 × 16 → 32 × 32 → ・・・ → 128 × 128)で繰り返す。一方、MS-SSIM [Multi-scale statistical similarity] では、結論のみ述べると、生成画像の多様性を評価することが出来る。
上表と上図は、解像度 128 × 128 である CelbA データセットと LSUN BEDROOM データセットに対して、SWD と MS-SSIM での測定結果を、従来の GAN 手法と PGGAN の ablation study で、それぞれ定量的(上表)、定性的(上図)に比較したものである。
比較に使用した、ベースライン手法と PGGAN の ablation study の詳細は以下の通り。
- (a) : ベースライン手法である WGAN-GP。(生成器で featuring batch normalization、識別器で layer normalization を実施し、ミニバッチサイズ 64)
- (b) : PGGAN の Progressive growing の仕組みのみを有効化
- (c) : ミニバッチサイズを 64 → 16 に減らしたもの(※高解像度での処理では、ミニバッチサイズが大きとメモリのサイズが足りなくなることがあるので、ミニバッチサイズが小さいものでも検証)
- (d) : ハイパーパラメーターを最適にし、batch norm を layer norm に置き換えたもの。
- (e) : minibatch standard deviation を有効化したもの。
- (e*) : minibatch discrimination を有効化したもの。
- (f) : Equalized learning rate を有効化したもの。
- (g) : Pixelwise feature vector normalization を有効化したもの。
- (h) : PGGAN における全ての提案手法を有効化したもの。
(a) と (h) では、上図の定性的な品質比較において、明らかに (h) のほうが優れた画像を生成しているが、その MS-SSIM では、両者の数値に大きな違いがなく、MS-SSIM では画像品質をうまく定量化出来ていないことが見てとれる。(※ これは、MS-SSIM が生成画像の多様性を評価する指標であり、本物画像と偽物画像の類似性を評価する指標ではないことによる)
一方、SWD では、両者の数値に大きな違いがあり、SWD では画像品質をうまく定量化出来ていることが見てとれる。(b) では、ベースライン (a) から Progressive growing の仕組みを有効化することで、より鮮明な画像を生成出来ていることが見てとれる。
(c) では、ミニバッチサイズを減らすことで、生成画像は不自然になり、これは SWD と MS-SSIM の両者の数値にも現れていることが見てとれる。
minibatch standard deviation を有効化した (e) では、SWD の平均値を改善しているが、従来の minibatch discrimination を有効化した (e*) では、SWD と MS-SSIM ともに値が改善されていないことが見てとれる。
(f) と (g) では、全体的に、SWD の値が改善していることが見てとれる。
全ての提案手法を有効化した (h) では、SWD の値も改善し、また生成画像の品質も高くなっていることが見てとれる。 - (a) : ベースライン手法である WGAN-GP。(生成器で featuring batch normalization、識別器で layer normalization を実施し、ミニバッチサイズ 64)
-
上図は、Progessive growing の学習時間改善の効果を示すために、横軸を学習時間、縦軸を各ラプラシアンピラミッドの解像度レベルでの SWD の値とし、それぞれ、以下の条件で学習時間を比較した図である。
(a) : CelebA(128 × 128 の解像度)での Progressive growing なし
(b) : CelebA(128 × 128 の解像度)での Progressive growing あり
(c) : 1024 × 1024 の解像度での Progressive growing 有り無し尚、点線の垂線は、Progressive growing において、生成画像の解像度が2倍になるフェイズを示している。
(a), (b) を比較すると、SWD の値が収束するのに、Progressive growing 有りの (b) では、約 1/2 の学習時間で収束出来ていることが見てとれる。また、収束時の SWD の値も Progressive growing 有りの (b) のほうが改善していることも見てとれる。
更に、高解像度スケール(128 × 128)の青線に注目すると、学習時間短縮の効果が顕著に現れていることが見てとれる。
これは、Progressive growing 有りのモデルでは、既により小さな解像度スケールでの学習が出来ているので、この学習内容を引き継いですばやく高解像度での学習も行えるためであると考えられる。(c) での 1024 × 1024 の解像度での、Progressive growing 有無の学習時間の比較では、フルの解像度(1024 × 1024)に達するまでは、Progressive growing 有りのほうが学習時間が短く、一旦、フルの解像度に達すれば、両者の学習時間は同じになることが見てとれる。
また、この 1024 × 1024 の解像度での収束するまでの時間は、Progressive growing 有りで約 96 時間、Progressive growing なしで約 520 時間となっており、およそ 5.4 倍の学習時間短縮の効果が得られた。
StyleGAN は、高解像度の画像を生成可能な ProgressiveGAN をベースラインとして、画像の画風変換(Style Transfer)の分野の知見を取り入れたアルゴリズムである。
この StyleGAN のアーキテクチャは、従来の GAN の生成器とは、かなり異なるアーキテクチャになっているが、非常にクオリティの高い画像を、高解像度で生成出来る。
又、単に高解像の画像を生成出来るだけでなく、人物画像の高レベルで大域的な属性(顔の輪郭、眼鏡の有無など)から局所的な属性(しわや肌質など)までを切り分けて、アルゴリズムで制御出来るようになっている。
上図は、StyleGAN の全体のアーキテクチャ(上段)と、生成器内部の詳細なアーキテクチャ(下段)を示した図である。
この StyleGAN のアーキテクチャには、主に、以下のような特徴がある。
-
Style-Based Generator:
StyleGAN の生成器(Style-Based Generator)は、ProgressiveGAN の生成器をベースラインとして、画風変換(Style Transfer)の分野の知見を取り入れた、従来の GAN の生成器とは、かなり異なるアーキテクチャになっている。
具体的には、以下のような構造や特徴をもつ。(詳細は後述)- Mapping network f
- Adaptive Instance Normalization (AdaIN)
- pixel-wise Noise Input と Stochastic variation
- ProgressiveGAN から入力層を排除
- Style Mixing
-
Mapping network f(潜在空間 Z から潜在空間 W への写像と潜在表現の獲得):
従来の GAN では、入力ノイズ z∈Z(Z:潜在空間)を、そのまま生成器に入力していた。 しかしながら、この方法では、下図で示すように、画像の特徴量の一部の組み合わせが存在しないようなケースにおいて、入力ノイズ z が存在する潜在空間 Z は、線形ではなく entanglement(もつれ)のある歪んだ空間となる。
このような entanglement(もつれ、歪み) のある空間では、潜在空間のある部分空間からサンプリングしたベクトル(=上図では特徴軸上のベクトル)だけを使って画像を生成したときに、その生成画像において、複数の要素が同時に変動してしまう(例えば、性別や肌色などが同時に変わる)。
そのため、このような entanglement な潜在空間では、狙い通りの画像を生成するのが困難になってしまう問題が存在する。※ 一方で、 disentangle(解きほぐし)されている潜在空間では、潜在空間のある部分空間からサンプリングしたベクトル(=上図では特徴軸上のベクトル)だけを使って画像を生成したときに、その生成画像において、変動する要素が一つのみである。(例えば、性別だけが変わる、肌色だけが変わる)
そのため、このような disentangle な潜在空間を獲得出来れば、意図している画像の生成が行いやすくなる。このような問題に対応するために、StyleGAN では、この潜在変数である入力ノイズ z をまず、mapping network f という8層のMLPから構成されるネットワークに入力し、中間的な潜在空間 W へと写像して、別の潜在変数 w∈W を獲得した上で、後段のネットワークに入力する。
ここで、mapping network は、学習されるネットワークであるので、これにより、この mapping network で写像された潜在変数 w は、下図で示すように、画像の特徴量の entanglement(もつれ)の少ない状態で最適化されていることが期待できる。
尚、StyleGAN では、この mapping network f による潜在空間の entanglement(もつれ)の disentanglement (解きほぐし)の程度を、定量的に評価する指標として、新しい2つの指標(Perceptual path length と Linear separability)を提案している。(詳細は後述)
※ disentanglement と潜在表現の獲得:
直訳すると、(複雑に絡み合った問題の)”解きほぐし” の意味であるが、ここでの意味は、データのもつれを解く最適な表現方法を獲得する(disentanglement)こと。尚、この Mapping Networks f の具体的なネットワーク構成は、上図のアーキテクチャ図のように、8つの全結合層(FC)より構成されるネットワークになっている。
※ 公式の実装では、入力潜在変数 z に対して PixelNorm でピクセル単位の正規化処理が行われていることに注意。(https://github.com/NVlabs/stylegan/blob/b061cc4effdcd1da86a0cc6e61e64b575cf35ffa/training/networks_stylegan.py#L416-L418)
但し、ここでの PixelNorm は、学習の安定化を目的とした生成器の各畳み込み層の後の中間層からの出力である特徴ベクトルに対して行う、”各ピクセル毎の”正規化処理ではなくて、ベースラインとしている PGGAN の 4×4 の解像度スケールでの潜在変数の入力時でも行われている処理の意味での PixelNorm である。
即ち、shape = 512(C)×1(H)×1(W) の潜在変数に対して、PixelNorm(※shape=512×1×1 なので実質チャンネル次元を正規化しているのみ)して、超球面上の点に変換することで、潜在変数をランダムに変化させても超球面上の点を動くようにし、滑らかな補完を実現しているものと同様の処理になっている。 -
各解像度スケールでの Adaptive Instance Normalization (AdaIN) の採用:
AdaIN は、Style Transfer の文脈では、Instance Normalization の発展版で、1つのモデルであらゆるスタイル(画風)への変換を可能にした正規化手法である。
※ 詳細は、「【補足】 Style Transfer における正規化手法(INとAdaIN)」 の項目を参照)StyleGAN において、この AdaIn は、上図のように、Mapping Network によって得られた中間潜在変数 w に対して、アフィン変換(平行移動変換)を施した後に、このアフィン変換によるスケール値とバイアス値を、それぞれAdaIN の制御パラメーターであるスケール項
とバイアス項
として用いるという用途で適用される。
ここで、AdaIN の式は、以下のような式で与えられる。この AdaIN の処理は、特徴マップ単位(=チャンネル単位)での、正規化処理になっているが、この AdaIN による変換を、各解像度スケール(4×4、8×8、16×16、・・・、1024×1024)の畳み込みの後に行うことで、各解像度スケール(4×4、8×8、16×16、・・・、1024×1024)毎に、”画像全体に渡って大域的に”、スタイル(画風)を変化させることが出来るようになる。
-
ピクセル単位の Noise Input と Stochastic variation(確率的変動):
人物画像の髪やシワなどは、確率的とみなせる細部の局所的な特徴生成として扱うことが出来る。
従来の GAN では、このような局所的な特徴生成も(大域的な特徴生成と同様にして)、潜在変数としての入力ノイズを直接生成器に入力することで実現する構造になっている。しかしこの方法では、上記の潜在空間の歪みにより、ノイズの影響を制御することが困難である。これに対して、StyleGAN では、上図のアーキテクチャ図のように、Synthesis Network g での各畳み込みの直後に、ノイズマップで、ピクセル単位のノイズを直接加えることでこれを実現する。
このノイズはピクセル単位で適用されるので、髪やシワなどの確率的な変動を、ピクセル単位で局所的に直接制御することが可能になる。
(※ これに対して、AdaIN は、特徴マップ単位で適用されるので、画風(スタイル)といった画像全体に渡っての大域的な属性を制御している。)-
ノイズの影響と効果:
上図は、この入力ノイズによる生成画像の効果を示した図である。
(a) ベースとなる画像
(b) ベースとなる画像はそのままで、それぞれノイズを変えたとき4つの画像
(c) ノイズの影響を受けている箇所をグレースケースで表示した画像(白部分が影響大、黒部分が影響小)ノイズは、髪の毛という確率的とみなせる局所的な特徴のみを変化させ、顔の向きや輪郭などの、画像全体に渡っての大域的な特徴には影響を与えていないことが見てとれる。
上図は、どの解像度スケールの層にノイズを加えるかでの生成画像の効果を示した図である。
(a) 全ての解像度スケールの層に、ノイズを加えた場合
(b) ノイズを加えない場合
(c) 高解像度の層(64×64 ~ 1024×1024)のみに、ノイズを加えた場合
(d) 低解像度の層(4×4 ~ 32×32)のみに、ノイズを加えた場合ノイズを加えないと、全体的に均一で立体感のない画像が生成されている。
ノイズを加えると、肌質などの局所的で細かなテクスチャーが加味され、よりリアルな画像が生成されていることが見てとれる。
そして、ノイズを加える解像度スケールの層に応じて、これら局所的で細かなテクスチャーの、局所性や細かさの程度にも差が出ていることが見てとれる。
-
-
ProgressiveGAN から入力層を除外し、代わりに学習済み定数マップを入力:
StyleGAN のベースアルゴリズムである ProgressiveGAN では、乱数入力で生成器への初期入力(4×4)を入力している。一方、StyleGAN の生成器では、上図のアーキテクチャ図の Synthesis Network g の開始部分で示しているように、入力層を完全に排除し、そのかわりに、学習済み定数マップ(4×4×512)を入力の開始としている。
これは、StyleGAN が、生成画像を、前述の潜在変数 w と AdaIN、及びノイズマップによって制御しているために、可変な入力が不要であることによるものである。 -
Style Mixing は、上図のように潜在空間よりサンプリングした2つの潜在変数
、及び2つの中間潜在空間
に関して、Synthesis Network g に AdaIN のパラメーターとして入力する際に、ある解像度スケールまでは、z1,w1 を入力し、それ以降の解像度スケールには、z2, w2 を入力するように切り替えるという正規化手法である。
これにより、Synthesis Network g は、隣接した解像度スケールの層間で画風(スタイル)に相関があるように学習しなくなるので、画風(スタイル)の影響を各解像度スケールの層に局在化させることが可能となる。-
上図は、1つの潜在変数 w1 から生成される画像(ソースA)と、別の潜在変数 w2 から生成される画像(ソースB)を、それぞれ縦軸横軸に置き、Style Mixing で潜在変数を w1 → w2 に切り替えたときの画像を示した図である。
上段の画像は、低解像度のスケール層(4×4 ~ 8×8)で、潜在変数を w1 → w2 に切り替えたときの画像。
中段の画像は、中解像度のスケール層(16×16 ~ 32×32)で、潜在変数を w1 → w2 に切り替えたときの画像。
上段の画像は、高解像度のスケール層(64×64 ~ 1024×1024)で、潜在変数を w1 → w2 に切り替えたときの画像。低解像度のスケール層で StyleMixing した場合は、ソースBから、顔の向きや輪郭、メガネの有無などの、画像全体に渡っての大域的な特徴が引き継がれていることが見てとれる。
又、中解像度のスケール層で StyleMixing した場合は、ソースBから、顔の向きや輪郭、髪型などの、画像全体に渡っての大域的な特徴が引き継がれており、ソースAからは、肌質などの局所的な特徴が引き継がれていることが見てとれる。
又、高解像度のスケール層で StyleMixing した場合は、ソースBから、背景色や髪の色などの、ピクセル単位での局所的な特徴が引き継がれていることが見てとれる。
-
先の MappinNetwork での説明で見たように、潜在空間における entanglement と disentanglement の程度は、意図した画像を生成するための重要な要素である。
従って、これを定量的に評価出来たら有益なのであるが、StyleGAN では、これを定量化する指標として、Perceptual path length と Linear separabilityの2つの指標を提案している。
※ 尚、これに関連して、特徴が分解されていること(=disentanglement な潜在空間)を定量化する指標も、既に考案されているが、この指標を利用するためには、入力画像を潜在変数に写像するエンコーダーが存在していなくてはならない。そのために、StyleGAN のアーキテクチャを変更するのは根本的な解決ではないため、StyleGAN ではこの手法は採用していない。
-
Perceptual path length:
entanglement(もつれ、歪み) のある空間では、各特徴が絡み合ってうまく分解できていないために、下図のように、潜在空間 Z のある端点(1)から別の端点(9)までの線形補間を実施した場合に、途中の潜在空間での値 z で生される生成画像に、非線形な変化(4,5,6)が生じる。
また直感的にも、disentanglement な潜在空間では、滑らかな変化となり、entanglement な潜在空間では、急激な変化となると考えられる。
そのため StyleGAN では、このような線形補間において、どれだけ急激に画像が変化するのかを計測することにより、Perceptual path length と呼ばれる潜在空間の entanglement(もつれ、歪み)or disentanglement (解きほぐし)の定量的指標として利用する。
即ち、潜在空間 Z での全ての両端(上図では1,9)での Perceptual path length の平均 l_z は、以下のような式で定義される。
又、中間潜在空間 W での Perceptual path length の平均 l_w は、以下のような式で定義される。
尚、この距離関数 d は、2つのVGG16 の埋め込み(embedding)から得られる特徴間の距離(perceptually-based pairwise image distance)から計算され、これが、画像間のピクセル単位の距離を測っているので、直感的に一致するものとなっている。
-
Linear separability:
先に述べたように、disentangle(解きほぐし)されている潜在空間では、潜在空間のある部分空間からサンプリングしたベクトル(=上図では特徴軸上のベクトル)だけを使って画像を生成したときに、その生成画像において、変動する要素が一つのみである。(例えば、性別だけが変わる、肌色だけが変わる)
これは見方を変えると、潜在空間内の各点(=ある1つの特徴を生成する潜在変数)が、線形超平面で分離可能であることを意味している。そのため StyleGAN では、潜在空間の内の点がどれだけうまく線形分離可能であるかを測定することで、Linear separability と呼ばれる潜在空間の entanglement(歪み)or disentanglement (解きほぐし)の定量的指標として利用する。
より詳細には、以下のような手順で評価する。
-
生成された画像にラベル付けするために、2値特徴(例えば、男性の顔と女性の顔)の数に応じて、StyleGAN とは別の補助ネットワーク(分類器)を用意する。
-
この補助ネットワークを、(人物画像が分類できるように)CelebA-Hデータセットで学習する。
-
1つの特徴の分類性能を測定するために、StyleGAN から20万枚の画像を生成し、それを先の学習した補助ネットワークを使って分類する。
そして、分類器のスコアの高かった半分の10万枚のみを、ラベル付き潜在変数として採用する。
※ この際のラベリングは、この分類器での分類結果(例えば、男性の顔に分類と女性の顔に分類)を利用してラベリングされる。 -
これらのラベリングされた潜在変数が、その潜在空間上で、ラベル毎に線形分離可能であるかを、線形SVMで実際に分類してみて評価する。
-
分離のしやすさの定量化のために、各特徴に対して、以下の条件付きエントロピーの exp を計算する。
この条件付きエントロピー H(Y│X) は、1つのサンプルの真のクラスを決定するために、どのくらい多くの追加情報が必要であるかを示しており、この値が小さいほど、分類が容易であることを示している。
-
-
Perceptual path length と Linear separability での性能比較結果:
上表は、StyleGAN の論文中で提案されている新たなデータセット FFHQ(Flickr-Faces HQ)において、Perceptual path length と Linear separability を計測した表である。
StyleGAN のベースラインである従来の ProgressiveGAN の生成器(B)と比較して、StyleGAN の生成器(D,E,F)では、Perceptual path length と Linear separability の値が共に、大幅に小さくなっており、潜在空間 Z よりも、中間潜在空間 W のほうが、disentanglement(解きほぐし) の程度が改善していることが見てとれる。
又、この改善の程度は、StyleGAN にノイズ有りで StyleMixing 無しとしたアーキテクチャが最も改善され、StyleMixing を導入すると、潜在空間の entanglement の程度を多少強めてしまうことも見てとれる。
GANimaton は、心理学で用いられている顔の表情表現である Facial Action Coding System (FACS) の知見と、条件付き GAN(cGAN)を拡張したものを組み合わせることで、ある人物顔画像を、目的の表情をした顔画像に自動変換することを実現した image-to-image 手法である。
- Facial Action Coding System (FACS):
顔の特定の表情筋に由来する Action Units (AUs) と呼ばれるものの動かし方の組み合わせから、人間の顔の表情を表現する仕組み。
例えば、恐れ [fear] の表情は、
「AU1 : Inner Brow Raiser(内部の眉の上がり)、AU2 : Outer Brow Raiser(外部の眉の上がり), AU4 : Brow Lowerer(眉の下がり)、AU5 : Upper Lid Raiser(まぶたの上がり)、AU7 : Lid Tightener(まぶたの締める)、AU20 : Lip Stretcher、AU26 : Jaw Drop(口をあんぐり開ける)」 という AUs の組み合わせで表現する。
そして、各 AU の信号の大きさにより、感情の程度の大きさを表現する。
このような FACS により、比較的少ない数(=30個程度)の特定の表情筋に由来する AUs から、それらの動かし方の組み合わせで、7000 種類以上の表情を表現できるようになる。
GANimation の利点としては、以下のようなものが挙げられる。
-
学習用データに、目標画像や同一人物の異なる表情の画像ペアの必要としない:
従来の手法では、学習用データに同一人物の異なる表情の画像ペアを必要としていたが、GANimation では、このようなデータは必要とせず、3つのサンプルの組{入力画像、AUs 状態ベクトル、AUs状態ベクトルの目標ベクトル}があれば十分である。 -
1つの入力画像から、豊富な種類の表情を生成出来る:
1つの同じ入力画像から、少量の AUs状態ベクトル / AUs パラメーターを通じて、豊富な種類の表情を生成出来る。 -
背景や照明条件に対するロバスト性:
GANimation では、生成器が attention mask を別途生成することで、顔の表情に関連する特定の部位のみの画像のみを合成することを実現している。
これにより生成画像において、背景や照明条件が変化しても、最もらしい表情画像が生成でき、この点において SOTA を超えている。
まず以下のように、表情変換問題を定式化、モデル化する。
-
:AUs 状態ベクトル 前述の Facial Action Coding System (FACS) における、Action Units (AUs) の状態を記述するためのベクトルで、このベクトルの各要素 y_n が、n 番目の AUs の大きさを 0~1 の正規化された値で示している。
-
:AUs 状態ベクトルの目標ベクトル(下図では笑顔の表情に対応する状態ベクトル) 生成器に生成させたい表情に対応する状態ベクトル。このベクトルは、ランダムに生成されるものとする。
-
:生成器からの出力画像。 AUs状態ベクトル
に対応する表情をもつ生成画像。言い換えると、AUs状態ベクトル
で条件付けされた画像となる。
GANimation の目的は、
入力画像 を、特定の表情に対応したAUs 状態ベクトルの目標ベクトル
で条件付けされた生成器からの出力画像
に変換するための写像
を学習することである。
この際に必要となる学習用サンプルは、3つのサンプルの組 となる。
※ 従来の方法とは異なり、目標画像 や、同一人物の異なる表情の画像ペアを必要としていないことに注目。
※ 実際の学習は、EmotioNet データセットから、この3つのサンプルの組を取り出して学習を行う。
このような写像を実現するために、GANimation では下図のようなアーキテクチャを構成している。
-
生成器のアーキテクチャ:
-
条件付きGAN(cGAN)でモデル化:
生成器 G は、生成器に生成させたい表情に対応する AUs 状態ベクトルを条件とする cGAN でモデル化され、
で表現される。
-
双方向 [bidirectionally] の構造を持つ:
入力画像を、目標の表情
をした生成画像
に変換するための写像
を行う生成器と、
生成画像を、元の入力画像
に戻すための写像
を行う生成器の2つが存在する。
※ 更に、それぞれの過程で、後述の attention mask と color mask 用の生成器の2つが存在するので、合計4つの生成器が存在することになる。
※ 元に戻す変換を行う生成器が必要である理由は、画像の自分が同一人物であることを保証するためである。(詳細は、後述の損失関数の項に含まれる identity loss を参照) -
attention mask と color mask:
表情の画像変換を行う際に、表情変換に影響するようなある特定の画像領域のみに変換対象を限定する目的で、上図のように生成器が、attention mask と color mask を生成し、それらを合成することで、最終的なレンダリング画像を生成するようにする。
ここで、attention mask は、元の画像の各ピクセルが最終的にレンダリングされる画像に、どの程度寄与しているのかを表しており、これにより、表情変換に影響するようなある特定の画像領域のみに、変換対象を限定するすることが出来る。
一方、color mask は、画像全体に渡っての変換画像の色情報を保持する。そして、attention mask と color mask の合成は、以下のような線形補間の式に従って行われる。
このような attention 構造により、従来の手法とは異なり、画像の内容の背景や照明条件が変化しても、うまく表情の変換が出来るようになる。
-
instance norm で学習を安定化:
batch norm を使用するよりも、instance norm のほうが学習が安定化したので、instance norm を使用する。
-
-
-
偽物画像と本物画像を直接的に比較する構造が存在しない:
一般的な識別器とは異なり、生成器が生成する偽物画像と学習データの本物画像を直接的に比較する構造は存在せず、生成器が生成する従来の偽物画像を入力するのみである。
それ故に、従来の手法とは異なり、本物画像(=目標画像)や同一人物の異なる表情の画像ペアを必要としない。
-
AUs 状態ベクトルを推定するための識別器
を並列的に追加:
上記のように学習データの本物画像を必要としない代わりに、生成器からの生成画像(=偽物画像)の表情に対応したAUs 状態ベクトルを推定(推定値:
)するための識別器
を並列的に追加する。
-
識別器として、WGAN-GP ベースの識別器(クリティック)D を使用:
そのため、識別器(クリティック)の出力は、リプシッツ連続な関数となる。 -
識別器として、PatchGAN の構造を採用:
image-to-image のタスクにおいては、画像の高周波成分(=局所的な特徴量)と低周波成分(=大域的な特徴量)の両方を捉えることが重要となるが、GANimation においては、この識別器の PatchGAN の構造により、画像の高周波成分(=局所的な特徴量)を強く捉えることを可能にしている。
※ 一方、画像の低周波成分(=大域的な特徴量)に関しては、後述の損失関数の1つの項である identity loss における、ピクセル単位でのL1ノルムで強く捉えることを可能にしている。 -
入力画像の feature normalization(特徴量の正規化処理)を除外:
後述の損失関数における、識別器の WGAN-GP での勾配ペナルティー項を計算するときに、識別器の勾配のL2ノルム
が、各入力画像 I^~ に独立してではなく、ミニバッチデータ全体に関して計算されることを回避するために、入力画像の feature normalization(特徴量の正規化処理)を除外する。
-
GANimation の損失関数は、以下で定義する4つの損失関数(image adversarial loss、attention loss、conditional expression loss、identity loss)の線形結合によって表現される。
※ attention loss は、入力画像から生成画像へのプロセスと、生成画像を元の入力画像に戻すプロセスの両方プロセスで存在することに注意。
-
image adversarial loss:
識別器が採用している WGAN-GP で用いられる損失関数。
Earth-Mover 距離の双対表現の式から導出され、識別器の出力がリプシッツ連続性を満たすために、勾配ペナルティーの項が課せられている。
この損失関数と誤差逆伝播法により、生成画像の分布が、学習データの画像の分布に一致するに動作する。 -
attention loss:
※ 上式と上図は、入力画像から生成画像へのプロセスで定義される attention loss。
※ 生成画像を元の入力画像に戻すプロセスでも同様の関係で、attention loss が定義される。attention mask の各ピクセル値(=マスク値)は、0.0 ~ 1.0 のグレースケール値となるが、この attention mask を単純に学習させた場合、学習の過程で各ピクセルのマスク値が簡単に 1.0 の値に飽和してしまう。
この飽和値 1.0 では、入力画像の全てのピクセルを完全に attention することになるので、の関係、即ち、入力画像と生成画像が同じであるような、意味のない結果となってしまう。
そのため、GANimation では、損失関数に L2重みペナルティーの項を課した attention loss を導入することにより、各ピクセルのマスク値が飽和しない(=attention がかかり過ぎない)ようにする。更に、attention mask と color mask を合成するときに、画像全体に渡っての色の変化がスムーズになるように、画像全体に渡っての全変動正規化項を attention loss に導入することで、attention mask の各隣接ピクセルのマスク値の値が近くなるようにする。
-
→ y ̂_g の部分は、y_r が正しい?この場合、アーキテクチャ図の識別器のどの部分に y_r が入力されるのか?(アーキテクチャ図では、y_r は生成器にのみ入力されているように思える)
→ y_r ではなく y ̂_g とした場合に、D_y (y ̂_g ) は、識別器に並列的に追加されている AUs 状態ベクトルを推定するため構造を、再度識別器に戻していることになるのか?
→ 論文中での記載では不明のため、公式の実装コードで要検証。特定の表情に対応したAUs 状態ベクトルの目標ベクトル
で条件付けされて生成された、生成器からの出力画像
が、対応する AUs 状態ベクトル
に正しく回帰(
)するようにするための損失関数。
この損失関数により、生成器は、目標の表情に対応した AUs 状態ベクトルをもつ画像を生成出来るようになる。
※ この損失関数がないと、単にリアルな顔画像を生成するのみになってしまう。この AUs 状態ベクトルの回帰のための損失関数(=AUs回帰損失)には、「生成器が生成した偽物画像がもつ AUs 状態ベクトルが、入力した AUs 状態ベクトル
に正しく回帰出来ているかの項」 と「本物画像がもつ AUs 状態ベクトルが、正しく回帰出来ているかの項」という2つの項が含まれる。
-
入力画像と、再変換した出力画像
が同一人物であることを要請するために、入力画像
と再変換した出力画像
との間のピクセル単位でのL1ノルムで定義した損失関数。
image-to-image のタスクにおいては、画像の高周波成分(=局所的な特徴量)と低周波成分(=大域的な特徴量)の両方を捉えることが重要となる。
この内、画像の高周波成分(=局所的な特徴量)に関しては、前述の識別器での PatchGAN の構造により、強く捉えることを可能にしている。
一方、画像の低周波成分(=大域的な特徴量)に関しては、この identity loss における、ピクセル単位でのL1ノルムで強く捉えることを可能にしている。
以下の表は、GANimation の論文中での実験の実験条件を示している。
-
attention mask と color mask のレンダリング結果:
上図は、AUs の種類(AU1,AU2,...)に対応する各AUs 状態ベクトルから生成された attention mask と color mask 、及びそれらの合成画像を示した図である。
各AUs の種類に対応する表情が、うまく生成出来ていることがわかる。 -
2つの表情の間の補間能力と照明条件等に対するロバスト性:
上図は、AUs 状態ベクトル y_r で表される元の画像から、(変換させたい表情に対応した)AUs 状態ベクトルの目標ベクトル
で表される生成画像
との間で、線形補間
の式に従って生成される補間画像の様子を示した図である。
元の画像から目標表情へのスムーズな補間が出来ていることが見て取れる。
又、不自然な照明条件(4段目、5段目)や、アバターのような非現実世界の画像(6段目)に対しても、うまく表情変換が出来ていることが見て取れる。 -
他の手法(CycleGAN, StarGAN等)との比較:
上図は、他の表情変換手法(DIAT, CycleGAN, IcGAN, StarGAN)との比較結果を示した図である。
公正な比較のために、RaFD データセットにおける、同一人物の離散的な感情のカテゴリ (例えば、幸せ、悲しみ、恐怖など)をレンダリングするタスクにおいて、(これらの手法の中で最も最近の研究である)StarGAN によって、学習されたこれらの手法の結果を適用した?
又、DIAT と CycleGAN は、条件付けの構造を持たないアルゴリズムなので(cGANの亜種ではない)、同一人物の元の感情(ソース)と目標感情(ターゲット)の全ての可能なペアに対して、独立的に学習させている。上図からわかるように、GANimation でのレンダリング結果が、視覚的な正確性と空間的な解像度のトレードオフにおいて、最も高いクオリティーの画像を生成していることが見て取れる。
※ GANimation では、生成画像のクオリティーが最も高いだけではなく、これら他の手法(DIAT, CycleGAN, IcGAN, StarGAN)と比較して、同一人物の異なる表情の画像ペア(=ここでは、同一人物の離散的な感情のカテゴリ)を必要としていない点にも注目。-
生成画像の表情バリエーション:
上図は、ある1つの入力画像(最上段左隅)から、14 個の AUs状態ベクトル / AUs パラメーターを通じて生成された、同一人物のいくつかの種類の表情画像である。
GANimation では、ある1つの入力画像から、少数の AUs状態ベクトル / AUs パラメーターを通じて豊富な種類の同一人物の表情を生成出来ていることが分かる。 -
wild な画像に対する変換:
上図は、顔画像領域でトリミングされていない wild な画像に対する表情変換の結果を示した図である。
顔画像領域でトリミングされていない wild な画像であっても、うまく表情変換出来ていることが見て取れる。但し、この変換においては、以下のような3ステップで構成されるトリミング処理を導入していることに注意。
-
上図は、いくつかの特徴的な画像に対しての表情変換タスクにおいて、その成功事例(➀ ~ ⑥)と失敗事例(⑦ ~ ⑩)を示した図である。各画像に対して以下のようなことが見てとれる。
➀ 人間のような彫刻での顔画像 → 入力画像のアーティスティックな効果を保持したたまま表情変換出来ている。
➁ メガネをかけているリアルではない顔画像 → attention map がメガネのような人工物をどのように避けているのかに注目。
➂ ひげなどの不均一なテクスチャーをもつ画像 → ひげを追加 or 削除することによって、テスクチャを均質化しようとしていない点に注目。
④ 非現実的な顔テクスチャーでの顔画像 → テクスチャーに影響を与えることなしに、表情を変換している点に注目。
➄ 非標準的な照明や色をもつ顔画像 → 非標準的な照明や色に対してもロバストになっている。
⑥ 顔のイラスト → このような単純なイラストであっても、うまく表情変換出来ている。
⑦ 入力画像が極端な表情をもつ顔画像 → このようなケースでは、attention メカニズムがうまく機能せず、うまく表情変換出来ない。
⑧ 眼帯で顔の一部が隠れている顔画像 → うまく表情変換出来ていない。
⑨ サイクロプスのような実在しない擬人的な顔を持つ生物 → うまく表情変換出来ていない。
⑩ 動物の顔画像 → 動物ではなく人間のような表情変換になっている。尚、論文中では、このような失敗事例(⑦ ~ ⑩)が発生するのは、学習データの数が十分でなかったためと推測している。
-
生成モデルの種類には、GAN や VAE の他に、フローベースの生成モデル [Flow-based Generative Models] と呼ばれるカテゴリが存在する。
-
フローベースの生成モデルの基本的な考え方とアーキテクチャ:
このフローベースの生成モデルでは、GAN のように生成器と識別器を学習するのではなく、又、VAE のように decoder p(x|z) や encoder q(z|x) を学習するのではなく、潜在変数から目的である観測データ
への決定論的な(=確率的でない)写像
即ち、
を直接的に学習すること考える。
ここで、この決定論的な写像 f は可逆な写像で全単射であるとする。
※ 但し、後述で述べるように、この写像 f を直接計算することは実際上には困難であるので、部分的な写像 f_1,f_2 ,..., f_K を繰り返して合成写像とすることで、徐々に目的の写像 f に近づけて行くことになる。このような部分的な写像の繰り返し(=合成写像)をフロー [flow] と呼ぶ。
従って、フローベースの生成モデルにおける(元の観測データ x への)生成や推論は、VAE のように encoder,decoder を用いなくとも、形式的には以下の図のように、フロー
と可逆な逆写像
によって直接的に行えるようになる。
-
フローベースの生成モデルの定式化:
今知りたいことは、観測データを生成する確率分布
の分布の形状であるが、この確率分布
の式は、変数変換の公式 [change of variables theorem] により、以下の式のように書き直せる。
生成モデルの目的は、この確率分布
の対数尤度
の最大化である。これを行うためには、可逆な写像 f でかつ、ヤコビアン
が比較的少ない計算量で計算可能でなくてはならない。
しかしながら、このような写像 f を、直接的に求めることは困難であるので、フローベースの生成モデルでは、部分的な写像を繰り返して合成写像とすることで、段階的に目的の写像 f に近づけていくことを考える。即ち、
このような部分的な写像の繰り返し(=合成写像)のことをフロー [flow] と呼び、フローによって有効な観測データの観測分布 p_x (x) が生成可能(=目的の写像に近づく)なとき、このフローは正規化フロー [normalizing flow] であるという。
このフローの考え方を採用すると、先の観測データの確率分布の対数尤度の式は、以下の式のように書き換えられる。(詳細計算略)
※ ヤコビアンの計算が、各層 i でのヤコビアンの計算に分解されていることに注目。
-
ベイズ推定:
以下のような確率モデルがあったとする。
ここで、この確率モデル p_θ(x,z) における潜在変数 z の事後分布 p_θ(z|x) を、以下で定義されるベイズの定理を用いて推定することを考える。
このようなベイズの定理を用いて、確率モデル(=ベイズモデリング)の潜在変数 z の事後分布 p_θ(z|x) を求める手法やこの事後分布を最大化するパラメータ θ を求める手法をベイズ推定という。ここで、観測データ x や潜在変数 z が共に、ガウス分布に従うような場合は、このベイズ定理の分母の積分 ∫p_θ(x|z)dz を解析的に求めることが可能となり、事後分布 p_θ(z|x) の解析解を得ることが出来る。(※ このような解析解で求まる場合 をclosed form で解けるともいう。)
しかしながら、一般的には、このように事後分布の解析解が得られるケースは稀で、そのため、数値計算的に近似解を求めることになる。
-
最尤推定:
ベイズの定理において、尤度 p_θ(x|z) を最大化するパラメータを求める手法。
※ これに対しベイズ推定は、尤度 p_θ(x|z) ではなく、事後分布 p_θ(z|x) を最大化するパラメータを求める手法。 -
点推定:
(確率分布ではなく)特定のパラメータ値で、対象を推定する手法。
但し、点推定では、確率分布がなだらかでないような場合やデルタ関数のような局所的な分布でない場合においては、偏った推定値になってしまう問題がある。
※ 一方、ベイズ推定では確率分布で近似するので、近似が正しく行えていればこのような問題は発生しない。 -
MAP 推定(最大事後確率推定):
観測データ x のサイズが十分に大きく、事後確率 p_θ(z|x) がデルタ関数のように局在化している場合において、事後確率を、
で点推定する手法を、MAP推定という。 -
MCMC法(マルコフ連鎖モンテカルロ法)による事後分布の推定:
事後分布の真の分布を均衡分布として持つマルコフ連鎖から、モンテカルロサンプリングを繰り返すことで、真の事後分布の確率分布に近似する(=収束させていく)手法。
但し、このMCMC法で真の分布に収束するには、非常に多くの試行回数が必要となる問題がある。 -
平均場近似による事後分布の推定:
記載中...
-
変分ベイズ法による事後分布の推定:
ベイズ推定において、潜在変数の事後分布を(解析的にではなく)変分近似的に求める手法を変分ベイズ法という。
具体的には、以下のようになる。まず、事後分布 p_θ (z|x) を別のパラメーター ϕ を持つ関数 q_ϕ (z|x) で表現することを考える。
これには、2つの確率分布間の距離を表すKLダイバージェンスを最小化すればよいと考えられるので、
今考えているのは、別のパラメーター ϕ を持つ関数 q_ϕ (z|x) でKLダイバージェンスの最小化することなので、
この式より、事後分布 p_θ (z|x) を別のパラメーター ϕ を持つ関数 q_ϕ (z|x) で近似(=推定)するには、q_ϕ (z|x) と p_θ (z) の間のKLダイバージェンスを最小化、言い換えると、2つの分布の形状を出来るだけ近い分布にしながら、変分下限 [ELBO : Evidence Lower BOund] に関連する右辺第2項の期待値を最大化すればよいことがわかる。
尚、VAE では、この q_ϕ (z|x) と p_θ (z) の間のKLダイバージェンスを解析的に計算可能にするために、分布 p_θ (z) が正規分布に従っている。
即ち、
と仮定する。
そして、q_ϕ (z|x) としてニューラルネットワークでこの確率分布を推定(=近似)する。(※ 厳密には正規分布の平均値と分散値を推定する)
即ち、
※ VAE の詳細は、項目「VAE」に記載
2つの確率分布 P,Q 間の距離を表す指標として、KLダイバージェンスと呼ばれる以下のような指標が考えられる。
※ ここで、定義から分かるように、KLダイバージェンスは、2つの確率分布 P,Q に対して、対称ではない。()これは、例えば、A地点からB地点までの距離と、その反対のB地点からA地点までの距離が異なることを意味している。従って、距離の公理を満たしていないことになり、厳密には距離ではないことになるが、便宜上、統計的距離という。
以下の図は、2つの確率分布 P,Q の具体的な確率分布の形状として、いくつかの正規分布でKLダイバージェンスを求めた図である。
2つの確率分布 P,Q が完全に一致するとき、0の値となっており、
2つの確率分布 P,Q が重ならない部分が大きくなるにつれ、大きな値となっていることが分かる。
KLダイバージェンスは、クロスエントロピーとエントロピーの差で記述することも出来る。
即ち、エントロピーは
クロスエントロピーは、
であることより、
となり、従って、
の関係が成り立つことがわかる。
KLダイバージェンスは、距離の公理の一つである対称性の性質を満たさない()ので、扱いづらいという問題があった。
(※この対称性の性質を満たさないことは、例えば、A地点からB地点までの距離と、その反対のB地点からA地点までの距離が異なることを意味している。 )
JSダイバージェンスは、対称性の性質を満たすように、KLダイバージェンスを使って、以下のように定義される2つの確率分布 P,Q 間の距離指標である。
以下の図は、2つの確率分布 P,Q の具体的な確率分布の形状として、いくつかの正規分布でKLダイバージェンスとJSダイバージェンスを求めた図である。
黄色枠で示した確率分布は、2つの確率分布 P,Q の平均値である M である。
この平均分布 M は、各々の確率分布 P,Q から見て対称であるが、
JSダイバージェンスでは、その定義式より、(対称である)平均分布 M と各々の確率分布 P, Q とのKLダイバージェンスを計算することで、対称性の性質を満たすようにしていることがわかる。
2つの確率分布 P,Q が重ならない部分が大きくなるにつれ、JSダイバージェンスは小さな値となっていることが分かる。
GAN においては、生成画像を人目ではなく、如何にして自動的に評価するのか?というのが1つの課題となっている。
Inception score は、このような問題を解決するために考案された、GANの生成画像を評価するための代表的な評価値の1つである。
Inception score では、Inception モデルと呼ばれる画像識別モデルでの予想確率を用いて、スコアの計算が行われる。
より詳細には、画像データを与えない場合の、Inception モデルのラベル y の予想確率 p(y) と、i 番目の画像データ x_i を入力した場合の、Inception モデルのラベル y の予測確率 を用いて、以下のように、その2つの確率分布間
のKL-ダイバージェンスの和で定義される。
ここで、Inception score は、上記のように、ISモデルの2つの予想確率分布間のKL-ダイバージェンスの和で定義されているので、2つの確率分布の差異が大きくなるほど、ISスコアも大きくなるようになっている。
上図は、あるケースにおける2つの確率分布 を形状を示した図である。
p(y) は、画像データという条件を与えない場合の Inception モデルからの予想確率となっているので、一般的に、ある特定のクラスラベルの確からしさが分からず、一様分布に近い平坦な形状となっている。
一方、 は、ある画像データ x_i を指定した場合の Inception モデルからの予想確率となっているので、その分ある特定のクラスラベルの確からしさが高まり、凹凸のある形状になっている。
この際に、 において、ある特定のクラスラベルでの確からしさが高まり、凹凸が激しくなるほど、2つの分布間の差異が大きくなるので、ISスコアも大きくなる。(左図)
逆に、ある特定のクラスラベルでの確からしさそれほど高まらず、比較的平坦になるほど、2つの分布間の差異が小さくなるので、ISスコアも小さくなる。(右図)
これは言い換えると、「Inception モデルで識別しやすい画像であるほど、ISスコアが大きくなる。」 ことを意味している。
Earth-Mover距離(Wassertein距離)は、2つの確率分布間の距離指標の1つであるが、下図のように、確率分布を1つの山とみなすと、片方の確率分布の山をもう片方の確率分布の山に,土を輸送して変形させるための最小の労力であるという最適輸送問題ともみなせる。
(※それ故、Earth-Mover という名前がついている。)
そして、Earth-Mover距離(EMD,Wassertein距離)は、この 「(輸送する労力)=(輸送する土の量)×(輸送する距離)」 の関係において、全ての組み合わせで総和した以下のような式で定義できる。
2つの確率分布の山を一致させるさせるためには、無数の方法が考えられるが、そららの方法の中で最小の労力(=最小のEMD)で済むような、最適な輸送方法を考えるのが、考えるべき最適輸送問題となる。
そして、この最適輸送問題は、一般的な線形計画法を用いて解くことが出来る。
しかし、結論から述べると、この最適輸送問題を、単純に線形計画法の主形式で解く方法では、GANのように確率変数 x,y の次元が大きい場合には、その計算量が現実的ではなくなる。
一方、この線形計画問題の双対形式で与える式では、現実的に計算可能な式になっている。
そして、この線形計画法の双対形式での、
Earth-Mover距離(EMD,Wassertein距離)の式は、以下のようになる。(式の導出略)
※ 関数 f のリプシッツ連続性の要件は、線形計画問題おける制約条件から発生している。
セマンティックセグメンテーション(領域抽出)のタスクでは、局所的な特徴と、画像全体の特徴の両方を、元の画像上で捉えることが重要となる。
CNN では、畳み込み層が物体の局所的な特徴を抽出し、プーリング層が物体の全体的な位置情報をぼかしている役割を持っていた。
そのため、層が深くなるほど、抽出される特徴は、より局所的になり、物体の全体的な位置情報はより曖昧になるので、従来のCNNベースの手法(VGG16など)では、局所的な特徴量と、画像全体の特徴の両方を捉えることが困難となる。
U-Net は、セマンティックセグメンテーションのタスクにおけるこの問題を解決するために、全結合層を利用してしない Fully Convolutional Network(FCN)のアーキテクチャをベースとして、ダウンサンプリングのパス(contractiong path)とアップサンプリングのパス(extractiong path)、及び、skip connection の構造を加えることで、この 「(セマンティックセグメンテーションで重要となる)局所的な特徴量と、画像全体の特徴の両方を捉えること」 を実現する。
※ U-Net は、このように、画像のセマンティックセグメンテーションでの用途で考察された手法であり、医療画像セグメンテーションのコンペで当時の SOTA を達成している。
※ 尚、この U-Net は、オートエンコーダー(AE)としての側面もある。
※ 又、この U-Net は、pix2pix の生成器側のネットワークとして採用されている。
上図は、U-Net のアーキテクチャ図である。
この U-Net のアーキテクチャには、主に、以下のような特徴がある。
-
ダウンサンプリングとアップサンプリング(Encoder と Decoder)
- 概要で述べたように、セマンティックセグメンテーションのタスクにおいては、物体の局所的な特徴と、物体の全体的な位置情報を同時に捉えることが重要となるが、U-Net では、max pooling によるダウンサンプリング側(Encoder側)の深い層で局所的な特徴を捉え、浅い層で、全体的な位置情報を捉えること出来るようにしている。
- そして、up-conv によるアップサンプリング側(Decoder側)で、特徴を保持したまま、画像の解像度を復元し、出力する。
- これらの一連の処理は、Encoder(符号器)と Decoder(復号器)に相当する処理となっているため、U-Net は、一種のオートエンコーダー(AE)ともみなせる。
-
skip connections
- U-Net の主な特徴の1つは、Encoder と Decoder との間に、skip connections と呼ばれる構造を持つことである。(※ この構造の効果は、ResNet に似ている。)
- これは、CNNでの、Encoder-Decoder のように全ての情報をボトルネックまでダウンサンプリングさせるのではなく、共通の特徴量(=局所的な特徴と物体の全体的な位置情報)は Encoder-Decoder 間を、skip connections 経由でスキップさせて、上図のアーキテクチャ図の下側のボトルネック部分を回避することで、共通の特徴量におけるデータ欠損を回避させるというものである。
- より詳細には、Encoder 側の深い層ほど局所的特徴が強く、浅い層ほど全体的な位置情報が強くなっているので、深い層での skip connections は、局所的特徴が強い特徴マップをスキップさせ、浅い層での skip connections は、全体的な位置情報が強い特徴マップをスキップさせることになるが、Decoder 側では、特徴を保持したままアップサンプリングが可能であるので、結果として、「(セマンティックセグメンテーションで重要となる)局所的な特徴量と、画像全体の特徴の両方を捉えること」 を実現できるというものである。
- 尚、Encoder 側からのスキップした特徴マップと、Decoder側からのアップサンプリングされた特徴マップをマージする際には、Encoder 側の特徴マップの中央部分を crop(切り出し)して、両者のサイズを一致させた上でマージを行う。これは、Encoder 側では、padding=0 の畳み込みで特徴サイズが(ダウンサンプリングとは違う意図で)小さくなっているために、Decoder 側で2倍間隔でアップサンプリングされた特徴マップと、サイズが一致しないくなってしまうためである。
-
全結合層を利用していない。
- U-Net では、全結合層は使用されていない。
- このような畳み込みのみからなるネットワークは、 Fully Convolutional Network(FCN)と呼ばれるが、U-Net は、この Fully Convolutional Network(FCN)のアーキテクチャをベースとして設計されている。
- U-Net で全結合層が使用されていない理由としては、CNN での画像分類のアーキテクチャの出力(この場合は最後の層が全結合層になる必要がある)とは異なり、ネットワークの出力が画像であることが1つの理由として考えられる。
- 別の理由としては、overlap-tile strategy によって、任意の大きな画像のシームレスなセグメンテーションを許可するため?(元論文での記載より)
記載中...
GAN における課題の1つにモード崩壊という問題が存在する。
この現象は、GAN のアーキテクチャにおいて、識別器に、生成器からの生成画像の多様性を認識できる構造がないために発生してしまう問題であるとみなすことも出来る。
※ この多様性を知る構造が識別器に備わっていれば、多様性を増大するような方向に、誤差逆伝播法で勾配を生成器に伝搬すれば、多様性のある生成画像が自動生成出来て、モード崩壊を回避出来ることになる。
Minibatch discrimation では、この考えに基づき、識別器に、ミニバッチデータ全体の多様性を、ミニバッチ間でのデータの距離から判断するようにする。
以下の図は、この Minibatch discrimation での全体的な処理の流れを示した図である。
上図に示した、Minibatch discriminator における、各処理の詳細は、以下のようになる。
-
この各中間層からの出力
に、3階のテンソル
を乗算して、B×C の行列
を得る。(※ ここで、テンソルの次元数 B,C は学習可能なハイパーパラメータである。) -
画像 x_i における行列 M_i の b行目のベクトル M_(i,b) と、
別の画像 x_j における行列 M_j の b行目のベクトル M_(j,b) とのL1ノルムを
で計算することで、2つの画像間の距離を計算する。 -
計算した2つの画像間の距離
に対して、ミニバッチデータ内の他の全ての画像
に関しての和を取る。
※ この計算結果は、ある画像とミニバッチ内でのその他の画像間の距離となっているが、これは見方を変えると、ミニバッチ内でのデータの多様性を示していることになる。従って、この処理(と後述の5)により、識別器にデータの多様性を認識できる構造が入っていることになる。 -
画像 x_i における行列 M_i の 行数 b=1~B に関して同じような計算を行い、それらを合わせてベクトル化する。
-
Instance Normalization(IN):
BatchNorm のように、バッチサイズ単位で正規化するのではなく、特徴マップ単位(=画像の縦横幅単位)で正規化する手法。Style Transfer のタスクにおいては、Batch Normalization をこの Instance Normalization に変えることで、Style Transfer の質において大きな向上が達成されることが報告されている。
※ 論文「Instance Normalization: The Missing Ingredient for Fast Stylization」(https://arxiv.org/abs/1607.08022)
-
Adaptive Instance Normalization (AdaIN) :
AdaIN は、上図のように、StyleTransfer における変換タスクを実現するネットワークにおいて、instance norm の係数ベクトル(=アフィンパラメーター)
を、Style 画像での平均値と分散値
に置き換えたものになっている。
※ 言い換えると、AdaIN は、instance norm に対してスタイル特徴の統計量(=平均値、分散値)の正規化を利用してスタイル変換を行っている。※ このネットワークと AdaIN は、論文 「Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization」(https://arxiv.org/abs/1703.06868) で提案されたもの。
StyleTrasnfer の文脈での instance norm では係数ベクトル(=アフィンパラメーター)
で、正規化された入力をどのようにスケーリング、平行移動するかを学習していたのに対して、この AdaIN では、これをスタイル画像(=画風)の平均値と分散値で置き換えるので、パラメーターの学習は不要となる。但し、別途スタイル画像(=画風)の平均値と分散値で計算する必要は出てくる。
この AdaIN を用いることで、下図の比較結果のように、Style Transfer においてスタイル品質、速度(訓練時/推論時)、柔軟性(一度の訓練で適用できるスタイルの数)の面で高いレベルのトレードオフが得られる。
※ 論文「Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization」では、ネットワーク構成や AdaIN の導入の他に、損失関数の工夫も提案しており、このトレードオフの向上はそれら全ての工夫で得られるものであるが、ここでは AdaIN の意味について着目して説明しているのでそれらの詳細は述べない。
強調文字付きは、特に参考にさせたもらったサイトです。
-
全般
-
VAE
-
GAN
-
DCGAN
- 【元論文】[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
- 実装
- DCGAN Tutorial — PyTorch Tutorials 1.0.0.dev20190327 documentation
- GitHub - znxlwm/pytorch-MNIST-CelebA-GAN-DCGAN: Pytorch implementation of Generative Adversarial Networks (GAN) and Deep Convolutional Generative Adversarial Networks (DCGAN) for MNIST and CelebA datasets
- PyTorch (12) Generative Adversarial Networks (MNIST) - 人工知能に関する断創録
-
Conditional GAN(cGAN)
-
Wasserstein GAN
- 【元論文】[1701.07875] Wasserstein GAN
- Read-through: Wasserstein GAN
- From GAN to WGAN
- GAN — Wasserstein GAN & WGAN-GP
- Wasserstein GAN と Kantorovich-Rubinstein 双対性 - Qiita
- [DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adversarial Networks
- Wasserstein GAN(WGAN)でいらすとや画像を生成してみる - 緑茶思考ブログ
- Wasserstein GAN [arXiv:1701.07875] – ご注文は機械学習ですか?
- Wasserstein GAN (WGAN) - DeepLearningを勉強する人
- 実装
-
pix2pix
-
U-Net
- 【元論文】U-Net: Convolutional Networks for Biomedical Image Segmentation
- Deep learningで画像認識⑨〜Kerasで畳み込みニューラルネットワーク vol.5〜
- U-Net:ディープラーニングによるSemantic Segmentation手法
- U-Net: Convolutional Networks for Biomedical Image Segmentationの紹介
- オートエンコーダーとしてのU-Net(自己符号化から白黒画像のカラー化まで)
- Semantic Segmentation — U-Net (Part 1)
- 実装
-
Minibatch discrimation
-
CycleGAN
-
StarGAN
- 【元論文】[1711.09020] StarGAN: unified generative adversarial networks for multi-domain image-to-image translation
- [DL輪読会]StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation
- 【論文メモ:StarGAN】StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation
- 実装
-
SAGAN
-
ProgressiveGAN
- 【元論文】[1710.10196] Progressive Growing of GANs for Improved Quality, Stability, and Variation
- 【Progressive Growing of GANs for Improved Quality, Stability, and Variation】を読んだのでまとめる - St_Hakky’s blog
- 【論文メモ:PGGAN】Progressive Growing of GANs for Improved Quality, Stability, and Variation - Re:ゼロから始めるML生活
- GAN — Progressive growing of GANs – Jonathan Hui – Medium
-
StyleGAN
- 【元論文】[1812.04948] A Style-Based Generator Architecture for Generative Adversarial Networks
- StyleGAN「写真が証拠になる時代は終わった。」 - Qiita
- StyleGAN: A Style-Based Generator Architecture for Generative Adversarial Networks - 機械学習奮闘記
- Style-based GANs – Generating and Tuning Realistic Artificial Faces | Lyrn.AI
- Style Transfer
- 実装
-
GANimation
-
Flow-based Generative Models
- [DL輪読会]Flow-based Deep Generative Models
- [DL輪読会]Glow: Generative Flow with Invertible 1×1 Convolutions](https://www.slideshare.net/DeepLearningJP2016/dlglow-generative-flow-with-invertible-11-convolutions-107075506)
- NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION
- Density estimation using Real NVP
- Glow: Generative Flow with Invertible 1×1 Convolutions
- Invertible residual networks [i-ResNets]
- Residual Flows for Invertible Generative Modeling
-
その他