在美术馆里欣赏《清明上河图》,画面中上百个微小人物各有姿态,你想看清最角落里商贩的挑担。你拿起第一把放大镜,只能看清巴掌大的一块画面;不甘心,又叠上第二把,视野立刻往外扩了一圈;叠的镜片越多,你能看到的画布范围越大,直至整段街景收入眼底。这种「透过层层镜片最终望见的原始画面范围」,正是卷积神经网络里贯穿始终的核心概念——感受野(Receptive Field)。学会精确计算它,你就能像经验老到的装裱师,只看一眼镜片数量与规格,便算出能望见多大画幅,从而为不同尺度的画作挑选合适的观察工具。本篇文章将带你从直觉到公式,完整掌握感受野的计算方法,并学会将它用于目标检测和网络设计的实战决策。

岗位关联

对 AI 从业者而言,感受野计算是 CNN 架构设计的基本功:无论做目标检测的 anchor 设计、规划网络深度,还是构建特征金字塔,都依赖这一把「视野标尺」。掌握它,你就能从「玄学调参」走向「精确建模」。

目录
  1. 可视化演示
  2. 感受野概念
  3. 递推公式推导
  4. 步长与填充
  5. 膨胀卷积与池化
  6. 跳跃连接影响
  7. 可视化方法
  8. 目标检测应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示CNN感受野逐层增长过程、递推公式推导和步幅对感受野扩展的影响。交互切换增长视图、公式视图和步幅视图。

本节配有交互动效(进入视口后自动加载,约 3KB)。

感受野逐层增长 卷积层扩大感受野 池化层跳跃增长 深层rf达37像素 rf_l=rf_(l-1)+(k_l-1)*j_l 感受野随网络深度逐层递增

感受野概念

你拿起第一把放大镜对准画布,镜片边缘圈出来的那一片画面,就是你的「第一层视野」。如果这片镜片是 3 厘米见方,你恰好能看清一个巴掌大的商贩摊位。在卷积神经网络里,输入图图像就是这张画布,第一层卷积核的大小(记为 $k$)决定了它覆盖输入图像的哪一区域。

这个区域——一个输出神经元在输入图像上能够「看见」的像素范围——就是感受野。由于卷积是一种局部连接操作,每个神经元只跟输入上的一小块区域相连,这与全连接网络(每个神经元看见整张图)形成鲜明对比。第一层卷积核大小为 $k$,则第一层感受野就是 $k \times k$。

但卷积网络真正的威力,在于「层层叠加」:第二层的神经元会把第一层相邻多个神经元的输出拼在一起看,于是它的视野扩展到了第一层视野之外。每堆叠一层,视野就往外多探出「半圈」。就像叠放大镜时,每片新镜片都在旧视野的基础上,再向外多框住一圈画布——这就是感受野逐层扩张的基本直觉。

r1=k1\displaystyle r_1 = k_1
一层卷积的神经元,能看到输入上恰好等于卷积核大小的区域。
  1. 第 1 层感受野 $r_1$它表示第一个卷积层输出神经元在原始输入图像上覆盖的边长。$r_1 \times r_1$ 就是视野的完整面积。
    r1r_1
  2. 卷积核大小 $k_1$第 1 层的卷积核边长。卷积核有多大,第一层神经元直接连接的输入区域就有多大。
    k1k_1

递推公式推导

叠放大镜时有个规律:每叠一片新镜片,「新视野 = 旧视野 + 新镜片的边缘外扩量」。如果新镜片自身很大,外扩量就大;如果之前叠过的镜片改变了放大倍数,这个外扩量还得按放大倍数换算成画布上的真实距离。卷积网络中的视野扩张,遵循同样的递推逻辑。

第 $i$ 层卷积核大小为 $k_i$,它会在上一层感受野的基础上向外各扩展 $(k_i - 1)/2$ 个「当前层的像素」。关键问题是:当前层的 1 个像素,折合成输入图像上是多大距离?答案是由此前所有层步长的乘积决定,这个乘积叫累积步长(也叫有效步长)。若前面各层步长为 $s_1, s_2, \dots, s_{i-1}$,则累积步长为 $\prod_{j=1}^{i-1} s_j$。

于是得到感受野递推公式:当前层感受野 = 上一层感受野 + 本层核外扩量 × 累积步长。以两层 $3 \times 3$ 卷积为例:第一层感受野为 3,第二层 $k=3$、前面累积步长为 1,则 $r_2 = 3 + 2 \times 1 = 5$。若之后接一个步长为 2 的 $3 \times 3$ 卷积,累积步长变为 2,第三层感受野 $r_3 = 5 + 2 \times 2 = 9$——视野扩张速度陡然加快。

ri=ri−1+(ki−1)×∏j=1i−1sj\displaystyle r_{i} = r_{i-1} + (k_i - 1) \times \prod_{j=1}^{i-1} s_j
感受野的扩张账本:每层的贡献 = 本层核的外扩半径 × 之前所有下采样被放大的倍数。
  1. 当前层感受野 $r_{i}$这是我们要求的目标——第 $i$ 层输出神经元在输入图像上的视野边长。
    rir_{i}
  2. 上一层感受野 $r_{i-1}$递推的起点,视野是在上一层的范围上继续向外扩展的,而不是从零开始。
    ri−1r_{i-1}
  3. 核外扩量 $(k_i - 1)$一个大小为 $k_i$ 的卷积核,相对于「正中心一个像素」想外探出的宽度。比如 $k=3$ 时外扩 2,$k=5$ 时外扩 4。
    (ki−1)(k_i - 1)
  4. 累积步长 $\prod_{j=1}^{i-1}s_j$把本层之前的每一步下采样倍数乘起来。它把「本层的一个像素步长」换算成输入图像上的真实距离,决定了外扩量的放大倍率。
    ∏j=1i−1sj\prod_{j=1}^{i-1} s_j

步长与填充

同样规格的放大镜,如果观察时你每次把镜片挪得更远(步长更大),虽然单次看清的局部没变,但扫过画布的速度变快了,下一层能拼出的整体范围也更大——代价是中间的某些细节被跳过了。这与卷积中步长(stride)的作用完全一致。

步长并不改变当前层神经元「看自己那一下」的视野大小——那仍由卷积核决定。它真正改变的是之后所有层的视野扩张速度:因为步长增大了累积步长,后续每层的外扩量都被放大。例如一个 $3 \times 3$ 卷积若步长为 2,本层感受野仍是 3,但累积步长从 1 跳变到 2,下一层每外扩 1 个像素,折合输入图像上是 2 个像素的距离。这就是「步长累积效应」——步长大一次,后面所有层都受益。

填充(padding)则扮演着画框外白边的角色:它让画布边缘处的笔触也能被均匀扫描到,不改变视野的「直径」,只改变输出特征图的尺寸。计算感受野时,padding 不会进入递推公式,但规划网络时,合适的 padding 能保证边缘目标不丢失定位信息。有效步长的计算则非常简单:逐层累乘所有层的步长即可。

Sacc,i=∏j=1isj\displaystyle S_{acc,i} = \prod_{j=1}^{i} s_j
有效步长是「视野扩张的杠杆」——它决定了每往后叠一层镜片,视野能放大多少倍。
  1. 累积步长 $S_{acc,i}$第 $i$ 层之后,输入图像上一个像素等价于第 $i$ 层输出上的多少个像素跨度。
    Sacc,iS_{acc,i}
  2. 累乘符号 $\prod_{j=1}^{i} s_j$把第 1 层到第 $i$ 层所有步长连乘。任何一层出现 $s=2$,累积步长就翻倍,后续感受野外扩全部乘上这个倍数。
    ∏j=1isj\prod_{j=1}^{i} s_j
  3. 步长 $s_j$第 $j$ 层的滑动步长。$s=1$ 是「逐寸挪镜」,$s=2$ 是「跳格扫画」。
    sjs_j

膨胀卷积与池化

有些放大镜带「变焦环」:转一格焦距,中央依旧清晰,但镜片边缘似乎在「撑开」,能跳过一些画面直接望见更远处——这就是膨胀卷积(空洞卷积)。它的膨胀率 $d$ 让卷积核在输入上每隔 $d-1$ 个像素才采样一次,等效于把一个 $k \times k$ 的核「撑大」成 $(k-1)d + 1$ 的大小。

膨胀卷积在不增加参数的前提下,大幅加快感受野扩张。比如一个膨胀率 $d=2$ 的 $3 \times 3$ 卷积,等效卷积核是 $5 \times 5$,外扩量从 2 变成 4。将膨胀率代入递推公式,便得到它的视野贡献。池化则是更粗暴的「广角镜」:把窗口内的最大值或平均值浓缩成一个代表值,等价于一个步长为池化窗口大小的特殊采样层,同样会翻倍累积步长,加速后续视野扩张。

实践中常把多个不同膨胀率的空洞卷积串联(膨胀率逐层递增),让网络同时获得「看清细节的小视野」和「把握全局的大视野」。这条策略广泛用于语义分割等需要大感受野但不想丢分辨率的任务。

ri=ri−1+((ki−1)×di)×∏j=1i−1sj\displaystyle r_{i} = r_{i-1} + \big((k_i - 1) \times d_i\big) \times \prod_{j=1}^{i-1} s_j
膨胀率是视野扩张的「涡轮增压器」:不增加镜片数量,却让每片镜片看得更远。
  1. 膨胀后的外扩量 $(k_i - 1) \times d_i$卷积核被膨胀率撑大后,向外探出的总宽度等于原始外扩量乘以膨胀率。
    (ki−1)×di(k_i - 1) \times d_i
  2. 膨胀率 $d_i$第 $i$ 层卷积的采样间隔。$d=1$ 是普通卷积,$d=2$ 表示每隔一个像素采样一次,等效核变大。
    did_i
  3. 等效卷积核边长 $(k_i - 1) \times d_i + 1$把膨胀后的核还原成一个普通核的边长,例如 $3 \times 3$ 核取 $d=2$ 则等效 $5 \times 5$。
    (ki−1)×di+1(k_i - 1) \times d_i + 1
  4. 累积步长乘积与普通递推公式一致,膨胀带来的外扩同样受前面下采样倍数的放大。
    ∏j=1i−1sj\prod_{j=1}^{i-1} s_j

跳跃连接影响

放大镜叠到第五层时,边缘的颜料隔着太多镜片已经糊成一片。机智的观察者会直接移开所有镜片,用裸眼瞟一眼原画——这一眼看到的范围小,但轮廓清晰——再把它与放大镜看到的大范围画面「叠」在一起理解。这就是残差网络(ResNet)的跳跃连接:主路径经过多层卷积得到大感受野,捷径直接把浅层的小感受野信息原样送过来,二者相加。

很多人误以为跳跃连接「扩大了感受野」,需要澄清:残差块输出的理论感受野上限,仍由主路径中最深的卷积链条决定——捷径感受到的范围更小,取并集后大小仍是主路径那个较大的值。跳跃连接真正的贡献,是显著提升有效感受野:梯度与信息可以通过捷径从小范围路径直达深层,让「对输出真正有影响力的输入像素」分布得更饱满、更均匀,同时改善梯度传播,缓解深层网络难以训练的问题。

rout=max⁡(rmain, rskip)\displaystyle r_{out} = \max\big(r_{main},\ r_{skip}\big)
裸眼补一眼不会让你的双眼看到更大画幅,但会让你更准确地理解每个局部——这就是有效感受野的妙处。
  1. 输出感受野 $r_{out}$残差块最终输出神经元的视野范围,等于两条路径覆盖区域的并集大小。
    routr_{out}
  2. 主路径感受野 $r_{main}$经过多层卷积变换后的大视野。通常 $3 \times 3$ 卷积堆几层,这条路就负责撑开理论感受野的上限。
    rmainr_{main}
  3. 捷径感受野 $r_{skip}$捷径分支没有卷积或只有很浅的变换,感受到的范围与残差块输入相同,通常比主路径小得多。
    rskipr_{skip}
  4. 取最大值 $\max(\cdot)$并集的数值近似。因为 $r_{main} \ge r_{skip}$,理论值取主路径即可;但梯度和信息分布因两条路径相加而更均匀。
    max⁡(⋅)\max(\cdot)

可视化方法

怎么验证你叠的镜片真的「看全」了?一个巧妙的办法:把一滴颜料滴在最终观察点上,再逆着镜片的路径往回洒,看画布上哪些地方被染了色——被染色的区域就是有效感受野,颜色越深的地方贡献越大。这就是「单位脉冲反向传播」可视化法。

具体做法是:在输出特征图的某个位置置一个 1、其余置 0,把它作为梯度反向传播到输入层,得到一张贡献热力图。热力图上非零的区域就是理论感受野的范围,而数值的大小分布则揭示有效感受野:通常呈现中心高、边缘低的高斯状分布,因为卷积层层加权下,靠近中心的像素对最终输出贡献更大。

这个可视化方法给了两个实用经验:其一,有效感受野半径通常只有理论感受野的 1/3 到 1/2,边缘像素贡献趋近于零,相当于「名义上能看到、实际上看不清」;其二,堆叠更多卷积虽然扩大理论值,但边缘贡献仍然很弱,所以想真正利用大视野,需要配合膨胀卷积或注意力机制来「压实」贡献分布。

rerf≈0.3∼0.5×rtheory\displaystyle r_{erf} \approx 0.3 \sim 0.5 \times r_{theory}
画布上被颜料染色的区域,比镜片框住的区域小得多——有效视野是理论视野的「实心部分」。
  1. 有效感受野 $r_{erf}$对最终输出真正有非平凡贡献的输入区域半径,是可视化热力图中高亮部分的大小。
    rerfr_{erf}
  2. 比例系数 $0.3 \sim 0.5$由大量实验得到的经验区间。不同网络结构略有差异,但都显著小于 1,提醒我们理论感受野被高估了。
    0.3∼0.50.3 \sim 0.5
  3. 理论感受野 $r_{theory}$用递推公式算出的最大视野范围,即热力图中非零区域的总边长。
    rtheoryr_{theory}

目标检测应用

装裱师要根据画作尺寸挑选观察工具:看小幅扇面用低倍镜组,看十米长卷得配大口径广角镜。目标检测的设计者面临同样的选择——不同尺寸的目标,需要不同尺度的感受野来匹配:小目标需要相对较小的感受野以保持定位精度,大目标则需要足够大的感受野来聚合上下文。

最典型的应用是 anchor 尺寸设计:如果 anchor 远大于感受野,网络根本「没看见」那么多信息,回归框就成了瞎猜;如果 anchor 远小于感受野,网络又会被过多背景干扰。经验法则是让 anchor 边长落在该层感受野的 1/4 到 1/2 之间,并尽量居于感受野中心——那里贡献最大。以此为据,SSD、YOLO 等模型都会为不同下采样层配不同尺寸的 anchor,实现多尺度检测。

另一个应用是网络深度规划:在目标检测骨干网络中,通过感受野递推公式反推「要覆盖某个尺度的目标需要多少层卷积」,避免盲目加深。特征金字塔(FPN)的构建同样依赖这个工具:浅层特征感受野小、适合检测小目标,深层特征感受野大、适合检测大目标,每一层输出的 anchor 必须与当前特征层的感受野对齐,检测器才能「各司其职」。

aanchor≈α⋅rlayer,α∈[0.25,0.5]\displaystyle a_{anchor} \approx \alpha \cdot r_{layer},\quad \alpha \in [0.25, 0.5]
选镜片的智慧,就是按目标尺度配置感受野的智慧——工具与画作尺寸匹配,才能看清每一个细节。
  1. anchor 边长 $a_{anchor}$目标检测中预先设定的候选框尺寸。它应当与目标真实尺寸接近,并与所在特征层的视野匹配。
    aanchora_{anchor}
  2. 该层感受野 $r_{layer}$当前特征层神经元能看到的输入区域大小。anchor 不要超出这个视野的实心区域。
    rlayerr_{layer}
  3. 经验系数 $\alpha$取 0.25 到 0.5,即 anchor 设为感受野的 1/4 到 1/2,保证目标主体落在贡献最集中的中心地带。
    α\alpha

AI 应用场景

Anchor 尺寸与感受野匹配优化

阶段:模型设计 / 锚框生成

解决的问题:在目标检测中,YOLO、Faster R-CNN 等模型如果 anchor 尺寸与特征层感受野不匹配,会出现大量「看得见却框不准」的失败检测——anchor 太大时网络没看到完整的物体信息,太小时又被背景淹没。用感受野递推公式为每一层特征图精确计算视野范围,再据此设定 anchor 的边长区间,可将小目标召回率稳定提升。

具体案例:某自动驾驶团队在检测远处行人(平均 20×40 像素)时,原 anchor 设为 64×64,检测率很低。他们先算出浅层 P2 特征(下采样 4 倍,感受野约 48×48),再将小尺寸 anchor 从 32×32 调整为 16×32,并限制 anchor 中心落在感受野中心区域,漏检率下降约 18%。

骨干网络深度规划

阶段:特征提取网络结构设计

解决的问题:设计分类或检测骨干网络时,盲目堆叠 3×3 卷积会让参数量和延迟飙升,但感受野增长缓慢(每层仅 +2)。借助递推公式,可以在设计阶段反推「达到目标视野需要多少层、哪些位置需要下采样或膨胀卷积」,避免「深而不广」的无效网络。

具体案例:某移动端模型需要在 CPU 上跑到 30 FPS,同时保证对 80×80 以上目标有足够上下文。工程师用感受野计算器枚举出「4 层 3×3 + 在第 3 层插入 stride=2」的结构,在参数量不变的前提下将最终感受野从 9 扩到 17,精度提升 2.3 个点。

特征金字塔各层尺度对齐

阶段:多尺度特征融合 / 检测头设计

解决的问题:特征金字塔(FPN)中每一层特征要负责特定尺度的目标,若各层感受野与负责尺度的目标尺寸错位,会出现「大目标在浅层检测但视野不够」或「小目标在深层检测但已被下采样抹掉」的结构性矛盾。逐层计算感受野后,可精确对齐各层 anchor 的范围。

具体案例:在 COCO 数据集上,某检测器原先 P3-P7 层均用相同 anchor 集合。按感受野逐层计算后,P3 层(感受野约 32)只分配 8-16 像素的小 anchor,P5 层(感受野约 128)分配 32-64 的中 anchor,P7 层(感受野约 512)分配 128-256 的大 anchor,mAP 提升 3.1。

Python 演示

python55 行
class ReceptiveFieldCalculator:    """计算 CNN 各层感受野与有效步长的工具类"""     def __init__(self):        self.layers = []        self.rf_list = [1.0]        self.stride_list = [1.0]     def add_layer(self, kernel, stride=1, dilation=1):        self.layers.append(            {"kernel": kernel, "stride": stride, "dilation": dilation}        )     def compute(self):        rf = 1.0        acc_stride = 1.0        self.rf_list = [1.0]        self.stride_list = [1.0]        for layer in self.layers:            eff_kernel = (layer["kernel"] - 1) * layer["dilation"] + 1            rf = rf + (eff_kernel - 1) * acc_stride            acc_stride = acc_stride * layer["stride"]            self.rf_list.append(rf)            self.stride_list.append(acc_stride)        return self.rf_list     def summary(self):        rfs = self.compute()        rows = []        for i, layer in enumerate(self.layers):            eff_kernel = (layer["kernel"] - 1) * layer["dilation"] + 1            rows.append(                "第{}层: k={}, s={}, d={} -> 感受野 {}x{}".format(                    i + 1,                    layer["kernel"],                    layer["stride"],                    layer["dilation"],                    int(rfs[i + 1]),                    int(rfs[i + 1]),                )            )        return "\n".join(rows)  if __name__ == "__main__":    calc = ReceptiveFieldCalculator()    calc.add_layer(3, 1, 1)    calc.add_layer(3, 1, 1)    calc.add_layer(3, 2, 1)    calc.add_layer(3, 1, 1)    calc.add_layer(3, 1, 1)    print("五层卷积网络逐层感受野:")    print(calc.summary())    print("逐层感受野:", [int(r) for r in calc.rf_list])    print("逐层有效步长:", [int(s) for s in calc.stride_list])
目的:将感受野递推公式封装成计算器,输入每层卷积的核大小、步长和膨胀率,逐层输出感受野与有效步长,帮助你在设计网络时精确规划视野。
  1. def add_layer(self, kernel, stride=1, dilation=1)注册一层卷积的配置,把网络结构逐层「登记在册」。
  2. eff_kernel = (layer["kernel"] - 1) * layer["dilation"] + 1计算膨胀卷积的等效核大小,是膨胀率进入公式的入口。
  3. rf = rf + (eff_kernel - 1) * acc_stride核心递推:当前视野 = 旧视野 + 核外扩量 × 累积步长。
  4. acc_stride = acc_stride * layer["stride"]累积步长逐层相乘,任何一次下采样都会放大后续所有层的外扩。
  5. if __name__ == "__main__":可执行入口,直接运行即可看到五层网络的逐层感受野输出。

常见误区

误区给卷积加 padding 会扩大神经元的视野,因为输入图像的边缘被补了一圈,看起来「能看到更多」。

正解padding 只是在画框外围加白边,用于控制输出尺寸和保留边缘信息,它不会改变感受野递推公式中的任何一项——感受野只与卷积核大小、膨胀率和累积步长有关。真正意义上的「多看」要靠更大的核、更深的层或更大的步长。

为何常见:大家容易把「输出特征图尺寸变化的直觉」和「感受野计算」混为一谈,以为输入多了几圈像素,视野就大了。

误区两层 3×3 卷积的感受野是 5×5,所以它和一层 5×5 卷积在任何方面都一样。

正解感受野数值相同,但两层 3×3 引入了非线性激活,表达能力更强、参数量更少(18 对 25),且中间层能形成更丰富的特征层次。它们只是「视野大小」一致,不是「看到的画质」一致。

为何常见:初学感受野时容易把这个「视野数值」当成卷积的全部,忽略了非线性变换和参数效率这些同样重要的维度。

误区ResNet 加了跳跃连接,网络的感受野一定比没加时更大,所以残差结构的主要作用是扩大视野。

正解残差块的捷径路径感受野比主路径小,两条路径合并后理论感受野等于主路径的值,并未被「额外放大」。跳跃连接真正提升的是有效感受野——让梯度和信息从小路径直达深层,使贡献分布更饱满、训练更稳定。

为何常见:人们观察到残差网络在深网络里效果更好,便直觉归因于「视野变大了」,忽略了有效感受野与理论感受野的区别。

误区设计检测网络时,感受野越大越好,因为能看到的上下文更多,检测自然更准。

正解感受野需与目标尺度匹配。小目标在过大的感受野中只占很小一块,周围背景会严重干扰分类与回归;反之大目标在小感受野中看不到全貌。合理的做法是像 FPN 那样让不同层各司其职,每层感受野对齐对应尺度的 anchor。

为何常见:因为「看得越多越好」符合日常直觉,但检测任务的本质是「看对地方」,而非盲目看广。

面试题

Q1. 在卷积神经网络中,感受野的定义是什么?

单选题 · easy

  • A.卷积核覆盖的像素总数
  • B.神经元响应的输入图像区域← 正确答案
  • C.卷积核尺寸的数值大小
  • D.输出特征图的宽高大小

答案:B。感受野是输出特征图上某个神经元在原始输入图像上能「看到」的区域大小。A 描述的是卷积核覆盖总量,C 只是核的尺寸,D 是输出图的尺寸,均与感受野定义不符。就像放大镜框住的画布范围,而不是镜片本身的刻度。

Q2. 连续两个步长为 1 的 3×3 卷积,最终感受野最大可达多少?

单选题 · easy

  • A.3×3 像素范围
  • B.5×5 像素范围← 正确答案
  • C.6×6 像素范围
  • D.9×9 像素范围

答案:B。第一层 3×3 卷积的感受野为 3;第二层 3×3 卷积的核外扩量为 2,累积步长为 1,因此 $r = 3 + 2 \times 1 = 5$。等价于叠两片放大镜,每片向外多框一圈,视野从 3 扩到 5。

Q3. 步长为 2 的 3×3 卷积后,再接步长 1 的 3×3 卷积,最终感受野最接近多少?

单选题 · mid

  • A.7×7 像素范围← 正确答案
  • B.8×8 像素范围
  • C.9×9 像素范围
  • D.10×10 像素范围

答案:A。第一层 3×3 卷积后感受野为 3,累积步长变为 2;第二层 3×3 的外扩量为 2,但需乘以累积步长 2,因此 $r = 3 + 2 \times 2 = 7$。步长像挪镜片的间距,间距越大,后续视野扩张越快。

Q4. 膨胀率 d=2 的 3×3 空洞卷积,其等效卷积核大小是多少?

单选题 · hard

  • A.4×4 像素范围
  • B.5×5 像素范围← 正确答案
  • C.6×6 像素范围
  • D.7×7 像素范围

答案:B。等效卷积核公式为 $(k-1) \times d + 1$,代入 $k=3, d=2$ 得 $(3-1) \times 2 + 1 = 5$。膨胀率像变焦环,把镜片撑大但不增加镜片数量,让视野跳得更远。

Q5. 3×3 最大池化(步长 2)对后续感受野的扩张效果,等价于哪种操作?

单选题 · mid

  • A.步长为 1 的 3×3 卷积
  • B.步长为 2 的 3×3 卷积← 正确答案
  • C.步长为 2 的 2×2 卷积
  • D.步长为 1 的 2×2 卷积

答案:B。池化窗口为 3、步长为 2,它会将累积步长乘以 2,同时池化本身不改变当前感受野数值(取最大值不算外扩),后续层的外扩量都会被放大两倍。这相当于一个步长为 2 的 3×3 卷积对视野扩张的贡献。

Q6. 关于 padding 对感受野和输出尺寸的影响,下列说法正确的是?

多选题 · mid

  • A.Padding 不改变感受野大小← 正确答案
  • B.Padding 会扩大感受野数值
  • C.Padding 影响输出特征图尺寸← 正确答案
  • D.Padding 改变有效步长数值

答案:AC。padding 在输入外围补零,不影响递推公式中的核外扩量与累积步长,因此感受野数值不变;但它会改变输出特征图的高宽(通常保持尺寸不缩小)。B 和 D 都把 padding 误当成了影响视野扩张的参数。

Q7. 关于跳跃连接(残差结构)对感受野的影响,下列说法正确的是?

多选题 · hard

  • A.理论感受野上限由主路径决定← 正确答案
  • B.跳跃连接直接扩大理论感受野
  • C.跳跃连接提升了有效感受野← 正确答案
  • D.捷径分支感受到的视野更小← 正确答案

答案:ACD。残差块的输出是主路径与捷径相加,理论感受野取并集后仍是主路径那个较大的值,因此 B 错、A 对。捷径路径感受野较小(D 对),但它让梯度和信息直达深层,使输入贡献分布更饱满,即有效感受野提升(C 对)。

Q8. 设计目标检测 anchor 时,anchor 尺寸与感受野的关系应如何把握?

单选题 · easy

  • A.让 anchor 大于感受野范围
  • B.让 anchor 匹配感受野尺度← 正确答案
  • C.让 anchor 小于感受野即可
  • D.让 anchor 与感受野无关

答案:B。anchor 应落在感受野的实心区域,通常取边长约为感受野的 1/4 到 1/2。过大会让网络「没看见」完整目标,过小则被背景干扰。B 的「匹配」正体现了按视野尺度配置工具的思想。

Q9. 有效感受野显著小于理论感受野,可能的原因包括哪些?

多选题 · mid

  • A.中心像素对输出的贡献权重更高← 正确答案
  • B.边缘像素信息被逐层卷积稀释← 正确答案
  • C.ReLU 激活函数会直接改变感受野
  • D.卷积核权重分布不均匀导致边缘衰减← 正确答案

答案:ABD。有效感受野呈中心高、边缘低的高斯状,是因为中心像素经过的路径更短、贡献保留更多(A),边缘像素信息被层层加权稀释(B),且核权重并非均匀(D)。ReLU 只是非线性门控,不改变像素贡献的空间分布,C 错。

Q10. 一个网络由膨胀率 d 依次为 1、2、3、4 的四层 3×3 卷积串联(所有步长为 1),最终感受野约为多少?

单选题 · hard

  • A.9×9 像素范围
  • B.13×13 像素范围
  • C.17×17 像素范围
  • D.21×21 像素范围← 正确答案

答案:D。四层等效核分别为 3、5、7、9,外扩量依次为 2、4、6、8,累积步长始终为 1,因此 $r = 1 + 2 + 4 + 6 + 8 = 21$。膨胀率递增强的网络能以很小的参数量获得超大视野,像逐级换大号的变焦镜。