Skip to content
このブログは移転しました。移転先はこちら。

Generative Dog Images コンペで Kaggle に初参加し、24th で銀メダルを獲得しました!

Posted on:2019年9月20日

表題のとおりです! Kaggle に初参戦し、銀メダルを獲得しました。

コンペ内容

このコンペはちょっと特殊というか実験的なコンペで、 “どれだけリアルな犬画像を生成できるか” を競うものでした。 おもしろそうだったので気軽に参加したのですが、案の定いろいろ問題が発生していて若干いわく付きのコンペになってしまったようです…

データセット

与えられるのは、犬種と画像がペアになった犬画像 10,000 枚でした。ここから GAN や VAE を学習して生成した画像を提出します。 画像サイズは 64x64 と比較的ちいさいため、Kernel only でもあつかいやすいコンペでした。

評価指標

生成した画像のリアルさは、GAN の研究でも一般的に広くつかわれている FID (を改変したもの) を使って評価されます。 ざっくりいうと

というものです。

解法のキーワード

細かい解法は discussion にゆずるとして、ざっくり以下のようなキーワードが頻出でした。

最終的な自分の解法は

という感じにおちつきました。 CV もへったくれもないコンペだったので、ひたすら実験を回すだけでしたが、論文をちゃんと読みながら進めたので、あるていど筋のよい人間ハイパラチューニングをすることができたのではないかとおもいます。

https://www.kaggle.com/agatan/sagan-resnet-annots

問題になったこと

おもに「生成しているということの定義が曖昧」であることに着目した論争がまきおこっていました。

というのが最初におこなわれました。評価指標的にはこれで圧倒的なスコアがだせてしまっていました。 さすがにそれはだめでしょう、ということで GAN や VAE を使ってくれ、と運営からのお達しがありました。

が、

という方法で似たようなことが実現できてしまう、という問題提起があがりました。 これは明確な線引きがむずかしく、クラス数が 1000 ならいいのか?などの議論がまきおこりました。 結局与えられたデータセット内の犬種をクラスとして使うのはあり、という結論になりましたが、いまいち基準ははっきりせず、最終的には運営が LB の上位については全件チェックし明確に違反しているものは弾く、という方針になりました。

こういう経緯があったので、Public LB は実質的に機能しておらず、僕もコンペ終了間際まで LB では 200 位より下だったと記憶しています。

まとめ

いろいろいわくつきのコンペではありましたが、初参加でおもいっきり楽しむことができ、結果も残せたのは素直にうれしくおもっています。 GAN はまったく触ったことがなかったので、かたっぱしから論文を読んで再現実装していくプロセス自体がたのしく勉強にもなったので参加してよかったです!。