Hanzo Huang2026-09-01

Raspberry Pi 5とHailo-8でリアルタイム交通分析を構築

Raspberry Pi 5とHailo-8でローカル交通分析を実行。選択エリア内の車両をカウントし、動きを追跡し、ブラウザダッシュボードから方向別ライン通過を計測します。

Computer VisionEdge AITrafficGithub

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 ダッシュボードを処理します。

text
Image, video, USB camera, or RTSP camera
             FastAPI backend
        YOLOv11 inference on Hailo-8
       Area count · Track · Line count
             Browser dashboard

このアプリケーションは、自転車、車、バイク、バス、トラックを検出します。 有効化されたすべての交通機能で、1 つの推論結果が共有されます。

Traffic Analytics dashboard

2. 3 つの分析機能とそれらの併用

エリアカウント

道路、入口、駐車ゾーンなどのエリアの上に多角形を描画します。検出中心が保存された多角形の内側にある場合、車両がカウントされます。

複数の名前付きエリアを作成できます。各エリアには独自の総数と車両クラス別の内訳があります。エリアが重なる場合、両方のエリア内にある車両は各エリアで 1 回ずつカウントされます。

Vehicle area counting

車両トラッキング

トラッキングは各車両に ID を割り当て、その後ろに短い軌跡を描画します。これにより、各車両の方向と直近の経路が容易に確認できます。

車両が長時間消えた場合、トラックは期限切れになります。大きな位置ジャンプの後は軌跡もクリアされ、画像を横切る不正確な線を防ぎます。

Vehicle tracking

方向別ラインクロス

端点 A と B を持つ線を描画します。追跡された車両がその線を横切ると、ダッシュボードが更新されます。

  • 総通過数
  • A→B 通過数
  • B→A 通過数

各トラックは 1 回だけカウントされます。車両の経路が描画された線分を横切る必要があるため、フレーム内の他の場所での移動はカウントに影響しません。

Directional line-crossing count

3 つすべてを併用する

エリアカウント、トラッキング、ラインクロスは同時に実行できます。これらは同じ YOLOv11 検出結果を再利用するため、3 つすべてを有効にしてもモデルは 3 回実行されません。

すべての機能を表示するには:

  1. 画像、動画、USB カメラ、または RTSP ソースを選択します。
  2. エリアカウント車両トラックラインカウント を有効にします。
  3. 少なくとも 1 つのカウントエリアを描画して保存します。
  4. 2 点の通過ラインを描画します。
  5. 画像の分析 または 分析の開始 を選択します。

ダッシュボードには、現在のエリア占有率、車両の経路、方向別の通過総数が同じ交通フィード上に表示されます。

Area counting, tracking, and line crossing together

3. Raspberry Pi 5 と Hailo-8 で実行する

要件

  • Raspberry Pi 5 または reComputer R20(64 ビット Raspberry Pi OS Bookworm)
  • Hailo-8 アクセラレータ
  • インストール時のインターネット接続
  • 画像、動画、USB カメラ、または RTSP カメラ

HailoRT のインストールと確認

bash
sudo apt update
sudo apt install hailo-all
sudo reboot

再起動後、システムを確認します。

bash
uname -m
hailortcli fw-control identify
ls /dev/hailo0

アーキテクチャが aarch64 であり、Hailo デバイスが認識されている必要があります。

プロジェクトのクローン

bash
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demos

Miniforge と Python 3.12 のインストール

同梱の HailoRT ホイールは CPython 3.12、Linux ARM64、HailoRT 4.23 を必要とします。 Miniforge はシステム Python を変更せずに Python 3.12 を提供します。

bash
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

インストーラにシェルの初期化を許可し、ターミナルを閉じてから再度開きます。 プロジェクト環境を作成します。

bash
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.whl

Python はバージョン 3.12.x を報告する必要があります。インストールされている HailoRT ドライバが 4.23 でない場合は、ドライバに一致する HailoRT Python ホイールをインストールしてください。

Python パッケージを確認します。

bash
python -c "import cv2, fastapi, hailo_platform, numpy; print('Python dependencies: OK')"

Traffic Analytics の起動

USB カメラなしで起動します。

bash
python examples/cv/traffic-analytics/run.py --camera-id -1

ダッシュボードにアクセスします。

text
http://PI_IP_ADDRESS:8000

最初の USB カメラを使用するには、次のように起動します。

bash
python examples/cv/traffic-analytics/run.py --camera-id 0

RTSP カメラの場合は、カメラ ID -1 で起動し、ダッシュボードを開いて、rtsp:// または rtsps:// の完全な URL を入力し、接続 を選択します。

アプリケーションの確認

別のターミナルから実行します。

bash
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 の準備が整いました。ソースを選択し、有効な機能に必要なガイドを描画して、分析を開始します。