感受野(Receptive Field)是卷积神经网络(CNN)中一个神经元在输入图像上能“看到”的区域范围。简单来说,它表示某个特征图中的像素点,对应原始输入图像中的多大区域。
举个栗子🌰
假设你有一个3×3的卷积核,第一层卷积输出的每个神经元,感受野就是3×3(直接覆盖输入图像的3×3区域)。
如果后续再叠加一个3×3卷积层,第二层神经元的感受野就会扩大到5×5(如下图所示)。
层级越深,感受野越大,网络能“理解”的图像范围越广。
为什么感受野重要?
- 决定网络感知能力:
- 小感受野适合捕捉局部细节(如纹理、边缘)。
- 大感受野适合理解全局结构(如物体形状、上下文关系)。
- 平衡细节与语义:
浅层网络感受野小,关注局部特征;深层网络感受野大,提取抽象语义。 - 任务适配:
- 目标检测中,感受野需覆盖目标物体大小(如大物体需更大的感受野)。
- 图像分割中,需同时保留局部细节和全局上下文。
感受野计算公式
对于第层卷积,感受野大小
与前一层的关系为:
其中, 是第 i 层的步长,初始输入的感受野
。
示例计算
假设网络结构如下:
- 输入图像 → 卷积层1(
)
- 卷积层1 → 卷积层2(
)
- 卷积层2 → 卷积层3(
)
最终第三层的感受野为9×9。
增大感受野的方法
方法 | 原理 | 特点 |
---|---|---|
加深网络 | 堆叠更多卷积层 | 自然扩大,但增加计算量 |
增大卷积核 | 直接使用更大的kernel(如5×5) | 简单暴力,可能参数量大 |
空洞卷积 | 在卷积核中插入空洞(dilation) | 不增加参数,扩大感受野 |
池化层 | 通过下采样(如最大池化)间接扩大 | 牺牲空间分辨率 |
实际应用技巧
- 目标检测网络设计:YOLO、Faster R-CNN 通过多尺度特征融合,兼顾不同感受野。
- 语义分割优化:使用空洞卷积(如DeepLab系列)保持高分辨率的同时扩大感受野。
- 可视化工具:用代码库(如
receptivefield
)计算各层感受野。
一句话总结
感受野决定了神经网络“看得有多广”,是平衡局部细节与全局语义的关键参数。