空洞卷积/膨胀卷积

膨胀卷积(dilated convolution)又叫空洞卷积(Atrous convolution).

空洞卷积/膨胀卷积_第1张图片
上图左边是一个普通的卷积,有边这幅就是我们要讲的膨胀卷积,与左边对比可以看出,同样都是采用3x3的kernel,但是我们在膨胀卷积中发现kenerl元素之间是存在间隙的。间隙我们在膨胀卷积中称为膨胀因子r。上图中r=2,表示记录的是每两个参数间的距离,当r=1,即元素之间相邻的话,它就是一个普通卷积了。

膨胀卷积的作用:

  • 增大感受野
  • 保持原输入特征图的W、H(通过padding的方式)

为什么要使用膨胀卷积

在语义分割任务,比如FCN。通常会使用分类网络作为网络的backbone,通过backbone之后会对我们图片进行一系列下采样,然后我们在通过一系列上采样还原回我们原图大小。平时使用图像分类网络,一般会对图像的W,H下采样32倍,由于后续是需要上采样还原回原图的尺寸,所以如果我们将特征图高宽下采样倍率太大的话,对我们还原回原图是有很大的影响的。比如VGG网络,VGG网络是通过maxpooling进行池化操作的,maxpooling会降低特征层的高宽,其次会丢失一些细节信息和一些较小的目标,丢失的这些信息是无法通过后续的上采样进行还原的,那么就会导致在我们语义分割任务中分割的效果就不是特别的理想。

这里肯定有人会说,那我们直接去掉maxpooling,这样就不会改变特征图尺寸,如果简单粗暴把maxpooling去掉的话,那么就会引入一个新的问题。主要是去掉最大池化下采样之后会导致得到特征图他所对应原图的感受野变小了,因为最大池化下采样层是能够增大我们的感受野的。对应最大池化下采样之后的一系列卷积层他们都是在之前层的感受野之上做进一步的操作的,如果简单粗暴将最大池化下采样给移除之后,对我们后面的卷积层带来一定的问题。所以就可以使用我们输的膨胀卷积了

膨胀卷积既能增大感受野,并且还能保住源输入特征图高宽不发生变化,那是不是在我们语义分割任务中,简单粗暴的堆叠膨胀卷积,显然不是的。

在膨胀卷积使用过程中,我们经常会碰到一个名叫gridding effect的问题,可以参见论文Understanding Convolution for Semantic Segmentation

详情参考

参考B站视频:膨胀卷积详解

空洞卷积的超详细解释https://blog.csdn.net/qq_41076797/article/details/114593840

你可能感兴趣的:(object,detection,计算机视觉,深度学习,神经网络)