ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【扩张卷积or空洞卷积】如何理解Dilated Convolutions(空洞卷积)

2019-07-23 10:39:14  阅读:757  来源: 互联网

标签:Dilated kernel 卷积 感受 空洞 理解 图像


文章来源:https://blog.csdn.net/alxe_made/article/details/88594550

 

1. 扩张卷积的提出

  1. Multi-Scale Context Aggregation by Dilated Convolutions
  2. Dilated Residual Networks
  3. 论文笔记——CVPR 2017 Dilated Residual Networks

在图像分割领域,图像输入到CNN(典型的网络比如FCN)中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作,之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,不通过pooling也能有较大的感受野看到更多的信息呢?答案就是dilated conv。

这里的话我们就主要介绍一下扩张卷积的理解,具体在图像分割或者语音合成、机器翻译应用暂时不做考虑。

2. 理解的难点

其实上来就给出这个图,确实有点不知所云,有几个问题需要我们回答:

3. 感受野

在理解上面这个公式之前,我们先理解一下感受野这个含义。

参考:

1.A guide to receptive field arithmetic for Convolutional Neural Networks
2.你知道如何计算CNN感受野吗?这里有一份详细指南

然后看完之后我们才可以进行下面的内容,我们截取其中重要的图进行说明:

4. 计算空洞卷积感受野

 空洞卷积就是在传统的卷积中加入了一个dilation rate这个系数。可以从两个方面理解这个参数,从原图像层面理解:就是我们对原图以(dilation rate-1)进行间隔采样;从卷积核自身的角度来看,我们相当于在未使用空洞卷积的卷积核中,在其内部插入(dilation rate-1)个0,可以理解为使用空洞卷积之后我们卷积核的尺寸变大了。后面的公式推导中,我们按照后面一种理解进行讲述。
下图是空洞卷积的动态示意图:

                                             å¨è¿éæå¥å¾çæè¿°

Dilated Convolution with a 3 x 3 kernel and dilation rate 2

4.1 从一个简单的一维例子出发

为了更好理解空洞卷积,我们从一维入手:

a: 卷积核大小是3,然后移动的步长是2,padding是1
b: 卷积核大小是3,移动的步长是1,padding是1
c.卷积核大小是3,移动的步长是1,dilation rate是2

然后我们着重对比b和c两张图,考虑亮黄色的神经元,我们在b中视野(感受野)只有2-4,也就是只有3;在c图中我们的视野变成了1-5,也就是感受野变成了5,增加了感受野了。那么为什么感受野变成了5?
    我们可以这样理解,从b到c图,我们仅仅是使用了空洞卷积,按照上面对空洞卷积第二层理解也就是从卷积核的角度出发,我们相当于在kernel size内部每隔一个卷积核插入(dilation rate - 1)个0,共插入(kernel-1)次。再加上原始的卷积核的感受野,可以这样计算:
kernel_size_after_dilate = (dilate rate -1) * (kernel_size_before_dilate - 1) + kernel_size_before_dilate

这里是dilation rate是2,kernel_size_before_dilate=3。因此我们的kernel_size_after_dilate感受野为:(2-1)*(3-1)+3 = 5。 这里第一个3代表的原始的感受野,也就是kernel size大小,这里是3。

4.2 一个稍微复杂的例子

5. 最初的四个问题

在第二小节中我们提出了四个问题,现在我们可以尝试回答一下:

  1. 红点代表什么意思?代表的是感受野的中心~
  2. 为什么扩张卷积导致图像尺寸不变?

从4.1那个一维的例子出发我们可以直观的理解,空洞卷积只是可以以指数形式提高网络的感受野,但是不改变图像输出的特征图。特征图的计算可以依据:

3.图中最外层图像的代表什么?

代表的就是感受野的大小

其实这个公式自己并不是特别理解,也不是特别好用,感觉不具有一般性。

下面是关于多尺度的一些理解:

  1. 机器学习基础–多尺度
  2. 多尺度 理解

个人理解,理解多尺度首先理解尺度空间,我们的尺度空间是分辨率是相同的,然后使用不同的高斯核(传统反向);从直觉上说,这个多尺度是模仿人类的视网膜的特征,不同的距离看的物体模糊是不同的,离我们越远,然后越模糊,从而我们看到全局信息;离我们越近的话,我们看的越清楚,然后看到的是局部信息。从cnn网络来看我们使用不同的conv层,(缩放到同一尺寸下面)。越深的卷积层提取出的特征图越抽象,提取到的特征更高级。所以这个就相当于是一种不同的尺度下的特征(分辨率一致)这么理解的。而多和多尺度相对应的是多分辨率,他的分辨率不是不变的,常见的是图像金字塔,它的分辨率是逐渐缩小的

7. Tensorflow和Pytorch使用空洞卷积

7.1 Tensorflow

tf.nn.atrous_conv2d()

参考:

  1. tensorflow实现空洞卷积(dilated connvolution也叫扩张卷积)

 

7.2 Pytorch

参考文章:

  1. PyTorch 普通卷积和空洞卷积

 

 

标签:Dilated,kernel,卷积,感受,空洞,理解,图像
来源: https://blog.csdn.net/qq_36338754/article/details/96969208

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有