感受野与空洞卷积

一、感受野(receptive field)

1、定义

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上每个像素点在原始图像上映射的区域大小,这里的原始图像是指网络的输入图像,是经过预处理(如resize,warp,crop)后的图像。

神经元之所以无法对原始图像的所有信息进行感知,是因为在卷积神经网络中普遍使用卷积层和pooling层,在层与层之间均为局部连接。

神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。

2、计算

如上图所示的7*7原始图像,经过kernel_size=3, stride=2的Conv1,kernel_size=2, stride=1的Conv2后,输出特征图大小为2*2,很明显,原始图像的每个单元的感受野为1,Conv1的每个单元的感受野为3,而由于Conv2的每个单元都是由范围2*2的Conv1构成,因此回溯到原始图像,每个单元能够看到5*5大小的区域范围。

卷积层(conv)和池化层(pooling)都会影响感受野,而激活函数层通常对于感受野没有影响,当前层的步长并不影响当前层的感受野,感受野和填补(padding)没有关系, 计算当层感受野的公式如下:

 如上图所示,Conv1层的感受野=1+(3-1)×1=3;Conv2层的感受野=3+(2-1)×2=5

利用上述公式可以得到如下图所示的AlexNet的感受野:

二、空洞卷积

1、定义及原理

空洞卷积英文名为Dilated Convolution或Atrous Convolution,即空洞卷积或者扩张卷积。

一般情况下,图片输入到网络中,网络将会对图像做卷积再池化(pooling)的操作,pooling的操作即降低了图像尺寸的同时增大感受野。但由于图像分割预测是pixel-wise的输出,所以将pooling后较小的图像上采样(upsampling)到原始的图像尺寸进行预测一般需要采用反卷积(deconv)操作。之前pooling一般为max pooling,所以该pooling操作使得每个pixel能预测都能看大较大感受野信息。

在图像分割网络中有两个关键点:1、pooling减少图片的尺寸增大感受野,提取深层图像特征;2、通过upsampling还原图片尺寸。但特征图缩小再放大的过程造成了精度上的损失,为了减少由pooling带来信息损失,所以就提出空洞卷积,他能不通过pooling来增大感受野。即代替pooling和upsampling过程。

与正常的卷积不同的是,空洞卷积引入了一个称为 “扩张率(dilation rate)”的hyper-parameter,该参数定义了卷积核处理数据时各值的间距。扩张率中文也叫空洞数(Hole Size)。

如图所示,从左到右为a,b,c三幅相互独立的图与后面的图区分开来,整幅图为输入图像,默认感受野为1,黑色圆点表示3*3卷积核,灰色地带为卷积后的感受野,可以说,普通卷积是空洞卷积的一种特殊情况:
a是普通的卷积过程(dilation rate = 1),卷积后的感受野为3;
b是dilation rate = 2的空洞卷积,卷积后的感受野为5;
c是dilation rate = 3的空洞卷积,卷积后的感受野为7;

要理解空洞概念和如何操作可以从两个角度去看:
1)从原图角度,所谓空洞就是在原图上做采样。采样的频率是根据rate参数来设置的,当rate为1时候,就是原图不丢失任何信息采样,此时卷积操作就是标准的卷积操作,当rate>1,比如2的时候,就是在原图上每隔(rate-1)个像素采样,如图b,可以把红色的点想象成在原图上的采样点,然后将采样后的图像与kernel做卷积,这样做其实变相增大了感受野
2)从kernel角度去看空洞的话就是扩大kernel的尺寸,在kernel中,相邻点之间插入rate-1个零,然后将扩大的kernel和原图做卷积 ,这样还是增大了感受野。

上图是三个不同的空洞卷积,从左到右连续进行卷积,它们属于top-bottom关系,卷积核的kernel size=3, stride=1, 但是空洞卷积的dilation rate分别是1,2,4。默认初始化感受野是1:

利用上述公式可得每一层的感受野:

第一层卷积a:感受野=1+(3-1)×1=3;

第二层卷积b:k'=3+(3-1)×(2-1)=5;感受野=3+(5-1)×1=7;

第三层卷积c:k'=3+(3-1)×(4-1)=9;感受野=7+(9-1)×1=15

2、与反卷积的区别

反卷积(deconv):
主要用于增大图像尺寸,是upsampling的一种,而空洞卷积并没有做upsampling,空洞卷积是为了增大感受野,可以不改变图像的大小。
对于反卷积简单理解就是在输入特征矩阵中插入空白点,再进行卷积,这样卷积后输出的特征矩阵就变大了。

对于标准k*k卷积核,stride为s,分三种情况:

1) s>1,在卷积同时伴随着downsampling操作,卷积后图像变小了(这种操作也可以增大感受野,但是输出的图像大小变小了)
2) s=1,在padding设置为stride大小时,卷积后图片大小不变;
3)s<1,相当于对原图作upsampling操作进行扩大原图,然后再卷积,这样得到的结果图就变大了。例如s=0.5s=0.5s=0.5意味着在原特征图的每相邻数据间插入一个空白数据,这样再进行卷积,它的输出特征图就变大了。

上面3)所描述的就是反卷积,它的核心是在原来图像上插入空白数据。而空洞卷积就是在卷积核插入空白数据,或是说在卷积是跳过特征图的部分数据。

参考

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值