GitHub 言語を切り替える

Axell AI Contest 2025 1st Place Solution Approach & Results

91種類の飲料パッケージを物体検出によって識別するAIモデルの開発


ページ 1

概要

Axell AI Contest 2025は、91種類の飲料パッケージを物体検出で識別する課題でした。 評価は、mAP@0.5:0.95で行われました。 加えて、SIGNATEのプラットフォーム上で0.0175秒以内に推論を完了すること、提出ファイルのサイズを64MB以下に抑えることが求められました。 私は、Publicで4位、Privateで1位となりました。 この記事では、私の解法について紹介します。

特徴

本コンテストの特徴は、次の3つが挙げられます。

1. 学習と評価で異なる条件の画像が含まれること
本コンテストでは、評価データに、学習データとは異なる条件で撮影された画像が含まれていました。 さらに、学習データに含まれている背景が4種類ほどしかないという特徴も見られました。

2. 推論時間とモデルサイズが制限されていること
本コンテストでは、推論時間が0.0175秒以内に制限されており、提出するファイルのサイズも64MB以下に制限されていました。

3. 小数第3位の差で順位が決まること
本コンテストでは、mAP@0.5:0.95の小数第3位の差で順位が決まるほど、非常に僅差の勝負となりました。 特に、1枚の画像に対して最大でも5個の物体しか写らないという簡単なタスクであったことも影響しました。

構成

採用したモデルはYOLOv12-Lです。前処理は行わず、後処理もNon-Maximum Suppression (NMS) によって重複する検出を除去するだけの、できるだけ単純な構成にしました。 この構成にした理由は、本コンテストの推論時間ファイルサイズの制約が強く、処理を増やすほど制約を満たすことが難しくなるためです。 Model EnsembleTest Time Augmentation (TTA) といった手法は有利になり得ますが、その分だけ推論が遅くなり、ファイルサイズも大きくなりやすいという欠点があります。 今回は、制約を確実に満たしたうえで、精度を伸ばすことを優先しました。

解法

1. 画像生成によるデータ拡張

学習データに含まれている背景が4種類ほどしかない状況では、 モデルは物体を見るのではなく、背景を手がかりにしてしまうショートカット学習を起こしやすくなります。 これは、背景と物体の間に強い相関があるためです。 この問題を解決するため、画像生成によって新しい背景を生成し、学習データの背景を多様化しました。 具体的には、以下のような手順で背景を生成し、学習データに合成しました。

1. 物体の切り出し
SAM2を用いて物体のみを切り出しました。

2. 背景の生成
Stable Diffusion 3を用いて背景を生成しました。

3. 品質の確認
CLIPを用いてプロンプトと背景の類似度を確認しました。

4. 画像の合成
切り出した物体と生成した背景を合成しました。

このようにして、多様な背景を用いることで、モデルが背景に依存せず、物体の特徴を学びやすくなりました。

2. 制約に向けた推論の最適化

推論時間とファイルサイズの制約を満たすため、以下のような最適化を行いました。

1. アスペクト比の最適化
画像のアスペクト比の分布に合わせてリサイズすることで、有効となる画素数を向上させました。 解像度を上げれば、精度が向上しますが、推論速度が低下するというトレードオフがあります。 いくつか調整を重ねた上で、576x768を採用しました。

2. TensorRTとFP16の利用
NMSはエンジンに焼き込むことで、計算量を削減しました。 量子化は、キャリブレーションのために、画像を入れる必要があります。 ファイルサイズが64MBに収まらなかったため、断念しました。

3. 微差を拾うための工夫

小数第3位の差で順位が決まるという状況では、細部を詰めて微差を積み上げることが重要になりました。

うまくいったことは、以下の通りです。

1. 箱を意識した損失関数
ボックス回帰損失や分布焦点損失の重みを上げることで、箱の位置の誤差を優先的に削りました。

2. 箱を壊さないデータ拡張
箱を壊すような幾何学変換を避け、CutMix / Mixupと色・露出の変化で多様性を確保しました。

3. NMSのチューニング
信頼度スコアの閾値とIoU値の閾値について、5-foldのOOFを粗くグリッドサーチし、近傍をOptunaで微調整しました。

うまくいかなかったことは、以下の通りです。

1. ハードネガティブマイニング
5-foldのOOFから作成した混同行列で難例のペアを特定し、合成の際に意図的に近づけて配置して学習しました。

2. アノテーションの修正
余白やはみ出しなどの系統的な誤差をSAM2で判定し、アノテーションの一貫性を向上させました。

3. 画像生成による負例学習
Stable Diffusion 3を用いて形状が類似した物体を生成し、合成の際に負例として配置して学習しました。

感想

私にとって、初めてのコンペティションでしたが、非常に良い経験となりました。 制約の中で精度を上げるために、様々な工夫を凝らすことが求められた点が印象的でした。 また、画像生成を用いたデータ拡張が効果的であったことから、今後もこの手法について理解を深めていきたいと考えています。