MobileNet v2(2019):逆向残差和线性瓶颈,倒残差结构

MobileNet v2(2019):逆向残差和线性瓶颈,倒残差结构

导出时间:2025/11/23 20:22:26

1、 研究背景和动机

image.png
  1. 背景:轻量化卷积网络的持续发展
深度学习模型越来越大,效果越来越好(比如 ResNet、Inception),但是:
  • 在移动端/嵌入式设备:算力有限,内存小,模型必须小巧、速度快。
  • 挑战:如何在“小模型”里还能保留“大模型”的表达能力?
于是出现了三条主要探索路线:

📍 (a) NASNet(2017)

  • 思路:让 AI 自己搜索网络结构(Neural Architecture Search,NAS)。
  • 特点:结构复杂,像一个“超级工厂”,分很多工位(normal cell、reduction cell)。
  • 问题:虽然效果好,但太大太复杂,不适合移动端

📍 (b) MobileNet v1(2017)

  • 思路:用 Depthwise + Pointwise 卷积 分解普通卷积,极大减少计算量。
  • 类比:把一个大工厂切分成流水线(深度可分离卷积),每个人只做一件事。
  • 问题:虽然很快,但表达能力不足,信息损失严重,精度比 ResNet/Inception 低。

📍 (c) ShuffleNet v1(2017)

  • 思路:发现 1×1 卷积计算量大,于是用 分组卷积(Group Conv)+ 通道打乱(Channel Shuffle) 进一步加速。
  • 类比:分工更细,每个小组只负责部分任务,再通过“洗牌”打乱重组,保证信息流动。
  • 问题:信息流还是不够顺畅,而且结构更复杂,难以进一步扩展。
👉 但是,这些方法虽然“轻”,但在精度和表达能力上还是存在 明显瓶颈

  1. 动机:如何在“轻量化”和“表达能力”之间找到平衡?
MobileNet v2 提出了两个关键思路:
  1. Inverted Residual(倒残差结构)
    • 传统残差网络 (ResNet) 是 先压缩通道,再扩展
    • MobileNet v2 反过来,先扩展再压缩,把信息保存在高维空间里处理,避免信息在低维里丢失。 👉 类比:好比你要在 A4 纸上写很多字,先把纸展开成更大的白板写完,再缩小成总结笔记,这样信息不容易丢。
  2. Linear Bottleneck(线性瓶颈)
    • 传统卷积层末尾常用 ReLU 激活,但在低维特征上加 ReLU 会“砍掉”很多信息。
    • MobileNet v2 在瓶颈层取消 ReLU,只保留线性映射,保证信息完整传递。 👉 类比:好比你在压缩文件的时候,不做无损压缩,而是直接删掉一部分 → 信息丢失。MobileNet v2 用“线性瓶颈”避免了这种丢失。

2、MobileNet v2 的模型网络结构

2.1、线性瓶颈到底解决了什么?

image.png
图1展示了嵌入高维空间的低维流形经过ReLU变换后的 典型示例

1)先看图里在讲什么

图中的蓝色螺旋是一条 低维流形(本质上是 2D 的“曲线/面”),先被嵌入到更高维空间(dim=2/3/5/15/30),经过一次线性变换 + ReLU,再投影回 2D。 你会看到:
  • 当嵌入维度 很低(dim=2,3) 时,ReLU 会把流形的一些区域压扁/粘在一起(不同点被映射成同一点),信息“塌缩”最明显。
  • 当嵌入维度 较高(dim≥15) 时,虽然形状变得更复杂(非凸),但整体结构还在,信息不至于被“压没”。
直观结论:在低维空间里对特征再做 ReLU,极容易造成信息不可逆丢失;而在高维空间里做 ReLU,余地更大,不容易把结构“压塌”。

2)回到 MobileNet v2 的倒残差块

倒残差块做的事是: 先扩展通道(高维) → 再用 DWConv 提取空间特征 → 最后压回低维(瓶颈)。 激活函数的安排刚好与图里的观察一致:
  1. 扩展层(1×1 conv,升维):用 ReLU6(在高维里非线性更“安全”)。
  2. DWConv(3×3):用 ReLU6(仍在高维里做非线性)。
  3. 投影层(1×1 conv,降到低维瓶颈)不用 ReLU,线性输出(这一步在低维,避免信息被 ReLU 压塌)。
  4. 残差连接:当输入输出维度相同且 stride=1 时,把输入直接加回来,进一步保护信息路径

小结:非线性放在高维,低维只做线性传递——这就是“线性瓶颈”。

3)为什么低维用 ReLU 危险?(再形象一点)

  • 想象你把一张彩色图(RGB)压成少量“要点通道”(低维瓶颈)。每个通道都很宝贵。
  • 在低维上用 ReLU 就像“把所有小于 0 的值一刀切成 0”,等于直接把一部分细节删掉;而且 ReLU 的导数在负半轴为 0,梯度也传不回去
  • 高维里通道多、冗余度高,ReLU“切掉”的部分更容易被其它通道弥补;低维里“每一口粮都很重要”,一刀切就可能不可逆地丢掉判别信息
  • 图里的螺旋就是这种“塌缩”的直观演示:低维 + ReLU → 点与点黏在一起


2.2、倒残差结构

image.png

1)回顾传统残差块 (a)

ResNet 的瓶颈残差块中,结构是 两头大,中间小
  • 输入通道多 → 压缩(1×1 Conv 降维) → 中间 3×3 Conv 处理 → 再扩展(1×1 Conv 升维) → 输出通道多
  • 这样做的主要目的是 减少中间 3×3 卷积的计算量,因为 3×3 是最耗时的部分。
  • 在每个卷积层后面加上 ReLU 激活,增加非线性。
👉 缺点:
  • 当压缩到低维度后继续加 ReLU,容易带来 信息丢失(前面 Linear Bottleneck 已经解释过),残差结构虽然缓解梯度消失,但信息仍然可能丢掉。

2)倒残差块 (b)

MobileNet v2 提出的 Inverted Residual Block,名字就说明了: 它反转了传统瓶颈残差块的设计思路
  • 两头小,中间大: 输入低维 → 1×1 Conv 升维(扩展通道)3×3 Depthwise Conv 提取空间特征1×1 Conv 降维(线性瓶颈输出) → 输出低维。
  • 关键点 1:中间扩展 → 高维加 ReLU 在高维通道空间里加 ReLU,即使丢掉一部分信息,其他通道还能补偿(信息冗余更大)。
  • 关键点 2:两头小 → 低维不加 ReLU(线性瓶颈) 在输入和输出的低维空间,直接保持线性传递,不做 ReLU,以防止低维特征“塌缩”,避免信息不可逆丢失。
  • 关键点 3:计算量仍然很小 因为 3×3 卷积换成了 Depthwise Separable Convolution(逐通道卷积),计算复杂度大幅下降,即使扩展到高维,计算成本也能接受。

3)为什么叫“倒残差”?

对比一下:
  • ResNet 残差块:输入 → 压缩 → 中间小维度处理 → 再扩展 → 输出大维度。
  • MobileNet v2 倒残差块:输入小维度 → 扩展 → 中间大维度处理 → 压缩 → 输出小维度。
所以称之为 Inverted Residual(反向的残差块)。 残差连接依然存在,当输入输出维度一致时,信息可以直接跳过卷积层(保证梯度流畅、信息保护)。

4)你的图里可以直观看出:

  • (a) Residual block:小 → 大(3×3)→ 小,ReLU 在低维也用了。
  • (b) Inverted residual block:大部分 ReLU 放在 扩展的高维度(中间),两头的小维度只做线性映射,信息传递更安全。

5)一句话总结

倒残差结构就是:

把“卷积运算放在大空间里做”,而“信息传递放在小空间里走”,并且小空间保持线性,不加 ReLU。


3、基于 MobileNet v2 的改进模型

  1. MobileNet v3(2019)
    • 改进点:结合 NAS(神经架构搜索) + SE 注意力机制 + 新激活函数 h-swish
    • 优势:比 v2 更快更准,在移动端推理效率大幅提升。
    • 📌 是 v2 的官方升级版,谷歌团队提出。很多论文在轻量化对比时都会拿 v3 做 baseline。
  2. EfficientNet 系列(2019)
    • 改进点:基于 MobileNet v2 的 MBConv(倒残差模块),通过 复合缩放策略(宽度+深度+分辨率) 提升性能。在 ImageNet 上创造了 SOTA 记录。
    • 优势EfficientNet-B0 到 B7,以及后续的 EfficientNetV2 都是热门 baseline。
    • 📌 属于 MobileNet v2 模块的 “升级加强版”。几乎所有和轻量化 / 高效 CNN 相关的论文都会引用 EfficientNet。
  3. FBNet(2019)
    • 改进点:基于 MobileNet v2 的结构,使用 NAS 搜索更符合硬件特性的网络。
    • 优势:比手工设计更高效,适配移动设备。
  4. ProxylessNAS(2019)
    • 改进点:改进 NAS,直接在目标硬件(如手机 GPU)上搜索 MobileNet v2 风格的结构。
    • 优势:比 v2 更加“硬件友好”。
  5. MnasNet(2019)
    • 改进点:谷歌提出,结合 MobileNet v2 模块 + 强化学习搜索。
    • 优势:在 ImageNet 上精度与速度平衡更好。
  6. MixNet(2019)
    • 改进点:基于 MobileNet v2 的卷积分支,提出 多尺度深度可分离卷积(Mixed Depthwise Convolution)
    • 优势:提升不同尺度特征的表达能力。
  7. MobileNeXt(2020)
    • 改进点:分析了 MobileNet v2 倒残差的不足,提出 Sandglass block(沙漏块) 替代。
    • 优势:比 v2 更稳健,在小模型下表现更好。