RM2026 · 深圳大学-RobotPilots战队

视觉模型统一部署库与识别模型开源

NNdeployment|RoboMaster 视觉模型统一部署库与识别模型开源

RP2026-08-25 10:443.1k 字5 个链接 · 2 张图

仓库地址: SZURPVision/26_NNDeployment_Lib_and_Detection_Models: RoboMaster26赛季的部署库与模型开源仓库

NNdeployment 是面向 RoboMaster 视觉任务的 C++ 网络部署库。项目以统一接口封装模型预处理、推理与后处理,当前支持 V5/V8 装甲板四关键点、雷达四关键点和能量机关五关键点结果解析,可在构建时选择 OpenVINO 或 TensorRT 推理后端。该模块以库形式接入RoboPilots视觉自瞄算法框架,此处作为独立模块开源,相比原模块略有修改。

仓库提供模型、测试视频、JSON 配置、综合演示、能量机关独立测试和性能测试程序,可在没有相机、串口和下位机的环境中完成离线复现。默认示例使用 OpenVINO,并将可视化结果写入视频文件,适合桌面环境、SSH 和容器运行。具体内容请参考代码仓库的README,此处仅作介绍。

核心特性

- 统一任务接口:通过 ArmorModelRuneModel 输出原图坐标系下的结构化结果,上层代码无需解析推理张量。

- 多种输出契约:覆盖 V5 装甲板、两种 V8 装甲板、雷达和能量机关五关键点后处理。

- 输出形状自动识别postprocess_mode=auto 时根据模型输出张量形状选择对应后处理器,减少模型替换时的重复配置。

- 双推理后端:默认使用 OpenVINO;具备 NVIDIA CUDA 与 TensorRT 环境时可构建 TensorRT 后端。

- 同步与流水推理:OpenVINO 后端支持 sync、双请求 async 和四请求 async4,异步请求各自持有预处理缓冲区。

- 单一配置来源:模型路径、推理模式、后端、设备、置信度阈值与后处理模式集中在 JSON 中维护,更换模型无需重新编译。

- 无硬件复现:随仓视频和模型可直接驱动综合演示、独立检测和性能测试,不依赖相机或机器人硬件。

- 无界面运行:默认不创建 GUI 窗口,结果写入 MP4,便于在 SSH、容器和无桌面服务器中验证。

软件功能


任务调用入口返回值
ArmorArmorModel::netProcess(image, my_color)std::vector<NetArmorResult>
RuneRuneModel::netProcess(image)std::vector<NetRuneResult>

ArmorModel::netProcess 接收一帧 cv::Mat 图像和己方颜色标识 my_color,返回当前帧中全部有效装甲板结果。每个 NetArmorResult 包含原图像素坐标系下的四个关键点,以及装甲板类别、颜色、尺寸、置信度和对应名称。四个关键点依次为左上、左下、右下、右上。

装甲板结果中 color_id=0 表示蓝色,color_id=1 表示红色。调用时 my_color=1 表示我方为蓝色,my_color=0 表示我方为红色,部署库据此过滤友方结果;离线演示传入 my_color=2,保留双方颜色用于检查模型输出。

armor_example.jpg


RuneModel::netProcess 接收一帧 cv::Mat 图像,返回当前帧中全部有效能量机关结果。每个 NetRuneResult 包含原图像素坐标系下的五个关键点、激活类别、置信度和类别名称。五个关键点依次为 top、left、R、right、bottom,即第0,1,3,4号点为符的逆时针四个角点,第2号点为符叶中心R标点,同时可通过结果结构中的同名字段直接访问。

rune_example.jpg


当画面中没有满足阈值的目标时,两种接口均返回空 `vector`,不代表推理调用失败。

开源模型

面向 RoboMaster 自瞄任务,提供两套轻量化装甲板四关键点检测模型:Infantry-v5n-20250725 与 Infantry-v8n-20260726。其中,Rune网络已在另一个板块开源,详见 [3]

两套模型分别采用 YOLOv5n 骨干网络和 YOLOv8n-Pose 骨干网络,并针对装甲板检测任务重新设计检测头。模型在一次推理中同时给出装甲板四个角点、装甲板类别和颜色信息,减少传统“目标检测 + 数字分类”多阶段流程带来的重复计算,也便于后续直接进行姿态解算、目标筛选和运动预测。

v5n-20250725

- 网络基础结构:YOLOv5n 骨干网络 + 自定义四关键点检测头;

- 推理输入:1×3×640×640

- 输出张量:1×25200×22

其中 25200 表示三个尺度特征图产生的候选总数,每个候选包含 22 个数值:

- 0~7:4 个关键点的 (x, y) 坐标,共 8 个数值;

- 8:候选目标总体置信度,须在部署端进行 Sigmoid 归一化

- 9~12:蓝、红、白、紫 4 种颜色的分支得分;

- 13~21:9 种装甲板类别的分支得分。

v8n-20260726

- 网络基础结构:YOLOv8n-Pose 骨干网络 + 自定义装甲板检测头;

- 推理输入:1×3×480×640

- 输出张量:1×21×6300

其中 6300 为多尺度特征图产生的候选总数,每个候选由 21 个通道描述:

- 0~3:蓝、红、白、紫 4 种颜色的分支得分;

- 4~12:9 种装甲板类别的分支得分;

- 13~20:4 个关键点的 (x, y) 坐标,共 8 个数值。

上述xy坐标均以原图为参考系,即 cv::Mat 图像的像素坐标。

两个网络各有优劣,v5n-20250725网络具有更快的性能和近,中距离的良好识别和分类能力,这得益于yolov5更轻量的头部设计。但由于该模型训练时并未出现兑换站,实际情况中可能会误识别己方兑换站,在正确的部署条件下可以减少误识别产生的影响。

v8n-20260726网络具有更强的边缘召回率和单灯条识别能力,相对的,分类能力略差,且速度稍慢。该模型特化前哨站识别,可以在梯形高地的位置稳定识别前哨站装甲板,也支持近距离基地识别。近距离识别中可以比较良好的识别白色装甲板。且为了适配哨兵的误识别问题,做了比较全面的误识别检查。

两套模型均支持 9 种装甲板类别和 4 种颜色。仓库中的部署示例提供 OpenVINO FP16 模型,其中 v8n-20260726 同时提供 ONNX 模型,便于继续转换或接入其他推理后端。

类别与颜色定义

Class ID类别
0哨兵
1英雄
2工程
33号步兵
44号步兵
55号步兵(v8n-0726网络不再识别)
6前哨站
7基地(底部)
8基地(顶部)
Color ID颜色
0蓝色
1红色
2白色
3紫色(v8n-0726网络不再识别)

参考文献

[1] 【RM2026-自瞄算法框架开源】深圳大学-RobotPilots战队

[2] 【RM2024赛季-识别模型】深圳大学 -RobotPilots

[3] 【RM2026-能量机关五点识别模型】深圳大学-RobotPilots战队

声明

1.本次开源项目出自 深圳大学RobotPilots战队,作品仅用于技术交流,未经作者允许,不得作任何商业用途。

2.本次开源文件的最终解释权归 深圳大学RobotPilots战队 所有。

3.开源目的在于加强参赛队之间交流,有助于提高自身和其他参赛队的水平



正文与图片来自原文,版权归原作者所有;本站仅作检索与阅读。原文链接 ↗