本文摘要
News Watch
本文原创自研创新改进:SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响
强烈推荐,适合直接使用,paper创新级别
在多个数据集验证涨点,尤其对存在多个尺度的数据集涨点明显
本文内容:通过魔多头检测器提升YOLO11-pose的关键点检测能力,
Pose mAP50 有原先的 0.871 提升至 0.883
1
YOLO11介绍
Ultralytics YOLO11是一款尖端的、最先进的模型,它在之前YOLO版本成功的基础上进行了构建,并引入了新功能和改进,以进一步提升性能和灵活性。YOLO11设计快速、准确且易于使用,使其成为各种物体检测和跟踪、实例分割、图像分类以及姿态估计任务的绝佳选择。
pose官方在COCO数据集上做了更多测试:
2
手势关键点数据集介绍
2.1数据集介绍
数据集大小300张:训练集236张,验证集64张
关键点共21个
# 关键点的类别keypoint_class = ['Ulna', 'Radius', 'FMCP','FPIP', 'FDIP', 'MCP5','MCP4', 'MCP3', 'MCP2','PIP5', 'PIP4', 'PIP3' ,'PIP2', 'MIP5', 'MIP4','MIP3', 'MIP2', 'DIP5','DIP4', 'DIP3', 'DIP2']
标记后的数据格式如下:一张图片对应一个json文件
labelme2yolo-keypoint
生成的txt内容如下:
0 0.48481 0.47896 0.70079 0.77886 0.31308 0.70597 2 0.42206 0.70695 2 0.54954 0.59785 2 0.67569 0.53278 2 0.76420 0.48288 2 0.28402 0.46282 2 0.35865 0.44521 2 0.43395 0.43102 2 0.52642 0.43836 2 0.26486 0.42270 2 0.34941 0.39188 2 0.44782 0.37818 2 0.55680 0.39628 2 0.21731 0.34051 2 0.33884 0.27495 2 0.47094 0.25196 2 0.62351 0.29746 2 0.20674 0.29403 2 0.33620 0.20108 2 0.48018 0.16879 2 0.65654 0.24070 2
讲解:
第一个0代表:框的类别,因为只有hand一类,所以为0
0.48481 0.47896 0.70079 0.77886 代表:归一化后的 框的中心点横纵坐标、宽、高
0.31308 0.70597 2代表:归一化后的 第一个关键点的横纵坐标、关键点可见性
关键点可见性理解:0代表不可见、1代表遮挡、2代表可见
2.1 生成的yolo数据集如下
hand_keypoint:-images:--train: png图片--val:png图片-labels:--train: txt文件--val:txt文件
3
SPP &SPPF介绍
YOLOv5最初采用SPP结构在v6.0版本(repo)后开始使用SPPF,主要目的是融合更大尺度(全局)信息,对每个特征图,使用三种不同尺寸(5×5、9×9、13×13)的池化核进行最大池化,分别得到预设的特征图尺寸,最后将所有特征图展开为特征向量并融合,过程如下图所示。
YOLOV8使用SPPF
SPPF顾名思义,就是为了保证准确率相似的条件下,减少计算量,以提高速度,使用3个5×5的最大池化,代替原来v5之前的5×5、9×9、13×13最大池化。使用SPPF的目的是为了利用不同的池化核尺寸提取特征的方式可以获得更多的特征信息,提高网络的识别精度。
左边是SPP,右边是SPPF。
SPPF源代码
class SPPF(nn.Module): """Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher."""
def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13)) super().__init__() c_ = c1 // 2 # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c_ * 4, c2, 1, 1) self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
def forward(self, x): """Forward pass through Ghost Convolution block.""" x = self.cv1(x) y1 = self.m(x) y2 = self.m(y1) return self.cv2(torch.cat((x, y1, y2, self.m(y2)), 1))
3.1 如何创新优化SPPF
优点:为了利用不同的池化核尺寸提取特征的方式可以获得更多的特征信息,提高网络的识别精度。
如何优化:在此基础上加入注意力机制,能够在不同尺度上更好的、更多的获取特征信息,从而提高网络的识别精度。
原始结构
加入注意力机制
4
YOLO11-pose魔改提升精度
4.1原始结果
Pose mAP50 为 0.871
YOLO11-pose summary (fused): 300 layers, 3,199,712 parameters, 0 gradients, 7.8 GFLOPs Class Images Instances Box(P R mAP50 mAP50-95) Pose(P R mAP50 mAP50-95): 100%|██████████| 4/4 [00:04<00:00, 1.23s/it] all 64 64 0.999 1 0.995 0.668 0.922 0.922 0.871 0.638
PosePR_curve.png
4.2 SPPF原创自研创新
Pose mAP50 有原先的 0.871 提升至 0.883
YOLO11-pose-SPPF_improve summary (fused): 306 layers, 3,265,632 parameters, 0 gradients, 7.8 GFLOPs Class Images Instances Box(P R mAP50 mAP50-95) Pose(P R mAP50 mAP50-95): 100%|██████████| 4/4 [00:04<00:00, 1.03s/it] all 64 64 0.999 1 0.995 0.679 0.924 0.922 0.883 0.711
5
系列篇
1.训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程
2. 具有切片操作的SimAM注意力,魔改SimAM助力pose关键点检测能力
3. 多头检测器提升助力pose关键点检测能力
4. SPPF原创自研创新 | SPPF创新结构,增强全局视角信息和不同尺度大小的特征
5. 自研独家创新DSAM注意力 ,助力pose关键点检测能力
6. 可变形双级路由注意力(DBRA),魔改动态稀疏注意力的双层路由方法BRA
7. 独家创新(SC_C_11Detect)检测头结构创新,助力手势pose关键点检测
8. DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,结合C3k2二次创新
9. 新颖的双注意力块(DAB),一种新的并行注意力架构助力关键点检测
6
专栏介绍
《YOLO11魔术师专栏》将从以下各个方向进行创新:
【原创自研模块】【多组合点优化】【注意力机制】
【主干篇】【neck优化】【卷积魔改】
【block&多尺度融合结合】【损失&IOU优化】【上下采样优化】
【小目标性能提升】【前沿论文分享】【训练实战篇】
【pose关键点检测】【yolo11-seg分割】
YOLO11魔术师专栏
主页链接:
为本专栏订阅者提供创新点改进代码,改进网络结构图,方便paper写作!!!
适用场景:红外、小目标检测、工业缺陷检测、医学影像、遥感目标检测、低对比度场景
适用任务:所有改进点适用【检测】、【分割】、【pose】、【分类】等
全网独家首发创新,【自研多个自研模块】,【多创新点组合适合paper 】!!!
领取专属 10元无门槛券
私享最新 技术干货