物体検出モデルであるYOLO、その最新バージョンのYOLOv8を使ってスプラトゥーン3で敵を検出してみて大変だったことを話そうと思います。
以下がQiitaに投稿した記事です。↓
https://qiita.com/yamadai0127/items/270ce5b002fb8d083821
今回、一番大変だったのがアノテーションです。labelImgというアノテーションツールを使って訓練データ888枚、検証データ208枚の画像データにアノテーションしました。
人の姿やイカの姿の敵は容易なんですが敵がインクの中に潜った瞬間のインクのしぶきやインクの中を泳いでいるときのインクの波もアノテーションすべきか、すごく迷いました。
学習させたモデルをテストデータで試すとちゃんと検出できたり誤検出したりそもそも検出しなかったりなどバラつきがありました。
それでどうやって敵と判定させるか悩みました。試合中、アバターの髪はインクの色と同じ色になるので髪の色で敵を判定させようかと思いましたが、アバターの髪が短くて頭に帽子型のギアを付けていた場合や、敵が遠くにいて色で判定しずらい場合などを考えるとアバターの髪の色で敵を判定させるのはなかなか難しいなと思いました。
なのでとりあえず訓練データをどんどん増やしてひたすら学習させていくことにしました。
遠くの敵や近くの敵はちゃんと検出出来ていて、また複数の敵に対しても検出出来ていました。しかし、誤検出やそもそも検出しなかったりなど、今回作ったモデルにはまだ課題がたくさんあるので今後も改良していこうと思います。