オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】Progressive Growing GAN / PG GAN

Index

Progressive Growing GAN / PG GAN

深層学習を用いた生成アルゴリズム GAN の応用手法.

画像の生成における高解像度に対する改善手法.

画像データ特有の改善と考えると、DC GAN の改良版と考えることもできる.



この手法のアイディアの根幹は、Generator と Discrminator のネットワークアーキテクチャの規模を 段階的に拡張・成長 (Progressive Growing)させていくこと.

つまり、低解像度の画像の生成 / 識別から始めて、学習が進んでいくにつれて、 細かい部分に注力できるようになったら、層を増やしていく.

1024 x 1024 のサイズの画像を高精度で生成することに成功.

改善点

主なアイディア・改善点は、徐々にネットワークアーキテクチャを拡張させながら学習する 仕組みである Progressive Growing であるが、その他に学習を安定させる仕組みを導入している.

Progressive Growing

GAN の学習方法の改善手法.

最初は、低解像度の画像の生成と識別を学習する.



そして、学習を進めていく過程で、ネットワークアーキテクチャを拡大することで、
生成・識別する画像の解像度を徐々に上げていく.



このような学習方法を導入することによって、
低解像度の画像の学習で、おおまかな構造を学び
より高解像度の画像の学習になるにつれて、細かい部分を学ぶことが、段階的に可能になる.

Generator と Discriminator のネットワークアーキテクチャは、鏡のように対称になっている.

層の追加

各 CNN Layer は、どの学習プロセスにおいても、学習するような設計になっている.

では、どのようにして、学習している途中のネットワークアーキテクチャに、
影響を最小限にして、スムーズに、CNN Layer を追加するのか.

 16 \times 16 の解像度の画像の学習から (a) 2 枚の  32 \times 32 の解像度の画像の学習 (c) へ移行する場合を考える.



(a) では、Generator からの出力である  16 \times 16 \times c の特徴マップを toRGB で、 16 \times 16 \times 3 のような画像形式に変換している.

さらに、Discriminator への入力として、画像形式のデータを fromRGB で、 16 \times 16 \times c へ変換し、後続の CNN Layer に繋げている.



(a) のようなアーキテクチャから (c) のようなアーキテクチャにいきなり変更せず、
(b) のようなアーキテクチャで学習する期間を設ける.

 16 \times 16 から  32 \times 32 の特徴マップを取得したいのだから、 そのようなに出力する CNN Layer (32 x 32) を導入する.

そして、画像形式で取得するために、toRGBで、画像形式に変換し、Generator の出力とするが、
その前に、新たに追加されて層に入力される前の情報を、付け加える.



これは、今まで、使っていた情報を蔑ろにしないように利用するため.

Resnet のような学習方法と同様の意図がある.



また、 \alpha は、加重平均のパラメータである. (0 ~ 1)

サイズ調整のために、最近傍補間法 で、2 倍にしている. (2x)

Discriminator も同様に、今まで学習していた層 (16 x 16) への入力として、
新しく追加した層 (32 x 32) からの出力の情報だけでなく、
今まで、入力していた画像形式からの直接的な情報も含めている.



また、 \alpha は、同様に、加重平均のパラメータである. (0 ~ 1)

サイズ調整のために、Average Pooling で、0.5 倍にしている. (0.5x)

Minibatch Standard Deviation

Minibatch 内の多様性を学習の仕組みに導入.

Generator の画像の生成傾向は、学習するバッチの傾向に依存する.

そのため、バッチの多様性を利用する.



バッチの多様性を計算し、その情報を Discrimnator に渡し、識別のヒントにする.

Generator が、本物のデータの傾向と異なりすぎると、Discriminator に大きなヒントを与えてしまうような構造.

バッチ内の多様性の計算

バッチ内の各画像のピクセル単位で、標準偏差を計算.(どれだけ、多様性があるか)



ピクセルのぼらつき具合の平均を計算する.



Discriminator にその情報を伝えるために、伝達可能な形式 (Discriminator の最後の特徴マップと同様の形式) に加工する.

Pixelwise Normalization

学習の安定を目的として、Generator の出力である生成画像に、ピクセル単位の正規化を導入する.

 b_{x, y}\ =\ \displaystyle \frac{a_{x, y}}{\sqrt{ \displaystyle \frac{1}{N} \displaystyle \sum_{j=0}^{N-1} \left(\ a_{x, y}^{\ j}\ \right)^{2} + \epsilon }}

参考

  • Progressive Growing of GANs for Improved Quality, Stability, and Variation
    • [2017]
    • Abstract
    • 2 PROGRESSIVE GROWING OF GANS
    • 3 INCREASING VARIATION USING MINIBATCH STANDARD DEVIATION
    • 4 NORMALIZATION IN GENERATOR AND DISCRIMINATOR
      • 4.2 PIXELWISE FEATURE VECTOR NORMALIZATION IN GENERATOR
    • arxiv.org

Web サイト