[dl輪読会]image-to-image translation with conditional adversarial networks

28
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 河河 河

Upload: deeplearningjp2016

Post on 03-Mar-2017

75 views

Category:

Technology


1 download

TRANSCRIPT

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

Image-to-Image Translation with

Conditional Adversarial Networks

Phillip Isola Jun-Yan Zhu Tinghui Zhou Alexei A. EfrosBerkeley AI Research (BAIR) LaboratoryUniversity of California, Berkeley

2017/1/13 河野 慎

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

書誌情報➤ 2016 年 11 月 4 日に投稿 @arXiv➤ GAN による汎用的な画像変換モデル

➤ 年末ということで Advent Calendar でも大人気➤ Github で公開されていて誰でもすぐに遊べる(要 Torch )

➤ Torch

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

INTRODUCTION➤ 言語の翻訳と同様に画像の”翻訳”をしたい

➤ 言語は一対一対応した写像とは限らないため難しい➤ 画像にも同様なタスクが多数存在する

➤ many-to-one (Computer Vision)➤ 写真から輪郭,セグメント,セマンティックラベルへ写像

➤ one-to-many(Computer Graphics)➤ ラベルやユーザのスパースな入力から本物のような画像へ写像

➤ いずれもタスクも”ピクセルからピクセルを予測する”点で共通➤ これらの問題を扱えるフレームワークを提案することが目標

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

INTRODUCTION➤ 画像予測タスクでは, CNN がたくさん使われてきた

➤ 学習プロセス自体は自動であるものの,効果的な損失関数を設計する必要がある➤ うまく設計しないとダメ➤ 例:ユークリッド距離→ぼやけた画像を生成しがち

➤ 平均的な数値を出そうとするためにぼやける(強弱があまりない)➤ 一方, GAN が最近うまくいってる

➤ ぼやけた画像は”本物”に似てないため,生成されにくい➤ データに適用した損失を学習することが可能

➤ 従来様々な損失関数を必要としたタスクに適用することが可能と言える

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

RELATED WORK➤ 構造に関する損失関数

➤ 画像変換はピクセルごとの分類もしくは回帰問題と言える➤ 入力画像が与えられた時に出力されるピクセルは独立と仮定される”非構造な”出力空間として扱ってしまう➤ 一方で条件付き GAN なら,構造に関する損失関数を学習する

➤ 様々な既存手法も提案されてきた➤ 確率場や SSIM ( Structual Similarity ),特徴マッチング,ノンパラ損失関数,畳み込み擬似事前分布?,共分散を用いた損失関数

➤ 提案する条件付き GAN は上のいかなる構造も学習することができる

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

RELATED WORK➤ 条件付き GAN

➤ 既存研究では,様々な条件付けが行われてきた➤ 離散ラベル,文章,画像

➤ 画像による条件付き GAN➤ 画像修復,地図から画像予測,ユーザによる画像操作,将来のフレーム予測,将来の状態予測,写真生成,画風変換

➤ いずれも特定のタスクに特化したものであり,自分たちのは汎用的で,設定も簡単である➤ また,構造も G に” U-NET” , D に” PatchGAN” を適用しているため新しい

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

提案モデル( PIX2PIX )➤ 条件付き GAN ( Discriminator と Generator の両方に条件付ける)

➤ G において,➤ z がない場合:デルタ関数しか表現できない(決定論的)➤ z がある場合:先行研究では,入力に用いている

➤ 実験で,有効性を見いだすことができなかった➤ Dropout を中間層に入れて,ノイズ z とする

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

ネットワーク構造➤ 基本方針は DCGAN ( Conv - BatchNorm - ReLu )を採用する

➤ Generator : U-NET を採用➤ 入力と出力は同じ構造を持つ

➤ 低次元の情報を共有するべき➤ Encoder-Decoder+ Skip Connection

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

ネットワーク構造➤ Discriminator : PatchGAN を採用

➤ L1 ノルムや L2 ノルムは画像をぼかす➤ 高周波数ではなく低周波数を正確にキャプチャする

➤ D は高周波数のキャプチャに専念すれば良くなる➤ 局所に注目させることが大事→パッチを見ていけば良い

➤ N×N のパッチが”本物”か”偽物”かを見分ける➤ パッチ径よりも遠いピクセル間の独立を仮定し,画像をマルコフ確率場としてモデル化する

➤ この仮定はテクスチャやスタイルのモデル化によく使われている➤ PatchGAN はテクスチャ・スタイルの損失関数として理解可能

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

最適化と推論について➤ 最適化:ミニバッチ SGD+Adam

➤ 推論時も学習時と同じく行う➤ ドロップアウト・ BatchNormalization の両方

➤ バッチサイズ =1 の時, BN は instance normalization として扱われ,画像生成の時に効果的であることが示されている➤ 解くタスクによってバッチサイズを変える

➤ サイズは 1 か 4

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

実験➤ 様々なタスクに取り組む

➤ Semantic labels ⇄ 写真( Cityscapes )➤ Arcitechural labels→ 写真( CMP Facedes )➤ 地図⇄航空写真( Google Maps )➤ 白黒写真→カラー写真( ImageNet )➤ 輪郭→写真(靴やカバンの画像)➤ スケッチ→写真(人が書いたスケッチと写真)➤ 昼→夜

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

評価方針➤ 定性的評価

➤ Amazon Mechanical Turk による比較実験➤ 生成画像を人が本物と思い込ませられたら良い

➤ AMT で 50 人 ×50 回(練習 10 回+本番 40 回)➤ 本物と偽物画像がそれぞれ 1秒ずつ表示されて,そのあと本物を選択する

➤ 定量的評価➤ 生成した画像を FCN に入力した時の精度

➤ もし本物のように生成できて入れば, FCN が正しく分類するはず

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

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

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

目的関数の分析➤ カラフル度合について

➤ 仮説:➤ L1 :エッジの場所がわからない場合はぼかし,何色かわからないときは灰色にする➤ GAN :灰色は本物っぽくないと学習して,真の分布に近づけようとする

➤ Lab色空間( L :彩度, a :赤, b :青)➤ L1 は真の分布より狭い(灰色っぽい), cGAN は分布に近い

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

GENERATOR の構造の分析➤ SkipConnection が有効であるかどうか

➤ L1 だけで学習した場合も有効に働いていることがわかる

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

DISCRIMINATOR(PATCHGAN) の分析➤ パッチサイズ N×N を変えたときの効果

➤ パッチサイズは D のレイヤ数で調節する➤ 空間的なシャープさは変わらない→カラフル度合いが変わる

➤ L1 の時は灰色だが, 1×1 ( PixelGAN )のとき赤くなる→分布と対応している➤ 70×70 の時が一番見た目も精度も良い

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

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

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

見た目に関する検証➤ 地図⇄航空写真(異なる入力画像)タスクで評価

➤ 地図→航空写真:うまく騙せた➤ 航空写真→地図:あまりうまくいかない

➤ 地図は些細な構造的な誤差もわかる➤ 地図は真っ直ぐ,航空写真はごちゃっとしてる

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

見た目に関する検証➤ 白黒→カラー(同じ入力画像)タスクで評価

➤ そこそこうまくいくものの,タスク特化した手法にはかなわない

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

SEMANTIC SEGMENTATION➤ ピクセルのクラス分類もできるのでは?

➤ cGAN でもそれなりの精度は出せる➤ CV タスクでは, L1 のような損失関数の方がうまくいくと考えられる

➤ GAN が学習したのは離散値ではなく, 双一次補間でリサイズされ,”もの”が圧縮されてしまったもの

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

そのほかの生成例

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

そのほかの生成例

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

そのほかの生成例

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

そのほかの生成例

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

そのほかの生成例

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

そのほかの生成例

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

失敗例

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

まとめ➤ なんでもできる 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