视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程(Deep Learning Specialization)
  • 章节位置:第 20 课 2.9 MobileNet 架构
  • 主题:MobileNet V1 与 V2 架构原理,深度可分离卷积的实际应用与瓶颈块(Bottleneck Block)设计

内容摘要(TL;DR)

本节承接上一节的深度可分离卷积,讲解如何将其组装成 MobileNet。MobileNet V1 用 13 个深度可分离卷积块堆叠,大幅降低计算量。MobileNet V2 引入两大改进:残差连接与扩展层,形成瓶颈块(Bottleneck Block),采用"扩展→深度卷积→投影"结构,重复 17 次。瓶颈块在提升表示能力的同时控制内存占用,使其在移动端/边缘设备上高效运行。


一、从深度可分离卷积到 MobileNet [00:03]

核心思想:凡是以前使用昂贵标准卷积操作的地方,现在都可以替换为便宜得多的深度可分离卷积操作。

  • 深度可分离卷积 = 深度卷积(Depth-wise Convolution)+ 逐点卷积(Point-wise Convolution)
  • MobileNet 的本质就是把这一廉价操作"插"进神经网络,替代传统卷积

理解:上一节讲的是"单个卷积操作"如何省算力,本节讲的是"整个网络"如何用这种操作搭起来。两者是零件与整机的关系。


二、MobileNet V1 架构 [00:36]

架构要点:

  • 使用一个特定的块结构,重复 13 次
  • 每个块:深度卷积生成输出,然后堆叠成 13 层
  • 从原始输入图像到最终分类预测的完整流程

网络末端结构(13 层之后):

  1. 池化层(Pooling Layer)
  2. 全连接层(Fully Connected Layer)
  3. Softmax 层 → 输出分类预测

性能特点:表现良好,同时比使用普通卷积的早期算法计算成本低得多。

考点:MobileNet V1 = 13 个深度可分离卷积块 + 池化 + 全连接 + Softmax


三、MobileNet V2 的两大改进 [01:31]

MobileNet V2 由 Mark Sandler 及其同事发表,让 MobileNet 表现更好。共有两个主要变化:

改进一:加入残差连接(Residual Connection)[01:59]

  • 与 ResNet 中的残差连接原理相同
  • 也称跳跃连接(Skip Connection)
  • 作用:把上一层的输入直接取出来,与输出相加后传到下一层
  • 效果:让梯度更高效地反向传播

易错点:残差连接是"相加"(sum),不是"拼接"(concatenate)。拼接是 DenseNet 的做法,别混淆。

改进二:加入扩展层(Expansion Layer)[02:22]

  • 位置:在深度卷积之前
  • 结构顺序:扩展层 → 深度卷积 → 逐点卷积
  • 此处的逐点卷积被重新命名为投影(Projection)

理解:操作本身没变,还是 1×1 卷积,只是叫法变了。原因在下一节的结构详解中揭晓——因为它起的是"降维"作用。


四、MobileNet V2 的整体堆叠方式 [02:44]

  • 使用上述块结构,重复 17 次(对比 V1 的 13 次)
  • 输入经过 17 个块后,末端仍是常规的:池化 → 全连接 → Softmax

考点:V1 重复 13 次,V2 重复 17 次。这是高频记忆点。

该块结构也被称为瓶颈块(Bottleneck Block)。


五、瓶颈块内部结构详解 [03:29]

假设输入为 n × n × 3,逐步拆解瓶颈块的工作流程:

步骤 1:残差连接 [03:35]

输入通过残差连接直接传到输出端,与 ResNet 一致。

步骤 2:扩展操作(Expansion)[03:50]

  • 使用 1×1×nc 的滤波器,本例中为 1×1×3
  • 但使用数量较多的滤波器,例如 18 个
  • 输出维度变为 n × n × 18
  • 扩展因子为 6,在 MobileNet V2 中很典型
  • 输入从 n×n×3 → n×n×18,维度扩大 6 倍,故称"扩展"

推导:3 × 6 = 18,这就是扩展因子 6 的来源。扩展层本质上是用 1×1 卷积做升维。

步骤 3:深度可分离卷积 [04:31]

  • 关键点:使用 padding
  • 上一节无 padding 时,6×6×3 → 4×4×3(尺寸缩小)
  • 此处有 padding,可保持 n × n × 18 不变
  • 深度卷积不改变通道数,也不缩小空间尺寸

易错点:深度卷积本身不改变通道数,只做空间滤波。通道数的变化由逐点卷积负责。

步骤 4:逐点卷积 / 投影(Projection)[05:01]

  • 使用 1×1×18 的滤波器
  • 若有 3 个(或 c' 个)滤波器
  • 输出变为 n × n × 3
  • 从 n×n×18 降回 n×n×3
  • 此步骤称为投影步骤,因为它在降维

理解:这就是为什么把逐点卷积改名"投影"——它把高维表示"投影"回低维空间。


六、为什么要用瓶颈块? [05:51]

瓶颈块同时实现两个目标:

目标一:提升表示能力 [06:01]

  • 扩展操作增大瓶颈块内部的表示尺寸
  • 允许神经网络学习更丰富的函数
  • 内部有更多计算量

目标二:控制内存占用 [06:17]

  • 移动设备/边缘设备内存严重受限
  • 投影操作把表示降回较小的值
  • 传给下一个块时,存储激活值所需内存被降下来

核心巧妙之处:既实现了更丰富的计算(学习更复杂函数),又保持了层间传递的激活值尺寸相对较小。

考点:瓶颈块的精髓 = "内部宽、外部窄"。内部升维做复杂计算,外部降维省内存。

思考:这就是"瓶颈"名字的由来——两头窄、中间宽,像瓶颈一样。这种设计在计算量和内存之间取得平衡,是 MobileNet V2 性能优于 V1 的关键。


七、整体架构回顾 [07:14]

  • MobileNet V1:重复块结构 13 次
  • MobileNet V2:重复瓶颈块 17 次
  • 分类任务末端:池化 → 全连接 → Softmax

若想了解各层精确维度等更多细节,可查阅 Mark Sandler 等人的论文。


八、本节小结与预告 [08:03]

已掌握:

  • MobileNet V1 与 V2 的工作原理
  • 深度可分离卷积的组装应用
  • 瓶颈块的设计思想

预告:构建高效神经网络还有一个非常有用的思路——效率网络(EfficientNet),将在下一节简要介绍。

拓展:MobileNet 系列的核心贡献在于"用结构设计换效率"。深度可分离卷积把标准卷积的计算量降低约 8~9 倍,而 V2 的瓶颈块进一步在"表达力"与"内存"之间做权衡。这种"轻量化"思想后来被 EfficientNet、ShuffleNet、GhostNet 等继承发展,成为移动端部署的主流范式。

易错点补充:

  • 深度可分离卷积 ≠ 普通卷积,计算量差异巨大,但表达力也有损失,靠堆叠层数弥补
  • 残差连接要求输入输出维度一致才能直接相加,这也是瓶颈块输入输出都设计成 n×n×3 的原因之一
  • "投影"与"逐点卷积"是同一操作的不同叫法,考试中可能混用

关键标签 / 关键词

MobileNet、MobileNet V1、MobileNet V2、深度可分离卷积、深度卷积、逐点卷积、瓶颈块、Bottleneck Block、残差连接、跳跃连接、扩展层、扩展因子、投影、ResNet、边缘设备、移动端部署、轻量化网络、EfficientNet、Mark Sandler、计算成本、内存约束、激活值


生成时间:2026-10-10 23:01:40 生成平台:VideoNote www.xygy.top