← 返回题目列表

什么是感受野(Receptive Field)?怎么扩大感受野?

高频 中等 第 8 / 25 题 更新于 2026/08/02
卷积神经网络感受野卷积空洞卷积

简化版

感受野(Receptive Field) 指某一层特征图上的一个神经元,对应回原始输入图像上的区域大小——也就是「这个神经元的输出,是看了原图多大一块区域算出来的」。浅层神经元感受野小(只看到原图一小块,抓局部细节如边缘),深层神经元感受野大(能看到原图一大片,抓全局语义如物体整体)。感受野随着网络加深、卷积和池化的堆叠而逐层扩大。扩大感受野的方法:加深网络、增大卷积核、加池化/步长下采样、用空洞卷积(dilated conv 不增参数就扩大感受野)。感受野要足够大才能「看全」目标物体,是设计 CNN 的关键考量。

详细版

感受野定义: 特征图上一个神经元能「看到」的原始输入区域大小。

浅层:感受野小(如 3×3)→ 看到原图一小块 → 抓局部特征(边缘)
深层:感受野大(如覆盖大半张图)→ 看到大片区域 → 抓全局特征(物体)

感受野怎么逐层扩大(简化递推):

每经过一个卷积/池化层,感受野扩大:
RF_l = RF_{l-1} + (kernel_size - 1) × 累积步长
- 更深的层、更大的核、更大的步长/池化 → 感受野更大

扩大感受野的方法:

方法效果代价
加深网络(堆卷积)逐层累积扩大计算/参数增加
增大卷积核单层扩大参数按核面积增加
池化 / 步长卷积下采样快速扩大损失分辨率
空洞卷积(dilated)不增参数扩大可能网格效应

完整版教学

一、感受野是什么——神经元「看多大」

在 CNN 里,深层特征图上的一个神经元,它的值是由前一层的一个局部区域算出来的,而前一层那块区域又是由更前一层更大的区域算出来的……层层往回追溯到原始输入图像,这个神经元最终对应的原图区域,就是它的感受野

通俗说,感受野回答:「这个神经元的输出,是综合了原图上多大一块区域的信息?

  • 感受野:神经元只「看到」原图一小块,能感知的是局部细节
  • 感受野:神经元能「看到」原图一大片,能感知的是全局、大范围的模式

某层一个特征点的理论感受野,是结构上可能影响该点的输入区域。它取决于此前所有层的核、stride 和 dilation,而不只是当前卷积核大小。理论覆盖范围不等于每个像素贡献相同,训练后的有效感受野通常更集中在中心区域。

二、为什么感受野随深度增大——层次特征的基础

CNN 的感受野随网络加深而逐层扩大,这是层次特征学习的基础:

输入图 → 第1层卷积(3×3):每个神经元看原图 3×3 区域(感受野小)
       → 第2层卷积(3×3):每个神经元看第1层的 3×3,
                          相当于看原图 5×5 区域(感受野变大)
       → 越深的层,累积看到的原图区域越大
       → 加上池化下采样,感受野扩大更快
  • 浅层神经元感受野小 → 只能看到局部,学到的是低级局部特征(边缘、颜色、纹理)。
  • 深层神经元感受野大 → 能看到原图大片甚至整张 → 学到的是高级全局特征(物体部件、整体物体)。

这解释了为什么 CNN 浅层学边缘、深层学物体——感受野的大小决定了这一层「能看多大范围」,从而决定它能学多抽象的特征。

三、感受野的大致计算

感受野随层数、卷积核大小、步长而变化。简化的递推思想:

每经过一层,感受野在前一层基础上扩大:
   新感受野 = 旧感受野 + (kernel_size - 1) × 之前所有层的累积步长
  • 网络越深(层越多):感受野累积越大。
  • 卷积核越大:单层扩大得越多。
  • 步长/池化越大:因为下采样,感受野扩大得更快(累积步长增大)。

关键结论:感受野通常要覆盖任务所需的目标与上下文,但并非越大越好。如果目标物体很大、而感受野太小,深层神经元「看不全」整个物体,就难以做出正确判断。所以设计 CNN 时通常让最终感受野与目标尺度和所需上下文匹配

四、扩大感受野的方法

1. 加深网络(堆叠卷积)。 每多一层卷积,感受野就累积扩大一点。用多个小卷积核堆叠(如两个 3×3 ≈ 一个 5×5 的感受野)既能扩大感受野,又比大核参数更少、非线性更多——这是 VGG 用堆叠 3×3 小核的思想。

2. 增大卷积核。 直接用更大的核(如 5×5、7×7)单层就能有更大感受野,但参数量按核面积增加(5×5 是 3×3 的近 3 倍参数),现代架构更倾向用小核堆叠。

3. 池化 / 步长卷积(下采样)。 池化和步长卷积缩小特征图,能快速扩大感受野(因为下采样后每个神经元对应原图更大范围),但代价是损失空间分辨率(细节丢失),对分割等需要精细定位的任务不利。

4. 空洞卷积(Dilated / Atrous Convolution)。 在卷积核的元素之间插入间隔(空洞),让核在不增加参数、不下采样的情况下覆盖更大范围

普通 3×3 核:连续覆盖 3×3
空洞率 2 的 3×3 核:跳着覆盖 5×5 的范围(但仍只有 9 个参数)
  • 好处:不增加参数、不损失分辨率就扩大感受野,非常适合语义分割(需要大感受野又要保持分辨率)。
  • 代价:可能有「网格效应」(覆盖不连续,漏掉一些像素信息)。

五、感受野在实践中的意义

  • 目标检测/分割:要让感受野适配不同尺度的目标;多尺度特征融合(FPN)、空洞卷积都是为了平衡感受野和分辨率。
  • 小核堆叠 vs 大核:现代设计偏爱多个小核堆叠(VGG、ResNet),感受野够大、参数少、非线性强。
  • 有效感受野:研究发现实际起作用的「有效感受野」比理论感受野小,且中心权重更大(近似高斯分布)——理论感受野是上界。

六、用 jump 递推三层感受野

感受野递推必须同时记录相邻特征点在输入上的间隔 jump。初始化 r₀=1,j₀=1;每层先算有效核 k_eff=d(k-1)+1,再用 r_l=r_{l-1}+(k_eff-1)j_{l-1}j_l=j_{l-1}s_l。三层均为 3×3,stride 依次 1、2、1 时,感受野依次为 3、5、9,jump 依次为 1、2、2。

ksrj
输入--11
Conv13131
Conv23252
Conv33192

理论感受野描述结构上可能依赖的区域,有效感受野描述梯度或贡献实际集中的区域,后者通常更小且呈中心集中。两层 3×3 比一层 5×5 省参数的结论还假设中间通道宽度相同。

只累加核大小会在出现 stride、dilation 时算错;必须同步维护 jump。

七、常见误区与追问

  • 误区:三个 3×3 卷积的感受野就是 9×9。 stride 全为 1 时依次是 3、5、7,不是简单相加。
  • 误区:理论感受野内所有像素贡献相同。 有效贡献往往集中在中心,训练后还受权重与非线性影响。
  • 追问:stride 为什么会加速后续感受野增长? 它增大 jump,后续一个核步长覆盖到输入上的间隔更大。
  • 追问:dilation 如何进入递推? 先把核替换为 d(k-1)+1 的有效尺寸,再套同一公式。
  • 追问:感受野越大越好吗? 过大可能增加无关上下文和计算,关键是匹配任务尺度。

八、加强记忆

感受野 = 特征图上一个神经元对应回原始输入图像的区域大小(它「看了原图多大一块」)。浅层感受野小→看局部→学低级特征(边缘);深层感受野大→看全局→学高级特征(物体),感受野随卷积/池化逐层累积扩大——这是层次特征学习的基础,并让感受野与识别所需的目标和上下文尺度匹配。扩大方法:加深网络(小核堆叠,如两个 3×3≈一个 5×5 但参数更少)、增大卷积核(参数按面积增)、池化/步长下采样(快但损失分辨率)、空洞卷积(不增参数不降分辨率就扩大,适合分割,但有网格效应)。注意实际「有效感受野」比理论值小。