一、本文介绍
本文记录的是利用部分卷积 Partial Conv
优化YOLOv11
的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。==部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。==
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、部分卷积原理介绍
Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
2.1 出发点
- 解决FLOPS问题:在追求快速神经网络的过程中,许多工作致力于减少浮点运算(FLOPs),但研究者发现FLOPs的减少并不一定能带来延迟的同等降低,主要原因是每秒浮点运算次数(FLOPS)过低。通过对典型神经网络在Intel CPU上FLOPS的比较,发现很多现有神经网络FLOPS较低,其FLOPS普遍低于流行的ResNet50,导致“快速”神经网络实际上不够快,FLOPs的减少无法转化为延迟的准确降低。
- 深度可分离卷积的内存访问问题:深度可分离卷积(DWConv)是一种常用的减少FLOPs的方法,但它在实际应用中存在问题。当为了补偿精度下降而增加网络宽度(即DWConv的通道数c增加到c')时,会导致更高的内存访问,从而引起不可忽视的延迟并减慢整体计算,特别是对于I/O受限的设备。
2.2 原理
- 利用特征图冗余:观察到特征图在不同通道之间存在高度相似性(冗余),通过
部分卷积(PConv)
来利用这种冗余。PConv
不是对所有输入通道进行常规卷积,而是仅对一部分输入通道应用常规卷积进行空间特征提取,同时保持其余通道不变。 - 减少计算冗余和内存访问:通过这种方式,同时减少了计算冗余和内存访问。从计算量(FLOPs)来看,PConv的FLOPs仅为常规卷积的一部分(例如,当典型的部分比例$r = \frac{c_{p}}{c}=\frac{1}{4}$时,PConv的FLOPs仅为常规Conv的$\frac{1}{16}$);从内存访问量来看,PConv的内存访问量也仅为常规卷积的一部分(同样在$r=\frac{1}{4}$时,仅为常规Conv的$\frac{1}{4}$)。
2.3 结构
- 基本结构:对于输入$I\in\mathbb{R}^{c×h×w}$,PConv选取连续的$c_{p}$个通道(例如可以是第一个或最后一个连续的通道作为代表)应用常规卷积,输出的特征图维度与输入特征图维度相同(即输出$O\in\mathbb{R}^{c×h×w}$)。
- 与PWConv结合:为了充分利用所有通道的信息,在
PConv
之后紧接着添加一个逐点卷积(PWConv)。它们在输入特征图上的有效感受野看起来像一个T形卷积,这种T形卷积更关注中心位置,与均匀处理一个区域的常规卷积不同。并且将T形卷积分解为PConv
和PWConv
可以进一步利用滤波器间的冗余,节省FLOPs。
2.4 优势
- 有效提取空间特征:实验证明
PConv
在提取空间特征方面是有效的。通过构建由PConv
和PWConv
组成的简单网络,并在从预训练ResNet50提取的特征图数据集上进行训练,结果表明PConv + PWConv能达到最低的测试损失,更好地近似常规卷积进行特征变换,说明仅从部分特征图中捕获空间特征是足够且高效的。 - 适用于构建快速神经网络:
PConv
为设计快速有效的神经网络提供了一种新的选择,具有很大潜力替代现有的DWConv等操作,并且基于PConv构建的FasterNet在各种设备上实现了快速运行,在分类、检测和分割任务上取得了良好的性能,验证了PConv
的有效性。
论文:https://arxiv.org/pdf/2303.03667
源码:https://github.com/JierunChen/FasterNet
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: