CNN中的感受野总结

最近面试问到了有关感受野的知识,所以总结 了一下:

参考链接:CNN中感受野的计算深度学习中的感受野计算

定义:感受野就是网络中输出特征图对应输入图像的区域。简单地说,就是特征图里面的一个元素受输入图像多大区域像素的影响。

所以根据定义,如果我们只计算某两个连续层之间的感受野,则可以通过直接画图,看输入图像多大的范围对应特征图中的一个点来确定两者之间的感受野。

但是,如果网络比较深,那么计算最后的特征图和输入图像的感受野,则变得异常麻烦。好在有人已经总结了公式,如下:

F\left ( i,j-1 \right ) = k_j +\left ( F\left ( i,j \right ) -1\right )*s_j

k_j表示的第j层的kernel_size,s_j表示第j层的stride.这个式子分为两部分,一部分是指k_j,即局部感受野,另一部分是stride,可理解为当前层在每多一个原子,上一层的感受野多增加stride个(在第一个局部感受野的基础上增加的;

其中,F(i,i)=1;i为最后一层,0为输入层。一般算到F(i,0)。

 

下面我拿一个例子来算算:

 

 

 

 

 

 

 

 

 

 

 

答案如下:

pool3的一个输出对应pool3的输入大小为2*2

对应conv4的输入为4*4

对应conv3的输入为6*6

对应pool2的输入为12*12

对应conv2的输入为14*14

对应pool1的输入为28*28

对应conv1的输入为30*30

所以pool3的感受野大小就是30*30

 

卷积中的特征图大小计算方式有两种,分别是‘VALID’和‘SAME’,卷积和池化都适用,除不尽的结果都向上取整。

 

1.如果计算方式采用'VALID',则:

其中为输出特征图的大小,为输入特征图的大小,F为卷积核大小,stride为卷积步长。

2.如果计算方式采用'SAME',输出特征图的大小与输入特征图的大小保持不变,

其中padding为特征图填充的圈数。

若采用'SAME'方式,kernel_size=1时,padding=0;kernel_size=3时,padding=1;kernel_size=5时,padding=3
--------------------- 
作者:HelloZEX 
来源:优快云 
原文:https://blog.youkuaiyun.com/HelloZEX/article/details/81109136 
版权声明:本文为博主原创文章,转载请附上博文链接!

### 感受野的概念及其在CNN和Transformer中的比较 #### 1. 感受野的定义 感受野(Receptive Field, RF)是指神经网络某一层某个节点能够感知到的输入数据范围。对于图像处理任务而言,感受野越大,则该层节点能获取的信息越全局化;反之则更加局部化。 --- #### 2. CNN中的感受野计算方法 在卷积神经网络(Convolutional Neural Network, CNN)中,感受野可以通过以下公式递归地计算得出: \[ \text{RF}_{l} = (\text{RF}_{l-1}-1)\cdot S_{l} + K_{l}, \] 其中: - \( \text{RF}_l \): 表示第\( l \)层的感受野; - \( S_l \): 第\( l \)层的步幅(stride); - \( K_l \): 第\( l \)层的卷积核尺寸[^3]。 通过上述公式的迭代应用,可以从浅层逐步推导至深层的感受野大小。例如,在给定初始条件的情况下,经过多层卷积操作后,最终可获得整个网络的最大感受野。 --- #### 3. Transformer中的感受野分析 与传统CNN不同的是,Transformers并不依赖于显式的空间结构来进行特征提取。相反,它们采用自注意力机制(Self-Attention Mechanism),使得任意两个位置之间的关系都能够被直接建模而无需考虑距离远近的影响。因此,在理论上讲,Vision Transformers(ViTs)等模型具有无限大的有效感受野——因为每一个token都可以与其他所有tokens相互作用[^2]。 然而实际当中由于计算资源有限以及为了提高效率通常会对attention map施加某些约束比如窗口划分(local window attention),这实际上相当于引入了一种形式的空间局限性从而间接限定了其最大可能达到的实际物理意义上的“感受区域”。 --- #### 4. CNN vs Transformer: 感受野特性对比总结表 | 特性 | 卷积神经网络(CNNs) | 变压器(Transfomers) | |-------------------|----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| | **感受野增长方式** | 层级式增加:随着层数加深线性或者指数型扩展 | 非层级固定全连接:原则上一次性覆盖全部输入 | | **计算复杂度** | 较低,主要取决于卷积运算 | 更高,尤其当序列长度较长时呈平方级别上升 | | **适用场景优势** | 小尺度模式识别精准高效 | 大规模上下文理解能力强 | 尽管如此需要注意一点就是虽然transformer具备理论上的全域关联能力但是实践中往往还是需要结合具体应用场景做出适当调整优化才能发挥最佳性能表现出来[^1]. --- ```python def cnn_receptive_field(kernels, strides): rf = 1 for i in range(len(kernels)): rf = (rf - 1) * strides[i] + kernels[i] return rf # Example usage of the function with a hypothetical network configuration. example_kernels = [3, 3, 3] # Kernel sizes at each layer. example_strides = [1, 2, 2] # Stride values corresponding to those layers. print(f"CNN Receptive Field Size: {cnn_receptive_field(example_kernels, example_strides)} pixels.") ``` 以上代码片段展示了如何依据指定参数列表动态求解标准二维卷积层堆叠情形下的总接收视野宽度数值结果演示过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值