AIスイング解析、次の壁は“バット検出”だった|素人エンジニアがスポーツを科学する

AI生活

導入

前回の記事では、
生成AIを使いながら野球のスイング解析を作り始めた話を書いた。

人体の骨格検出については、
想像以上に簡単だった。

「MediaPipe」という仕組みを使うことで、

  • 手首

などをかなり高精度で取得できたからだ。

しかし、
実際にスイング解析を作ろうとすると、
次の大きな壁が現れた。

それが「バット検出」だった。

人体は認識できるのに、なぜバットは難しいのか?

最初は単純に考えていた。

「バットなんだから、
細長い棒状の物体を検出すればいいのでは?」

と。

人体認識がここまで進化しているなら、
バットぐらい簡単に認識できると思っていた。

しかし実際に試してみると、
これがかなり難しかった。

棒状物体の検出を試してみた

最初に試したのは、
「細長い形」を検出する方法だった。

バットは基本的に細長い。

そのため、

  • 輪郭抽出
  • エッジ検出
  • 線分検出

などを使えば、
それっぽいものを追えるのではないかと考えた。

しかしここで問題が起きる。

背景にも“棒状のもの”が大量に存在していた。

例えば、

  • ネット
  • フェンス
  • 地面のライン
  • バットケース

など。

人間なら簡単に区別できる。

しかしAI側から見ると、
どれも「細長い線」に見えてしまう。

結果として、
本来追いたいバットではなく、
背景側に吸われることがかなり多かった。

探索範囲を限定してみた

次に考えたのは、
「身体の近くだけを探せばいいのでは?」
という方法だった。

スイング中、
バットは基本的に身体の近くに存在する。

そのため、
骨格検出と組み合わせて、

  • 手首周辺
  • 腕の延長方向
  • 一定範囲内

だけを探索対象にしてみた。

しかし、
これも簡単ではなかった。

スイング中のバットは想像以上に動く。

しかも、

  • 高速移動
  • モーションブラー
  • フレーム端への移動
  • 身体との重なり

などが発生する。

探索範囲を狭くしすぎると、
今度はバット自体を見失う。

逆に広げると、
また背景に吸われる。

かなり調整が難しかった。

先端の色を追う方式に変更

そこで次に試したのが、
「バット先端の色」を追う方法だった。

例えば、
先端部分に特徴的な色があれば、
色抽出で追跡しやすくなる。

OpenCVを使いながら、

  • HSV色空間
  • マスク処理
  • 色抽出

などを試してみた。

これによって、
ある程度は改善した。

しかし、
やはり問題は残った。

背景に似た色が存在すると、
そちらに吸われてしまう。

さらに、

  • 照明
  • 反射
  • 動画圧縮

などでも結果が変わる。

思っていた以上に、
「現実の映像」を扱うのは難しかった。

そこでYOLOを試してみることにした

ここまで試して感じたのは、
単純な画像処理だけでは限界があるということだった。

そこで次に試すことにしたのが、
「YOLO」という物体検出AIだ。

YOLOは、
AI自身に「これはバットです」と学習させる仕組みになる。

つまり、

  • 背景
  • 人体
  • フェンス

などではなく、
“バットそのもの”を認識させる方向だ。

ただ、
これも簡単ではない。

バットは高速で動き、
映像によってはブレて形すら変わる。

それでも、
少しずつAIに学習させながら、
どこまで検出できるのか試してみたいと思っている。

まとめ

人体の骨格検出までは、
想像以上にスムーズに進んだ。

しかし、
実際にスイング解析を作ろうとすると、
最大の壁は「バット検出」だった。

  • 背景に吸われる
  • ブレる
  • 見失う
  • 身体と重なる

など、
人間には簡単に見えることが、
AIには非常に難しい。

それでも、
試行錯誤しながら少しずつ形になっていくのはかなり面白い。

次は、
YOLOによるバット検出と学習について試していきたい。


関連記事

コメント

タイトルとURLをコピーしました