High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANsの論文を流し読む

昨年の11月頃に立て続けで、NVIDIAが高解像度な画像を出力するGANに関する論文を発表した。今回はそのうちの一つの論文を読む。デモ動画の出来がすごいので以下のを見てみてほしい。

例によって私は数式終えてないので、雰囲気だけで読んでます。

High Resolution なGANポイント

  • セマンティックなラベルの画像(この領域に車とかこの領域に道路とか書いた画像)からリアルな画像を高解像度(2048×1024)で出力するConditional GANベースのネットワークを提案  (pix2pixは256×256)
  • さらにリアル画像からセマンティック画像に戻して編集して再度リアル画像反映するvisual manipulationも実現する方法を提案(画像からものを消したり、加えたり、別のものにしたり)
  • あと同じ入力から複数の異なった画像を生成する方法を提案
  • ジェネレータの工夫/デイスクリミネータの工夫/目的関数の工夫.この3つの工夫で実現
  • エッジ情報も入れることでより鮮明に
  • ネットワーク構造は以下。ポイントは2つのジェネレータのうち一つはグローバルな絵作りをして、もう一つは拡大するため。ジェネレータの2つとも最も直近で効果を出しているの形のGANモデルを採用。外側のモデルはさらに外側にGeneratorをつなげることも可能。なので4096もできる。
  • デイスクリミネータは3つ用意し、画像を縮小した入力を3つ用意した。

スクリーンショット 2018-02-21 23.49.27

High Resolution なGAN斜め読み

既存の高解像度は、Adversrialな方法では不安定で高解像度な画像生成はできず、詳細な部分が鮮明でなくリアルな感じにはなっていない

今回の提案したネットワークはpix2pixをベースにして改良を加えている。

全部で3つの改良を加えていて、

  1. Generatorの改良
  2. 複数のスケール用にDiscriminatorを用意
  3. 敵対的学習においてロバストな目的関数の設計

を行い高精度な画像の生成を行った。

まず1.Generatorの改良。Generatorを画像を大雑把に整えるG1と細かいローカルな部分を整形するG2にわけた。G1は1024×512の大きさでG2はG1の各辺を2倍する(全体を4倍)ネットワークとして作られている。G1を囲うようにG2を配置しているが、さらにG2と同様な構造をもつG3を外側におけば2024×1024の出力を4048×2048にすることもできる。

今回のネットワークは512×512の画像でよい画像変換(style transfer)を行っていたJohnsonらが提案したネットワーク構造をG1では利用する。G2の後半部分の入力にはG2の前半部分出力とG1の出力の両方を交えて使用することに注意。これによってグローバルな画像情報をG1からG2に引き渡すことができる。はじめはグローバルな特徴を捉えるG1のみ訓練してその後G2を訓練したあと、全体でfine-tuningする。

次に、2.複数のスケールようにDiscriminatorを用意した。高解像度で大きな画像を入力とする場合、大きなカーネルや深い層で構成されるネットワークが必要になるが、過学習やメモリの容量が必要となる。そこで、構造が全く同じD1, D2, D3を用意してそれぞれに原寸大,2分の1,4分の1の画像を用意するようにした。このようにすることでグローバルな判断をすることができるようにした。

最後に3.目的関数の改善。Discriminatorで得られる各層の特徴量のマッチング誤差も考慮するようにしている。こうすることでネットワークはどのスケールにおいても意味を持った自然な画像を作るようにさせられる。具体的には、本物の画像ペアの入力のときと片方がGeneratorによる生成の画像のペアであるときの二つの各層出力の差を誤差としている。この誤差は高解像度の画像に対して有用とされているperceptual loss に似ている。

今回入力に用いているようなセマンティックなマップを作成した場合、これらは同じクラスに所属する物体を区別しない。(車の画像領域は指定するが各車の個別の識別をしていない)そこで今回はそれらを区別する個体マップを作りたい。しかしone-hot vectorとかをやると物体ごとにチャンネルが増えて大変。なので個体マップでもっとも大事な情報は境界線の情報としてそれを提供することとした。

スクリーンショット 2018-02-21 23.58.00.png

 

生成される画像に多様性を持たせるために今回は入力に低次元の入力を加えることとした。上記のネットワークに示すようなEncoder,Decorderネットワークで特徴をすべてのデータで学習したのちにK-meansでクラスタ分類を行った。各クラスタはなんらかの意味の偏りを持っていることを確認しそれを操作することで個体ごとに変更できることを確認した。

 

おわりに

読むの疲れた。。。一つの論文にポイント詰め込みすぎでは?分けて出せばよいのに。。。

About the author

Comments

コメントを残す