Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

コンペ概要と結果 3

Slide 4

Slide 4 text

コンペ概要 ■ 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

Slide 5

Slide 5 text

評価指標 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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

結果 Private 2nd 7

Slide 8

Slide 8 text

⽣成イッヌ 8

Slide 9

Slide 9 text

2ND PLACE SOLUTION 9

Slide 10

Slide 10 text

はじめに ■ 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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

モデリング ■ 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

Slide 14

Slide 14 text

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)

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

学習 ■ 実画像に微⼩なランダムノイズを加える – (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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

おわりに 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

APPENDIX

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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