Skip to content

Repository files navigation

tracking-parking

駐車場の入出庫を検知し、駐車台数を管理するシステム。

車両の検知には2ライン方式を採用している。出入口側の Line1 を主判定ライン、 奥側の Line2 を補助判定ラインとして、YOLOv8のトラッキング結果からライン通過を 検知し、入庫・出庫をカウントする。方式選定の経緯は docs/decisions/0001-two-line-method.md を参照。

プロジェクト全体の背景は Wiki にある。

セットアップ

uv sync

src/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)。

API送信

カメラ入力かつ .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 にある。

ドキュメント

About

駐車台数の可視化アプリ

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages