一、本文介绍
本文记录的是利用SAConv
优化YOLOv11
的目标检测网络模型。空洞卷积
是一种在不增加参数量和计算量的情况下,通过在卷积核元素之间插入空洞来扩大滤波器视野的技术。并且为了使模型能够适应不同尺度的目标,本文利用SAConv
将不同空洞率卷积结果进行结合,来获取更全面的特征表示,实现涨点。
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、SAConv介绍
DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution
DetectoRS:用递归特征金字塔和可切换的空洞卷积检测物体
Switchable Atrous Convolution(SAC)
模块的设计出发点、原理、结构和优势如下:
2.1 设计出发点
- 提升检测性能:受到计算机视觉中“看两次思考两次”机制的启发,在微观层面上通过对特征进行不同空洞率的卷积操作来更好地捕捉图像中的目标信息,以提高目标检测性能。
- 适应不同尺度目标:为了使模型能够适应不同尺度的目标,通过不同空洞率卷积结果的结合来获取更全面的特征表示。
- 便于利用预训练模型:提供一种机制,能够轻松地将预训练的标准卷积网络进行转换,而无需从头开始训练整个模型。
2.2 原理
- 空洞卷积原理:空洞卷积(Atrous Convolution)是一种在不增加参数量和计算量的情况下,通过在卷积核元素之间插入空洞来扩大滤波器视野的技术。对于空洞率为$r$的空洞卷积,在连续的滤波器值之间引入$r - 1$个零,相当于将(k×k)的滤波器内核大小扩大到$k_{e}=k+(k - 1)(r - 1)$。
- SAC原理:
SAConv
模块将相同的输入特征用不同的空洞率进行卷积,并使用开关函数(switch functions)来收集结果。开关函数是空间相关的,即特征图的每个位置可能有不同的开关来控制SAConv
的输出。通过这种方式,模型可以根据图像中不同位置的目标尺度自适应地选择合适的空洞率卷积结果。
2.3 结构
- 主要组件:
SAConv模块
主要由三个部分组成。- 中间的SAC组件:这是核心部分,用于将卷积层转换为SAC。对于一个卷积层,其转换公式为$Conv(x, w, 1) \underset{ to SAC }{\stackrel{ Convert }{\to}} S(x) \cdot Conv(x, w, 1)+(1 - S(x)) \cdot Conv(x, w+\Delta w, r)$,其中$r$是SAC的一个超参数,$\Delta w$是一个可训练的权重,开关函数$S(\cdot)$通过一个$5×5$内核的平均池化层后接一个$1×1$卷积层来实现。
- 前后的全局上下文模块:在
SAConv
组件前后分别插入两个全局上下文模块。这两个模块首先通过全局平均池化层压缩输入特征,然后经过一个$1×1$卷积层(无非线性层),将输出直接加回到主流中。这两个模块类似于SENet,但有一些区别,例如这里只有一个卷积层且输出处理方式不同。
- 应用于骨干网络:在实现中,将骨干网络(如ResNet及其变体)中的所有$3×3$卷积层替换为
SAConv
,并且使用可变形卷积(deformable convolution)来替换公式中的卷积操作,其偏移函数在从预训练骨干网络加载时初始化为预测$0$。
2.3 优势
- 性能提升:通过结合不同空洞率的卷积结果,能够更好地捕捉目标的多尺度信息,从而显著提高目标检测性能。在COCO数据集上的实验表明,SAC模块能够提高检测的准确率,例如在不同的骨干网络设置下都能使AP值有较大提升。
- 灵活适应尺度:由于开关函数的空间相关性,模型能够根据目标在图像中的位置和尺度自适应地调整卷积操作,更好地适应不同大小的目标检测,对大目标的检测效果尤为明显,体现在较高的$AP_{L}$值上。
- 有效利用预训练模型:提供了一种从标准卷积到条件卷积的有效转换机制,无需改变任何预训练模型,只需将骨干网络中的卷积层进行替换即可。这使得
SAConv模块
可以作为一个即插即用的模块应用于许多预训练的骨干网络,大大节省了训练成本和时间。 - 新颖的权重锁定机制:采用了一种权重锁定机制,即不同空洞卷积的权重除了一个可训练的差异外是相同的。这种机制在实验中证明了其有效性,有助于稳定模型训练和提高性能,当打破这种锁定机制时,AP值会明显下降。
论文:https://arxiv.org/pdf/2006.02334
源码:https://github.com/joe-siyuan-qiao/DetectoRS
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: