9/20/2019 公開
表題のとおりです! Kaggle に初参戦し、銀メダルを獲得しました。
このコンペはちょっと特殊というか実験的なコンペで、 "どれだけリアルな犬画像を生成できるか" を競うものでした。 おもしろそうだったので気軽に参加したのですが、案の定いろいろ問題が発生していて若干いわく付きのコンペになってしまったようです...
与えられるのは、犬種と画像がペアになった犬画像 10,000 枚でした。ここから GAN や VAE を学習して生成した画像を提出します。 画像サイズは 64x64 と比較的ちいさいため、Kernel only でもあつかいやすいコンペでした。
生成した画像のリアルさは、GAN の研究でも一般的に広くつかわれている FID (を改変したもの) を使って評価されます。 ざっくりいうと
というものです。
細かい解法は discussion にゆずるとして、ざっくり以下のようなキーワードが頻出でした。
最終的な自分の解法は
という感じにおちつきました。 CV もへったくれもないコンペだったので、ひたすら実験を回すだけでしたが、論文をちゃんと読みながら進めたので、あるていど筋のよい人間ハイパラチューニングをすることができたのではないかとおもいます。
https://www.kaggle.com/agatan/sagan-resnet-annots
おもに「生成しているということの定義が曖昧」であることに着目した論争がまきおこっていました。
a * 0.99 + b * 0.01
でブレンドした画像を提出するというのが最初におこなわれました。評価指標的にはこれで圧倒的なスコアがだせてしまっていました。 さすがにそれはだめでしょう、ということで GAN や VAE を使ってくれ、と運営からのお達しがありました。
が、
[0.99, 0.01, 0, 0, 0, ...]
というクラスであるという入力をつくって画像を生成する。
という方法で似たようなことが実現できてしまう、という問題提起があがりました。 これは明確な線引きがむずかしく、クラス数が 1000 ならいいのか?などの議論がまきおこりました。 結局与えられたデータセット内の犬種をクラスとして使うのはあり、という結論になりましたが、いまいち基準ははっきりせず、最終的には運営が LB の上位については全件チェックし明確に違反しているものは弾く、という方針になりました。
こういう経緯があったので、Public LB は実質的に機能しておらず、僕もコンペ終了間際まで LB では 200 位より下だったと記憶しています。
いろいろいわくつきのコンペではありましたが、初参加でおもいっきり楽しむことができ、結果も残せたのは素直にうれしくおもっています。 GAN はまったく触ったことがなかったので、かたっぱしから論文を読んで再現実装していくプロセス自体がたのしく勉強にもなったので参加してよかったです!。
このサイトはGoogle Analyticsを使用しています。