一、本文介绍
本文记录的是利用DySample上采样对YOLOv11的颈部网络进行改进的方法研究。YOLOv11
采用传统的最近邻插值的方法进行上采样可能无法有效地捕捉特征的细节和语义信息,从而影响模型在密集预测任务中的性能。DySample
通过动态采样的方式进行上采样,==能够更好地处理特征的细节和语义信息。==
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、DySample介绍
通过学习采样来学习上采样
DySample
是一种超轻量且有效的动态上采样器,其设计出发点、原理和优势如下:
2.1、DySample原理
2.1.1 初步设计
通过PyTorch的内置函数,假设输入特征通过双线性插值被插值为连续的特征图,然后通过生成内容感知的采样点来重新采样该连续图。
具体实现为,给定特征图$X$和上采样尺度因子$s$,使用线性层生成偏移$O$,并通过Pixel Shuffling将其重塑为$2 \times sH \times sW$,然后将偏移$O$与原始采样网格$G$相加得到采样集$S$,最后通过网格采样函数根据采样集生成上采样后的特征图$X'$。
2.1.2 改进步骤
- 初始采样位置:在初步版本中,初始采样位置固定且分布不均匀,类似于“最近邻初始化”。为解决此问题,改为“双线性初始化”,即改变初始位置,使零偏移时能得到双线性插值的特征图,从而提高性能。
- 偏移范围:由于归一化层的存在,输出特征值的范围通常在$[ - 1, 1]$,导致局部采样位置的偏移范围可能重叠,影响边界预测并导致输出伪影。通过将偏移乘以0.25的“静态范围因子”,局部约束了采样位置的偏移范围,缓解了该问题。
- 分组:组向上采样,将特征图沿通道维度划分为$g$组,并为每组生成偏移。当$g = 4$时,性能得到提升。
- 动态范围因子:为增加偏移的灵活性,通过线性投影输入特征生成点级的“动态范围因子”,动态范围因子的值在$[0, 0.5]$范围内,以0.25为中心,进一步提升了性能。
- 偏移生成方式:研究了两种偏移生成方式,“线性 + 像素洗牌”(LP)和“像素洗牌 + 线性”(PL)。通过实验,根据不同模型设置了不同的组数量,并且发现PL版本在某些模型上表现更好,但在其他模型上略逊于LP版本。
2.1.3 最终变体
根据范围因子(静态/动态)和偏移生成方式(LP/PL),研究了四个变体:DySample(LP风格,静态范围因子)、DySample +(LP风格,动态范围因子)、DySample - S(PL风格,静态范围因子)、DySample - S +(PL风格,动态范围因子)。
2.2、优势
- 轻量高效:与其他动态上采样器相比,
DySample
不需要高分辨率的引导特征作为输入,也不需要除PyTorch之外的任何额外CUDA包,具有更少的推理延迟、内存占用、FLOPs和参数数量。 - 性能优越:在五个密集预测任务(语义分割、目标检测、实例分割、全景分割和单目深度估计)中,与其他上采样器相比,
DySample
报告了更好的性能。
论文:https://arxiv.org/pdf/2308.15085
源码:https://github.com/tiny-smart/dysample
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: