深圳Yolo 视觉
深圳
立即加入
词汇表

残差网络 (ResNet)

探索残差网络 (ResNet) 的强大功能。了解跳跃连接如何解决梯度消失问题,从而实现计算机视觉的深度学习。

残差网络(Residual Networks),广为人知的ResNets,是一种特定类型的人工神经网络(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 的模型经常用于 detect 医疗影像中的肿瘤 detect 等疾病,其中网络深度有助于辨别 MRI 或 CT 数据中的细粒度模式。
  • 自动驾驶汽车: 自动驾驶汽车需要从摄像头画面中可靠地提取特征,以识别行人、标志和障碍物。ResNets通常作为骨干网络,用于汽车AI应用中的object detection系统,提供安全导航所需的丰富视觉特征。

ResNet 与其他架构的比较

区分ResNet与其他流行架构有助于理解其具体用途。

  • ResNet 与 VGG 对比:VGG(视觉几何组)网络也是深度 CNN,但缺乏残差连接。因此,它们在与 ResNet 相当的深度下训练难度更大,并且由于其大型全连接层,通常计算成本更高。
  • ResNet 与 Inception 对比:Inception 网络侧重于宽度,在同一层中使用多种尺寸的滤波器来捕获不同尺度的特征。ResNet 侧重于深度。Inception-ResNet 等现代架构结合了这两种概念。
  • ResNet 与 Vision Transformer (ViT) 对比:虽然 ViT 使用自注意力机制全局处理图像,但 ResNet 依赖局部卷积。然而,ResNet 仍然是一个强大的基线模型,并且对于较小的数据集或实时 推理 通常更快。

实施实例

PyTorch等现代深度学习库使得访问预训练的ResNet模型变得简单。这些模型对于迁移学习非常宝贵,即在一个大型数据集(如ImageNet)上训练的模型被微调以适应特定任务。

以下Python代码片段演示了如何使用加载预训练的ResNet-50模型。 torchvision (PyTorch生态系统的一部分) 并执行一个简单的正向传播。而用户 Ultralytics 平台 可能会经常使用 YOLO26 对于 detect,理解 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为驱动当今人工智能的深度复杂模型铺平了道路。

让我们一起共建AI的未来!

开启您的机器学习未来之旅