MobileNet 体系解析:轻量级 CNN 学习笔记


MobileNet 学习笔记


一、MobileNet 概述

提出时间: 2017年

提出背景:

传统卷积神经网络(CNN)虽然性能强大,但计算量和参数量庞大,难以在移动端或嵌入式设备上部署。

目标:

在保持较高准确率的同时,显著降低模型参数量与运算量。

核心思想:

  1. 使用 Depthwise Separable Convolution(深度可分离卷积) 来减少计算量。
  2. 引入两个可调超参数:
    • α(Width Multiplier):控制卷积核数量(网络宽度)。
    • β(Resolution Multiplier):控制输入图像尺寸(分辨率)。

二、MobileNet v1 网络详解

1. Depthwise Convolution(DW卷积)

传统卷积:

  • 输入:3通道图像。
  • 卷积核:假设有4个,每个卷积核包含3个通道。
  • 每个卷积核会对所有输入通道进行卷积并融合结果。
  • 输出特征图通道数 = 卷积核数量(即4)。
  • 结论:存在通道间特征融合。

DW卷积:

  • 每个输入通道只使用一个卷积核进行卷积。
  • 不进行通道融合。
  • 输出通道数与输入通道数相同。
  • 结论:显著减少计算量,但缺乏通道融合能力。

2. Depthwise Separable Convolution(深度可分离卷积)

由两部分组成:

  1. Depthwise Convolution (DW): 对每个输入通道单独卷积。
  2. Pointwise Convolution (PW): 使用 1×1 卷积核,将DW卷积结果在通道维度进行线性组合,实现通道间的信息融合。

优点:

  • 大幅减少计算量与参数量。
  • 能保持较高精度。

3. 与普通卷积的计算量对比

假设输入特征大小为 ( $D_F \times D_F \times M $),卷积核大小为 ( $D_K \times D_K$ ),输出通道为 ($ N $)。

  • 普通卷积计算量: $ D_K^2 \times M \times N \times D_F^2$
  • 深度可分离卷积计算量:$ D_K^2 \times M \times D_F^2 + M \times N \times D_F^2$
  • 相比之下,约减少 8~9 倍 计算量。

4. 超参数 α 与 β

参数 含义 作用
α (Width Multiplier) 卷积核个数缩放系数 控制网络宽度。α越小,通道数越少,参数量越小。
β (Resolution Multiplier) 输入分辨率缩放系数 控制输入图像尺寸。β越小,计算量越小。

示例:

  • α = 1.0,输入 224×224,准确率 70.6%。
  • 降低 α 或 β 会略降准确率,但显著减小模型规模。

5. v1 的不足

  • Depthwise 卷积的部分卷积核可能废掉,即部分参数趋近于 0,导致特征提取不充分。 v2 版本针对该问题进行了改进。

三、MobileNet v2 网络详解(2018)

MobileNet v2 在 v1 的基础上进一步优化,主要引入:

  1. Inverted Residual(倒残差结构)
  2. Linear Bottleneck(线性瓶颈)

1. Inverted Residual(倒残差结构)

传统残差结构(ResNet):

两头大,中间小
1×1 降维 → 3×3 卷积 → 1×1 升维
激活函数:ReLU

倒残差结构:

两头小,中间大
1×1 升维 → 3×3 DW卷积 → 1×1 降维
激活函数:ReLU6(范围 [0, 6])

特点:

  • 更适合轻量化网络。
  • 保留低维特征表达能力。
  • 更高效地利用通道信息。

2. Linear Bottleneck(线性瓶颈)

在倒残差结构的最后一层(1×1降维卷积)不使用ReLU激活函数,而采用线性激活函数

原因:ReLU在低维空间会导致特征丢失,线性激活能更好地保留信息。

论文示例(Figure 1):输入经过随机矩阵 T、ReLU、T⁻¹ 后,低维空间的特征还原效果极差,说明非线性激活会破坏低维信息。


3. Shortcut 连接的条件

  • 当 stride = 1 且输入输出 shape 相同时,添加 shortcut 连接。
  • 当 stride ≠ 1 时(例如下采样层),不使用 shortcut。

4. 网络架构说明

MobileNet v2 网络由多个 bottleneck 模块组成。
每个模块包含:

  • t:扩展因子(expand ratio)
  • c:输出通道数
  • n:重复次数
  • s:步幅(stride)

注意:

  1. 当模块重复多次时,只有第一个 stride=2(下采样),其余为 stride=1。
  2. 最后一层输出通道数取决于任务类别数(例如 ImageNet 为 1000 类)。

5. MobileNet v2 在视觉任务中的表现

  • 图像分类(ImageNet):
    当 α=1.4 时,Top-1 准确率 74.7%。
  • 目标检测(Object Detection):
    与 SSDLite 结合后,mAP 达 22.1。

6. 对比表

模型版本 核心改进 激活函数 连接结构 性能特点
v1 Depthwise Separable Conv, α, β ReLU 参数量、计算量显著下降
v2 Inverted Residual, Linear Bottleneck ReLU6 + Linear Shortcut(stride=1时) 精度更高,效率更优
  • MobileNet 的设计是:在保持足够表达能力的同时,最大限度地压缩计算量
  • Depthwise + Pointwise 分解体现了分而治之的思想。
  • v2 的倒残差结构本质上在平衡“信息压缩”和“信息流通”之间的矛盾。

四、MobileNet v3 网络详解(2019)

MobileNet v3 是在 v2 的基础上,通过 网络结构搜索(NAS)注意力机制(SE模块) 自动优化得到的版本。


1. 设计动机

v2 已经足够轻量,但仍存在以下问题:

  • 模块结构固定,未针对特定任务自动优化;
  • 缺少全局特征建模能力;
  • 激活函数 ReLU6 在某些场景下欠表达。

因此 v3 引入三大改进:

  1. NAS 自动搜索最优结构;
  2. SE(Squeeze-and-Excitation)模块增强特征通道表达;
  3. 新的激活函数 h-swish,提高性能与可导性。

2. 核心模块与创新点

(1) h-swish 激活函数

传统 ReLU6 在低值区“死亡神经元”问题严重。 v3 采用 h-swish (hard-swish) 激活函数,兼具可导性与轻量性:

$\text{h-swish}(x) = x \times \frac{\text{ReLU6}(x + 3)}{6}$

优点:

  • 在 [−3, 3] 区间平滑可导;
  • 可近似 swish(x) = x * sigmoid(x),但计算更快;
  • 提升特征非线性表达能力。

(2) SE 注意力机制(Squeeze-and-Excitation)

在每个 bottleneck 模块中加入 SE Block,实现通道注意力调节。

流程:

  1. Squeeze: 全局平均池化,得到通道级统计信息。
  2. Excitation: 两层全连接网络(带 ReLU 与 Sigmoid)生成权重。
  3. Scale: 将权重与原特征通道相乘,实现重要通道增强。

作用:
显著提升特征选择性,使模型关注关键特征维度。


(3) 改进的 Inverted Residual 结构

v3 继续使用倒残差结构,但调整了:

  • 是否启用 SE 模块;
  • 激活函数类型(ReLU 或 h-swish);
  • 扩展比例(expansion ratio);
  • 通道数量按 NAS 搜索结果动态分配。

(4) 网络结构搜索(NAS)

使用 Google AutoML 工具自动搜索网络配置:

  • 目标函数: 准确率 / 延迟比值(accuracy-latency trade-off);
  • 搜索空间: block 类型、通道数、步幅、是否加 SE、激活函数类型。

Author: linda1729
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source linda1729 !
评论
  TOC