のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Kaggleで、Deep Oceanの画像コンペの結果が出ました

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

久々の投稿ですね。Kaggleで出場したコンペについて記載します。

どんなコンペティション?

コンペティションのページはこちらです。
プランクトン121種類の画像を識別します。プランクトンの画像サイズは異なり、
画像はモノクロ画像です。

どんな手法を使ったの?

ConvolutionalNeuralNetwork(CNN)を使って、識別を行いました
スコア自体はpublic 0.899218,private 0.904137と非常にお粗末なスコアでした

実装アルゴリズムは
①リサイズ(32 x 32)
②150枚以下のクラスについては学習する前に150前後まで数を増加させる
③pre-processing(flip、切り取り)で28倍に増加
④CNNで学習
⑤Baggingでテスト

CNNは3x3のカーネルを組み合わせ、多層にして構築しました。
構成は気が向いたら書きますが、そこまで良いモデルではないので割愛しようと思います。

敗因
①画像のサイズが小さかったこと
CNNの層を重ねることができる結果的に、表現力がほかと比べて低かったことが一つの原因であると思っています。

②微弱な回転をランダムに入れるべきだった
実際のプランクトンのケースは微妙に回転しているものだったりが存在します。これを認識する為に微妙に回転させるなど工夫が必要でした。

③切り取りに加えて、拡大縮小も入れるべきだった
同じサイズのプランクトンはいないので、拡大縮小を入れて細かくやればよかった

優勝者

http://benanne.github.io/2015/03/17/plankton.htmlに優勝者の手法が記載されています。
凄まじい、Data ArgumentationやCylic Poolingなどを用いています。CylicPoolingが何かはあまりわかりませんがまぁ凄い方法なのかな?

これを見ながら、色々と勉強したいと思っています。