論文メモ: Conditional PixelCNN - PixelCNNベースの条件付き画像生成モデル
論文
Conditional Image Generation with PixelCNN Decoders
表記
- LL: log likelihood
概要
PixelCNNをベースにした条件付き生成モデルを提案する。モデルに与えるコンテクストは任意のラベルやタグ、埋め込みベクトルを指定できる。例えばImageNetのクラスラベルをコンテクストに与えた場合は動物、物体、風景、構造物などのリアルかつ多様な画像を生成する。また、未知の特定の人物の埋め込みベクトルを与えた場合はその人物の様々な表情、ポーズ、照明条件の画像を生成する。また、提案モデルをオートエンコーダのデコーダとして用いた場合、高精細かつ多様な画像を生成する。さらに、提案手法はPixelCNNのLLを改善し、PixelRNNと同等のLLのモデルをPixelRNNの半分以下の時間で学習することに成功した。
研究分野における位置付け
- PixelRNN: bi-directional LSTMを用いた自己回帰の生成モデル。並列化できないため学習速度が遅い
- PixelCNN: masked convolutionにより学習の並列化を実現。学習スピードは速いが、LLはPixelRNNに劣る
- Gated PixelCNN (提案手法): 垂直方向と水平方向の2つのCNNを協調して学習することでPixelCNNの"blind spot"の問題を解消。PixelRNNと同程度以上のLLのモデルを半分以下の時間で学習することに成功
- Conditional PixelCNN (提案手法): Gated PixelCNNにコンテクストの情報を与えられるようにした条件付き生成モデル
何がすごい?
- 任意のコンテクストを与えて画像生成を行うモデルを開発した
- 提案手法はVAEのデコーダとして用いることも可能。この場合、通常のVAEよりも高精細かつ多様な画像を生成する
- PixelCNNの「盲点」の問題を解消し、PixelRNNと同程度のLL(log likelihood)を半分以下の学習時間で実現
提案手法について
まず、基本となるアーキテクチャについて説明する。その後、条件付きで画像を生成する方法について説明し、最後にデコーダとしての応用について述べる。
Gated Convolution Layer
畳み込みレイヤの代わりに空間的なLSTMレイヤーを採用するPixelRNNは、PixelCNNより優れた性能であることが知られる。この原因の一つとして、再帰接続によって順番的に前にある全ての近傍のピクセルの情報に参照できることが挙げられる。一方、PicelCNNが参照できるピクセルの受容野は畳み込み層が深くなるとともに広がる。この欠点はCNNの層を十分深くすることで回避できる。
PixelRNNのもう一つの潜在的な利点として、乗法ユニット(=LSTMのゲート)を持つことが挙げられる。このユニットによってより複雑な相互作用を表現できている可能性がある。提案手法では、ゲートの仕組みを導入するために、以下のようなゲートつきの活性層を提案する。
受容野の「盲点」
PixelCNNの受容野を図1(右上)に示す。PixelCNNは層を深くしても右側に参照されないピクセル(=盲点)がある。
これを克服するために、提案手法は垂直方向と水平方向の2つのCNNに分割する。垂直方向のCNNは「対象のピクセルよりも上にある全ての行」を参照するのに対し、垂直方向のCNNは「対象ピクセルのある行で、対象ピクセルよりも左側にある全てのピクセル」を参照する。最終的にこれら2つのCNNの処理結果を組み合わせることで、右側の盲点をなくすことができ、PixelCNNよりも多くの情報を参照することができる。
なお、水平方向のCNNは1つ前の層の自身の出力に加え、1つ前の層の垂直方向のCNNの処理結果も入力として受け取る。逆の接続(つまり垂直方向から水平方向)については順番的に「未来」にある(=自己回帰でない)ピクセルも参照することになるので接続していないことに注意。また、水平方向のCNNは残差接続を持つが、垂直方向のCNNは持たない[1]。最終的な提案手法のアーキテクチャを図2に示す。
図1: PixelCNNと提案手法の受容野の比較: 左) PixelCNNにおける畳み込み演算の可視化, 中央) PixelCNNのフィルタマスク, 右上) PixelCNNの受容野の可視化, 右下) 提案手法の受容野の可視化。PixelCNNは層を深くしても右側に参照されないピクセル(「盲点」)があるのに対し、提案手法はこれがなく、より多くのピクセルの情報を利用できる。
図2: Gated PixelCNNの1層のアーキテクチャ。
条件付き画像生成
論文では条件付きの画像生成を以下のように定義する。
上記はコンテクスト
式(4)における
オートエンコーダへの応用
提案モデルは、オートエンコーダのデコーダとしても利用できる。この場合、コンテクスト
この場合、図3に示すようにデコーダは元の画像を忠実に再現するというよりは、元の画像のバリエーションを生成する。また、VAEがぼやけた画像を出力するのに対し、Conditional PixelCNNをデコーダとして用いた場合は高精細な画像を出力している。
図3: 左) 元画像, 中央) VAEのエンコーダの出力, 右) エンコーダにPixelCNNを用いた場合の再構成画像
所感
- WaveNetやその後継モデル(WaveGlow, WaveFlow)では条件付き生成の仕組みに本論文の手法を採用している
- Gated activationの設計意図が理解できた
- 他の論文(WaveGlow, WaveFlowなど)では自己回帰に特に拘らずに未来のピクセルも参照しているが、本論文では(おそらくPixelCNN, PicelRNNも)注意深く参照しないようにしている。自己回帰を忠実に守ることのメリットには何があるのだろうか?
Discussion