1. 工作原理
本项目在树莓派 5 + Hailo-8 上运行两阶段车牌识别流水线。Tiny-YOLOv4 负责定位车牌,LPRNet 从原始分辨率裁剪区域中识别数字文本。两个 HEF 网络通过 HailoRT 调度共享同一块 Hailo-8。
项目能力
- 在树莓派 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 绑定版本兼容。
- 使用部署现场视频调整检测阈值和清晰度阈值。
- 如需完整地区车牌支持,可保留检测阶段并替换识别模型及解码器。