テニスボール検出とカルマンフィルタによる軌跡推定(VideoSegmentationWKallman)
概要
本リポジトリは、テニス動画中のボールを対象に、YOLOv5で検出したバウンディングボックスの情報を用いてカルマンフィルタ(READMEでは「Kallman」と表記)で軌跡推定を行うデモプロジェクトです。OpenCVを用いた動画の読み込み・前処理や、YOLOv5の推論結果を可視化する処理、検出中心点を観測値としてカルマンフィルタに渡し、位置・速度を推定する一連の手順をJupyter Notebook(VideoSegmentation.ipynb)で説明しています。小さく高速に動くボールの追跡という課題に対して、検出のノイズ除去と軌跡の滑らかさ向上を狙った実験的な実装が中心です。(約300字)
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 3
- ファイル数: 2
- メインの言語: Jupyter Notebook
主な特徴
- YOLOv5を用いたテニスボールの検出デモ(推論パイプライン)
- OpenCVでの動画入出力と可視化処理をNotebookで実行可能
- 検出結果(バウンディングボックス中心)を観測としてカルマンフィルタで平滑化
- 軌跡推定の可視化と、欠検出や誤検出に対する基礎的なロバスト化の検討
技術的なポイント
このプロジェクトの核は「検出(YOLOv5) → 追跡/平滑化(カルマンフィルタ)」のパイプラインにあります。YOLOv5は高速かつ小物体検出に強い既存モデルで、各フレームごとにボールのバウンディングボックスを返しますが、ボールは小さく高速でブレや部分的な遮蔽が発生しやすいため、検出が安定しないことが多いです。そこで本実装ではバウンディングボックスの中心点を測定値(観測ベクトル)とし、状態ベクトルを位置と速度(例えば [x, y, vx, vy])で定義する古典的な線形カルマンフィルタを適用します。プロセスノイズと観測ノイズの共分散行列を調整することで、短期的な欠検出時に予測で追い続けたり、誤検出のスパイクを抑えることが可能です。
技術要素としては以下が含まれます:YOLOv5によるフレーム単位の検出、OpenCVでの画像前処理(必要に応じたリサイズや色変換)、バウンディングボックスからの特徴抽出(中心座標、サイズ)、カルマンフィルタの予測更新サイクル、そして結果の可視化(軌跡線の描画や過去位置のプロット)。さらに実運用を意識すると、検出が複数候補を返す場合のデータアソシエーション(IOUや距離ゲーティング)、トラックの開始終了判定、速度推定の安定化(低パスフィルタやスムージング)、外れ値検出などが必要になります。本ノートブックはこれらを学習・試行するための良い出発点であり、より高度な追跡(DeepSORT、複数モデルアンサンブル、粒子フィルタや拡張カルマンフィルタ)への拡張が容易です。(約700字)
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- VideoSegmentation.ipynb: file
まとめ
シンプルで実践的なYOLOv5+カルマンフィルタによるボール軌跡推定の入門ノートです。(約50字)
リポジトリ情報:
- 名前: VideoSegmentationWKallman
- 説明: 説明なし
- スター数: 1
- 言語: Jupyter Notebook
- URL: https://github.com/jorgeturriate/VideoSegmentationWKallman
- オーナー: jorgeturriate
- アバター: https://avatars.githubusercontent.com/u/24260134?v=4
READMEの抜粋:
VideoSegmentationWKallman
The project involved segmenting a tennis video. We needed to segment the tennis ball using YOLOv5 and then apply Kallman filters to the YOLO predictions to determine the trajectory. The code used OpenCV and YOLOv5 …