$30 off During Our Annual Pro Sale. View Details »

Generative Dog Images 2nd place solution (Japanese)

yabea
September 05, 2019

Generative Dog Images 2nd place solution (Japanese)

Generative Dog Images 2nd place solution (Japanese), Generative Dog Images, yabea, GANコンペ, 犬コンペ, GAN犬コンペ, Kaggle

yabea

September 05, 2019
Tweet

Other Decks in Programming

Transcript

  1. Generative Dog Images
    Experiment with creating puppy pics
    2nd place solution
    [kaggler-ja] yabea
    HFOFSBUPS

    View Slide

  2. Self Introduction
    ■ Account Name: yabea
    ■ Master’s Student at Keio University
    ■ Machine Learning : 2018/03~
    ■ Kaggle : 2019/02~
    @yabea18
    2

    View Slide

  3. コンペ概要と結果
    3

    View Slide

  4. コンペ概要
    ■ Kaggle初の画像⽣成コンペ https://www.kaggle.com/c/generative-dog-images
    ■ 主催︓Kaggle Team
    ■ 期間︓2019年6⽉28⽇〜8⽉14⽇(Private公開は8⽉29⽇)
    ■ Data︓Stanford Dogs Dataset http://vision.stanford.edu/aditya86/ImageNetDogs/
    – カテゴリ数︓120
    – 画像数︓20,580
    – アノテーション︓クラスラベル、Bounding Boxes
    ■ 提出物︓⽣成された64×64の⽝画像10,000枚
    ■ Kernel Only https://www.kaggle.com/c/generative-dog-images/overview/kernels-requirements
    – 外部データ禁⽌
    – GPU(P100)1枚で9時間以内に学習を終わらせる必要がある
    4

    View Slide

  5. 評価指標 MiFID
    ■ FID – Fréchet Inception Distance
    – GANの評価指標としてよく使われている指標のひとつ
    https://arxiv.org/abs/1706.08500
    – 実画像分布と⽣成画像分布の近さをInceptionの中間層の特徴量を⽤いて測る
    – ⼩さいほど良い指標
    ■ MiFID - Memorization-informed Fréchet Inception Distance
    https://www.kaggle.com/c/generative-dog-images/overview/evaluation
    – FIDに学習画像との類似度が⾼すぎる場合のペナルティを設けたもの
    (APPENDIX A)
    – 学習画像そのものを直接的(画像処理)および間接的(モデルに暗記させる)に
    提出する⽅法を罰する⽬的
    5

    View Slide

  6. 評価パイプライン
    https://www.kaggle.com/c/generative-dog-
    images/overview/evaluation
    ■ Public Score
    – 学習データとInceptionモデルでスコア
    を計算
    – Inceptionモデルは公開されていたため
    ローカルでも計算できた
    ■ Private Score
    – 未知のデータと未知のモデルでスコア
    を計算
    6

    View Slide

  7. 結果 Private 2nd
    7

    View Slide

  8. ⽣成イッヌ
    8

    View Slide

  9. 2ND PLACE SOLUTION
    9

    View Slide

  10. はじめに
    ■ Final Submitted Kernels (やってることは⼤体⼀緒)
    – Private 2nd submission (version 1)
    https://www.kaggle.com/yukia18/sub-rals-biggan-with-auxiliary-classifier
    – Another
    https://www.kaggle.com/yukia18/sub-rals-ac-biggan-with-minibatchstddev
    ■ Discussion Post
    – https://www.kaggle.com/c/generative-dog-images/discussion/104211
    ■ ここで紹介する⼿法は、あくまでKernelの制約下でGANを学習する話であり、もっと
    リッチなリソースだと話が全然変わるはず
    ■ 同じ⼿法でも⼈によって効いたり効かなかったりする
    https://www.kaggle.com/c/generative-dog-images/discussion
    10

    View Slide

  11. 前処理①
    ■ Bounding Boxを⽤い⽝部分のみをクロップ
    ■ Bounding Boxを⻑辺の⻑さを維持したまま正⽅形に整形
    – そのまま使うとイッヌが潰れたり⾒切れたりする
    ■ 構造の変化・情報の⽋如
    11
    crop resize, random crop
    crop
    Bounding Boxの整形

    View Slide

  12. 前処理②
    ■ 画像をクロップし64×64にリサイズ
    – cv2.INTER_AREAを使⽤
    ■ Augmentation
    – HorizontalFlip(p=0.5)のみ
    ■ 画像を[-1,1]の範囲に正規化
    12

    View Slide

  13. モデリング
    ■ GPU1枚9時間に抑える必要があったため⼤きなモデルは動かせない
    ■ LSGAN[1]にBigGAN[2]の要素を少しずつ⾜していった
    – Conditional Batch Normalization (G), Projection (D), Shared Embedding (G),
    Hierarchical Latent Noise (G), Non-local Block (G, D)を加えLocal FID 37~
    – 通常のConvolution層をResidual Block (G, D)に変更しLocal FID 27~
    ■ Auxiliary Classifier[3] (D)を追加しLocal FID 15~
    – (Adversarial Loss) + (0.1 × Cross Entropy Loss)
    – 重み係数がかなり⼤事で1.0~0.2では崩壊
    ■ Spectral Normalization (G, D), Orthogonal Initialization (G, D)
    – 学習画像との類似度を下げるのに役⽴った
    13

    View Slide

  14. Generator概要図
    1×1 Conv
    Upsample
    CBN
    3×3 Conv
    ReLU
    CBN
    3×3 Conv
    ReLU
    Upsample
    "
    ,
    ResBlock Up 512
    ResBlock Up 256
    ResBlock Up 128
    ResBlock Up 64
    Non-Local Block 128
    Linear 4*4*512
    BN, ReLU, 3×3 Conv 3
    Tanh
    Split [20]*5 Embedding 32


    ∗ 4
    )
    14
    ResBlock Up
    (Upsample: Nearext Neighbor)
    Generator
    (SN except Embedding)

    View Slide

  15. Discriminator概要図
    1×1 Conv
    AvgPool
    3×3 Conv
    ReLU
    3×3 Conv
    ReLU
    AvgPool
    FC 1
    ResBlock Down 64
    Non-Local Block
    ResBlock Down 128
    ResBlock Down 256
    ResBlock Down 512
    ReLU, Global Sum Pooling Embedding 512


    FC |C|
    15
    ResBlock Down Discriminator

    View Slide

  16. 学習
    ■ 実画像に微⼩なランダムノイズを加える
    – (1/128) × Uniform(0,1)
    – この処理の有無で学習安定性が段違い
    ■ Adversarial Loss: RaLS[4] (Relativistic average Least Square)
    ■ Iteration数: 50,000 (Kernelの制限ギリギリ)
    ■ その他パラメータはモデルに変更を加えるたび僅かに調整
    – Batch size: 64
    – Optimizer: Adam
    ■ Learning rate: Generator = 2e-4, Discriminator = 8e-4
    ■ beta 1 = 0.0, beta 2 = 0.999
    – Updates: G:D = 1:1
    16

    View Slide

  17. 画像⽣成
    ■ 評価⽤のGenerator
    – 学習中のGeneratorの重みのExponential Moving Averageで作成
    ■ momentum=0.999
    – 結果が安定、FIDを~5程下げる
    ■ Truncation Trick
    – 閾値を2.0に設定
    – ⽣成画像の質に貢献(したように⾒える)
    – 極端に低い閾値でない限りスコアにはあまり寄与しなかった
    17

    View Slide

  18. おわりに
    18

    View Slide

  19. お気に⼊りの⼀枚
    Thank you for watching !
    19

    View Slide

  20. Reference
    20
    ■ [1] LSGAN https://arxiv.org/abs/1611.04076
    ■ [2] BigGAN https://arxiv.org/abs/1809.11096
    ■ [3] Auxiliary Classifer https://arxiv.org/abs/1610.09585
    ■ [4] RaLS https://arxiv.org/abs/1807.00734
    ■ フリー素材
    – https://unsplash.com/photos/IPheOySCW7A
    – https://unsplash.com/photos/HQkKWPuXGfw

    View Slide

  21. APPENDIX

    View Slide

  22. Appendix A. Detail of MiFID
    ■ Notation
    – 番⽬の実画像のInceptionの中間層の特徴量を34
    – 番⽬の⽣成画像のInceptionの中間層の特徴量を67
    ■ 実画像と⽣成画像のコサイン類似度を計算
    – 47 = 1 − cos 34, 67
    ■ 最⼩コサイン距離の平均を計算
    – = ?
    @
    ∑4
    min
    7
    47
    ■ 最⼩コサイン距離がある閾値の場合FIDにペナルティを課す
    – DE3 = F
    , if <
    1, otherwise
    – = Q ?
    RSTU
    22

    View Slide

  23. Appendix B. Not Workings
    ■ 前処理
    – cv2.INTER_LINEARを使った画像リサイズ
    – RandomResizedCrop 90%~100% proba=1.0
    – RandomRotate degree=Uniform(-5,5) proba=0.3
    ■ モデリング
    – StyleGAN, PGGAN … Kernelの制約下では扱いが難しい
    – Minibatch stddev
    – Bilinear Upsampling in ResBlock Up
    ■ 学習
    – Self Supervision ... 画像を回転(0, 90, 180, 270)させ回転⾓の分類
    – Hinge Loss … 時間内に収束せず
    – Deeper Models
    23

    View Slide

  24. Appendix C. Some Insights
    ■ ResBlockのReLUをLeakyReLU(0.2)とかに変えても効果なし︖
    ■ Spectral Normalizationありなしでパラメータ設定が結構変わる
    ■ 効いたり効かなかったりしたやつ
    – Learning Rate Scheduling (Cosine Annealing, Linear Decay)
    – Base channel size 64 -> 96 … 元が重いモデルは計算時間が⾜りない
    – Label smoothing
    24
    SNなし SNあり
    重み初期化 0,0.002 Orthogonal
    学習率(G:D) 2e-4:2e-4 2e-4:(4e-4~8e-4)
    Adam beta 1 0.5 0.0

    View Slide