[DL輪読会]Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

>100 Views

April 28, 17

スライド概要

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

Unpaired Image-to-Image Translation Using Adversarial Networks 2017/4/28担当 慶應義塾大学 河野 慎

2.

書誌情報 ▸ 2017年3月30日arXiv投稿 ▸ Jun-Yan Zhu, Taesung Park, Phillip Isola, Alexei A.Efros ▸ UC Berkely ▸ GoodfellowさんとかがTwitterで言ってた ▸ GAN大喜利の一つ ▸ CycleGAN ▸ 実装も公開(Pytorch)

3.

Introduction 教師なしで画像の変換を行いたい ▸ 変換前と変換後の画像ペアがあれば上手く行く ▸ なかなかペアは手に入らないのが問題 ▸ Semantic Segmentation用のは種類も量も少ない ▸ 画風変換は画家のクセなどが複雑すぎてもっと難しい ▸ 物体変形はたくさんのアプリケーションがあるが, あまり良く定義されていない ▸ 教師なしで画像生成:GANの登場 ▸ ドメインXとYがあって,写像G: X -> Yを考える ▸ xと生成されたyが意味的に一致している保証はない ▸ Yを満たすyは無限にある かっこいい語りかけ

4.

提案手法 Cycle-Consistency Lossを導入したCycleGAN ▸ 2種類の写像G:X→YとF:Y→Xを考える ▸ まずは,普通のGANのadversarial lossを定義 ▸ Xから生成されたYをもう一度X’に戻してもXに一致するようにする ▸ 一種のAutoencoderとみなすことができる ▸ 得られる表現が少し特殊 ▸ ドメインXから得られた表現=ドメインY Forward Cycle Loss Backward Cycle Loss

5.

提案手法 実際の実装について ▸ 学習を安定させるための2つの工夫 ▸ 負の対数尤度を最少二乗誤差に変える→学習を安定させ,生成画像のクオリティをあげる ▸ モデルのoscillation(振動?)を防ぐため,Dの更新を最新のGから生成された画像ではなく, 過去に生成された画像の履歴を使う(実験ではバッファを50に設定) ▸ 最終的な目的関数:

6.

提案手法 CycleGANのアーキテクチャ ▸ Generator ▸ 7x7,s1のConv(32)→3x3,s2のConv(64→128)→ ▸ 入力画像が128x128の場合:Resblock6個(3x3のConv(128)) ▸ 入力画像が256x256の場合:Resblock9個(3x3のConv(128)) ▸ 3x3, s1/2のFractional strides Conv(64→32)→7x7,s1のConv(3) ▸ Discriminator ▸ 70x70のPatchGAN ▸ 4x4,s2のConv→BN→LeakyReLU(0.02) ▸ 64→128→256→512→最後画像サイズのフィルタの畳み込みを使う ▸ λ=10,学習率は0.0002で100エポックごとに0に向かって縮小

7.

実験 定量的評価 ▸ Pix2Pixと同じ指標を使う ▸ Amazon Mechanical Terk(AMT) ▸ 2枚の画像(うち1枚が本物,もう一枚は生成されたもの)のうち,本物を選ぶ ▸ FCNスコア ▸ 生成した写真画像をFCNが正しく認識できるか ▸ Semantic Segmentation指標 ▸ 生成したラベル画像の精度とIoU(Intersection-over-Union) ▸ boxに対して, 目的となる領域(ground truth box)がどれだけ含まれている

8.

定量的評価 ベースライン手法 ▸ CoGAN ▸ 2種類のドメインを生成する2つのGを学習,最初の数レイヤーを共有 ▸ Xを生成する共有の表現を獲得して,それでYを生成する ▸ Pixel loss + GAN ▸ Cycle-Consistencyの代わりにL1ノルムを追加,||X - Y||1 ▸ Feature loss + GAN ▸ 画像のL1ロスではなく,FeatureのL1ロスを採用 ▸ BiGAN ▸ ランダムノイズZからXを生成すると同時にF:X→Zを可能にする逆写像関数Fを学習する ▸ 同じ目的関数でX→Yを写像するものを学習させる ▸ pix2pix ▸ 教師あり学習の結果を教師なし学習の上限として使う

9.

結果 ▸ CycleGANの圧勝 ▸ 生成結果も明らか ▸ ベースラインは全く人を騙せない

10.

結果 ▸ 損失関数の分析 ▸ 各項を含めたり含めなかったり

11.

結果 ▸ 再構成した結果 ▸ 教師ありデータセットでの結果

12.

画風変換

13.

物体変形と季節変換

14.

絵から写真を生成 ▸ 絵の色構図を保持するために損失関数を新たに追加

15.

写真のぼかし

16.

画風変換その2 ▸ Gatysらのと比較 ▸ 2種類の画風とそれらを平均した画風

17.

失敗例

18.

まとめと感想 ▸ 色やテクスチャの変化を含む変換は成功している ▸ 一方で幾何学的な変換(犬→猫)などはあまりうまくいってない ▸ 今後改良していく余地あり ▸ 教師あり学習にはやはり及ばない ▸ 写真→ラベルタスクで,ツリー構造?の順序を変えて生成してしまう ▸ この曖昧さを解決するには,semantic supervisonか半教師あり学習がいいのではないか? ▸ 生成されてる画像綺麗だなぁ.かわの. ▸ 特にヨセミテの季節変換に感動した