目标检测——YOLO11算法解读

作者:Ultralytics公司
代码:https://github.com/ultralytics/ultralytics


YOLO系列算法解读:
YOLOv1通俗易懂版解读SSD算法解读YOLOv2算法解读YOLOv3算法解读YOLOv4算法解读YOLOv5算法解读YOLOR算法解读YOLOX算法解读YOLOv6算法解读YOLOv7算法解读YOLOv8算法解读YOLOv9算法解读YOLOv10算法解读YOLO11算法解读

PP-YOLO系列算法解读:
PP-YOLO算法解读PP-YOLOv2算法解读PP-PicoDet算法解读PP-YOLOE算法解读PP-YOLOE-R算法解读

R-CNN系列算法解读:
R-CNN算法解读SPPNet算法解读Fast R-CNN算法解读Faster R-CNN算法解读Mask R-CNN算法解读Cascade R-CNN算法解读Libra R-CNN算法解读



1、算法概述

最近Ultralytics项目又更新,推出了YOLOv11,基于上一个版本YOLOv8变化不是很大。还是和YOLOv8一样,可参考工程readme里面参考文档(https://docs.ultralytics.com/models/yolo11/),该文档非常丰富,包含如何快速运行、训练、验证、预测及导出其他格式模型,还包含除检测任务的其他任务的扩展如:分割、分类和姿态估计,同时也包含YOLO系列其他模型的汇总介绍。相比YOLO之前其他版本,YOLO11推理速度更快,精度更高。如下图:
在这里插入图片描述
按照官方文档的介绍,YOLO11主要改进有如下几点:

  1. 增强特征提取能力,YOLO11采用改进的backbone和neck结构,增强了特征提取能力,以实现更高精确和更复杂的目标检测任务。
    相对于YOLOv8的更新,具体有如下几点:
    (1)、backbone部分,将YOLOv8的C2f模块替换成了YOLO11的C3k2模块;
    (2)、在YOLOv8的SPPF模块后新增了C2PSA模块,这是一个由两个卷积层和一个多头自注意力模块组成的,用于增强特征提取能力;
    (3)、在检测头的分类分支中替换了两个常规卷积层为depthwise卷积;
    (4)、整个n/s/m/l/x系列模型的depth、width、max_channels的比例参数相对于YOLOv8进行了调整。
  2. 更高效且速度更快,因为整个结构的调整和训练流程的优化,使得模型推理速度更快。
  3. 更高的精度,但是参数量更少
  4. 和YOLOv8一样,YOLO11依然可以无缝衔接到实例分割、图像分类以及姿态估计任务,并且支持导出多种格式的模型,并且可以在CPU/GPU上运行。

2、YOLO11细节

YOLO11n网络结构如下所示,自己用PPT画的,有错误的地方,还请大家提示一下。
在这里插入图片描述
对应的每个子模块如下图所示:
在这里插入图片描述
对比YOLO11和YOLOv8的yaml格式网络结构配置
在这里插入图片描述
可以看到网络规模n/s/m/l/x的深度、宽度和输出通道数配置比例有改变,层数增多了,但是参数量和flops却减少了。

2.1 YOLO11的C3k2结构

YOLO11中的C3k2结构如下图:
在这里插入图片描述
它由子模块ConvModule和多个Bottleneck所组成,而Bottleneck又因是否用C3k模块而变化,当不用C3k模块时,Bottleneck和YOLOv8一样即C3k2变成了和YOLOv8中的C2f一样,而用C3k模块时,就是YOLO11改进的地方。C3K模块细节如下,又是由3个卷积层和多个Bottleneck模块组成。
在这里插入图片描述

2.2 新增的C2PSA结构

另一个大的改进是在SPPF后面新增了C2PSA模块,其结构如下:
在这里插入图片描述
其中C2PSA模块的核心是PSABlock,这是一个带自注意力机制的模块,也就是transformer结构。新增这个模块可以增强backbone提取特征的能力。

### C2PSA模块详细介绍 #### 模块概述 C2PSA(Channel and Position Spatial Attention)是一种用于提升遥感图像目标检测性能的注意力机制。该模块通过结合局部和全局上下文信息来增强模型的表现力,特别是在处理复杂背景下的小目标检测时效果显著[^1]。 #### 结构设计 C2PSA模块主要由两个子部分组成:通道注意机制(Channel Attention Mechanism, CAM)和位置空间注意机制(Positional Spatial Attention Mechanism, PSAM)。这两个组件共同作用于输入特征图,从而实现更精细的感受野控制和更强的目标区分能力。 ##### 通道注意机制 (CAM) CAM旨在捕获不同通道之间的依赖关系。具体来说,对于给定的一组特征映射 \( F \),首先计算其平均池化结果 \( M_c(F) \) 和最大池化结果 \( L_c(F) \)[^3]: ```python import torch.nn.functional as F def channel_attention(feature_map): avg_pool = F.avg_pool2d(feature_map, feature_map.size()[2:]) max_pool = F.max_pool2d(feature_map, feature_map.size()[2:]) # Concatenate along the channel dimension concat = torch.cat((avg_pool, max_pool), dim=1) return concat ``` 接着,将上述两种统计量送入一个多层感知器(MLP),并通过激活函数得到最终的权重向量 \( W_{cam} \): ```python class ChannelAttention(nn.Module): def __init__(self, in_channels, ratio=8): super(ChannelAttention, self).__init__() hidden_size = int(in_channels / ratio) self.fc = nn.Sequential( nn.Linear(2 * in_channels, hidden_size), nn.ReLU(), nn.Linear(hidden_size, in_channels), nn.Sigmoid() ) def forward(self, x): b, c, _, _ = x.size() y = channel_attention(x).view(b, -1) w_cam = self.fc(y).view(b, c, 1, 1) return w_cam * x ``` ##### 位置空间注意机制 (PSAM) PSAM负责建模像素级的空间关联性。为了达到这一目的,通常采用卷积操作提取多尺度感受野内的响应,并利用自适应加权策略融合这些信息: ```python class SpatialAttention(nn.Module): def __init__(self, kernel_size=7): super(SpatialAttention, self).__init__() padding = kernel_size // 2 self.conv = nn.Conv2d(2, 1, kernel_size, stride=1, padding=padding) def forward(self, x): avg_out = torch.mean(x, dim=1, keepdim=True) max_out, _ = torch.max(x, dim=1, keepdim=True) out = torch.cat([avg_out, max_out], dim=1) spatial_weight = self.conv(out) return spatial_weight.sigmoid() * x ``` 最后,将经过CAM和PSAM处理后的特征图相乘并叠加到原始输入上作为输出。 #### 使用方法 要在现有的神经网络架构中集成C2PSA模块,只需按照如下方式修改相应层次: 1. 将`nn.Conv2d()`替换为带有C2PSA功能的新类实例; 2. 在前向传播过程中调用此新定义的方法; 例如,在YOLOv11中应用C2PSA可以这样写: ```python from models.backbone import Darknet53 from models.neck.c2psa import C2PSANeck backbone = Darknet53(pretrained=True) neck = C2PSANeck(backbone.out_channels[-3:], ratios=[8, 4, 2]) detector_head = YOLOHead(num_classes=num_classes) model = nn.Sequential(OrderedDict([ ('backbone', backbone), ('c2psa_neck', neck), ('head', detector_head) ])) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值