Skip to content

Feat/mike/89 bbox analysis within roi#91

Draft
kei-asami wants to merge 18 commits into
developfrom
feat/mike/89-bbox-analysis-within-roi
Draft

Feat/mike/89 bbox analysis within roi#91
kei-asami wants to merge 18 commits into
developfrom
feat/mike/89-bbox-analysis-within-roi

Conversation

@kei-asami

Copy link
Copy Markdown

対応Issue

issue #89

なぜやったか

カメラ映像から入庫・出庫台数を自動でカウントする仕組みが必要だったため.従来の単純な座標比較では蛇行・一時停止・bboxの揺れによる誤判定が課題だった.

何をやったか

raspi/roi-counter/ に,ROI内を通過する車両の進行度 s を用いた入出庫カウントシステムを実装した.

  • コアモジュール (src/):ROI判定・進行度計算・状態機械・描画
  • スクリプト群 (scripts/):ROI確認・単体分析・閾値スイープ・複数動画MAE算出
  • 分析スクリプト (analysis/):スイープ結果のヒートマップ可視化
  • 本番推論スクリプト (main.py)
  • ユニットテスト (tests/):21件全通過

どのように実装したか

ROI内に設けた3つのバンド(入口側・中央・奥側)を車両が横断したかどうかで入出庫を判定するバンドベース状態機械を採用した.

  • 進行度 s = (y_max - y) / (y_max - y_min)(0.0=道路側,1.0=駐車場側)
  • s < s_low で入庫候補(IN_CANDIDATE),s > s_high に到達で入庫確定
  • 逆方向で出庫判定,カウント済みは重複カウントしない

2動画(IMG_2787, IMG_2788)に対して s_low(0.10〜0.40)× s_high(0.60〜0.90)の49パターンをスイープした結果,s_high ∈ {0.60, 0.65} の14パターンで MAE = 0.0 を達成した.

検出モデルは YOLOv8s,検出クラスは car(2)と truck(7).

画面スクリーンショット等

image

テスト項目

  • uv run pytest raspi/roi-counter/tests/ が全件通過することを確認
  • scripts/01_show_roi.py を実行してROIとバンドラインが正しく描画されることを確認
  • scripts/02_run_analysis.py を実行して data/outputs/ に result.json・vehicles.csv・frames.csv・annotated.mp4 が出力されることを確認
  • scripts/03_sweep_params.py を実行して data/outputs/ に results.csv が出力されることを確認
  • scripts/04_multi_video_mae.py を実行して data/outputs/ に results.csv・mae_summary.csv が出力されることを確認
  • main.py を実行して入庫・出庫カウントが表示されることを確認

備考

  • S1 Score・F1 Score はフレーム単位のイベントGT(何フレーム目に入出庫したかなど)が必要なため未対応.現状は Count Error / MAE のみで評価している.
  • 処理速度は約 45〜55 ms/frame(CPU推論).

@kei-asami kei-asami self-assigned this Jun 22, 2026
@kei-asami kei-asami marked this pull request as draft June 22, 2026 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant