美文网首页
Dilated convolution空洞卷积的理解以及Pyto

Dilated convolution空洞卷积的理解以及Pyto

作者: 苗书宇 | 来源:发表于2018-12-03 17:33 被阅读0次

    1、Dilated convolution介绍

           DilatedDilated convolution:空洞卷积或者扩张卷积(同 Atrous convolutionconvolution)

           Dialted convolution最先在使用图像分割领域,图像输入到CNN中提取特征(如FCN),FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作,deconv可参见知乎答案如何理解深度学习中的deconvolution networks?)总结来说:包括pooling操作增加感受野和Upsampling扩大至原图尺寸。但是此过程中会由于Pooling操作产生信息的损失,不利于分割或者目标检测。Dilated convolution就是为了在不是用pooling操作损失信息也能增加感受野。

            Dilated 示意图如下:

    Dialted示意图

            概念介绍:空洞卷积的rate,代表传统卷积核的相邻之间插入rate-1个空洞数。当rate=1时,相当于传统的卷积核。

           从两个角度考虑空洞卷积:

         (1)从kernel(卷积核)角度:相当于在标准概念的kernel(卷积核)中,相邻点之间添加rate-1个0,然后使用扩张后的kernel(卷积核)与原图进行卷积。如下图rate=2,相当于标准的3*3卷积核变为5*5卷积核,每一行中间添加2-1个0

         (2)从原图角度:使用标准概念的kernel(卷积核)在原图中每隔rate-1进行像素点卷积采样。如下图rate=2,在原图中每隔rate-1进行卷积。

    Dilated convolution rate=2,kernel(3x3)

            F*F的Feature map经过kernel size(k),padding(p), stride(s), rate(r) Dilated convolution卷积输出的大小:

            使用标准卷积的计算为:

    标准卷积计算方式

            使用Dilated卷积的计算公式为:

    空洞卷积计算公式

            例子:7*7的feature map,kernel size = 3, padding = 0,stride = 1,rate =2

            标准卷积后大小F为(7-3+0)/1+1 = 5,Dilated卷积后大小F为[7-(3+2*1)+0]/1+1=3

    2、Dilated convolution在Pytorch实现

            在Pytorch中可以在torch.nn.Conv2D(,,,,,,,dilated=rate)实现。

            上述例子使用Pytorch实现过程如下:

    Dilated convolution的Pytorch实现

    Reference:

            知乎:如何理解空洞卷积(dilated convolution)?

           https://blog.csdn.net/silence2015/article/details/79748729

                     

    相关文章

      网友评论

          本文标题:Dilated convolution空洞卷积的理解以及Pyto

          本文链接:https://www.haomeiwen.com/subject/pfzycqtx.html