皆さんこんにちは
@tereka114です。
先日まで開催された物体検出のコンペティション「Global Wheat Detection」で6位になりました。
これまでチームではGoldを2度獲得したことがありましたが、ソロゴールドを獲得しました。
Kaggleはじめて6年目でようやく獲得できたので感慨深いです。
本記事では簡単にそのコンペの参加状況を記載します。
※コンペティションのサイト
www.kaggle.com
コンペティション概要
本コンペティションは、世界各地で撮影された多種の小麦の画像から、1つのモデルで小麦の穂の部分を検出する課題です。
小麦の穂の検出精度が向上することにより、農家の収穫の品質が上がったり、研究者が穂の密度やサイズを正確に計算できたりします。
コンペティションの開催期間は3ヶ月ほどで、5月5日開始、8月4日に終了しました。私は開催の初期の頃から参加していました。
そこから、主催者による終了2週間ほどの期間で提出物のチェックがあり、8月20日に確定しました。
結果、Public 1st/Private 6thでした。後述で説明するデータセットの扱いがなかなか難しく、PrivateとPublicの順位が離れる、いわゆる、Shake upの対策に難儀していました。
難しかったところ
今回の難しいは主にデータセットにあります。
世界中の小麦の写真を集めていますが、品種や地域によって育成度合いや形が全く違います。
また、学習データと評価用のデータには共通となる品種、地域はありません。
そのため、新しい環境でも運用できるモデルを構築しなければなりません。
小麦は環境や品種などで、想像以上に見え方に差分があります。公式の小麦画像によればこれぐらい違います。
解法
日本語で詳細を書く予定ですが、一応、英語でKaggle Discussionに書いています。
www.kaggle.com
そのため、本記述では詳細は省きますが、簡単に紹介します。
モデルはEfficientDetB3,B4,B5を利用しています。
処理は簡単に次の5段階に分かれています。
1. EfficientDetB3を使って学習データのみでモデルを構築し、評価データ(公開の10枚)に対して疑似ラベル(推論の結果)を作る。
2. 評価データと疑似ラベルに加え、学習データを入れて、EfficientDetB4とB5のモデルを作る。
3. Kernel上で予測したEfficientDetB5の結果を用いて、評価データ(全体)に対して疑似ラベル(推論の結果)を作る。
4. 3で利用したEfficientDetB5を学習データと評価データ(全体)でFinetuninigする。
5. EfficientDetB4(2) + EfficientDetB5(3) + EfficientDetB5(4)を組み合わせて最終的な予測をする。
基本的なソリューションコンセプトはいかにドメインが同じである評価データを利用するかです。
この情報をモデルに取り入れられると、ロバストなモデルの構築ができるのではと考えていました。
仕事でも違う場所にモデルを適用することに応用できそうなので、そのあたりのアプローチについて、自分なりに追求していました。
最後に
コンペ中は色々とありましたが、楽しかったです。
物体検出は仕事で使うことが多いので、仕事でも活かせると思ったテクニックは多々ありました。
仕事にも活かして、製品の改善などに貢献していきたいと思います。
Acroquest Technologyでは、キャリア採用を行っています。
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。Kaggle Masterと働きたい尖ったエンジニアWanted! - Acroquest Technology株式会社のデータサイエンティストの求人 - Wantedlywww.wantedly.com