正常卷积与空洞卷积输出特征图与感受野大小的计算
空洞卷积的计算过程
空洞卷积(Dilated convolutions)在卷积的时候,会在卷积核元素之间塞入空格,如下图所示:
空洞卷积过程,蓝色表示输入,绿色表示输出
这里引入了一个新的超参数 d,(d - 1) 的值则为塞入的空格数,假定原来的卷积核大小为 k,那么塞入了 (d - 1) 个空格后的卷积核大小 n 为:
进而,假定输入空洞卷积的大小为 i,步长 为 s ,空洞卷积后特征图大小 o 的计算公式为:
卷积感受野计算
感受野(receptive field)
CNN中,某一层输出结果中一个元素所对应的输入层的区域大小.
感受野计算
从后往前
output field size = ( input field size - kernel size + 2 × padding ) / stride + 1,变形之后得到input field size = (output field size - 1)× stride - 2 × padding + kernel size。因此可以通过后式从最后一层到第一次级联后计算在原图上的感受野。计算感受野时不需要考虑padding(因为我们不是在计算具体有边界的映射区域,而是计算抽象的大小):
RF = 1 #待计算的feature map上的感受野大小
for layer in (top layer To down layer):
RF = ((RF -1)* stride) + kernel size
孔洞卷积
下面考虑计算带孔卷积(dialated conv)的感受野的理论值(实际上将孔洞也算进感受区域了,如果计算非孔位置的面积那就和不带孔洞的感受野的值相等了)。
卷积核的dialate属性定义为卷积核的元素间距,如 dialate=2 是每隔一个像素位置应用一个卷积元素,dialate=1就是普通的无孔卷积。那么大小fk,dialate=d的卷积核的等价卷积作用大小为:f′k=(fk−1)d+1.
然后用f′k代替fk,采用上述的两种计算方式计算感受野.
举例
例子:
如果有三层CNN,分别为con3x3, dilation=1, conv3x3, dialation=2, conv3x3, dilation=5,它们的stried=1,则最后一层每个神经元的感受野为17x17.