Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Generative Dog Images
Search
hirune924
August 15, 2019
Research
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Generative Dog Images
kaggle Generative Dog Images competition Solutions
hirune924
August 15, 2019
Other Decks in Research
See All in Research
Développer des solutions de réduction des émissions de méthane entérique : 1ers résultats Méthane 2030
institutdelelevage
PRO
0
240
[CV勉強会@関東 CVPR2026] PSDesigner: Automated Graphic Design with a Human-Like Creative Workflow / kantocv 67th CVPR 2026
shunk031
0
370
シングルチャネルマルチトーカー音声認識の進展
ryomasumura
0
340
ros2-perf-multihost: Automated Coordination Framework for Objective Architecture Evaluation in Distributed Systems
takasehideki
0
140
The Conductor Pattern -Multi-Granularity Feedback for Creative Agents-
shibuiwilliam
2
110
Visual SLAM未来予測 / Future Prediction in Visual SLAM
koide3
1
1.2k
VLMの推論を高速化する視覚トークン削減の仕組み
tattaka
2
360
Physical AIでモデリングはどう変わるか/How Physical AI Will Change Modeling
stktu
0
290
LA-Bench 2025:実験指示から実行可能手順を生成するためのデータセット/LA-Bench 2025: A Dataset for Generating Executable Experimental Procedures from Experimental Instructions
stktu
0
200
研究室単位での自律的 IPv6接続性確立に向けたAS共同運用モデルの提案と実証
reokashiwa
PRO
0
230
【ローカルAIに向き合う展示会vol.2】液体時間定数型モジュールを用いた オリジナルの双方向エンコーダーモデルNexteraBERT 推論速度向上検討並びにダウンストリーム評価
rikkabotan7
0
230
論文紹介: Understanding Epistemic Language with a Language-augmented Bayesian Theory of Mind
hisaokatsumi
0
190
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
30 Presentation Tips
portentint
PRO
1
430
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Deep Space Network (abreviated)
tonyrice
0
360
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Transcript
Generative Dog Images Experiment with creating puppy pics @hirune924
コンペ概要 • Kaggle初(世界初?)のGANコンペ • 主催:Kaggle • 期間:2019年6月28日~8月14日 • Data:Stanfordの公開している犬画像データセット •
20579枚の犬の画像+犬種と犬のBounding Boxのannotation • 提出物:GANによって生成された10000枚の64x64の犬画像 • Kernel Onlyコンペ • Submitの計算はすべてKernel上で行わなければならない • Kernel要件 • インターネット接続無し • 9時間以下の実行時間 • 13GBのRAM • 外部データの使用無し https://www.kaggle.com/c/generative-dog-images/overview
評価指標
MiFID • Inception Score(IS) • ImageNetで学習済みのInception Networkを用いた評価指標 • InceptionNetworkが識別しやすい→質が高い •
識別されるラベルのバリエーションが多い→多様 • FID • 現在GANの評価指標としてよく使用されているもの • ISでは実画像の分布が考慮されていないという欠点を改善するため、実画像と生成画像の分 布間の距離をFrechet距離によって測る • 小さいほど良い指標 • MiFID • FIDでは学習に使用した画像を暗記して、そのまま提出すると非常に良いスコアが得られて しまうため、実画像との距離平均が一定の閾値を下回る場合にペナルティを設定したもの
評価パイプライン • Public LBでは学習データと公開されたInceptionモ デルによってスコアが計算される • Private LBでは未知のデータと未知のモデルによっ てスコアが計算される https://www.kaggle.com/c/generative-dog-images/overview/evaluation
Solution紹介の前に… コンペ中のドラマを振り返る
コンペ初期 • Imitation Game Kernelの公開 • MiFIDの閾値を決定するための距離を簡単に騙せることが判明 • 画像を0.999:0.001の割合で混ぜ合わせることで簡単に20程度のスコアが出る •
さすがにこの方法はルール違反であったが、一時の快楽を味わいたい人たちがKernelを Fork&Submitし始める。早くもLB崩壊 • 純粋なGANを極めようとする集団と評価指標をうまくハックしようとする集団が生まれる https://www.kaggle.com/jazivxt/imitation-game
コンペ中期 • Dog Memorizer GAN kernelの公開 • Imitation Gameはさすがにルール違反だったが、モデルに画像を丸暗記させるなら合法で は?という発想
• GANは程度の違いはあれど学習画像を覚えているケースがあるし合法と違法の線引きが難 しい • 例えばCGANのクラス数を学習画像数と同じにすればそれはGANなのか?という問題 • 画像をクロップすることで評価指標をハック、そしてスコアは一桁台に… • これに対するKaggleの判断 この方法はグレーゾーンであり、現在それは許可されていると思う Kaggleの判断にがっかりする純粋GAN勢 完全に崩壊するLB https://www.kaggle.com/cdeotte/dog-memorizer-gan
コンペ後期 締め切りを5日延ばして14日にするわ、あとMemorizer GANは禁止な 提出物は全部コードチェックするからサブミットはKaggle運営とshare すること Kaggleの判断に大歓喜する純粋GAN勢 手のひら返しをくらったMemorizer GANを極めた勢 • コンペ終了(9日)まで一週間を切ったころ、それまで沈黙していたKaggle運営が動き出す
• なお禁止の基準を明確に定義すると必ずハックする人が現れるからか、禁止の基準についての 質問に対しては悉く沈黙
Solution
試したGAN一覧 • LSGAN • StyleGAN • Memorizer CGAN (Public LB
5位) • ACGAN • ACLSGAN • DRAGAN • WGAN-GP • SNGAN • SAGAN • Conditional SAGAN • VQ-VAE-2 • VAEでpretrain→LSGAN • Data Cleaning Methods • 手作業でアノテーション(犬の顔が引きで写っているか寄りで写っているか) • PCA→k-means • Segmentation→PCA→k-means • VGG16→PCA→k-means 色々と試したが、多すぎるので以降では最終サブミットしたGANを中心に解説する
Final Submission - architecture • モデル構造 • Upsampling→Convは上手く機能しなかったためConvTransposeを使用 • Spectral_normはスコアを56→46まで引き上げた
• 重いGANはkernelの制約下では上手く学習することが出来なかった • nzは128、nfeatsは64がベスト https://www.kaggle.com/hirune924/public-lb-38-92350-solution
Final Submission - how to train • 基本的にはLSGAN • Loss:
MSELoss • Optimizer: Adam(betas=(0.5, 0.999), weight_decay=1e-5) • Learning Rate • Generator: 0.0008 • Discriminator: 0.0002 • CosineAnnealingで減衰 • DataAugmentation • RandomResizedCrop(scale=(0.7, 1.0), ratio=(1., 1.))→RandomHorizontalFlip→Normalize • Gradient Penaltyは上手くいかなかった(lambdaなどのチューニングが足りなかったかも?) • LearningRateを通常より大きくすることでスコアが46→39まで向上 • 小細工は基本的に通用しない • 計算リソースが許すならハイパーパラメータチューニングはもっとするべきだったかも • Truncation trick(thresh=0.5)を使うとスコアが39→38まで向上 • Final best score: 38.92350 https://www.kaggle.com/hirune924/public-lb-38-92350-solution
Final Submission - result • DOGS https://www.kaggle.com/hirune924/public-lb-38-92350-solution
上手くいかなかった手法たち
結果と考察 • StyleGAN → kernel9時間で実行するには重すぎた。もっと削れるところはあったかも • ACGAN → 犬種ラベルを使ってもスコアを改善できなかった •
ACLSGAN → ACGANよりはスコアは良かったが… • DRAGAN → 学習失敗、犬が崩壊する • WGAN-GP → 学習はできたがスコアは少し悪くなった • SNGAN → PFNのChainer実装を試したがKernel上で動かせず…(Chainerのversion違い?) • SAGAN → 悪くはなかったがスコアの改善ならず • Conditional SAGAN → 犬種ラベルを使ってもスコアを改善できなかった • VQ-VAE-2 → 2段階目の学習が重すぎ • VAEでpretrain→LSGAN → pretrain意味なし、破壊的忘却? • Data Cleaning Methods • 手作業でアノテーション(犬の顔が引きで写っているか寄りで写っているか) → スコアの改善ならず。特定の写り方をしている画像だけを用いて学習すると生成画像は 綺麗になるが多様性を下げる結果になる。 • PCA→k-means → クラスタリングはまぁまぁ上手くできた。だが上に同じく… • 犬Segmentation→PCA→k-means → クラスタリングも機能せず • VGG16→PCA→k-means → クラスタリングも機能せず
上位Solutionは公開され次第 随時更新予定
Happy GAN Solution (score: 38.70295) • モデルアーキテクチャはシンプル • 入力データにわずかなノイズをのせている •
Learning RateはDG共に0.0005 • Real_labelは0.7 Fale labelは0.0(固定) • Loss: BCELoss, Optimizer: Adam • 750 epochでアーリーストッピング https://www.kaggle.com/leonshangguan/dcgan-data-cleaning-sub-v1?scriptVersionId=18470145
Happy GAN Solution (score: 38.70295) • DOGS https://www.kaggle.com/leonshangguan/dcgan-data-cleaning-sub-v1?scriptVersionId=18470145
Johannl Solution (score: 38.26191) • StyleGANを使用? • LearningRateはDG共に0.001 • lr_scheduler.ExponentialLR(gamma=0.99)
• 入力ノイズが512 • ラベルはノイズをのせて変動 • 段階的に解像度を上げていくような実装は見つけられなかった。解像度固定? • 250epoch!? https://www.kaggle.com/johannl/sn-dcgan-style?scriptVersionId=18780768
Johannl Solution (score: 38.26191) • DOGS https://www.kaggle.com/johannl/sn-dcgan-style?scriptVersionId=18780768
Theo Viel Solution (score: 30.33340) • Progressive GANをConditionalにしたものを使用 • Real
imageに変わったnormalizeを使用(2をかけて1を引く?) • bboxを上下左右に10px拡大して使用 • Generatorの学習を安定させるのにEMA Weights Decayを使用? • LossはHingeLossを使用 • Learning Rateはともに6e-3 • Latent dim は256 • Epochは[5, 10, 20, 40, 100]ごとに解像度を上げる、解像度は[4, 8, 16, 32, 64] • それぞれの犬種だけの生成画像を採点し、スコアの悪い犬種は除いて提出物を作ったがスコアは改善され なかった https://www.kaggle.com/theoviel/conditional-progan-30-public?scriptVersionId=18873238
• DOGS Theo Viel Solution (score: 30.33340) https://www.kaggle.com/theoviel/conditional-progan-30-public?scriptVersionId=18873238
yabae Solution (score: 15.81605) • BigGANベースのモデルを使用 • shared embedding of
dog breed labels • hierarchical latent noise • projection • auxiliary classifier (ACGAN) • RaLSのLossを使用 • Batchsizeは128 • LearningRateがG: 2e-4, D: 4e-4と他とは違った感じ? • Exponential Moving Average of generator weights(Generatorの学習安定用?) • 入力画像にuniform noiseをのせる • なんか複雑なことをしている割には実装がきれいな気がする https://www.kaggle.com/yukia18/sub-rals-ac-biggan-with-minibatchstddev?scriptVersionId=18828724 https://www.kaggle.com/c/generative-dog-images/discussion/104211
• DOGS https://www.kaggle.com/yukia18/sub-rals-ac-biggan-with-minibatchstddev?scriptVersionId=18828724 yabae Solution (score: 15.81605)
Dmitry Vorobiev Solution (score: 14.95516) • BigGANを使用(https://github.com/ajbrock/BigGAN-PyTorch) • Generatorの2倍のチャンネルを持つDiscriminatorを使用 •
多様性を維持しながら意味のある部分をできるだけ多く保持したData Augmentation • Bboxを上手く活用し、回転やズームを利用 • Paddingをとても工夫している • 生成した画像にノイズ除去を使用することで場合によってはMiFIDを10以上も改善 • 元のアーキテクチャに大きな変更は加えていないがAttentionの層に微調整を加えて軽量に • Truncation trickでは大きな改善はなかったが少しは良くなる • BigGAN-deepは上手くいかなかった • stochastic weight averaging (SWA)を使用(元のコードについているものを使用) https://www.kaggle.com/dvorobiev/doggies-biggan-sub-data-aug-3
• DOGS Dmitry Vorobiev Solution (score: 14.95516) https://www.kaggle.com/dvorobiev/doggies-biggan-sub-data-aug-3
おまけ Solution(Memorizer CGAN)
Memorizer CGAN • 一時期Kaggle運営はMemorizer GANを許可していたので、 ある意味Kaggleを信じてMemorizer GANを極めてみた。 • 基本的にはクロップのみでMiFIDの距離を騙すのがポイント(ブレンドはしない) •
元のMemorizer CGANではスコアが7.2ほど出ていたがクロップの方法が雑かった • 元のクロップ方法ではアス比が0.75以上の画像のクロップ領域が小さくなり、距離が小さくな りがちだった→画像のアス比に応じてクロップの方法を微調整 • ランダムシードサーチによって57という神シード値を見つける(score: 5.17518) • そして一時の快楽に… https://www.kaggle.com/hirune924/public-lb-5-17518-solution-memorizer-cgan https://www.kaggle.com/jesucristo/memorizer-cgan-for-dummies