駐車場の入出庫を検知し、駐車台数を管理するシステム。
車両の検知には2ライン方式を採用している。出入口側の Line1 を主判定ライン、
奥側の Line2 を補助判定ラインとして、YOLOv8のトラッキング結果からライン通過を
検知し、入庫・出庫をカウントする。方式選定の経緯は
docs/decisions/0001-two-line-method.md を参照。
プロジェクト全体の背景は Wiki にある。
uv syncsrc/tracking_parking がeditable installされ、import tracking_parking が使えるようになる。
続いて設定ファイルとモデル重み、入力動画を用意する。いずれもGit管理外。
cp .env.template .env # HOME_DIR と MODEL_PATH を環境に合わせる
mkdir -p models data/inputs # models/ に .pt を、data/inputs/ に動画を置く# 1. GUIでライン座標を設定する(動画の先頭フレームに5点クリック)
uv run python scripts/setup_lines.py --video data/inputs/test.mp4
# 2. 動画を処理して入出庫をカウントする
uv run python scripts/run_detection.py --input data/inputs/test.mp4
# 3. ライン位置と車両代表点の関係を確認する
uv run python scripts/visualize_lines.py data/inputs/test.mp4
# 4. 複数動画をまとめて処理し、サマリーへ集約する
# 対象動画は data/inputs/videos.json に書く(雛形は videos.example.json)
cp data/inputs/videos.example.json data/inputs/videos.json
uv run python scripts/run_multi_video.py結果は data/outputs/ に出る(アノテーション動画、イベントログのJSON/CSV、run manifest)。
カメラ入力かつ .env の API_ENABLED=true のとき、検出した入出庫を
tracking-parking-api へ
リアルタイムに送信する。動画ファイル入力では、設定に関わらず常に送信しない
(検証の再実行が本番の駐車台数を壊さないための安全策)。
uv run python scripts/run_detection.py --camera 0
uv run python scripts/run_detection.py --camera 0 --no-api # .envを書き換えずに送信だけ止める設定キーの一覧は .env.template を参照。詳細(失敗時の再送方針、集計開始/停止コマンドの扱いなど)は
docs/decisions/0002-api-event-delivery.md と
docs/two-line-system.md を参照。
実物のAPI相手にローカルで疎通確認する手順は
docs/api-verification.md を参照
(scripts/check_api_connection.py を使う。本番環境には触れない)。
uv run pytest -q| パス | 役割 |
|---|---|
scripts/ |
CLIエントリポイント |
src/tracking_parking/ |
本体パッケージ(検知ロジック、出力、共通基盤、評価) |
tests/ |
テスト |
docs/ |
設計・検証・決定の記録 |
plate_recognition/ |
ナンバープレート認識 |
training/ |
YOLOのファインチューニング |
view/ |
フロントエンド(Next.js) |
data/, models/ |
入出力データとモデル重み(Git管理外) |
詳細は docs/two-line-system.md にある。
- docs/two-line-system.md — システム構成、設定パラメータ、アルゴリズム
- docs/verification.md — 実動画1本での検証手順
- docs/api-verification.md — API送信機能のローカル疎通確認手順
- docs/wandb_integration_spec_v2.md — 実験記録(W&B連携)の仕様
- docs/decisions/ — 設計上の決定記録