CV / CenterNet
CenterNet (resnet_v1_18)
COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with Hailo-8.
选择你正在使用的设备,设置指南和文档将相应更新。
快速开始
sudo docker run --rm \
--name cm5-hailo8-centernet \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--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 \
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --video_path video/test.mp4REST API
使用 REST API 进行推理。复制以下命令。
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())模型详情
reComputer R SeriesCenterNet (resnet_v1_18) 在 reComputer R Series(CM5 + Hailo-8)上运行
CenterNet(ResNet-18 骨干网络)通过 HailoRT 在 Hailo-8 上执行 COCO 80 类目标检测,使用片上 max_finder 后处理变体。
本页面向搭载 PCIe Hailo-8 加速器的 reComputer R Series(CM5 + Hailo-8)。
模型信息
| 属性 | 值 |
|---|---|
| 架构 | CenterNet(ResNet-18 骨干网络) |
| 任务 | 目标检测 |
| 输入 | 512x512x3 RGB(归一化已编译进 HEF) |
| 输出 | 3 个输出头:wh(128x128x2)、reg(128x128x2)、稀疏热力图(128x128x80) |
| 类别数 | 80(COCO) |
| 参数量 | 14.22M |
| 运算量 | 31.21G |
| 硬件 mAP | 25.0(COCO,Hailo Model Zoo 参考值) |
| HEF | Hailo Model Zoo v2.19.0,Hailo-8 |
精度数值来自 Hailo Model Zoo Hailo-8 目标检测表,不是在 CM5 上实测的结果。
硬件与主机设置
| 项目 | 值 |
|---|---|
| 开发板 | reComputer R Series 搭配 Raspberry Pi CM5 |
| 加速器 | Hailo-8(PCIe 接口),以 /dev/hailo0 暴露 |
| 运行时 | HailoRT 4.23.x |
| 容器内 Python | 3.11,aarch64 |
在主机上安装对应软件包,并在启动容器前确认驱动与设备就绪:
sudo apt update
# 安装前两个候选包都必须是 4.23.x。
apt-cache policy hailort hailort-pcie-driver
sudo apt install hailort=4.23.0 hailort-pcie-driver=4.23.0
sudo reboot
# 重启后
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0该镜像要求的 HailoRT 版本为 4.23.x。如果 apt-cache policy 选中的是 5.x,请勿继续——那是 Hailo-10H 的运行时,与本 Hailo-8 容器不匹配。
使用演示视频运行
sudo docker run --rm \
--name cm5-hailo8-centernet \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--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 \
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --video_path video/test.mp4打开 http://<Board_IP>:8000 查看 Web 预览。
USB 摄像头模式
sudo docker run --rm \
--name cm5-hailo8-centernet \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
--device /dev/video0:/dev/video0 \
-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 \
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --camera_id 0REST API
预测端点:
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict示例图片请求:
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"| 端点 | 方法 | 用途 |
|---|---|
| / | GET | Web 预览界面 |
| /api/models/centernet_resnet_v1_18_postprocess/predict | POST | 检测结果(JSON) |
| /api/video_feed | GET | MJPEG 预览流 |
实现说明
- 该 HEF 编译时启用了
normalize_in_net=true(ImageNet 均值/标准差,RGB),因此应用将图像 letterbox 到 512x512、把 BGR 转为 RGB 并送入原始 uint8 像素——无需手动归一化。 - 热力图输出头本身是稀疏的:片上
max_finder与分数阈值(0.2)只保留高于阈值的局部极大值。解码器取这些峰值,读取每个峰值处的wh/reg,并按 Hailo Model Zoo 官方公式(stride 4,128x128 特征图 → 512x512 输入)重建检测框,再通过 letterbox 逆变换还原到原图。 - 两个 2 通道输出头(wh、reg)在 vstream 名称包含卷积编号时按名称映射(conv3 → wh,conv5 → reg),否则按网络输出顺序映射。首次推理会打印每个 vstream 的名称/形状与解析出的映射,便于在实机核实。
开发说明
- 源码模块:
src/rpi5_hailo8_centernet_resnet_v1_18_postprocess/ - Dockerfile:
docker/hailo8/centernet_resnet_v1_18_postprocess.dockerfile - 容器:
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest - 该模块使用 HailoRT 4.23 VStreams API 与 Hailo-8 专用 HEF。
输入与输出
输入:图像、视频或 USB 摄像头帧。输出:包含置信度的 COCO 80 类检测框,以及带标注的 MJPEG 预览。