一、本文介绍
本文记录的是基于MobileNet v2的 YOLOv11轻量化改进方法研究。MobileNet v2
采用深度可分离卷积
将标准卷积
分解为深度卷积
和1×1卷积
,大幅削减计算量。同时,引入线性瓶颈层来防止非线性在低维空间破坏信息,避免非线性层导致的性能下降问题。本文将MobileNet v2
应用到YOLOv11
中,借助其高效的结构和特性,在保持一定精度的前提下,显著降低 YOLOv11
的计算复杂度和内存占用。
模型 | 参数量 | 计算量 | 推理速度 |
---|---|---|---|
YOLOv11m | 20.0M | 67.6GFLOPs | 3.5ms |
Improved | 12.5M | 32.2GFLOPs | 1.4ms |
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、MoblieNet V4设计原理
MobileNetV2: Inverted Residuals and Linear Bottlenecks
2.1 出发点
随着神经网络在图像识别等领域的广泛应用,对高精度的追求使得现代先进网络需要大量计算资源,这超出了许多移动和嵌入式设备的能力。
因此,需要设计一种能够在保证一定精度的前提下,大幅减少计算量和内存占用的网络架构,以满足资源受限环境的需求,这就促使了 MobileNet v2
轻量模块的设计。
2.2 结构原理
2.2.1 深度可分离卷积(Depthwise Separable Convolutions)
这是
MobileNet v2
的重要基础结构。它将标准卷积分解为两个步骤,首先是深度卷积(depthwise convolution)
,对每个输入通道应用单个卷积滤波器进行滤波操作;然后是1×1 卷积(pointwise convolution)
,负责组合深度卷积的输出,构建新的特征。对于一个输入张量$L{i}$(维度为$h{i}×w{i}×d{i}$)和卷积核$K$(维度为$k×k×d{i}×d{j}$),标准卷积产生输出张量$L{j}$(维度为$h{i}×w{i}×d{j}$),其计算成本为$h{i}·w{i}·d{i}·d{j}·k·k$,而深度可分离卷积的计算成本为$h{i}·w{i}·d{i}(k^{2}+d{j})$,相比之下计算量大幅减少。
例如,当$k = 3$时,MobileNet v2使用的 3×3 深度可分离卷积计算成本比标准卷积小 8 到 9 倍,且精度损失较小(如在一些常见的图像分类任务中得到验证)。这一结构在图 2 中有所体现,从图中可以清晰看到深度可分离卷积与标准卷积在操作上的差异。
2.2.2 线性瓶颈(Linear Bottlenecks)
当
ReLU
应用于1D空间中的线时会产生“射线”,在$R^{n}$空间中通常会导致具有 π - 关节的分段线性曲线。若ReLU 变换
后的结果具有非零体$S$,则映射到内部$S$的点是通过输入的线性变换$B$获得的,这表明输出域的非零体积部分对应的输入空间仅限于线性变换。而且当ReLU
使通道塌陷时,会在该通道中丢失信息。
因此,在卷积块中插入线性瓶颈层,假设感兴趣的流形是低维的,以此来防止非线性破坏太多信息。
2.2.3 倒置残差(Inverted residuals)
瓶颈块
在形式上类似于残差块
,但在MobileNet v2
中,受瓶颈实际包含所有必要信息的启发,采用捷径连接直接在瓶颈之间连接,而扩展层仅作为张量非线性变换的实现细节。这种设计与传统的残差连接类似,有助于提高梯度在多层之间传播的能力,且在内存效率上更具优势,在实验中也表现出更好的效果。
对于一个大小为$h×w$,扩展因子为$t$,核大小为$k$,输入通道为$d'$,输出通道为$d''$ 的块,其总的乘加运算数量为$h·w·d'·t(d'+k^{2}+d'')$。
2.2.4 整体架构
MobileNet v2
的基本构建块是带有残差的瓶颈深度可分离卷积
。其网络架构包含初始的全卷积层(有 32 个滤波器),后跟 19 个残差瓶颈层。
除第一层外,网络中使用恒定的扩展率,在实验中发现扩展率在 5 到 10 之间性能曲线几乎相同,较小的网络使用稍小的扩展率更好,较大的网络使用较大的扩展率性能稍好。
2.3 优势
- 高效的推理和内存利用:倒置残差瓶颈层允许非常内存高效的实现,这对于移动应用至关重要。通过将瓶颈块视为单个操作,并利用内部变换是按通道进行以及连续非按通道操作的输入输出大小比例等特性,可以显著减少内存需求。
- 性能优异:在多个任务和基准测试中取得了先进的性能。
- 理论优势:提出的卷积块具有独特的属性,能够将网络的表达能力(由扩展层编码)与其容量(由瓶颈输入编码)分离开来,为进一步的研究提供了重要的方向。
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: