- 教程
- 人工智能
- 机器学习
- 深度学习
【免费下载链接】AI-For-Beginners
12 Weeks, 24 Lessons, AI for All!
本篇技术指南围绕 AI-For-Beginners 课程中「4-ComputerVision / 07-ConvNets」一课的进阶文档 CNN_Architectures.md 展开,系统讲解四类影响深远的经典卷积神经网络架构:VGG-16、ResNet、Google Inception 与 MobileNet 的核心设计思想与适用场景。读完本文,你将理解「金字塔式架构」「残差连接」「1×1 卷积」「深度可分离卷积」等关键概念的本质,并能在课程配套的 PyTorch/TensorFlow Notebook 与宠物分类实验中,把抽象架构原理落到可运行、可调参的具体实践中。
一、课程背景:从卷积滤波器到经典架构
在进入经典架构之前,课程 07-ConvNets 主文档 先铺垫了一个关键概念:金字塔式架构(Pyramid Architecture)。绝大多数用于图像处理的 CNN 都遵循这一模式:
- 作用于原始图像的第一个卷积层,滤波器数量通常较少(8~16 个),它们对应不同的像素组合模式,例如水平线、垂直线、笔画等低层特征;
- 随着网络加深,空间分辨率逐渐下降,而滤波器数量不断增多,对应越来越多「简单特征组合成复杂特征」的可能性;
- 越靠近最终分类器,图像空间维度越小,滤波器数量越多,最终由全连接层输出分类结果。
CNN 之所以强大,是因为滤波器不再由人工设计,而是通过网络在训练中自动学习得到。课程配套的两个 Notebook——ConvNetsPyTorch.ipynb 与 ConvNetsTF.ipynb——正是用 MNIST 手写数字演示「可训练的滤波器」如何一步步搭建起来。而 CNN_Architectures.md 则是该课程的进阶篇:当你在 MNIST 上掌握了卷积、池化等基础构件之后,再看这些在 ImageNet 级别竞赛中证明过自己的经典架构,理解它们各自针对什么问题提出了什么解法。
二、VGG-16:经典金字塔架构的范本
VGG-16是在 2014 年 ImageNet 分类任务中以Top-5 准确率 92.7%取胜的网络,其层结构如下:
从图中可以看出,VGG-16 采用了传统的金字塔式架构——它本质上是卷积层与池化层交替堆叠的序列:每一组卷积层负责在当前尺度上提取特征,紧随其后的池化层降低空间尺寸,再进入下一组卷积层提取更高层特征。随着层数加深,特征图的宽高逐级减半,而通道数(滤波器数量)逐级翻倍,这正是「金字塔」的含义所在。
VGG 的贡献在于证明了**「简单堆叠更深、更规整的卷积-池化序列」就能显著提升性能**。它与你在 Notebook 中亲手搭建的多层 CNN 遵循完全相同的哲学——在 ConvNetsPyTorch.ipynb 中,叠加池化层并增加滤波器数量后,模型参数量降到约 8.5K,且仅用 1~2 个 epoch 就能达到比单层卷积网络更高的准确率。这说明:精巧的架构往往能以更少的数据和参数学到更具泛化性的模式,VGG-16 正是把这一思路在超大规模数据集上推到极致的结果。
三、ResNet:残差连接让深层网络变得可训练
ResNet是微软研究院(Microsoft Research)在 2015 年提出的模型家族,其核心思想是引入残差块(Residual Block):
残差块的关键在于一条恒等直通(identity pass-through)路径:让网络层去预测「上一层的结果」与「残差块输出」之间的差值(residual),这正是「残差」名称的由来。这样做的好处非常直观:
- 更易训练:网络不必从零拟合完整的映射,只需学习相对上一步的增量修正,因此可以堆叠数百个残差块而不会出现梯度消失、训练困难等问题。原文档给出的最常见变体为ResNet-52、ResNet-101 与 ResNet-152(在实际工程中,ResNet-50/101/152 同样是极为常见的骨干网络深度)。
- 复杂度自适应:可以把这种网络理解为「能够根据数据集自动调节自身复杂度」。训练初期权重值很小,大部分信号直接经由恒等直通路径通过,网络近似一个浅层模型;随着训练推进、权重逐渐增大,网络参数的重要性上升,模型才逐步释放所需的表达能力,以正确分类训练图像。这一特性使得残差网络在数据量有限时依然稳健,在数据充足时又能充分利用深度。
ResNet 解决了深度学习中的核心矛盾——「网络越深,越难训练」,从而让「用更多层来换取更强表达力」成为可能。它是之后几乎所有现代视觉骨干网络(包括后面要讲的 Inception-ResNet 混合体)的基石。
四、Google Inception:多路径并行与 1×1 卷积
Google Inception架构把「一个层只做一件事」的思路推进一步:它把网络的每一层都构建为多条不同路径的组合,让不同尺度的感受野在同一层内并行工作:
在这里,必须特别强调1×1 卷积的作用——它初看似乎不合常理:「为什么要用一个 1×1 的滤波器去扫图像?」但请记住:卷积滤波器是同时作用于多个深度通道的——第一层作用于 RGB 三通道,后续层则作用于「不同滤波器的输出通道」。因此 1×1 卷积的真正作用有两个:
- 通道混合:用一组可训练的权重,把多个输入通道按一定比例混合成一个新的特征组合;
- 通道维度的降采样(池化):可以把 1×1 卷积理解为「在深度通道这个维度上做池化」,在几乎不损失空间信息的前提下压缩通道数、降低后续计算量。
正是借助 1×1 卷积,Inception 模块才能在同一个层里并行放置不同尺寸的卷积分支,同时控制整体参数量与计算开销(原文档同时提供了关于 1×1 卷积的专题博客文章与 Inception 原始论文《Going Deeper with Convolutions》供延伸阅读)。从源码角度看,1×1 卷积在框架层面并无特殊之处——它就是一个kernel_size=(1,1)的普通卷积层,真正特别的是它在通道维度上扮演的「混合器 + 降维器」角色。
五、MobileNet:深度可分离卷积实现模型瘦身
MobileNet是一族面向移动设备的小体积模型。如果你的计算资源有限、且可以接受牺牲少量准确率,它就是合适的选择。其核心思想是深度可分离卷积(Depthwise Separable Convolution):
- 把标准卷积滤波器分解为「空间卷积」与「在深度通道上的 1×1 卷积」的复合;
- 空间卷积只在每个通道内部独立滑动窗口提取空间特征;
- 随后再由 1×1 卷积跨通道混合这些特征。
这样的分解大幅减少了参数量,带来的收益有三点:
- 模型体积更小,可以直接部署到手机等嵌入式设备;
- 更容易训练,对小规模数据集更友好(参数量少意味着过拟合风险低);
- 在资源受限场景下,是准确率与计算量之间一个务实的折中点。
六、仓库配套实践:Notebook 与辅助脚本中的架构落地
理解了上述架构的抽象思想后,可以回到课程仓库看它们的具体「落地素材」。这些经典架构的构成单元——卷积层、池化层、通道数变化——正是你在两个 Notebook 中亲手操作的对象。
6.1 PyTorch 版:从单层卷积到多层 CNN
在 ConvNetsPyTorch.ipynb 中,卷积层通过nn.Conv2d构建,需要指定三个关键参数:
in_channels:输入通道数(MNIST 灰度图为 1);out_channels:滤波器数量(示例中用 9 个滤波器,给网络充分的探索空间);kernel_size:滑动窗口大小,常用 3×3 或 5×5。
单层卷积示例中,输入 28×28 的图像经 9 个 5×5 滤波器卷积后得到9×24×24的张量(空间尺寸变小,因为 5 像素的滑动窗口在 28 像素中只能放下 24 个位置),随后展平为 5184 维向量,接一个线性层输出 10 个类别,层间使用relu激活。该网络约 5 万可训练参数,而全连接多层网络约 8 万参数——卷积网络用更少的参数获得更好结果,因为它泛化能力更强。
后续的「多层 CNN + 池化」阶段则引入两种池化:
- 平均池化(Average Pooling):取滑动窗口(如 2×2)内数值的平均值;
- 最大池化(Max Pooling):取窗口内最大值,思想是「检测窗口内是否存在某个模式」。
多个卷积层之间插入池化层来降低图像维度,同时增加滤波器数量,这与 VGG 的金字塔理念一脉相承。
6.2 TensorFlow 版:输入形状与 im2col
ConvNetsTF.ipynb 中特别强调了实际使用时的输入形状约定:Conv2D层期望输入形状为W×H×C(宽×高×通道数),灰度图即C=1。Notebook 还讲解了im2col技巧——把「滑动窗口卷积」转化为矩阵运算,从而可以参与反向传播训练:将图像中所有3×3局部片段抽取排列成矩阵,卷积过程就变成矩阵乘法,这正是卷积层权重可训练背后的数学机制。
6.3 辅助脚本:面向真实图像的预处理与数据加载
课程仓库提供了两个封装好的辅助脚本,直接服务于「用真实图像训练 CNN」的实验:
- pytorchcv.py 中的
common_transform()展示了面向 ImageNet 风格模型的经典预处理管线:Resize(256)→CenterCrop(224)→ToTensor()→Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])。这套均值/方差正是 ImageNet 数据集的统计值,是 VGG、ResNet、Inception 等预训练模型的标准输入约定;同文件中的load_cats_dogs_dataset()则演示了用torchvision.datasets.ImageFolder加载目录结构的数据集并做random_split划分训练/测试集。 - tfcv.py 中的
load_cats_dogs_dataset()使用 Keras 的image_dataset_from_directory,以validation_split=0.2、image_size=(224,224)直接从目录读取并划分数据。
这些代码片段让你在搭建自定义 CNN 时,能直接复用与经典架构一致的输入预处理与数据加载方式——这也是后续做迁移学习、加载预训练 VGG/ResNet 权重的必要前提。
七、动手实验:从 MNIST 走向多类别宠物识别
课程在本节末尾给出了一份挑战性明显高于 MNIST 的 实验任务:训练 CNN 对猫和狗的不同品种进行分类。
- 数据集:Oxford-IIIT Pet Dataset,包含37 个猫狗品种的图像,比 MNIST 维度更高、类别更多(超过 10 类),从源码结构看,Notebook PetFaces.ipynb 会按文件名将图像整理到品种子目录中以便分类;
- 数据获取(实验文档给出):
!wget https://thor.robots.ox.ac.uk/~vgg/data/pets/images.tar.gz !tar xfz images.tar.gz !rm images.tar.gz - 框架要点:TensorFlow 用
image_dataset_from_directory读取、PyTorch 用ImageFolder;图像需统一缩放为方形并组织成 minibatch,训练张量形状应为 TensorFlow 的(batch_size,image_size,image_size,3)或 PyTorch 的(batch_size,3,image_size,image_size); - 架构建议(Notebook 明确给出):遵循金字塔架构——滤波器数量随网络加深而增加;层间不要忘记 ReLU 激活与最大池化;最后一层输出神经元数等于类别数;
- 激活函数与损失函数搭配:TensorFlow 可用
softmax激活 +sparse_categorical_crossentropy损失(标签为类别编号而非 one-hot);PyTorch 可在最后一层不加激活,直接用CrossEntropyLoss(该函数内部自动应用 softmax); - 可选进阶指标:由于 37 个类别中存在人类都难以区分的相似品种,实验鼓励计算Top-3 准确率——PyTorch 用
torch.topk取概率最高的前 3 个类别,TensorFlow 用tf.nn.in_top_k判断目标标签是否落在预测 Top-k 内; - 训练注意:建议在有 GPU 的环境训练;PyTorch 需用
.to()将模型与数据迁移到 GPU,TensorFlow/Keras 会自动使用 GPU。
八、总结、挑战与延伸学习
小结
通过本课,你掌握的不只是四张架构「名片」,而是计算机视觉神经网络的核心脉络:现实世界中支撑图像分类、目标检测乃至图像生成的架构,本质上都建立在 CNN 之上——只是拥有更多层、更多通道,以及残差连接、Inception 模块、深度可分离卷积等额外的训练与结构技巧。本课的 主文档 与 架构文档 提供了从概念到范例的完整链路。
挑战
两个配套 Notebook 的末尾都附有「如何获得更高准确率」的提示笔记。不妨亲手做几组对照实验,例如:调整滤波器数量与卷积层深度、换用 3×3 滤波器并可视化训练后的权重、加入更多池化层等,观察准确率的变化,验证「架构设计直接影响学习效率」这一课的核心结论。
课后测验
课程为每节配备课后测验(对应本仓库 quiz-app 中的题目资源),可用于检验对卷积层参数、池化类型、经典架构特点等知识点的掌握程度。
延伸学习:CNN 不止于图像
CNN 虽然最常用于计算机视觉,但它本质上擅长提取固定尺寸的模式,因此可以迁移到其他信号:
- 音频:在语音等一维信号中寻找特定模式时,滤波器退化为一维卷积,即1D-CNN;
- 视频:在视频等多维时空数据中提取特征(如捕捉随时间变化的特征模式)时,可使用3D-CNN。
可以沿着这两个方向自行调研更多 CNN 的应用形态,理解「卷积」作为一种通用模式提取原语,远比「图像专用工具」这一标签更加本质。
- 教程
- 人工智能
- 机器学习
- 深度学习
【免费下载链接】AI-For-Beginners
12 Weeks, 24 Lessons, AI for All!
相关推荐
AI-For-Beginners 经典 CNN 架构指南:VGG-16、ResNet、Inception 与 MobileNet 深度解读
AI For Beginners 经典 CNN 架构指南:VGG 16、ResNet、Inception 与 MobileNet 深度解读 导读 本文围绕 AI
教程人工智能机器学习深度学习AI-For-Beginners 经典 CNN 架构深度解析:从 VGG-16、ResNet 到 MobileNet
AI For Beginners 经典 CNN 架构深度解析:从 VGG 16、ResNet 到 MobileNet 导读:本文基于 AI For Beginn
教程人工智能机器学习深度学习主流 CNN 架构深度解析:从 VGG-16 到 MobileNet —— AI-For-Beginners 卷积神经网络架构实战指南
主流 CNN 架构深度解析:从 VGG 16 到 MobileNet —— AI For Beginners 卷积神经网络架构实战指南 本文以 AI For B
教程人工智能机器学习深度学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考