左图为普通卷积,右图为膨胀卷积
r为膨胀因子,r=2也就是记录的每两个参数之间的距离,r=1也就是普通卷积
膨胀卷积的作用
a.增大感受野(容易看出,右边感受野更大)
b.一般会保持原输入特征图的高度和宽度
**为什么要使用膨胀卷积
在语义分割任务中,比如fcn,通常会使用分类网络作为网络的backbone,进行一系列的下采样,然后我们再通过一系列的上采样还原会原图大小,在平时使用的分类网络中,一般会将高度和宽度下采样32倍,由于后期要还原回原图大小,所以如果将特征图的高宽下采样倍率太大的话,对还原有很大影响
比如vgg网络,通过maxpool层进行下采样操作 ,首先会减小特征图的高宽,其次会丢失一些细节信息以及一些比较小的目标,无法通过后期的上采样来还原,会导致在语义分割任务中分割的效果不是特别理想
如果直接将maxpooling层去掉,会导致得到的特征图所对应原图的感受野变小了(最大池化下采样层能增大特征层的感受野),那么对于maxpooling之后的一些列卷积层,他们又是在之前所对应的感受野之上 进一步操作的,不可行
而膨胀卷积,既能增大感受野,又能保持输入输出特征图的高和宽
2.
问题
膨胀卷积过程中经常会遇到gridding effect的问题
如果连续使用三个膨胀卷积层
首先看一下layer2上的pixel利用到了layer1上的哪些数据
会使用到layer1上9个像素位置上的参数
当我们连续使用两个膨胀系数为2的膨胀卷积时,layer3上的一个pixel利用到了layer1上的哪些像素呢
如图有颜色的位置(25个pixel的信息),数字代表利用次数
如果连续使用3个,如图
可以看到,layer4上的一个pixel利用到的layer1上的数据并不是连续的(这就是griding effect现象)
也就是指利用到了区域中的一部分像素值,会丢失一些细节信息
以下为另一组实验(区域内的像素都利用到了)
对比,参数数量相同,膨胀系数不同,感受野均为13*13,1中有很多像素值没有运用到
我们更倾向于第二种,对于高层的任意一个pixel它使用第一层的数据是一个连续的区域
若只是用普通卷积,参数数量相同,感受野为7*7
3.
连续使用多个膨胀卷积时,如何设置系数
如果连续使用n个膨胀卷积,卷积核大小为k*k,膨胀系数为r1,r2........
目标是通过一系列膨胀卷积后,能够完全覆盖底层特征层上的一个方形区域,并且没有任何空洞
*****公式的意思是
第i层所对应的两个非0元素之间的最大距离等于这三个参数取最大值
最后一层非0元素之间的最大距离是等于最后的膨胀系数的
设计目标是M2小于等于k
r为什么要从1开始?
既然我们希望高层特征图中的一个pixel利用到一个区域中所有像素的话,那么M1要等于1
由公式,M1等于三个数中的最大值
*****将膨胀系数设置为锯齿结构
****公约数不能大于1
第一行为认为标注
第二行没有遵循设计准测
第三行遵循了设计准则