一、本文介绍
本文记录的是利用DynamicConv
优化YOLOv11
的目标分割网络模型。 在大规模训练中,模型的参数量
越多,FLOPs
也越高,但在一些对计算资源有限制的场景下,需要低FLOPs的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOPs,因此Dynamic convolution模块
应运而生。本文详细介绍了Dynamic convolution模块
的运行原理,并将其加入到分割头
中进行二次创新。
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、动态卷积介绍
2.1 设计出发点
- 在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低
FLOP
的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP
,因此需要一种新的设计来解决这个问题,Dynamic convolution模块应运而生。
2.2 原理
Dynamic convolution
模块基于动态系数生成的原理来工作。
对于输入$X$,首先应用全局平均池化将信息融合成一个向量,然后使用一个两层的带有softmax激活的MLP模块来动态地产生系数$\alpha$,即$$\alpha = softmax(MLP(Pool(X)))$$$$\alpha \in \mathbb{R}^{M}$$Dynamic convolution
的计算可以表示为$$Y = X * W'$$其中$W'=\sum{i = 1}^{M} \alpha{i} W{i}$,$W{i} \in \mathbb{R}^{C{out } ×C{in } ×H ×W}$是第$i$个卷积权重张量,$\alpha{i}$是对应的动态系数。系数$\alpha{i}$是根据不同的输入样本动态生成的。
2.3 结构
- 系数生成模块:具有$C{in}$隐藏维度,该模块需要$C{in}^{2}+C{in}M$个参数以及$C{in}^{2}+C_{in}M$个FLOP。
- 动态权重融合模块:此模块是无参数的,具有$M \cdot C{out } \cdot C{in } \cdot K \cdot K$个FLOP。
- 卷积过程模块:与常规卷积类似,但权重是动态融合后的结果。
动态卷积的FLOP增加量相对标准卷积来说可忽略不计。其FLOP比例$R{flops}$在$1<M \ll H'W', C{in } \approx C_{out }$的条件下约等于$1$,即相比于标准卷积,它在引入更多参数的同时几乎没有带来额外的FLOP。这使得模型在增加参数以更好地从大规模预训练中受益的同时,不会因FLOP的大幅增加而难以在计算资源受限的设备上运行。
论文:https://arxiv.org/pdf/2306.14525
源码:https://github.com/huawei-noah/Efficient-AI-Backbones
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: