ResNet 模型完整总结
一、论文基本信息
论文名称
Deep Residual Learning for Image Recognition(深度残差学习用于图像识别)作者
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun
(何恺明,微软亚洲研究院)发表会议
CVPR 2016(IEEE Conference on Computer Vision and Pattern Recognition,计算机视觉顶会)核心贡献
提出残差网络(ResNet),首次让上百层、上千层的深度神经网络可以稳定训练,大幅提升图像分类精度。
二、ResNet 要解决的问题
传统深度网络的矛盾
- 理论上:网络越深,特征表达能力越强,分类效果应该越好。
- 实际上:当网络层数加深到一定程度(如 34 层),训练误差不降反升,测试精度也下降。
问题名称
网络退化问题(Degradation Problem)关键特点
- 不是过拟合(过拟合是训练误差低、测试误差高)。
- 是连训练集都学不好,深层网络难以优化。
- 本质原因:反向传播时梯度消失/梯度不稳定,网络很难学到“恒等映射”(输入=输出)。
现象举例
- 20 层网络:训练误差低,精度高。
- 34 层普通网络:训练误差比 20 层还高,精度更差。
- 34 层 ResNet:训练误差继续下降,精度显著更高。
三、核心解决方法:残差结构
1. 核心思想
让网络不再直接学习原始映射 H(x),而是学习残差映射 F(x) = H(x) − x。
最终输出:$\text{输出} = F(x) + x $
- (x):输入,通过**直连通道(shortcut/skip connection)**直接传到后面。
- (F(x)):经过卷积层学习到的残差信息。
2. 普通残差块(ResNet18 / ResNet34 使用)
1 | 输入 x |
3. 瓶颈残差块(ResNet50 / 101 / 152 使用)
为减少参数量和计算量,使用 1×1 卷积压缩再恢复通道:
1 | 输入 |
4. 尺寸/通道不一致时的处理
当需要下采样(尺寸变小)或通道翻倍时,直连通道 (x) 无法直接相加:
- 给直连通道增加一个 1×1卷积层,步长(stride)=2
- 让 (x) 的尺寸、通道与 (F(x)) 对齐,再进行相加。
四、ResNet 整体网络结构
1. 标准输入
- 224 × 224 × 3 的 RGB 彩色图像
- 训练前会做归一化、随机裁剪、水平翻转等预处理
2. 整体流程(统一清晰版)
首层卷积 + 池化
- 7×7 卷积(Conv)+ 批归一化(BN)+ ReLU
- 3×3 最大池化(Max Pool),步长 2
- 输出:56 × 56 × 64 特征图
4 组残差块堆叠
每组在开头进行一次下采样(尺寸减半)+ 通道翻倍:- 第 1 组(Conv2_x):尺寸 56×56,通道 64
- 第 2 组(Conv3_x):尺寸 28×28,通道 128
- 第 3 组(Conv4_x):尺寸 14×14,通道 256
- 第 4 组(Conv5_x):尺寸 7×7,通道 512(ResNet18/34)或 2048(ResNet50+)
全局平均池化(Global Average Pooling)
- 将 7×7×C 的特征图压缩为 1×1×C
- 得到长度为 C 的图像特征向量(去掉最后一层就是它)
全连接层 + Softmax
- 特征向量 → 全连接层 → 类别概率输出
- 如 ImageNet 1000 分类,输出维度为 1000
五、常用 ResNet 模型配置
| 模型 | 总层数 | 残差块类型 | 最终通道数 | 特征向量维度 |
|---|---|---|---|---|
| ResNet18 | 18 | 普通残差块 | 512 | 512 |
| ResNet34 | 34 | 普通残差块 | 512 | 512 |
| ResNet50 | 50 | 瓶颈块 | 2048 | 2048 |
| ResNet101 | 101 | 瓶颈块 | 2048 | 2048 |
| ResNet152 | 152 | 瓶颈块 | 2048 | 2048 |
六、重要特点与用途
解决梯度消失
直连通道让梯度可以直接回传,大幅缓解深层网络梯度消失问题。极易训练
深层网络也能快速收敛,训练稳定,不会出现退化。通用特征提取器
- 去掉最后一层全连接层,可得到图像嵌入向量(embedding)
- 用于:图像检索、相似图片匹配、迁移学习、聚类、检测/分割主干网络
广泛应用
作为 backbone(主干网络)用于:- 图像分类
- 目标检测(Faster R-CNN、YOLO 等)
- 图像分割
- 人脸识别、特征对比等各类视觉任务