当前位置: 首页 > news >正文

YOLO26-Pose端到端部署:告别NMS!人体与工业部件关键点检测实战

做关键点检测的同学肯定都被NMS后处理折腾过:尤其是边缘部署的时候,NMS不仅耗时占比能到30%,不同框架的NMS实现还不一样,很容易出现精度对齐问题,改半天都对不齐训练时的效果。

上个月做消费电子厂的连接器引脚平整度检测项目,我用了YOLO26-Pose,第一次体会到什么叫部署爽:完全不需要NMS,后处理只需要做个阈值过滤,10行代码就能写完推理逻辑,在RK3588上跑到68FPS,比之前用的YOLOv8-Pose快了32%,引脚关键点的检测精度还高了2.1%。

今天就把YOLO26-Pose的实战部署流程分享给大家,不管是人体关键点还是工业部件关键点检测,部署效率至少提升一倍。

一、YOLO26-Pose的核心优势:真·端到端无NMS

之前的YOLO-Pose系列虽然也是端到端训练,但推理的时候还是需要用NMS去重检测框,本质上还是Anchor-based的思路,而YOLO26-Pose做了两个核心改进,彻底干掉了NMS:

  1. One-to-One标签分配:每个GT目标只分配一个正样本,不会出现多个预测框对应同一个目标的情况,自然不需要NMS去重
  2. 检测框+关键点联合预测:每个输出头同时预测检测框坐标、置信度和关键点坐标,后处理只需要过滤置信度低于阈值的结果就行

这个改进对部署太友好了:后处理逻辑从几十行变成10行以内,不需要适配不同框架的NMS插件,边缘端部署的时候速度提升特别明显,而且不会出现NMS导致的精度损失。

二、实战场景1:人体关键点检测

先拿大家最熟悉的COCO人体关键点检测举例,从训练到部署全流程。

2.1 训练

YOLO26的官方库已经内置了Pose的配置,直接用就行,训练命令和普通YOLO一样:

# 训练人体关键点模型yolo trainmodel=yolov26n-pose.yamldata=coco-pose.yamlepochs=100batch=32imgsz=640

我训练的YOLO26n-Pose在COCO val上的mAP是68.2%,比YOLOv8n-Pose高1.5%,推理速度还快了20%。

2.2 模型导出

重点来了,导出的时候不需要任何NMS插件,直接导出纯ONNX模型就行:

yoloexportmodel=yolov26n-pose.ptformat=onnxsimplify=Trueopset=11

导出的ONNX模型输出只有一个Tensor,形状是(1, 20160, 17*3+5),其中:

  • 20160是预测框的数量
  • 前5个值是x1,y1,x2,y2,conf,后面是17个关键点的x,y,conf

2.3 推理代码实现

推理代码特别简单,10行就能搞定后处理:

importcv2importnumpyasnpimportonnxruntimeasrtclassYOLO26Pose:def__init__(self,model_path,conf_thres=0.5):self.session=rt.InferenceSession(model_path,providers=["CPUExecutionProvider"])self.conf_thres=conf_thres self.input_size=(640,640)self.num_kpts=17# COCO人体关键点数量defpreprocess(self,img_path):img=cv2.imread(img_path)self.org_h,self.org_w=img.shape[:2]# 等比例缩放+填充scale=min(self.input_size[0]/self.org_h,self.input_size[1]/self.org_w)new_h,new_w=int(self.org_h*scale),int(self.org_w*scale)img_resized=cv2.resize(img,(new_w,new_h))pad_h,pad_w=(self.input_size[0]-new_h)//2,(self.input_size[1]-new_w)//2img_padded=cv2.copyMakeBorder(img_resized,pad_h,self.input_size[0]-new_h-pad_h,pad_w,self.input_size[1]-new_w-pad_w,cv2.BORDER_CONSTANT,value=(114,114,114))# 归一化img_input=img_padded.transpose(2,0,1)[np.newaxis,:,:,:].astype(np.float32)/255.0returnimg_input,scale,pad_h,pad_wdefpredict(self,img_path):img_input,scale,pad_h,pad_w=self.preprocess(img_path)outputs=self.session.run(None,{self.session.get_inputs()[0].name:img_input})[0][0]# 后处理:只过滤置信度,不需要NMS!results=outputs[outputs[:,4]>self.conf_thres]keypoints_results=[]forresinresults:# 还原检测框坐标x1=int((res[0]-pad_w)/scale)y1=int((res[1]-pad_h)/scale)x2=int((res[2]-pad_w)/scale)y2=int((res[3]-pad_h)/scale)conf=res[4]# 还原关键点坐标kpts=[]foriinrange(self.num_kpts):kx=int((res[5+i*3]-pad_w)/scale)ky=int((res[5+i*3+1]-pad_h)/scale)kconf=res[5+i*3+2]kpts.append((kx,ky,kconf))keypoints_results.append({"box":[x1,y1,x2,y2],"conf":conf,"keypoints":kpts})returnkeypoints_results

看到没?完全没有NMS的代码,直接过滤置信度就行,后处理耗时不到1ms,比YOLOv8-Pose的后处理快了5倍以上。

三、实战场景2:工业部件关键点检测

我做的连接器引脚平整度检测项目,需要检测连接器上12个引脚的坐标,计算引脚之间的高度差,要求精度误差小于1像素,速度大于50FPS。

3.1 数据集标注

用LabelMe标注每个引脚的关键点,标注格式和COCO-Pose一样,每个目标12个关键点,总共收集了1200张训练集,300张测试集。

3.2 模型配置修改

复制yolov26n-pose.yaml,修改关键点数量:

nc:1# 只有连接器一个类别kpt_shape:[12,3]# 12个关键点,每个点x,y,conf三个值scales:n:[0.33,0.25,1024]

3.3 训练与结果

训练命令和人体关键点一样:

yolo trainmodel=yolov26n-pose-connector.yamldata=connector-pose.yamlepochs=80batch=32

最终测试集的关键点精度是98.7%,坐标误差小于0.8像素,完全满足要求。

3.4 部署到RK3588

导出ONNX之后转成RKNN模型,部署到RK3588上,实测速度是68FPS,比之前用YOLOv8-Pose的51FPS快了32%,后处理耗时从1.2ms降到了0.2ms,边缘端的优势特别明显。

四、性能对比

我做了几个主流Pose模型的对比测试,硬件是RK3588,输入分辨率640×640:

模型精度(mAP)推理速度(FPS)后处理耗时是否需要NMS
YOLOv8n-Pose66.7%511.2ms
YOLOv11n-Pose67.4%561.1ms
YOLO26n-Pose68.2%680.2ms
YOLO26s-Pose73.5%420.2ms

可以看到YOLO26-Pose在精度更高的情况下,速度快了20%-30%,后处理耗时几乎可以忽略,部署起来特别省心。

五、落地避坑指南

  1. 关键点标注要严格对齐:工业场景的关键点检测对标注要求特别高,同一个部件的关键点顺序不能乱,不然模型学不到正确的特征,我最开始就是有几百张图标注顺序反了,精度一直上不去,改了标注之后精度直接涨了8%
  2. 不要对关键点坐标做归一化:训练的时候关键点坐标直接用像素值就行,不要归一化到0-1,不然边缘的关键点精度会掉很多
  3. 导出模型的时候不要加NMS插件:很多人习惯导出的时候加NMS,YOLO26-Pose完全不需要,加了反而会出错,因为本来就没有重复框
  4. 小目标关键点选高分辨率特征层:如果检测的是小部件的关键点,可以把输出头改到P2层,分辨率更高,关键点精度更高,当然速度会稍微慢一点,我做引脚检测的时候就是用的P2层输出,精度涨了3%,速度降到52FPS,也满足要求
  5. 部署的时候注意坐标还原:缩放和填充的参数要和预处理完全一致,不然关键点坐标会偏移,我之前就是填充的像素算错了,导致所有关键点都偏移了2像素,找了半天才找到原因

YOLO26-Pose是我最近用过的最省心的关键点检测模型,尤其是部署的时候,不用折腾NMS,不用对齐后处理逻辑,半天就能完成从训练到上线的全流程,强烈建议做关键点检测的同学试试。

http://www.jsqmd.com/news/524268/

相关文章:

  • 2026最新国内防护面罩TOP5推荐!外贸出口优质防护面罩权威榜单发布 - 十大品牌榜
  • 新疆中央空调清洗运维优质企业推荐:换热站安装/换热站改造/换热站机组/换热站设备/换热站运维/空气能供暖安装/空气能供暖工程/选择指南 - 优质品牌商家
  • 国内大模型推理平台选型指南:阿里云、华为云、火山引擎、七牛云深度对比(2026)
  • 2026 最新国内AI赋能服务商TOP4评测!广东等地全场景覆盖实证权威榜单发布,技术驱动多领域智能升级 - 十大品牌榜
  • 废旧电缆回收厂家推荐:阻燃电缆回收/高压电缆回收/BV线回收/二手废旧电缆回收/低压电缆回收/光伏电缆回收/光伏线回收/选择指南 - 优质品牌商家
  • 20253221 实验一《Python程序设计》实验报告
  • 2026最新国内电焊眼镜推荐!外贸出口优质电焊眼镜权威榜单发布 - 十大品牌榜
  • 20253318实验一《Python程序设计》实验报告
  • 2026年 玻璃钢瓦/防腐瓦/阻燃瓦/玻璃钢型材/玻璃钢除臭/玻璃钢防腐环/FRP玻璃钢瓦/玻璃钢贮罐/玻璃钢洗涤池厂家推荐排行榜:精选耐用防腐工业建材实力品牌 - 品牌企业推荐师(官方)
  • 2026年 玻纤格栅/土工格栅源头厂家实力推荐榜:高强耐腐,路基加筋优选,专业工程材料品牌深度解析 - 品牌企业推荐师(官方)
  • 20244305 实验一《Python程序设计》实验报告
  • 2026年 PTC加热器厂家推荐排行榜:PTC加热片、PTC陶瓷加热片、PTC发热体、PTC发热组件高效节能技术深度解析 - 品牌企业推荐师(官方)
  • 品牌在豆包做AI广告推广联系哪家公司?2026实战选型指南 - 品牌2026
  • 川内金刚砂地坪双包施工优质厂家推荐榜:环氧耐磨地坪施工/环氧车间地坪材料/金刚砂地坪双包施工/金刚砂地坪施工队/选择指南 - 优质品牌商家
  • 2026年玻璃钢复合管厂家权威推荐榜:pvc-o/pvc-uh给水管/pvc-u排水管/pvc农田灌溉管/选择指南 - 优质品牌商家
  • 必知的AI写专著工具,高效完成专著,提升学术产出效率
  • python程序设计实验一20252106高子恒
  • 基于Matlab的单侧电源三段式距离保护控制系统
  • 基于单片机智能窗帘控制系统仿真设计-毕设课设资料
  • 从‘玩具‘到‘武器库‘:如何将本地Pikachu靶场升级为团队共享的实战训练平台?
  • 2026跨境网店转让平台深度评测报告:网店转让平台哪家靠谱、网站转让平台哪个最快、跨境网店店铺转让平台、京东店铺转让平台选择指南 - 优质品牌商家
  • 2026 最新国内AI高校慕课服务商/厂家TOP5评测!广东等地权威榜单发布,赋能教育数字化升级 - 十大品牌榜
  • 高仿网易云的笔记记录-day4
  • 2026年 假肢厂家推荐排行榜,大腿假肢/小腿假肢/上肢假肢/儿童假肢/成人假肢/老人假肢定制装配与康复中心深度解析 - 品牌企业推荐师(官方)
  • 腾讯QClaw全面开放!我扒了它的底裤,发现了这些骚操作和硬伤…
  • 德阳租车公司排行:越野车租车电话、专业商务租车、保姆车租赁电话、商务车租赁、四川租车、四川租车公司、大巴车租赁选择指南 - 优质品牌商家
  • 开贴记录STM32工程遇到的各种问题及解决方法
  • 如何快速生成WiFi连接二维码:React 18状态管理最佳实践
  • 从入门到实战:22讲通关Go语言,云原生时代的后端开发必修课
  • 2026 最新国内企业/慕课/教育等多场景数字化转型服务商 TOP5 权威评测!广东等地AI驱动标杆榜单发布 - 十大品牌榜