Residual Networks (ResNet)
探索残差网络(ResNet)的强大能力。了解跳跃连接如何解决梯度消失问题,从而支持计算机视觉深度学习。
残差网络(广为人知的 ResNet)是一种专门设计的人工神经网络(ANN)架构,旨在实现极深网络的训练。ResNet 由 Microsoft 的研究人员于 2015 年提出,解决了深度学习中的一个关键瓶颈,即梯度消失问题。在传统网络中,随着层数增加,性能往往会饱和或下降,因为用于更新模型权重的信号在逐层反向传播时会逐渐消失。ResNet 引入了“跳跃连接”(或称残差连接),允许数据绕过一个或多个层,直接流向后续处理阶段。这项创新证明了可以有效训练更深的网络,从而推动了计算机视觉(CV)领域的重大突破,并成为现代架构的基础概念。
核心概念:残差学习#
ResNet 的标志性特征是“残差块”。在标准的卷积神经网络(CNN)中,每一层都试图学习从输入到输出的直接映射。随着网络不断加深,学习这种直接映射会变得越来越困难。
ResNet 通过重新定义学习目标改变了这种方法。残差块不再要求每一层堆叠学习完整的底层映射,而是迫使各层学习输入与目标输出之间的“残差”或差异。然后,通过跳跃连接将原始输入重新加到所学习的残差上。这种结构变化意味着,如果恒等映射(保持输入不变)是最优选择,网络就能轻松学会将残差压缩为零。这使深度学习(DL)模型更易于优化,并能够从几十层扩展到数百层甚至数千层。
主要架构变体#
自诞生以来,ResNet 的多个变体已成为 AI 社区中的标准基准。
- ResNet-50: 一个包含 50 层的版本,采用“瓶颈”设计。该设计使用 1x1 卷积先降低维度,再恢复维度,使网络在保持高准确率的同时提高计算效率。
- ResNet-101 和 ResNet-152: 分别包含 101 层和 152 层的更深变体。当计算资源允许更高的复杂度以捕获更精细的特征图时,人们通常会使用这些模型。
- ResNeXt: ResNet 的一种演进版本,引入了“基数”维度,将残差块拆分为多个并行路径,从而提升效率和性能。
实际应用#
ResNet 架构的稳健性使其成为众多视觉任务的首选。
- 医学图像分析: 在医疗领域,识别高分辨率扫描中的细微异常至关重要。基于 ResNet 的模型经常用于检测诸如医学影像中的肿瘤检测等情况,网络的深度有助于从 MRI 或 CT 数据中辨别细粒度模式。
- 自动驾驶车辆: 自动驾驶汽车需要从摄像头画面中可靠地提取特征,以识别行人、标志和障碍物。在汽车领域的 AI应用中,ResNet 通常作为目标检测系统的骨干网络,提供安全导航所需的丰富视觉特征。
ResNet 与其他架构的对比#
要理解 ResNet 的具体用途,将其与其他流行架构区分开来会很有帮助。
- ResNet 与 VGG 的对比: VGG(视觉几何组)网络同样是深度 CNN,但缺少残差连接。因此,在与 ResNet 相当的深度下,VGG 更难训练;由于其全连接层规模较大,计算成本通常也更高。
- ResNet 与 Inception 的对比: Inception 网络注重宽度,在同一层中使用多种尺寸的滤波器,以捕获不同尺度的特征。ResNet 则注重深度。Inception-ResNet 等现代架构结合了这两个概念。
- ResNet 与 Vision Transformer(ViT) 的对比: ViT 使用自注意力机制对图像进行全局处理,而 ResNet 依赖局部卷积。不过,ResNet 仍然是强大的基线模型,在较小数据集或实时推理场景中通常速度更快。
实现示例#
现代深度学习库(如 PyTorch)让访问预训练 ResNet 模型变得非常简单。这些模型对于迁移学习非常有价值:在迁移学习中,模型先在诸如 ImageNet 这样的大型数据集上训练,再针对特定任务进行微调。
下面的 Python 代码片段演示了如何使用 torchvision(PyTorch 生态系统的一部分)加载预训练的 ResNet-50 模型,并执行一次简单的前向传递。虽然Ultralytics Platform的用户可能经常使用 YOLO26进行检测,但理解 ResNet 等底层骨干网络概念对于高级定制至关重要。
import torch
import torchvision.models as models
# Load a pre-trained ResNet-50 model
resnet50 = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
resnet50.eval() # Set model to evaluation mode
# Create a dummy input tensor (batch_size, channels, height, width)
input_tensor = torch.randn(1, 3, 224, 224)
# Perform a forward pass to get predictions
with torch.no_grad():
output = resnet50(input_tensor)
print(f"Output shape: {output.shape}") # Expect [1, 1000] for ImageNet classes对现代 AI 的意义#
尽管YOLO26等更新的架构采用了高度优化的结构,以实现最大速度和准确率,但残差学习的原则仍然无处不在。跳跃连接的概念如今已成为许多先进网络的标准组件,包括用于自然语言处理(NLP)的 Transformer,以及最新的目标检测模型。ResNet 让信息能够更自由地在网络中流动,为如今驱动人工智能的深度复杂模型铺平了道路。









