Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Receptive Field

感受野是神经网络中能够影响某个单元的输入图像区域。了解感受野如何随网络深度、步幅和膨胀率增大,以及相关代码。

卷积神经网络(CNN)中某个单元的感受野,是指能够影响该单元数值的输入图像区域。网络第一层 3 × 3 卷积层中的单元能看到 3 × 3 像素的区域;而更深层中的单元会看到逐渐扩大的区域,因为每一层都会组合前一层相邻单元的输出。感受野决定了特征可利用多少上下文:能够识别整辆公交车的单元必须看到整辆公交车。这个术语源自神经科学,指能够驱动单个神经元的视觉区域。

感受野如何扩大#

每一层都会使感受野增加 (k − 1) × j 个像素,其中 k 是卷积核大小,j 是步幅间距,表示该层输入中相邻单元在输入图像中的距离,等于此前所有步幅的乘积。这会带来三个结果:

  • 堆叠小卷积核:三个步幅为 1 的 3 × 3 层可以覆盖 7 × 7 区域,效果等同于一个 7 × 7 层。对于 C 个通道,前者有 27C² 个权重,而后者有 49C² 个权重;VGG 网络正是以此为依据,采用了由 3 × 3 卷积构成的深层堆叠结构。
  • 步幅与池化:每经过一个步幅为 2 的层或池化步骤,步幅间距就会翻倍,因此后续层扩大感受野的速度也会加快一倍。CNN 正是通过这种方式在缩小特征图的同时,将感受野扩大到数百个像素。
  • 空洞卷积:采用膨胀率 d 的 3 × 3 空洞卷积,其卷积核采样点之间相隔 d 个像素,覆盖范围为 2d + 1 个像素;它无需下采样就能扩大感受野,因此适合语义分割等逐像素密集任务。

直接测量感受野可以验证这些规律:从一个输出值开始反向传播,观察哪些输入像素获得了非零梯度。

import torch
from torch import nn

# Three stacked 3x3 convolutions in three configurations: (stride, dilation)
for name, stride, dilation in (("plain", 1, 1), ("strided", 2, 1), ("dilated", 1, 2)):
    convs = [nn.Conv2d(1, 1, 3, stride, padding=dilation, dilation=dilation, bias=False) for _ in range(3)]
    for conv in convs:
        nn.init.ones_(conv.weight)  # positive weights, so no input pixel's gradient cancels out
    layers = nn.Sequential(*convs)

    # Backpropagate from the central output value; input pixels with nonzero gradient form its receptive field
    image = torch.zeros(1, 1, 64, 64, requires_grad=True)
    output = layers(image)
    output[0, 0, output.shape[2] // 2, output.shape[3] // 2].backward()
    rows = image.grad[0, 0].sum(dim=1).nonzero()
    size = rows.max().item() - rows.min().item() + 1
    print(f"{name}: {size}x{size} pixels")

代码会输出:普通堆叠的感受野为 7 × 7;步幅堆叠的感受野为 15 × 15,其步幅间距从 1 增至 2、再增至 4;空洞堆叠的感受野为 13 × 13,其中每一层都会增加 4 个像素。

理论感受野与有效感受野#

公式给出的是理论感受野,也就是所有可能影响某个单元的像素。有效感受野则衡量每个像素实际产生的影响:这种影响大致呈高斯分布,集中在中心,且只覆盖理论面积的一部分。更大的卷积核会扩大有效感受野;RepLKNet使用了最大为 31 × 31 的深度卷积核,并报告其有效感受野远大于小卷积核 CNN。在视觉 Transformer中,自注意力让每个图像块从第一层开始就能利用其他所有图像块的信息,因此无论网络深度如何,理论感受野都覆盖整张图像。

  • 卷积核大小:单次卷积从自身输入中读取的窗口大小,例如 3 × 3。感受野是该区域在原始图像中的累积范围;三个堆叠的 3 × 3 卷积核就能产生 7 × 7 的感受野。
  • 特征图:某一层的输出网格。感受野描述该网格中单个位置对应的输入区域。
  • 上下文窗口:语言模型一次读取的 token 数量,相当于图像网格上的感受野在序列中的对应概念。

目标检测中的感受野#

检测器会通过精细特征图预测小目标,通过具有较大感受野的粗粒度深层特征图预测大目标;而特征金字塔网络(FPN)会将深层上下文融合回精细特征图。感受野如果小于目标,就只能看到目标的一部分;微小目标仍需要精细层级,因为在步幅为 32 的特征图上,20 像素的目标连一个网格单元都占不满。YOLO26会根据步幅为 8、16 和 32 的特征图进行预测,并在主干网络末端应用一个 SPPF 模块:该模块使用等效于 5 × 5、9 × 9 和 13 × 13 网格单元的窗口对步幅为 32 的特征图进行最大池化,随后再通过一个覆盖整张步幅为 32 的特征图的自注意力模块。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来