[DL輪読会]Image-to-Image Translation with Conditional Adversarial Networks

>100 Views

February 22, 17

スライド概要

2017/2/22
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Image-to-Image Translation with Conditional Adversarial Networks Phillip Isola Jun-Yan Zhu Tinghui Zhou Alexei A. Efros Berkeley AI Research (BAIR) Laboratory University of California, Berkeley 2017/1/13 河野 慎

2.

書誌情報 ➤ 2016年11月4日に投稿@arXiv ➤ GANによる汎用的な画像変換モデル ➤ 年末ということでAdvent Calendarでも大人気 ➤ Githubで公開されていて誰でもすぐに遊べる(要Torch) ➤ Torch 2

3.

INTRODUCTION ➤ 言語の翻訳と同様に画像の”翻訳”をしたい ➤ 言語は一対一対応した写像とは限らないため難しい ➤ 画像にも同様なタスクが多数存在する ➤ many-to-one (Computer Vision) ➤ ➤ one-to-many(Computer Graphics) ➤ ➤ 写真から輪郭,セグメント,セマンティックラベルへ写像 ラベルやユーザのスパースな入力から本物のような画像へ写像 いずれもタスクも”ピクセルからピクセルを予測する”点で共通 ➤ これらの問題を扱えるフレームワークを提案することが目標 3

4.

INTRODUCTION ➤ 画像予測タスクでは,CNNがたくさん使われてきた ➤ 学習プロセス自体は自動であるものの,効果的な損失関数を設計する必要がある ➤ うまく設計しないとダメ ➤ 例:ユークリッド距離→ぼやけた画像を生成しがち ➤ ➤ 平均的な数値を出そうとするためにぼやける(強弱があまりない) 一方,GANが最近うまくいってる ➤ ぼやけた画像は”本物”に似てないため,生成されにくい ➤ データに適用した損失を学習することが可能 ➤ 従来様々な損失関数を必要としたタスクに適用することが可能と言える 4

5.

RELATED WORK ➤ 構造に関する損失関数 ➤ 画像変換はピクセルごとの分類もしくは回帰問題と言える ➤ 入力画像が与えられた時に出力されるピクセルは独立と仮定される ”非構造な”出力空間として扱ってしまう ➤ 一方で条件付きGANなら,構造に関する損失関数を学習する ➤ 様々な既存手法も提案されてきた ➤ ➤ 確率場やSSIM(Structual Similarity),特徴マッチング,ノンパラ損失関数, 畳み込み擬似事前分布?,共分散を用いた損失関数 提案する条件付きGANは上のいかなる構造も学習することができる 5

6.

RELATED WORK ➤ 条件付きGAN ➤ 既存研究では,様々な条件付けが行われてきた ➤ ➤ 離散ラベル,文章,画像 画像による条件付きGAN ➤ 画像修復,地図から画像予測,ユーザによる画像操作,将来のフレーム予測,将 来の状態予測,写真生成,画風変換 ➤ いずれも特定のタスクに特化したものであり,自分たちのは汎用的で, 設定も簡単である ➤ また,構造もGに”U-NET”,Dに”PatchGAN”を適用しているため新しい 6

7.

提案モデル(PIX2PIX) ➤ 条件付きGAN(DiscriminatorとGeneratorの両方に条件付ける) ➤ Gにおいて, ➤ zがない場合:デルタ関数しか表現できない(決定論的) ➤ zがある場合:先行研究では,入力に用いている ➤ 実験で,有効性を見いだすことができなかった ➤ Dropoutを中間層に入れて,ノイズzとする 7

8.

ネットワーク構造 ➤ 基本方針はDCGAN(Conv - BatchNorm - ReLu)を採用する ➤ Generator:U-NETを採用 ➤ 入力と出力は同じ構造を持つ ➤ ➤ 低次元の情報を共有するべき Encoder-Decoder+Skip Connection

9.

ネットワーク構造 ➤ Discriminator:PatchGANを採用 ➤ L1ノルムやL2ノルムは画像をぼかす ➤ ➤ 高周波数ではなく低周波数を正確にキャプチャする Dは高周波数のキャプチャに専念すれば良くなる ➤ 局所に注目させることが大事→パッチを見ていけば良い ➤ ➤ N×Nのパッチが”本物”か”偽物”かを見分ける パッチ径よりも遠いピクセル間の独立を仮定し,画像をマルコフ確率場としてモデル化する ➤ この仮定はテクスチャやスタイルのモデル化によく使われている ➤ PatchGANはテクスチャ・スタイルの損失関数として理解可能

10.

最適化と推論について ➤ 最適化:ミニバッチSGD+Adam ➤ 推論時も学習時と同じく行う ➤ ドロップアウト・BatchNormalizationの両方 ➤ バッチサイズ=1の時,BNはinstance normalizationとして扱われ, 画像生成の時に効果的であることが示されている ➤ 解くタスクによってバッチサイズを変える ➤ サイズは1か4

11.

実験 ➤ 様々なタスクに取り組む ➤ Semantic labels ⇄写真(Cityscapes) ➤ Arcitechural labels→写真(CMP Facedes) ➤ 地図⇄航空写真(Google Maps) ➤ 白黒写真→カラー写真(ImageNet) ➤ 輪郭→写真(靴やカバンの画像) ➤ スケッチ→写真(人が書いたスケッチと写真) ➤ 昼→夜

12.

評価方針 ➤ 定性的評価 ➤ Amazon Mechanical Turkによる比較実験 ➤ ➤ 生成画像を人が本物と思い込ませられたら良い ➤ AMTで50人×50回(練習10回+本番40回) ➤ 本物と偽物画像がそれぞれ1秒ずつ表示されて,そのあと本物を選択する 定量的評価 ➤ 生成した画像をFCNに入力した時の精度 ➤ もし本物のように生成できて入れば,FCNが正しく分類するはず

13.

目的関数の分析 ➤ 条件付きとL1が有効であるかどうか

14.

目的関数の分析 ➤ カラフル度合について ➤ ➤ 仮説: ➤ L1:エッジの場所がわからない場合はぼかし,何色かわからないときは灰色にする ➤ GAN:灰色は本物っぽくないと学習して,真の分布に近づけようとする Lab色空間(L:彩度,a:赤,b:青) ➤ L1は真の分布より狭い(灰色っぽい),cGANは分布に近い

15.

GENERATORの構造の分析 ➤ SkipConnectionが有効であるかどうか ➤ L1だけで学習した場合も有効に働いていることがわかる

16.

DISCRIMINATOR(PATCHGAN)の分析 ➤ パッチサイズN×Nを変えたときの効果 ➤ パッチサイズはDのレイヤ数で調節する ➤ 空間的なシャープさは変わらない→カラフル度合いが変わる ➤ ➤ L1の時は灰色だが,1×1(PixelGAN)のとき赤くなる→分布と対応している 70×70の時が一番見た目も精度も良い

17.

PATCHGANの汎用性 ➤ 256×256の画像で学習させた後に512×512の画像を生成させてもいける

18.

見た目に関する検証 ➤ 地図⇄航空写真(異なる入力画像)タスクで評価 ➤ 地図→航空写真:うまく騙せた ➤ 航空写真→地図:あまりうまくいかない ➤ 地図は些細な構造的な誤差もわかる ➤ 地図は真っ直ぐ,航空写真はごちゃっとしてる

19.

見た目に関する検証 ➤ 白黒→カラー(同じ入力画像)タスクで評価 ➤ そこそこうまくいくものの,タスク特化した手法にはかなわない

20.

SEMANTIC SEGMENTATION ➤ ピクセルのクラス分類もできるのでは? ➤ cGANでもそれなりの精度は出せる ➤ CVタスクでは,L1のような損失関数の方がうまくいくと考えられる ➤ GANが学習したのは離散値ではなく, 双一次補間でリサイズされ, ”もの”が圧縮されてしまったもの

21.

そのほかの生成例

22.

そのほかの生成例

23.

そのほかの生成例

24.

そのほかの生成例

25.

そのほかの生成例

26.

そのほかの生成例

27.

失敗例 27

28.

まとめ ➤ なんでもできるGANの提案 ➤ 様々な出力が可能 ➤ タスク依存の目的関数を設定する必要がない ➤ ソースコード:https://github.com/phillipi/pix2pix ➤ 生成例:https://phillipi.github.io/pix2pix/ ➤ 例によってアニメ:http://kusanohitoshi.blogspot.jp/2016/12/deep-learning.html ラーメン:http://qiita.com/octpath/items/acaf5b4dbcb4e105a8d3