源码、配套笔记&讲解视频,点击文末名片获取
- 研究背景和动机(基于 Xception 的延伸)
背景
- Xception(2016) 提出了一个很核心的思想:
把标准卷积拆成 “Depthwise 卷积 + Pointwise 卷积”,即 深度可分离卷积。- 好处:大大减少参数量和计算量。
- 缺点:模型虽然高效,但依旧比较“大”,更偏向服务器级别的应用。
- 现实需求:
到 2017 年,深度学习已经进入工业化应用阶段,不仅要在云端跑,还要在手机、无人机、智能眼镜等小设备上跑。- 但是 Inception / ResNet / Xception 这些模型在移动端依然太重。
- 这就催生了 “能不能让 Xception 变得更轻,更能适配移动端?” 的研究方向。
动机
MobileNet v1 的动机:
- 直接把 Xception 的“深度可分离卷积”做成极简轻量化的网络骨架。
- 使用最简单的 串行堆叠。就是在结构上避免繁琐的 Inception 分支、ResNet 堆叠,而
- 在训练和部署时,还可以通过 宽度因子(减少通道数) 和 分辨率因子(降低输入尺寸) 来进一步压缩模型。
通俗形象化解释(对比 Xception)
- Xception:像一个大工厂,已经把“生产流水线”从一个大厨分工成切菜工、炒菜工、装盘工(深度可分离卷积),效率比以前高很多。但这个工厂依然占地大、设备多,只适合放在城市里的大厂房(云端服务器)。
- MobileNet v1:把这个大工厂的设计思想“缩小”成一个 小型便携工厂:
- 依旧有切菜工 + 炒菜工(Depthwise + Pointwise),
- 但机器更少,工序更精简,
- 而且可以根据需要调节工厂规模(宽度因子、分辨率因子)。
结果:随身携带的小工厂,可以装进“手机芯片”里,在移动端直接运行。
✅ 一句话总结:
MobileNet v1 的研究动机就是:把 Xception 的深度可分离卷积思想真正落地到移动端,让深度学习从“大厂房”走向“口袋工厂”。
2、MobileNet v1 的创新点
✅ 一句话总结:
MobileNet v1 的创新点是 —— 把深度可分离卷积极致化、简洁化,并通过可调节的宽度/分辨率因子,让 CNN 真正适配移动端,成为轻量化模型的开山之作。
- 引入深度可分离卷积作为基础构件
传统卷积:一层卷积同时处理 空间信息(卷积核扫描图像) 和 通道信息(不同颜色/特征组合),计算量大。
深度可分离卷积:把任务拆成两步:
Depthwise 卷积:每个通道自己处理自己。
![[图片]](https://i-blog.csdnimg.cn/direct/f00a3c18ca884be382d302c3daca350f.png)
Pointwise 卷积(1×1 卷积):把不同通道再组合在一起。
![[图片]](https://i-blog.csdnimg.cn/direct/bba1148dcd224c5ea53724d524894ab9.png)
效果:计算量和参数量显著减少(通常能减少 8~9 倍),精度损失却很小。
类比:大厨一手包办所有菜(标准卷积) → 请多个厨师分工切菜(Depthwise)+ 一个总厨统一炒(Pointwise),效率高、成本低。
- 极简的网络结构设计
- 不像 Inception 那样有复杂的分支,也不像 ResNet 那样有深层堆叠。
- MobileNet v1 的主干非常简洁:
- 从头到尾几乎就是一堆 深度可分离卷积层 + 池化层 + 全连接层 串起来。
- 效果:减少了工程复杂度,更容易在各种硬件上部署。
类比:如果 Inception 是“多车道立交桥”,ResNet 是“层层叠加的高楼”,那么 MobileNet v1 就是“一条直直的公路”,轻松直接。
- 提出两个灵活的缩放超参数
MobileNet v1 不仅轻量,而且给了用户“调节旋钮”: - 宽度因子(Width Multiplier, α)
- 控制每一层的通道数(越小 → 通道数减少 → 模型更小)。
- 例如 α=0.5 → 通道数减半,参数量和计算量都大幅下降。
- 分辨率因子(Resolution Multiplier, ρ)
- 控制输入图像的分辨率(越小 → 每层计算量减少)。
- 例如从 224×224 → 128×128,模型运行速度显著提升。
通过 类比:就像工厂里的机器能够 调节产能模式: - 全开模式(高精度,高计算量)。
- 节能模式(低精度,快,适合小设备)。
3、模型网络结构![[图片]](https://i-blog.csdnimg.cn/direct/14afde982818410983d9dee9c4cb8b88.png)
深度可分离卷积(Depthwise Separable Convolution):就是MobileNet v1 的核心构建块
由 Depthwise 卷积(dw) + Pointwise 卷积(1×1 conv) 组成。
通过整张表格能够分为 4 大部分:
- 输入层
- 输入:224×224×3 彩色图像。
- 先经过一个标准卷积(Conv 3×3, stride=2, 32 通道),把图像缩小一半 → 112×112×32。
类比:像机场安检,先来一次“大扫描”,把大图缩小。
- 特征提取层(深度可分离卷积堆叠)
- 反复运用 Depthwise + Pointwise 组合:
- Depthwise 负责“各通道独立处理”。
- Pointwise 负责“通道整合”。
- 网络逐步把特征图从 112×112 → 56×56 → 28×28 → 14×14 → 7×7 缩小,同时通道数增加 32 → 64 → 128 → 256 → 512 → 1024。
类比:就像工厂流水线,产品在不断压缩打包,但“零件数量(通道)”越来越多,信息更浓缩。
- 核心瓶颈层(14×14, 512 通道,重复 5 次)
- 模型的“主工厂车间”。就是在 14×14×512 这一层,MobileNet 堆叠了 5 组深度可分离卷积,这
- 重复加工让特征更加精炼。
类比:像流水线里最核心的工段,产品在这里被多次打磨。
- 输出层
- 14×14×512 → 7×7×1024:再经过几层卷积,得到高维特征。
- 全局平均池化 (Global Avg Pool):把 7×7×1024 → 1×1×1024,相当于把整张图的特征汇总。
- 全连接层 (FC):1024 → 1000,用于分类(ImageNet 1000 类)。
- Softmax:输出最终分类概率。
类比:工厂最后的“质检+打包”,然后贴上标签(分类结果)。
4、MobileNet v1 的缺点
- 过度轻量化 → 精度不足
- MobileNet v1 追求极致轻量化,计算量确实降了很多,但 在 ImageNet 上精度比 ResNet、Inception 低不少。
- 尤其在繁琐任务(如检测、分割)上,效果更差。
类比:就像一辆“省油小车”,能跑,但速度和动力比不上跑车。
- 深度可分离卷积存在“信息瓶颈”
- Depthwise 卷积只在通道内做运算,不做跨通道交互。
- Pointwise 卷积尽管能重新组合,但表达能力比标准卷积弱。
- 结果是:模型的特征表达能力不足,学到的特征不如大模型丰富。
类比:工厂里工人各自干活,但合作少,终于总工只负责简单拼接,产品设计没那么精细。
- 模型过于“线性单调”
- 和 Inception 的多分支结构不同,MobileNet v1 完全是“串行流水线”。
- 这导致 多尺度特征融合能力弱,对复杂图像的理解有限。
- 缺乏残差连接 → 训练不如 ResNet 稳定
- MobileNet v1 没有大量使用 ResNet 那样的 skip connection。
- 这使得网络训练在深层时可能会有梯度消失/收敛慢的问题。
类比:工厂流水线上没有“回头检查”的环节,一旦中间出错,很难修复。
- 超参数敏感,调节复杂
- MobileNet v1 引入了 宽度因子 (α) 和 分辨率因子 (ρ)。
- 虽然提供了灵活性,但对初学者来说,很难选到最佳组合。
- 在不同硬件/任务下,需要大量实验来调参。
类比:工厂机器的转速、功率都能调节,但如果不会调,就容易“要么太慢,要么质量差”。
5、未来展望和改进思路(基于 MobileNet v1 的发展)
- 提升表达能力 → MobileNet v2 (2018)
- 核心改进:
- 引入 倒残差结构(Inverted Residuals):先把低维特征扩展到高维,再卷积,再压缩回来。
- 引入 线性瓶颈(Linear Bottleneck):避免激活函数破坏特征空间。
- 效果:在保持轻量化的同时,大幅提升特征表达能力。
- 类比:v1 是“工厂直通流水线”,v2 加了“临时仓库”和“回头检查”,让产品既精简又高质量。
- 更智能的非线性和注意力机制 → MobileNet v3 (2019)
- 核心改进:
- 使用 Swish 激活函数(比 ReLU 更平滑)。
- 引入 SE(Squeeze-and-Excitation)通道注意力机制,学会关注重要特征。
- 借助 NAS(神经结构搜索) 自动搜索最佳结构。
- 效果:在移动端更高效,分类和检测任务精度进一步提升。
- 更极致的轻量化与算力利用 → MobileNet 系列衍生 & GhostNet / ShuffleNet
- 核心思路:
- 在保持深度可分离卷积的同时,进一步减少冗余计算。
- GhostNet:通过 线性变换生成“虚拟特征”,少算一些冗余卷积。
- ShuffleNet:通过 通道打乱(Channel Shuffle),增强信息流动。
- 效果:在移动 CPU/GPU 上更快,计算量更低。