
视频元信息
- 所属课程:吴恩达深度学习专项课程(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 层之后):
- 池化层(Pooling Layer)
- 全连接层(Fully Connected Layer)
- 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