感受野手记

  感受野(receptive field)是卷积神经网络(Convolutional Neural Network,CNNs)中最重要的概念之一,当前流行的物体识别方法的架构大都围绕感受野的设计。

  从CNN可视化的角度来讲,感受野就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野。

  比如我们第一层是一个3*3的卷积核,那么我们经过这个卷积核得到的featuremap中的每个节点都源自这个3*3的卷积核与原图像中3*3的区域做卷积,那么我们就称这个featuremap的节点感受野大小为3*3。

  如果再经过pooling层,假定卷积层的stride是1,pooling层大小2*2,stride是2,那么pooling层节点的感受野就是4*4。

  

  有几点需要注意的是,padding并不影响感受野,stride只影响下一层featuremap的感受野,size影响的是该层的感受野。

至于如何计算感受野,我的建议是top to down的方式。下面我拿一个例子来算算

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

依次类推,对应conv4的输入为4*4,因为2*2的每个角加一个3*3的卷积核,就成了4*4,当然这是在stride=1的情况下才成立的,但是一般都是stride=1,不然也不合理

对应conv3的输入为6*6

对应pool2的输入为12*12

对应conv2的输入为14*14

对应pool1的输入为28*28

对应conv1的输入为30*30

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

(该计算里,遇到卷积就把n*n做(n+2)*(n+2),遇到2*2池化就(n*2)*(n*2),这是由于卷积核大小3*3,例如在第一行卷积到最后一个值的时候,3*3的最左边一列搭在输入上,右边有两列都是padding,因此比原图大了两列,行同理,所以最后就多了两行两列)。

 

  

posted @ 2017-12-22 17:37  木易修  阅读(392)  评论(0编辑  收藏  举报