Residual Networks (ResNet)
探索残差网络 (ResNet) 的力量。了解跳跃连接如何解决梯度消失问题,从而实现计算机视觉的深度学习。
残差网络(ResNets)是一种特定类型的人工神经网络 (ANN)架构,旨在实现极深网络的训练。ResNet 由微软研究人员于 2015 年提出,解决了深度学习中一个被称为梯度消失问题的关键瓶颈。在传统网络中,堆叠更多层往往会导致性能饱和或退化,因为更新模型权重所需的信号在通过各层向后传播时会逐渐减弱。ResNet 引入了“跳跃连接”(或残差连接),允许数据绕过一个或多个层并直接流向后续处理阶段。这一创新证明了更深的网络可以得到有效训练,从而在计算机视觉 (CV)领域取得了重大突破,并成为现代架构的基础概念。
核心概念:残差学习#
ResNet 的决定性特征是“残差块”。在标准的卷积神经网络 (CNN)中,每一层都试图学习从输入到输出的直接映射。随着网络变得越来越深,学习这种直接映射变得越来越困难。
ResNet 通过以不同方式制定学习目标改变了这种方法。残差块不指望每一层堆栈学习整个底层映射,而是迫使各层学习输入与期望输出之间的“残差”(即差异)。然后,通过跳跃连接将原始输入加回到学习到的残差中。这种结构上的改变意味着,如果恒等映射(无修改地传递输入)是最优的,网络可以轻松学会将残差推向零。这使得深度学习 (DL)模型更容易优化,从而能够从几十层扩展到几百层甚至几千层。
关键架构变体#
自诞生以来,ResNet 的几种变体已成为 AI 社区的标准基准。
- ResNet-50: 一个 50 层的版本,采用了“瓶颈”设计。该设计使用 1x1 卷积来减少然后恢复维度,在保持高准确率的同时使网络具有计算效率。
- ResNet-101 和 ResNet-152: 更深的变体,分别有 101 层和 152 层。当计算资源允许更高的复杂度以捕获更复杂的特征图时,通常会使用这些变体。
- ResNeXt: ResNet 的一种演进版本,引入了“基数”(cardinality)维度,将残差块拆分为多个并行路径,从而提高了效率和性能。
实际应用#
ResNet 架构的鲁棒性使其成为处理广泛视觉任务的首选。
- 医学图像分析: 在医疗保健中,识别高分辨率扫描中的微妙异常至关重要。基于 ResNet 的模型经常用于检测诸如医学成像中的肿瘤检测等病症,其中网络的深度有助于辨别 MRI 或 CT 数据中的细粒度模式。
- 自动驾驶汽车: 自动驾驶汽车需要从相机馈送中进行可靠的特征提取,以识别行人、标志和障碍物。ResNet 通常用作AI 在汽车应用中目标检测系统的骨干网络,提供安全导航所需的丰富视觉特征。
ResNet 与其他架构的对比#
将 ResNet 与其他流行架构进行区分,有助于理解其具体用途。
- ResNet 对比 VGG: VGG(视觉几何组)网络也是深层 CNN,但缺乏残差连接。因此,在与 ResNet 相当的深度下,它们更难训练,并且由于其大型全连接层,通常计算成本更高。
- ResNet 对比 Inception: Inception 网络侧重于宽度,在同一层内使用多种尺寸的过滤器来捕获不同尺度的特征。ResNet 侧重于深度。像 Inception-ResNet 这样的现代架构结合了这两个概念。
- ResNet 对比 视觉 Transformer (ViT): 虽然 ViT 使用自注意力机制全局处理图像,但 ResNet 依赖于局部卷积。然而,ResNet 仍然是一个强大的基准,并且对于较小的数据集或实时推理通常更快。
实现示例#
像 PyTorch 这样的现代深度学习库使得访问预训练的 ResNet 模型变得非常简单。这些模型对于迁移学习非常宝贵,在迁移学习中,在像 ImageNet 这样的大型数据集上训练的模型会针对特定任务进行微调。
以下 Python 片段演示了如何使用 torchvision(PyTorch 生态系统的一部分)加载预训练的 ResNet-50 模型并执行简单的正向传播。虽然Ultralytics 平台的用户可能会经常使用 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)的 transformers 以及最新的目标检测模型。通过使信息能够在网络中更自由地流动,ResNet 为为当今人工智能提供动力的深度复杂模型铺平了道路。






