一、本文介绍
本文记录的是基于ShufflenetV2的YOLOv11目标检测轻量化改进方法研究。FLOPs
是评价模型复杂独的重要指标,但其无法考虑到模型的内存访问成本和并行度,因此本文在YOLOv11
的基础上引入ShufflenetV2
,==使其在在保持准确性的同时提高模型的运行效率==。
模型 | 参数量 | 计算量 | 推理速度 |
---|---|---|---|
YOLOv11m | 20.0M | 67.6GFLOPs | 3.5ms |
Improved | 15.5M | 43.9GFLOPs | 3.0ms |
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、ShuffleNet V2设计原理
ShuffleNet V2
是一种高效的卷积神经网络架构,其模型结构及优势如下:
2.1 模型结构
- 回顾ShuffleNet v1:
ShuffleNet
是一种广泛应用于低端设备的先进网络架构,为增加在给定计算预算下的特征通道数量,采用了点组卷积和瓶颈结构,但这增加了内存访问成本(MAC),且过多的组卷积和元素级“Add
”操作也存在问题。- 引入Channel Split和ShuffleNet V2:为解决上述问题,引入了名为
Channel Split
的简单操作。在每个单元开始时,将$c$个特征通道的输入分为两个分支,分别具有$c - c'$和$c'$个通道。一个分支保持不变,另一个分支由三个具有相同输入和输出通道的卷积组成,以满足G1(平衡卷积,即相等的通道宽度可最小化MAC)。两个$1 \times 1$卷积不再是组式的,这部分是为了遵循G2(避免过多的组卷积增加MAC),部分是因为拆分操作已经产生了两个组。卷积后,两个分支连接,通道数量保持不变,并使用与ShuffleNet v1
相同的“通道洗牌”操作来实现信息通信。对于空间下采样,单元进行了略微修改,删除了通道拆分操作,使输出通道数量加倍。 - 整体网络结构:通过反复堆叠构建块来构建整个网络,设置$c' = c/2$,整体网络结构与
ShuffleNet v1
相似,并在全局平均池化之前添加了一个额外的$1 \times 1$卷积层来混合特征。2.2 优势
- 引入Channel Split和ShuffleNet V2:为解决上述问题,引入了名为
- 高效且准确:遵循了高效网络设计的所有准则,每个构建块的高效率使其能够使用更多的特征通道和更大的网络容量,并且在每个块中,一半的特征通道直接通过块并加入下一个块,实现了一种特征重用模式,类似于DenseNet,但更高效。
- 速度优势明显:在与其他网络架构的比较中,ShuffleNet v2在速度方面表现出色,特别是在GPU上明显快于其他网络(如MobileNet v2、ShuffleNet v1和Xception)。在ARM上,ShuffleNet v1、Xception和ShuffleNet v2的速度相当,但MobileNet v2较慢,这是因为MobileNet v2的MAC较高。
- 兼容性好:可以与其他技术(如Squeeze - and - excitation模块)结合进一步提高性能。
论文:https://arxiv.org/pdf/1807.11164.pdf
源码:https://gitcode.com/gh_mirrors/sh/ShuffleNet-Series/blob/master/ShuffleNetV2/blocks.py?utm_source=csdn_github_accelerator&isLogin=1
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: