CV / YOLO11
YOLOv11-obb
YOLOv11n/s/m/x-OBB 旋转框目标检测模型(DOTA v1,15 类),适用于 reComputer R Series + Hailo-10H。
选择你正在使用的设备,设置指南和文档将相应更新。
快速开始
sudo docker run --rm \
--name cm5-hailo10h-yolov11n_obb \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11n_obb:latest \
python web_detection.py --model_path model/yolov11n_obb.hef --video_path video/test.mp4模型详情
YOLOv11-obb on reComputer R Series (CM5 + Hailo-10H)
YOLOv11n / YOLOv11s / YOLOv11m / YOLOv11x-OBB 通过 HailoRT 在 Hailo-10H 上执行旋转框目标检测(DOTA v1,15 类)。编译出的 HEF 没有片上 NMS:它暴露九个原始头,宿主负责解码并运行旋转框概率 IoU NMS——与 Hailo Model Zoo 复现其官方 DOTA mAP 时使用的解码完全一致。
本页面向搭载 PCIe Hailo-10H 加速器的 reComputer R Series (CM5 + Hailo-10H)。
硬件与主机设置
| 项目 | 值 |
|---|---|
| 开发板 | reComputer R Series 搭配 Raspberry Pi CM5 |
| 加速器 | Hailo-10H(PCIe 接口),以 /dev/hailo0 暴露 |
| 运行时 | HailoRT 5.1.1 |
| 容器内 Python | 3.13, aarch64 |
在主机上安装 Hailo-10H 软件包,并在启动容器前确认驱动与设备就绪:
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0这些镜像要求的 HailoRT 版本为 5.1.1。
使用演示视频运行
YOLOv11n_obb:
sudo docker run --rm \
--name cm5-hailo10h-yolov11n_obb \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11n_obb:latest \
python web_detection.py --model_path model/yolov11n_obb.hef --video_path video/test.mp4YOLOv11s_obb:
sudo docker run --rm \
--name cm5-hailo10h-yolov11s_obb \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11s_obb:latest \
python web_detection.py --model_path model/yolov11s_obb.hef --video_path video/test.mp4YOLOv11m_obb:
sudo docker run --rm \
--name cm5-hailo10h-yolov11m_obb \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11m_obb:latest \
python web_detection.py --model_path model/yolov11m_obb.hef --video_path video/test.mp4YOLOv11x_obb:
sudo docker run --rm \
--name cm5-hailo10h-yolov11x_obb \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11x_obb:latest \
python web_detection.py --model_path model/yolov11x_obb.hef --video_path video/test.mp4浏览器打开 http://<Board_IP>:8000 查看网页预览。
仓库自带的演示视频是一段短的**航拍(无人机)**素材,因此 DOTA 训练的模型能直接在预览里看到车辆等空中目标的旋转框;不属于 DOTA 类别的无人机数据集类别(如行人)不会报出。
USB 摄像头模式
sudo docker run --rm \
--name cm5-hailo10h-yolov11n_obb \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
--device /dev/video0:/dev/video0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11n_obb:latest \
python web_detection.py --model_path model/yolov11n_obb.hef --camera_id 0把 yolov11n_obb 换成 yolov11s_obb、yolov11m_obb 或 yolov11x_obb 即可切换变体。
HEF 文件
| 模型 | 大小 | 说明 |
|---|---|---|
yolov11n_obb.hef | 6,893,568 (6.57 MB) | 参数量 3.80M,运算量 17.25G,硬件 mAP 48.4,166 FPS |
yolov11s_obb.hef | 17,088,512 (16.3 MB) | 参数量 12.6M,运算量 57.94G,硬件 mAP 52.3,76.5 FPS |
yolov11m_obb.hef | 30,142,464 (28.75 MB) | 参数量 33.99M,运算量 183.59G,硬件 mAP 54.1,29.5 FPS |
yolov11x_obb.hef | 64,696,320 (61.7 MB) | 参数量 60.08M,运算量 521.61G,硬件 mAP 56.0,8.54 FPS |
四个变体都是同一 YOLOv11-OBB 家族(DOTA v1)在 Hailo Model Zoo v5.4.0 上的 Hailo-10H 编译产物。mAP 与 FPS 为 Model Zoo 公布的 Hailo-10H 数据。
Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v5.4.0/hailo10h/yolov11n_obb.hef (yolov11s_obb.hef, yolov11m_obb.hef, yolov11x_obb.hef in the same directory).
REST API
POST http://<Board_IP>:8000/api/models/yolov11n_obb/predictcurl -X POST "http://<Board_IP>:8000/api/models/yolov11n_obb/predict" \
-F "file=@aerial.jpg" -F "conf=0.25" -F "iou=0.7"每条结果返回类别、置信度和旋转框:
{
"predictions": [
{
"class": "ship",
"confidence": 0.94,
"obb": {"x_center": 450.0, "y_center": 320.0, "width": 180.0, "height": 420.0, "angle": 35.2}
}
]
}angle 为度(相对 +x 逆时针,范围 [-45, 135))。
| 接口 | 方法 | 用途 |
|---|---|---|
/ | GET | 网页预览界面 |
/api/models/yolov11{n,s,m,x}_obb/predict | POST | 旋转框检测结果(JSON) |
/api/video_feed | GET | MJPEG 预览流 |
实现说明
- Model Zoo
base/yolo_obb.yaml设置device_pre_post_layers.sigmoid: false、meta_arch: yobb、score_threshold: 0.01,没有hpp也没有片上 NMS;anchors使用scale_factors [0.5, 0.5]、regression_length 15(16 个 DFL 箱)与strides [8, 16, 32],评测为 DOTA v1 的 15 类。 - 头布局:九个原始张量,按通道数(64 通道 DFL 框 / 15 通道类别 / 1 通道角度)识别并按 stride 配对(128x128、64x64、32x32)。
- 角度:
theta = (sigmoid(a) - 0.25) * pi(范围 [-pi/4, 3pi/4)),与 Model Zoo 的YoloOBBPostProc及 ultralytics OBB 头一致。 - 框:对 16 个 DFL 箱做 softmax 期望得到 stride 单位的 l/t/r/b 距离;
w = l + r、h = t + b,中心为锚点加上旋转后的半轴偏移,距离再乘 stride。 - 选择:每个锚点取最佳类别并按置信度滑块过滤,随后做带类别偏移的概率 IoU Fast-NMS(max_wh 7680,候选上限 30000,输出上限 300);因为 NMS 在宿主运行,置信度与 IOU 滑块都生效。
- HEF 已内置
normalize_in_net(mean 0 / std 255)与padding_color=114:应用用灰色(114)letterbox 到 1024x1024,并把原始 uint8 RGB 像素送入网络,无需手工归一化。 - 类别 ID 0..14 对应 DOTA v1 列表(plane、ship、storage-tank、baseball-diamond…),与 Model Zoo 的
dotav1_names.json一致。 - 首次推理诊断在生产中关闭(
_DET_OUTPUT_LOGGED = True);验证新 HEF 时在web_detection.py里改为False可打印头布局、取值范围与解码后的角度范围。
开发说明
- 源码模块:
reComputer-Hailo10H-CV仓库中的src/hailo10h_yolov11{n,s,m,x}_obb/ - 容器:
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov11{n,s,m,x}_obb:latest - Hailo-8 没有官方 OBB 编译产物(Model Zoo 的 oriented object detection 一栏 Hailo-8/Hailo-8L 均为 NA);yolov11l_obb 只面向 Hailo-15L。
- 模型许可:AGPL-3.0(upstream ultralytics/ultralytics)。
输入与输出
输入:图像、视频或 USB 摄像头画面。输出:旋转框(x_center、y_center、width、height、angle)、DOTA 类别、置信度和带标注的 MJPEG 预览。