Skip to content

rerelurelu/CGIAR-WGS-Challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CGIAR Wheat Growth Stage Challenge

Competition website

29 / 204 位

内容

目的

与えられた画像から小麦の成長段階を予測するモデルの作成。

評価関数

データセット

画像とそれに対応する成長段階ラベル、ラベルクオリティが含まれているデータセット。ラベルクオリティというのは、成長段階ラベルを決めたのが誰かということ。ラベルクオリティには2種類あり、1は農家によってつけられたもの、2は専門家によってつけられたものということを意味している。また、テストデータのラベル付けは全て専門家によって行われたということが公式からアナウンスされていた。

成長段階ラベルは7段階だが、HQデータ(専門家によってラベル付けされたデータ)には(2, 3, 4, 5, 7)、LQデータ(農家によってラベル付けされたデータ)には(1, 2, 4, 5, 6, 7)の成長段階データしかない。また、LQデータの17のラベルデータはその他のラベルデータと比較して2倍以上多い。

個人的には近しい成長段階の小麦は画像を見ても違いが分からなかった。ただ、HQデータには白いポールが写っている画像が多いという特徴があり、LQデータのラベル付けの精度はあまり高くなさそうだということはEDAから分かった。

解法

モデル

  • ResNet50
  • VGG16
  • DenseNet201
  • EfficientNet-B0

Augmentations

モデルによって使うものは分けた。

  • Rotate
  • CropPad
  • RandomResizedCrop
  • Brightness
  • CropPad
  • Zoom
  • Warp

日記

コンペには中盤くらいから参加したので、ベースライン作りのためのソリューションがすでに共有されていたが、fastaiで書かれていたため、まずはfastaiの勉強から始まった。少し勉強したところ、fastaiでも自分がやりたかったことは何となくできそうだったので、モデル作成はfastaiで行うことに。

fastaiにはlearning rateをサジェストしてくれる機能があるが、サジェストに従うよりも自分で決めた値で固定した方が余計なものに振り回されること無くモデルの比較ができると思った。

データに関しては、画像サイズの平均が180 x 512だったので、リサイズ後の画像が歪になるのを避けるためにそのままリサイズするのではなく、切り抜いてからリサイズすることにした。次に、全データ、全HQ+一部のLQデータ(HQデータにない成長段階データをLQデータからデータ数が正規分布の形になるように選択)、HQデータのみの3つのデータセットで試したが、HQデータのみを使用したパターンが一番スコアが良かった。

モデルに関しては、ResNetやEfficientNetなど色々なモデルをfinetuningして得られた各々のスコアと学習にかかる時間を考えて上述の4つのモデルに決めた。

使用するモデルを決めたあとは、Augmentationの方法の調整を行い、それが固まった後は、HQデータのみで学習したモデルを使用してLQデータの成長段階を再ラベリングし、HQ+LQデータで新たにモデルを作成したところスコアが改善されたため、このデータセットで学習したモデルをアンサンブルすることで最終スコアを出した。

※ 以下はコンペと関係ないTips

・colabで画像データのzipファイルを解凍する時、colab上の一番上のディレクトリで解凍しないとnotebook上での最初の画像読み込みにかなり時間がかかる(ホームディレクトリでは読み込みに2分なのに対して作業ディレクトリでは30分)。

・googleアカウントを複数作っておくことで同時に複数のモデルを学習させることが出来るので、できるだけ活用したほうが良い。ただ、気を付けないとソースコードの管理がめちゃくちゃになる。

上位の解法

1stの特徴

  • ResNet50, ResNet101, ResNeXt50
  • 最初にHQ+LQデータで学習し、最後にHQデータのみで学習
  • 白いポールを画像に追加

効果がなかった方法

  • LQデータとテストデータのPseudo labeling
  • Mixup、CutMix
  • EffecientNet
  • 回帰問題として解く

最後に

モデルが何を思って入力画像に対する予測を出したのか分析することが一番大事。そしてそれが一番モデルの改良に繋がる。後はパラメータとソースコードの管理方法をしっかり学ぶべきだと思った。

About

CGIAR Wheat Growth Stage Challenge in Zindi

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published