【计算机视觉(18)】语义理解-CNN架构概览_VGG_Inception_ResNet

2025博客之星年度评选已开启 10w+人浏览 1.4k人参与

CNN架构概览:VGG、Inception与ResNet

📌 适合对象:计算机视觉初学者、深度学习入门者
⏱️ 预计阅读时间:60-70分钟
🎯 学习目标:理解经典CNN架构(VGGNet、GoogLeNet、ResNet)的设计思想和特点,掌握如何设计有效的CNN架构


📚 学习路线图

CNN基础
卷积+池化+全连接
VGGNet
深度网络
GoogLeNet
Inception模块
ResNet
残差连接
现代CNN架构
设计原则

本文内容一览(快速理解)

  1. CNN架构基础(CNN Architecture Basics):卷积、下采样和全连接层的组合
  2. VGGNet(VGGNet):通过增加网络深度提升性能
  3. GoogLeNet(GoogLeNet / Inception):使用Inception模块和辅助分类器
  4. ResNet(Residual Network):通过残差连接解决深度网络的退化问题

一、CNN架构基础(CNN Architecture Basics):卷积、下采样和全连接

这一章要建立的基础:理解CNN的基本组成和设计原则

核心问题:CNN的基本架构是什么?如何设计有效的CNN?


[!NOTE]
📝 关键点总结:CNN主要由卷积层、下采样层(池化)和全连接层组成。卷积层和下采样层用于特征提取,全连接层用于分类。CNN的关键特性包括局部连接、权重共享、池化和多层结构。

1.1 CNN的基本组成(Basic Components of CNN):卷积、下采样、全连接

概念的本质

卷积神经网络(CNN)主要由三种类型的层组成:

  1. 卷积层(Convolution Layer):使用卷积操作提取局部特征
  2. 下采样层(Subsampling Layer / Pooling Layer):降低空间维度,减少参数
  3. 全连接层(Fully Connected Layer):将提取的特征映射到类别分数

图解说明

输入图像
卷积层
特征提取
下采样层
降维
更多卷积层
抽象特征
全连接层
分类
输出类别

💡 说明

  • 卷积层:提取局部特征(如边缘、纹理)
  • 下采样层:降低空间维度,减少计算量
  • 全连接层:进行最终分类
  • 多层结构:通过多层堆叠学习更抽象的特征

类比理解

想象你在分析一幅画。CNN就像:

  • 卷积层:用放大镜看局部细节(边缘、纹理)
  • 下采样层:缩小视野,只看主要特征
  • 更多卷积层:用更大的放大镜看更抽象的特征(形状、物体)
  • 全连接层:综合考虑所有特征,做出最终判断

实际例子

CNN的基本组成:

典型架构:
输入图像(32×32×3)
  ↓
卷积层1(28×28×6)
  ↓
池化层1(14×14×6)
  ↓
卷积层2(10×10×16)
  ↓
池化层2(5×5×16)
  ↓
展平(400)
  ↓
全连接层1(120)
  ↓
全连接层2(84)
  ↓
输出层(10类)

各层作用:
- 卷积层:提取特征
- 池化层:降维
- 全连接层:分类

 


1.2 CNN的关键特性(Key Properties of CNN):局部连接、权重共享、池化

概念的本质

CNN的关键特性包括:

  1. 局部连接(Local Connections):每个神经元只连接输入的一小部分区域
  2. 权重共享(Shared Weights):同一个滤波器在所有位置共享参数
  3. 池化(Pooling):降低空间维度,提供平移不变性
  4. 多层结构(Many Layers):通过多层堆叠学习层次化特征

图解说明

CNN特性
局部连接
只连接局部区域
权重共享
参数共享
池化
降维和不变性
多层结构
层次化特征

💡 说明

  • 局部连接:减少参数数量,利用空间局部性
  • 权重共享:进一步减少参数,提高参数效率
  • 池化:降低维度,提供平移不变性
  • 多层结构:学习从低级到高级的特征

类比理解

想象你在用模板匹配。CNN的特性就像:

  • 局部连接:模板只匹配局部区域(不是整个图像)
  • 权重共享:同一个模板在所有位置使用(不是每个位置一个模板)
  • 池化:只看主要特征,忽略细节
  • 多层结构:先用小模板找细节,再用大模板找整体

实际例子

CNN特性的例子:

局部连接:
- 全连接层:每个神经元连接所有输入(3072个连接)
- 卷积层:每个神经元只连接局部区域(如5×5×3=75个连接)
- 优势:参数数量大幅减少

权重共享:
- 全连接层:每个位置有独立的权重
- 卷积层:所有位置共享同一组权重
- 优势:参数数量进一步减少

池化:
- 输入:28×28×6
- 最大池化(2×2):14×14×6
- 优势:降低维度,提供平移不变性

多层结构:
- 第1层:检测边缘
- 第2层:检测纹理
- 第3层:检测形状
- 第4层:检测物体

 


二、VGGNet(VGGNet):深度网络的重要性

这一章要建立的基础:理解VGGNet的设计思想和如何通过增加深度提升性能

核心问题:为什么需要更深的网络?VGGNet如何设计?


[!NOTE]
📝 关键点总结:VGGNet通过使用小的卷积核(3×3)和增加网络深度来提升性能。VGGNet展示了深度的重要性,但同时也暴露了深度网络训练困难的问题。

2.1 VGGNet的设计思想(VGGNet Design Philosophy):小卷积核和深度网络

概念的本质

VGGNet(Very Deep Convolutional Networks)的核心思想是使用小的卷积核(3×3)和增加网络深度。多个3×3卷积核可以模拟更大的卷积核(如两个3×3卷积核相当于一个5×5卷积核),但参数更少,非线性更多。

图解说明

VGGNet设计
小卷积核
3×3
增加深度
16-19层
优势
参数少/非线性多

💡 说明

  • 小卷积核:3×3卷积核代替5×5或7×7
  • 增加深度:通过堆叠更多层增加网络深度
  • 优势:参数更少,非线性更多,表达能力更强

类比理解

想象你在建房子。VGGNet就像:

  • 大砖块(5×5):一次建一大块,但灵活性差
  • 小砖块(3×3):用多个小砖块组合,更灵活,可以建更复杂的结构
  • 深度:建更多层,可以建更高的房子(更深的网络)

实际例子

VGGNet的设计:

对比:
- 一个5×5卷积核:参数 = 5×5×C = 25C
- 两个3×3卷积核:参数 = 2×(3×3×C) = 18C
- 优势:参数更少,但非线性更多(两个ReLU)

VGGNet架构(简化):
- 多个3×3卷积层
- 2×2最大池化层
- 全连接层
- 深度:16层或19层

效果:
- 在ImageNet上取得很好性能
- 展示了深度的重要性
- 但训练困难(梯度消失)

 


三、GoogLeNet(GoogLeNet / Inception):Inception模块和辅助分类器

这一章要建立的基础:理解GoogLeNet的Inception架构和如何解决深度网络的问题

核心问题:GoogLeNet如何解决深度网络的问题?Inception模块如何工作?


[!NOTE]
📝 关键点总结:GoogLeNet使用Inception模块,在单层上使用不同尺度的卷积核来提取多尺度特征,并使用1×1卷积降维。GoogLeNet还使用辅助分类器来加速训练和缓解梯度消失问题。

3.1 GoogLeNet面临的问题(Problems Faced by GoogLeNet):过拟合、计算量、梯度消失

概念的本质

GoogLeNet在2014年ILSVRC挑战赛中取得冠军,但在设计时面临三个主要问题:

  1. 过拟合(Overfitting):网络规模大,参数多,容易过拟合
  2. 计算量(Computational Cost):卷积层增加带来计算量几何级数上升
  3. 梯度消失(Gradient Vanishing):网络深,梯度难以传播

图解说明

GoogLeNet问题
过拟合
参数多
计算量大
卷积层多
梯度消失
网络深

💡 说明

  • 过拟合:参数多,容易记住训练数据
  • 计算量大:特别是卷积层,计算量随深度指数增长
  • 梯度消失:深层网络梯度难以传播到前面层

实际例子

GoogLeNet面临的问题:

问题1:过拟合
- 网络规模大:22层(考虑池化层是27层)
- 参数多:容易过拟合
- 需要正则化

问题2:计算量大
- 卷积层增加:计算量几何级数上升
- 需要优化计算

问题3:梯度消失
- 网络深:22层
- 梯度难以传播到前面层
- 需要辅助机制

 


3.2 Inception架构(Inception Architecture):多尺度特征提取

概念的本质

Inception架构的核心思想是:

  1. 多尺度卷积核:在单层上使用1×1、3×3、5×5卷积核,提取不同尺度的特征
  2. 特征融合:将不同尺度的特征拼接(concatenate)在一起
  3. 1×1卷积降维:使用1×1卷积核降维,减少计算量

图解说明

输入特征
1×1卷积
局部特征
3×3卷积
中等特征
5×5卷积
大范围特征
最大池化
下采样
拼接
多尺度特征

💡 说明

  • 多尺度:不同大小的卷积核提取不同尺度的特征
  • 特征融合:拼接不同尺度的特征
  • 降维:使用1×1卷积减少计算量

类比理解

想象你在看一幅画。Inception架构就像:

  • 1×1卷积:看细节(局部特征)
  • 3×3卷积:看中等范围(中等特征)
  • 5×5卷积:看大范围(大范围特征)
  • 拼接:综合考虑所有尺度的信息

实际例子

Inception模块的例子:

输入:28×28×256

分支1:1×1卷积
- 1×1×256卷积核,64个
- 输出:28×28×64

分支2:3×3卷积
- 先1×1降维到128,再3×3卷积,128个
- 输出:28×28×128

分支3:5×5卷积
- 先1×1降维到32,再5×5卷积,32个
- 输出:28×28×32

分支4:最大池化
- 3×3最大池化,然后1×1卷积,32个
- 输出:28×28×32

拼接:
- 输出:28×28×(64+128+32+32) = 28×28×256

优势:
- 多尺度特征提取
- 1×1卷积降维,减少计算量
- 特征融合,表达能力更强

 


3.3 辅助分类器(Auxiliary Classifiers):加速训练和缓解梯度消失

概念的本质

GoogLeNet使用辅助分类器(Auxiliary Classifiers)来:

  1. 加速训练:在中间层添加分类器,提供额外的监督信号
  2. 缓解梯度消失:辅助分类器的梯度可以直接传播到前面层
  3. 正则化:辅助分类器起到正则化作用

图解说明

主网络
辅助分类器1
中间层
辅助分类器2
中间层
主分类器
输出层
损失1
损失2
损失3
总损失
L1+L2+L3

💡 说明

  • 辅助分类器:在中间层添加分类器
  • 额外监督:提供额外的监督信号
  • 梯度传播:帮助梯度传播到前面层

类比理解

想象你在学习。辅助分类器就像:

  • 主目标:最终考试(主分类器)
  • 辅助目标:期中考试(辅助分类器)
  • 作用:提供中间反馈,帮助学习

实际例子

辅助分类器的例子:

GoogLeNet架构:
- 主网络:22层
- 辅助分类器1:在第9层
- 辅助分类器2:在第17层
- 主分类器:在第22层

损失函数:
总损失 = 主损失 + 0.3×辅助损失1 + 0.3×辅助损失2

效果:
- 加速训练:中间层有监督信号
- 缓解梯度消失:梯度可以直接传播
- 正则化:防止过拟合

注意:
- 训练时使用辅助分类器
- 测试时只使用主分类器

 


3.4 GoogLeNet的版本演进(GoogLeNet Evolution):v1到v4

概念的本质

GoogLeNet有多个版本,每个版本都有改进:

  • v1:原始版本,Top-5错误率6.67%
  • v2:加入Batch Normalization,Top-5错误率4.8%
  • v3:重新思考Inception架构,Top-5错误率3.5%
  • v4:结合ResNet的残差连接,Top-5错误率3.08%

实际例子

GoogLeNet版本演进:

v1 (2014):
- 原始Inception架构
- Top-5错误率:6.67%
- 22层网络

v2 (2015):
- 加入Batch Normalization
- Top-5错误率:4.8%
- 改善训练稳定性

v3 (2015):
- 重新思考Inception架构
- Top-5错误率:3.5%
- 优化网络设计

v4 (2016):
- 结合ResNet的残差连接
- Top-5错误率:3.08%
- Inception-ResNet架构

 


四、ResNet(Residual Network):残差连接解决退化问题

这一章要建立的基础:理解ResNet的残差连接和如何解决深度网络的退化问题

核心问题:什么是退化问题?残差连接如何解决?


[!NOTE]
📝 关键点总结:ResNet通过残差连接(Residual Connection)解决了深度网络的退化问题。残差连接允许梯度直接传播,使训练更深的网络成为可能。ResNet可以训练非常深的网络(如152层),在ImageNet上取得突破性成果。

4.1 退化问题(Degradation Problem):深度网络的困境

概念的本质

退化问题(Degradation Problem)是指:随着网络深度增加,训练误差和测试误差都会增加,而不是减少。这不是过拟合问题(因为训练误差也在增加),而是网络难以优化的问题。即使浅层网络已经可以很好地工作,更深的网络反而表现更差。

图解说明

浅层网络
18层
训练误差低
深层网络
34层
训练误差高
退化问题

💡 说明

  • 退化问题:深度增加,性能反而下降
  • 不是过拟合:训练误差也在增加
  • 优化困难:深层网络难以优化

类比理解

想象你在学习。退化问题就像:

  • 浅层网络:学10个知识点,掌握得很好
  • 深层网络:学20个知识点,反而掌握得更差
  • 问题:不是知识点太多(过拟合),而是学习方式有问题(优化困难)

实际例子

退化问题的例子:

实验观察:
- 18层网络:训练误差低,测试误差低
- 34层网络:训练误差高,测试误差高

问题分析:
- 不是过拟合:训练误差也在增加
- 是优化问题:深层网络难以优化
- 梯度消失:梯度难以传播到前面层

解决方案:
- 残差连接:允许梯度直接传播
- 恒等映射:如果不需要学习,可以跳过

 


4.2 残差连接(Residual Connection):恒等映射和梯度传播

概念的本质

残差连接(Residual Connection)的核心思想是:不是让网络学习从输入 x x x到输出 H ( x ) H(x) H(x)的映射,而是让网络学习残差 F ( x ) = H ( x ) − x F(x) = H(x) - x F(x)=H(x)x,然后输出 x + F ( x ) x + F(x) x+F(x)。这样,如果不需要学习( F ( x ) = 0 F(x) = 0 F(x)=0),网络可以简单地输出 x x x(恒等映射),梯度也可以直接传播。

图解说明

输入x
残差块
F(x)
跳跃连接
恒等映射
相加
x + F(x)
输出
H(x) = x + F(x)

💡 说明

  • 残差学习:学习 F ( x ) = H ( x ) − x F(x) = H(x) - x F(x)=H(x)x而不是 H ( x ) H(x) H(x)
  • 恒等映射:如果 F ( x ) = 0 F(x) = 0 F(x)=0,输出就是 x x x
  • 梯度传播:梯度可以直接通过跳跃连接传播

类比理解

想象你在调整音量。残差连接就像:

  • 直接调整:从当前音量直接调到目标音量(困难)
  • 残差调整:只调整变化量(容易)
  • 如果不需要调整:变化量为0,保持原样

实际例子

残差连接的例子:

传统网络:
- 输入:x
- 输出:H(x)
- 学习:H(x) = f(x)

残差网络:
- 输入:x
- 残差:F(x) = H(x) - x
- 输出:H(x) = x + F(x)
- 学习:F(x) = f(x) - x

优势:
- 如果F(x) = 0,输出就是x(恒等映射)
- 梯度可以直接通过跳跃连接传播
- 更容易优化

残差块结构:
输入x
  ↓
卷积层1 → ReLU → 卷积层2
  ↓                    ↓
  └────── 相加 ──────┘
  ↓
输出 x + F(x)

 


4.3 ResNet架构(ResNet Architecture):深度网络的突破

概念的本质

ResNet通过残差连接可以训练非常深的网络(如50层、101层、152层)。ResNet使用瓶颈结构(Bottleneck)来减少计算量:1×1卷积降维 → 3×3卷积 → 1×1卷积升维。ResNet在ImageNet上取得突破性成果,Top-5错误率降至3.57%。

图解说明

ResNet架构
残差块
x + F(x)
瓶颈结构
1×1-3×3-1×1
深度网络
50/101/152层

💡 说明

  • 残差块:基本的残差单元
  • 瓶颈结构:减少计算量的设计
  • 深度网络:可以训练非常深的网络

实际例子

ResNet架构的例子:

ResNet-50:
- 50层网络
- 使用瓶颈结构
- Top-5错误率:3.57%

瓶颈结构:
输入:256通道
  ↓
1×1卷积:降维到64通道
  ↓
3×3卷积:64通道
  ↓
1×1卷积:升维到256通道
  ↓
输出:256通道

优势:
- 减少计算量(3×3卷积在低维进行)
- 保持表达能力
- 可以训练更深的网络

ResNet变体:
- ResNet-18:18层
- ResNet-34:34层
- ResNet-50:50层
- ResNet-101:101层
- ResNet-152:152层

 


📝 本章总结

核心要点回顾

  1. CNN架构基础

    • 卷积层、下采样层、全连接层的组合
    • 局部连接、权重共享、池化、多层结构
  2. VGGNet

    • 使用小卷积核(3×3)和增加深度
    • 展示了深度的重要性
    • 但训练困难
  3. GoogLeNet

    • Inception模块:多尺度特征提取
    • 1×1卷积降维:减少计算量
    • 辅助分类器:加速训练和缓解梯度消失
  4. ResNet

    • 残差连接:解决退化问题
    • 恒等映射:允许梯度直接传播
    • 可以训练非常深的网络

知识地图

CNN架构
VGGNet
深度网络
GoogLeNet
Inception模块
ResNet
残差连接
问题
训练困难
解决
多尺度/降维
解决
残差学习

关键决策点

  • 网络深度:更深的网络通常性能更好,但需要解决训练问题
  • 特征提取:多尺度特征提取可以提高表达能力
  • 计算效率:使用1×1卷积降维可以减少计算量
  • 梯度传播:残差连接可以改善梯度传播,使训练更深网络成为可能

📚 延伸阅读

推荐资源

  1. VGGNet

    • Simonyan and Zisserman, “Very Deep Convolutional Networks for Large-Scale Image Recognition”, 2014
  2. GoogLeNet

    • Szegedy et al., “Going Deeper with Convolutions”, 2014
    • Ioffe and Szegedy, “Batch Normalization: Accelerating Deep Network Training”, 2015
    • Szegedy et al., “Rethinking the Inception Architecture”, 2015
  3. ResNet

    • He et al., “Deep Residual Learning for Image Recognition”, 2015
  4. 实践项目

    • 实现简单的VGGNet
    • 实现Inception模块
    • 实现ResNet残差块
    • 比较不同架构的性能
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值