inteintegrity2026-09-09

基于树莓派 5 与 Hailo-8 的车牌检测识别

在树莓派 5 上使用 Hailo-8 加速 Tiny-YOLOv4 车牌检测与 LPRNet 数字车牌识别,并提供浏览器预览和 REST API。

CVLicense Plate RecognitionObject DetectionGitHub

1. 工作原理

本项目在树莓派 5 + Hailo-8 上运行两阶段车牌识别流水线。Tiny-YOLOv4 负责定位车牌,LPRNet 从原始分辨率裁剪区域中识别数字文本。两个 HEF 网络通过 HailoRT 调度共享同一块 Hailo-8。

LPRNet license plate recognition demo

项目能力

  • 在树莓派 5 上使用 Hailo-8 加速车牌检测与 OCR。
  • 两个 HEF 网络共享 Hailo VDevice,并使用轮询调度。
  • FastAPI 提供局域网浏览器预览。
  • REST 图片预测接口返回检测、清晰度、OCR 候选、置信度和最终结果。
  • 支持视频、图片与摄像头输入。

硬件与软件

  • 树莓派 5 或兼容 CM5 系统,64 位 ARM Linux
  • Hailo-8 M.2 加速器
  • HailoRT 4.23.x,驱动、固件、动态库和 Python 包需兼容
  • Tiny-YOLOv4 车牌检测与 LPRNet HEF 模型
  • Python、FastAPI、Uvicorn、OpenCV 与 Docker

2. 树莓派 5 + Hailo-8 部署指南

克隆源码仓库:

bash
git clone https://github.com/Seeed-Projects/reComputer-Hailo8-CV.git
cd reComputer-Hailo8-CV

确认加速器可见,然后构建 ARM64 镜像:

bash
hailortcli scan
hailortcli fw-control identify

sudo docker build \
  -f docker/hailo8/lprnet.dockerfile \
  -t lprnet:latest \
  src/rpi5_hailo8_lprnet

映射 Hailo 设备与匹配版本的运行库并启动:

bash
sudo docker run --rm \
  --name rpi5-hailo8-lprnet \
  --privileged \
  --net=host \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  lprnet:latest

在同一局域网打开 http://<BOARD_IP>:8000。图片预测接口:

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/lprnet/predict" \
  -F "file=@traffic.jpg"

3. 识别逻辑与运行建议

检测模型接收 416 × 416 × 3 RGB 图像,输出两路原始 YOLO Head,CPU 负责 Sigmoid、Anchor 解码与 NMS。LPRNet 接收 300 × 75 × 3 BGR 裁剪,输出 5 × 19 × 11 logits,再完成均值、Softmax 与 CTC 贪心解码。

官方识别模型的字符表为 0123456789-,不支持字母或中国车牌省份汉字。平均字符置信度达到 0.90 且 CTC 折叠后至少保留 7 位数字时才接受结果。识别前还会使用拉普拉斯方差过滤模糊裁剪。

运行建议

  • 保证画面中的车牌区域具有足够像素尺寸和清晰度。
  • 固定相机,尽量避免运动模糊和严重透视变形。
  • 保持 HailoRT 驱动、固件、动态库和 Python 绑定版本兼容。
  • 使用部署现场视频调整检测阈值和清晰度阈值。
  • 如需完整地区车牌支持,可保留检测阶段并替换识别模型及解码器。