Raspberry Pi 5とHailo-8でリアルタイム交通分析を構築
Raspberry Pi 5とHailo-8でローカル交通分析を実行。選択エリア内の車両をカウントし、動きを追跡し、ブラウザダッシュボードから方向別ライン通過を計測します。
Raspberry Pi 5 と Hailo-8 でリアルタイム交通分析を構築する
このプロジェクトは、Raspberry Pi 5 と Hailo-8 をローカル交通分析システムに変えます。 YOLOv11 で車両を検出し、結果をブラウザに表示します。 アップロードした画像や動画、USB カメラ、RTSP カメラを使用できます。
1. 交通分析とは
交通分析は、車両検出の上に実用的なルールを追加します。
| 機能 | 表示内容 |
|---|---|
| エリアカウント | ユーザーが描画した各エリア内の車両数 |
| 車両トラッキング | 各車両に安定した ID と短い移動軌跡を付与 |
| ラインクロス | 総通過数と A→B、B→A の個別カウント |
ブラウザを使用してソースを選択し、エリアと通過ラインを描画し、結果を表示します。 すべての処理は Raspberry Pi 上で完結します。
Hailo-8 が YOLOv11 の推論を実行します。Raspberry Pi は映像入力、トラッキング、カウント、Web ダッシュボードを処理します。
Image, video, USB camera, or RTSP camera
│
▼
FastAPI backend
│
▼
YOLOv11 inference on Hailo-8
│
▼
Area count · Track · Line count
│
▼
Browser dashboardこのアプリケーションは、自転車、車、バイク、バス、トラックを検出します。 有効化されたすべての交通機能で、1 つの推論結果が共有されます。

2. 3 つの分析機能とそれらの併用
エリアカウント
道路、入口、駐車ゾーンなどのエリアの上に多角形を描画します。検出中心が保存された多角形の内側にある場合、車両がカウントされます。
複数の名前付きエリアを作成できます。各エリアには独自の総数と車両クラス別の内訳があります。エリアが重なる場合、両方のエリア内にある車両は各エリアで 1 回ずつカウントされます。

車両トラッキング
トラッキングは各車両に ID を割り当て、その後ろに短い軌跡を描画します。これにより、各車両の方向と直近の経路が容易に確認できます。
車両が長時間消えた場合、トラックは期限切れになります。大きな位置ジャンプの後は軌跡もクリアされ、画像を横切る不正確な線を防ぎます。

方向別ラインクロス
端点 A と B を持つ線を描画します。追跡された車両がその線を横切ると、ダッシュボードが更新されます。
- 総通過数
- A→B 通過数
- B→A 通過数
各トラックは 1 回だけカウントされます。車両の経路が描画された線分を横切る必要があるため、フレーム内の他の場所での移動はカウントに影響しません。

3 つすべてを併用する
エリアカウント、トラッキング、ラインクロスは同時に実行できます。これらは同じ YOLOv11 検出結果を再利用するため、3 つすべてを有効にしてもモデルは 3 回実行されません。
すべての機能を表示するには:
- 画像、動画、USB カメラ、または RTSP ソースを選択します。
- エリアカウント、車両トラック、ラインカウント を有効にします。
- 少なくとも 1 つのカウントエリアを描画して保存します。
- 2 点の通過ラインを描画します。
- 画像の分析 または 分析の開始 を選択します。
ダッシュボードには、現在のエリア占有率、車両の経路、方向別の通過総数が同じ交通フィード上に表示されます。

3. Raspberry Pi 5 と Hailo-8 で実行する
要件
- Raspberry Pi 5 または reComputer R20(64 ビット Raspberry Pi OS Bookworm)
- Hailo-8 アクセラレータ
- インストール時のインターネット接続
- 画像、動画、USB カメラ、または RTSP カメラ
HailoRT のインストールと確認
sudo apt update
sudo apt install hailo-all
sudo reboot再起動後、システムを確認します。
uname -m
hailortcli fw-control identify
ls /dev/hailo0アーキテクチャが aarch64 であり、Hailo デバイスが認識されている必要があります。
プロジェクトのクローン
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demosMiniforge と Python 3.12 のインストール
同梱の HailoRT ホイールは CPython 3.12、Linux ARM64、HailoRT 4.23 を必要とします。 Miniforge はシステム Python を変更せずに Python 3.12 を提供します。
sudo apt install curl
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.shインストーラにシェルの初期化を許可し、ターミナルを閉じてから再度開きます。 プロジェクト環境を作成します。
conda config --set auto_activate_base false
conda create --name pi-hailo python=3.12 pip -y
conda activate pi-hailo
python --version
python -m pip install -r requirements.txt
python -m pip install runtime/wheels/hailort-4.23.0-cp312-cp312-linux_aarch64.whlPython はバージョン 3.12.x を報告する必要があります。インストールされている HailoRT ドライバが 4.23 でない場合は、ドライバに一致する HailoRT Python ホイールをインストールしてください。
Python パッケージを確認します。
python -c "import cv2, fastapi, hailo_platform, numpy; print('Python dependencies: OK')"Traffic Analytics の起動
USB カメラなしで起動します。
python examples/cv/traffic-analytics/run.py --camera-id -1ダッシュボードにアクセスします。
http://PI_IP_ADDRESS:8000最初の USB カメラを使用するには、次のように起動します。
python examples/cv/traffic-analytics/run.py --camera-id 0RTSP カメラの場合は、カメラ ID -1 で起動し、ダッシュボードを開いて、rtsp:// または rtsps:// の完全な URL を入力し、接続 を選択します。
アプリケーションの確認
別のターミナルから実行します。
curl http://127.0.0.1:8000/api/healthレスポンスでは、model_exists が true、hailo_platform_importable が true である必要があります。いずれかが false の場合は、models/yolov11n.hef が存在すること、および HailoRT ホイールがドライバ、Python バージョン、ARM64 アーキテクチャと一致していることを確認してください。
Traffic Analytics の準備が整いました。ソースを選択し、有効な機能に必要なガイドを描画して、分析を開始します。