Hanzo Huang2026-09-01

Bouwen van realtime verkeersanalytics op Raspberry Pi 5 met Hailo-8

Voer lokale verkeersanalytics uit op Raspberry Pi 5 met Hailo-8. Tel voertuigen in geselecteerde gebieden, volg hun beweging en meet richtingsgebonden lijnoverschrijdingen vanaf één browserdashboard.

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

该应用程序检测自行车、汽车、摩托车、公交车和卡车。 一个推理结果由所有启用的交通功能共享。

交通分析仪表板

2. 三种分析及其综合使用

区域计数

在道路、入口、停车区或其他区域上绘制一个多边形。 当车辆检测的边界框中心位于保存的多边形内时,该车辆被计数。

您可以创建多个命名区域。每个区域都有自己的总数和车辆类别细分。 如果区域重叠,同时位于两个区域内的车辆在每个区域中会被计数一次。

车辆区域计数

车辆跟踪

跟踪为每个车辆分配一个 ID,并在其后方绘制一条短轨迹。 这使得每个车辆的方向和最近路径易于观察。

当车辆消失时间过长时,跟踪轨迹会过期。 当位置发生较大跳跃后,轨迹也会被清除,以防止图像中出现错误的线条。

车辆跟踪

方向性线穿越

绘制一条以 A 和 B 为端点的线。当被跟踪的车辆穿越该线时,仪表板会更新:

  • 总穿越次数
  • A→B 穿越次数
  • B→A 穿越次数

每个跟踪轨迹仅被计数一次。车辆路径必须穿过绘制的线段, 因此画面中其他位置的移动不会改变计数。

方向性线穿越计数

三者结合使用

区域计数、跟踪和线穿越可以同时运行。 它们复用相同的 YOLOv11 检测结果,因此启用所有三个功能不会运行模型三次。

要显示所有功能:

  1. 选择图像、视频、USB 摄像头或 RTSP 源。
  2. 启用区域计数车辆跟踪线计数
  3. 绘制并保存至少一个计数区域。
  4. 绘制两点穿越线。
  5. 选择分析图像启动分析

然后,仪表板会在同一交通视频流上显示当前的区域占用情况、车辆路径以及方向性穿越总数。

区域计数、跟踪和线穿越结合使用

3. 在带 Hailo-8 的 Raspberry Pi 5 上运行

要求

  • 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 wheel 需要 CPython 3.12、Linux ARM64 和 HailoRT 4.23。 Miniforge 提供 Python 3.12,无需更改系统 Python。

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

允许安装程序初始化 shell,然后关闭并重新打开终端。 创建项目环境:

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 wheel。

验证 Python 包:

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

启动交通分析

不使用 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 wheel 是否与驱动程序、 Python 版本和 ARM64 架构匹配。

交通分析现已就绪。选择一个源,绘制已启用功能所需的引导线, 然后启动分析。

Traffic Analytics is now ready. Select a source, draw the guides needed by the enabled functions, and start the analysis.