statsuのblog

愛知のデータサイエンティスト。自分の活動記録。主に機械学習やその周辺に技術について学んだことを記録していく予定。

Kaggleの雲コンペ(Understanding Clouds from Satellite Images)についての記録

Kaggleの雲コンペに参加したので、実施事項や思ったことを記録しておきます。

1. 雲コンペ

衛星写真にうつった雲を種類ごとに検出して分類するタスクについて、その精度を競います。
Understanding Clouds from Satellite Images | Kaggle https://storage.googleapis.com/kaggle-media/competitions/MaxPlanck/Teaser_AnimationwLabels.gif

特徴は以下のとおりです。

  • 検出する雲の種類は4種類(fish, flower, gravel, sugar)。
  • 学習用データとして衛星画像、画像中の雲の位置・種類が与えられます。テストデータとして衛星画像のみが与えられるので、雲の位置・種類を推定する必要があります。
  • いわゆるSegmentationタスクにあたり、Deep learningの得意領域です。

わかりやすく説明してくれているブログがあったのでリンクを貼っておきます。
Kaggle 雲コンペ 反省録 - 機械学習 Memo φ(・ω・ )

2. 自分の解法

167位/1538チームという結果でした。
SegmentationモデルとしてはDeeplab v3+ (MobileNetV2バックボーン)を使いました。これを選んだ理由は、モデルサイズが小さい割に精度が良かったからです(PCのスペックがしょぼくて大きいモデル使えない。。)。resnet系バックボーンのUNETはGPUのメモリが足りなくてまともに使えなかったけど、Deeplab v3+ (MobileNetV2バックボーン)は使える程度に動いてくれました。ネットワーク構造も色々工夫されてて個人的に好みです笑

概要とコードは以下のとおりです。
GitHub - statsu1990/kaggle_understanding_clouds: Kaggle competition Understanding Clouds from Satellite Images

Solution overview

3. 上位の解法

全員Deep learning系のSegmentationモデルを使っていました。具体的にはUnet, FPNが多い。上位勢は当然のごとく大きなモデル使ってますね。
https://www.kaggle.com/c/understanding_cloud_organization/discussion/118080 https://www.kaggle.com/c/understanding_cloud_organization/discussion/118255 https://www.kaggle.com/c/understanding_cloud_organization/discussion/118016

気になった解法は以下とおりです。

4. 思ったこと

  • 大きいモデルを使えないと画像コンペでは絶対勝てない。新しいPCかクラウドを導入しよう。クラウドならGCPがいいかな。安そう。
  • Windowsでは分散処理が動かないことが多い。GPUだけでなくCPU側も処理速度のボトルネックになっている。