CV / CenterNet

CenterNet (resnet_v1_18)

COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with Hailo-8.

16 次下载
大小
12.4 MB
内存
4GB+
精度
Hailo HEF / HailoRT 4.23.x

选择你正在使用的设备,设置指南和文档将相应更新。

快速开始

部署
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

REST API

使用 REST API 进行推理。复制以下命令。

Curl
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
  -F "file=@test.jpg"
Python
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 Series

CenterNet (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
硬件 mAP25.0(COCO,Hailo Model Zoo 参考值)
HEFHailo 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
容器内 Python3.11,aarch64

在主机上安装对应软件包,并在启动容器前确认驱动与设备就绪:

bash
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 容器不匹配。

使用演示视频运行

bash
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 摄像头模式

bash
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 0

REST API

预测端点:

text
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict

示例图片请求:

bash
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 预览。