一、本文介绍
本文记录的是基于ShuffleNet V1的YOLOv11轻量化改进方法研究。ShuffleNet
利用逐点分组卷积和通道混洗操作降低计算成本,克服了现有先进架构在极小网络中因 1×1 卷积计算成本高而效率低的问题。相比一些传统的网络架构,能更好地在有限计算资源下提升模型性能。本文配置了原论文中shufflenet_v1_x0_5
、shufflenet_v1_x1_0
、shufflenet_v1_x1_5
和shufflenet_v1_x2_0
四种模型,以满足不同的需求。
模型 | 参数量 | 计算量 | 推理速度 |
---|---|---|---|
YOLOv11m | 20.0M | 67.6GFLOPs | 3.5ms |
Improved | 12.6M | 29.8GFLOPs | 3.0ms |
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、ShuffleNet v1模型轻量化设计
ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
2.1 出发点
- 移动设备计算资源有限:在移动设备(如无人机、机器人、智能手机等)上运行的深度学习模型需要在非常有限的计算预算(如10 - 150 MFLOPs)下追求最佳精度,而现有的一些工作主要集中在对现有网络架构进行剪枝、压缩或低比特表示,缺乏专门针对此计算范围设计的高效基础架构。
- 现有架构的局限性:一些先进的基础架构如Xception和ResNeXt在极小的网络中效率较低,原因是1×1卷积计算成本高。
2.2 原理
2.2.1 Pointwise Group Convolution(逐点分组卷积)
为降低1×1卷积的计算复杂度,提出使用逐点分组卷积
。
例如在ResNeXt中,只有3×3层配备了分组卷积,导致1×1卷积在每个残差单元中仍占据较高的计算量(如93.4%的乘法 - 加法运算)。
通过在1×1层也应用分组卷积,确保每个卷积仅在相应的输入通道组上操作,可显著降低计算成本。
2.2.2 Channel Shuffle(通道混洗)操作
原因:
当多个分组卷积层堆叠时会产生副作用,即某个通道的输出仅来自一小部分输入通道,阻碍了通道组之间的信息流,削弱了表示能力。为解决此问题,提出通道混洗操作。
方法:
对于一个具有g组且输出有g×n个通道的卷积层,先将输出通道维度重塑为(g, n),进行转置然后再展平作为下一层的输入。此操作可使分组卷积能从不同组获取输入数据,保证输入和输出通道完全相关,且该操作是可微的,可嵌入到网络结构中进行端到端训练。
2.3 结构
2.3.1 ShuffleNet Unit(ShuffleNet单元)
- 基于瓶颈单元(bottleneck unit)设计原则,在其残差分支中,对于3×3层应用计算经济的3×3深度可分离卷积。将第一个1×1层替换为逐点分组卷积并后跟一个通道混洗操作,第二个逐点分组卷积用于恢复通道维度以匹配快捷路径。在应用步长(stride)的情况下,在快捷路径上添加一个3×3平均池化,并将逐元素相加替换为通道拼接。
ShuffleNet单元。a)深度卷积瓶颈单元(DWConv);b)带点群卷积(GConv)和通道shuffle的ShuffleNet单元;c)步长=2的ShuffleNet单元。
2.3.2 Network Architecture(网络架构)
- 由多个
ShuffleNet
单元堆叠组成,分为三个阶段,每个阶段的第一个构建块应用stride = 2,同一阶段内其他超参数保持不变,下一阶段输出通道翻倍。通过调整分组数量g
和通道缩放因子s
来控制网络的连接稀疏性和复杂度。
2.4 优势
- 计算效率高
- 在相同计算复杂度预算下,与ResNet和ResNeXt相比,ShuffleNet单元的复杂度更低。例如,给定输入大小和瓶颈通道数,ResNet单元、ResNeXt单元和ShuffleNet单元所需的FLOPs分别为$hw(2cm + 9m^{2})$、$hw(2cm + 9m^{2}/g)$和$hw(2cm/g + 9m)$。
- 性能优越
- 在ImageNet分类和MS COCO目标检测任务上表现优异。与MobileNet相比,在40 MFLOPs的计算预算下,ShuffleNet在ImageNet分类任务上的top - 1误差绝对值低7.8%;在ARM - 基于移动设备上,ShuffleNet在保持可比精度的情况下,比AlexNet实现了约13×的实际加速。
- 能更好地利用有限计算资源
- 对于小网络,给定计算预算时可使用更宽的特征图,这对处理信息至关重要,因为小网络通常通道数不足。同时,在ShuffleNet单元中,深度可分离卷积仅应用于瓶颈特征图,可避免在低功耗移动设备上的实现开销。
论文:https://arxiv.org/pdf/1707.01083.pdf
源码:https://github.com/Lornatang/ShuffleNetV1-PyTorch/blob/main/model.py
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: