卷积神经网络感受野的计算

    xiaoxiao2022-07-05  153

    神经网络感受野计算

    普通卷积感受野计算

    感受野指的是当前的特征图的一个特征点在输入空间影响的区域,该点的值被输入空间的这个区域影响,与其他区域无5173。通常有两种方式可以计算感受野,从后往前算和从前往后算。从前往后计算的方法很简单,基本上一个公式就可以计算,使用递推公式计算。

     

    L表示感受野的大小,k表示网络的层序号,f表示卷积核尺寸,s表示步长大小。递推公式的增量为后一部分,对于第k层,其卷积核为fk,那么相比前一层需要计算fk个位置(或者神经元,),但是这些位置要一直向前扩展到输入层。对于第一个位置,扩展后的感受野为lk-1,正好是前一层的感受野大小,但是对于剩余的fk-1个位置就要看stride大小,你需要扩展到前面所有层的stride(注意不包括当前层的stride,当前层的stride只会影响后面层的感受野),所以需要累乘所有的stride,这样剩余fk-1个位置的感受野大小就是第二部分的值。

     

    2.对于扩张卷积的感受野计算

    对于3*3的扩张卷积,都是考虑same卷积,加padding不减小特征图:

    Dilation rate=1,    对应于普通3*3卷积

    Dilation=2,         对应于5*5卷积,padding=2

    Dilation=4,         对应于9*9卷积,padding=4

    Dilation=8,         对应于17*17卷积,padding=8

     

    从后往前计算感受野计算公式:

    Rf=(rf-1)* s + k

    对于应用在resnet上,全部使用SAME类型的卷积,也就是不减小特征图。下图是使用fomoro Ai网站计算得到的感受野(https://fomoro.com/projects/project/receptive-field-calculator)

     

    直接结算第9层的感受野,从后往前计算:初始rf=1

    (1)1*1的卷积   rf=1

    (2)3*3,dilation=2对应5*5的卷积,padding=2,

           rf=(rf-1)*s+k = (1-1)*1 + 5 = 5

    (3)1*1卷积    rf=5

    (4)1*1卷积    rf=5

    (5)3*3,dilation=2对应5*5的卷积,padding=2,

           rf=(rf-1)*s+k = (5-1)*1 + 5 = 9

    (6)1*1卷积    rf=9

    (7)1*1卷积    rf=9

    (8)3*3,dilation=2对应5*5的卷积,padding=2,

           rf=(rf-1)*s+k = (9-1)*1 + 5 = 13

    (9)1*1卷积    rf=13

    可以看到计算结果与上图中完全一样。使用从第一部分的前往后的计算结果也是相同的。

     

     

    参考

    [1]http://shawnleezx.github.io/blog/2017/02/11/calculating-receptive-field-of-cnn/

    [2] https://zhuanlan.zhihu.com/p/35708466

     

     

    最新回复(0)