Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Generative Dog Images 2nd place solution (Japan...

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

More Decks by yabea

Other Decks in Programming

Transcript

  1. Self Introduction ▪ Account Name: yabea ▪ Master’s Student at

    Keio University ▪ Machine Learning : 2018/03~ ▪ Kaggle : 2019/02~ @yabea18 2
  2. コンペ概要 ▪ 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
  3. 評価指標 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
  4. 評価パイプライン https://www.kaggle.com/c/generative-dog- images/overview/evaluation ▪ Public Score – 学習データとInceptionモデルでスコア を計算 –

    Inceptionモデルは公開されていたため ローカルでも計算できた ▪ Private Score – 未知のデータと未知のモデルでスコア を計算 6
  5. はじめに ▪ 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
  6. モデリング ▪ 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
  7. 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)
  8. 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
  9. 学習 ▪ 実画像に微⼩なランダムノイズを加える – (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
  10. 画像⽣成 ▪ 評価⽤のGenerator – 学習中のGeneratorの重みのExponential Moving Averageで作成 ▪ momentum=0.999 –

    結果が安定、FIDを~5程下げる ▪ Truncation Trick – 閾値を2.0に設定 – ⽣成画像の質に貢献(したように⾒える) – 極端に低い閾値でない限りスコアにはあまり寄与しなかった 17
  11. 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
  12. 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
  13. 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
  14. 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