Dilated conv,中文叫做空洞卷积或者扩张卷积,起源于语义分割,大部分文章也用于语义分割,具体能否对其他应用有价值姑且还不知道,但确实是一个不错的探究方向。

感受野(receptive field):CNN中,某一层输出结果中一个元素所对应的输入层的区域大小,感受野是卷积核在图像上看到的大小,例如3×3卷积核的感受野大小为9。越大的感受野包含越多的上下文关系。

  • 膨胀卷积与普通的卷积相比:除了卷积核的大小以外,还有一个扩张率(dilation rate)参数,主要用来表示膨胀的大小。
  • 膨胀卷积与普通卷积的相同点在于:卷积核的大小是一样的,在神经网络中即参数数量不变,区别在于膨胀卷积具有更大的感受野。
  • 对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长
  • 适用情况:在图像需要全局信息、语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv。

膨胀卷积:保持参数个数不变的情况下增大了卷积核的感受野,让每个卷积输出都包含较大范围的信息;同时它可以保证输出的特征映射(feature map)的大小保持不变。一个扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,但参数数量仅为9个,是5×5卷积参数数量的36%。

传统卷积: 空洞卷积

感受野:d*f + (d-1)

(a) 普通卷积,1-dilated convolution,卷积核的感受野为3×3=93×3=9。                    1*3 + 0
(b) 膨胀卷积,2-dilated convolution,卷积核的感受野为7×7=497×7=49。                2*3 + 1
(c) 膨胀卷积,4-dilated convolution,卷积核的感受野为15×15=22515×15=225。    4*3 + 3

1. 诞生背景

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

Deep CNN 对于其他任务还有一些致命性的缺陷。较为著名的是 up-sampling 和 pooling layer 的设计。这个在 Hinton 的演讲里也一直提到过。

主要问题有:

  1. Up-sampling / pooling layer (e.g. bilinear interpolation) is deterministic. (a.k.a. not learnable)
  2. 内部数据结构丢失;空间层级化信息丢失。
  3. 小物体信息无法重建 (假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建。)

在这样问题的存在下,语义分割问题一直处在瓶颈期无法再明显提高精度, 而 dilated convolution 的设计就良好的避免了这些问题。

dilated convolution优点:

  • 内部数据结构的保留;

  • 避免使用 down-sampling 这样的特性

题主提到的这篇文章 MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS 可能(?) 是第一篇尝试用 dilated convolution 做语义分割的文章。后续图森组和 Google Brain 都对于 dilated convolution 有着更细节的讨论,推荐阅读:Understanding Convolution for Semantic Segmentation Rethinking Atrous Convolution for Semantic Image Segmentation 。

2. 区别:deconv  & dilated conv

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

(1) s>1,即卷积的同时做了downsampling,卷积后图像尺寸减小;pooling = downsampling

(2) s=1,普通的步长为1的卷积,比如在tensorflow中设置padding=SAME的话,卷积的图像输入和输出有相同的尺寸大小;

(3) 0<s<1,fractionally strided convolution,相当于对图像做upsampling。比如s=0.5时,意味着在图像每个像素之间padding一个空白的像素后,stride改为1做卷积,得到的feature map尺寸增大一倍。

  • dilated conv不是在像素之间padding空白的像素,而是在已有的像素上,skip掉一些像素,或者输入不变(输入图像尺寸不变,没有信息损失),对conv的kernel参数中插一些0的weight,达到一次卷积看到的空间范围变大的目的。

  • 当然将普通的卷积stride步长设为大于1,也会达到增加感受野的效果,但是stride大于1就会导致downsampling,图像尺寸变小(在先减小再增大尺寸的过程中,有一些信息损失掉)。

3. 空洞卷积的问题及解决

对于 dilated convolution, 我们已经可以发现他的优点,即内部数据结构的保留和避免使用 down-sampling 这样的特性。但是完全基于 dilated convolution 的结构如何设计则是一个新的问题。

潜在问题 1:The Gridding Effect

假设我们仅仅多次叠加 dilation rate 2 的 3 x 3 kernel 的话,则会出现这个问题:

我们发现我们的 kernel 并不连续,也就是并不是所有的 pixel 都用来计算了,因此这里将信息看做 checker-board 的方式会损失信息的连续性。这对 pixel-level dense prediction 的任务来说是致命的。

潜在问题 2:Long-ranged information might be not relevant.

我们从 dilated convolution 的设计背景来看就能推测出这样的设计是用来获取 long-ranged information。然而光采用大 dilation rate 的信息或许只对一些大物体分割有效果,而对小物体来说可能则有弊无利了。如何同时处理不同大小的物体的关系,则是设计好 dilated convolution 网络的关键。

解决:通向标准化设计Hybrid Dilated Convolution (HDC)

对于上个 section 里提到的几个问题,图森组的文章对其提出了较好的解决的方法。他们设计了一个称之为 HDC 的设计结构。

第一个特性是,叠加卷积的 dilation rate 不能有大于1的公约数。比如 [2, 4, 6] 则不是一个好的三层卷积,依然会出现 gridding effect。

第二个特性是,我们将 dilation rate 设计成 锯齿状结构,例如 [1, 2, 5, 1, 2, 5] 循环结构。

第三个特性是,我们需要满足一下这个式子: 

其中  是 i 层的 dilation rate 而是指在 i 层的最大dilation rate,那么假设总共有n层的话,默认。假设我们应用于 kernel 为 k x k 的话,我们的目标则是  ,这样我们至少可以用 dilation rate 1 即 standard convolution 的方式来覆盖掉所有洞。

一个简单的例子: dilation rate [1, 2, 5] with 3 x 3 kernel (可行的方案)

而这样的锯齿状本身的性质就比较好的来同时满足小物体大物体的分割要求(小 dilation rate 来关心近距离信息,大 dilation rate 来关心远距离信息)。

这样我们的卷积依然是连续的也就依然能满足VGG组观察的结论,大卷积是由小卷积的 regularisation 的 叠加。

膨胀卷积(Dilated convolution)相关推荐

  1. 膨胀卷积dilated convolution 相关

    [时间]2019.03.10 [题目]膨胀卷积dilated convolution 相关及keras实现 1.Dilated Convolution 2.Dilated Convolutions 空 ...

  2. 膨胀卷积(空洞卷积 dilated convolution)

    学习的B站大佬的视频大部分图片来自于课中,文章结尾有大佬视频链接,以及阅读<深度学习之pytorch物体检测实战>,刚开始学习可能有些错误,希望大佬指正 1.空洞卷积了解 空洞卷积最初是为 ...

  3. 空洞卷积(dilated convolution)理解

    1.简介 Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积) 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convoluti ...

  4. 膨胀卷积(DILATED CONVOLUTIONS)

    膨胀卷积(DILATED CONVOLUTIONS)是在卷积核的元素之间插入一些额外的空间,而插入空间的量由参数膨胀因子d (dilation rate)来控制, 通常有d-1个空间在卷积核元素之间被 ...

  5. 如何理解扩张卷积(dilated convolution)

    原理 扩张卷积(Dilated Convolution)也被称为空洞卷积或者膨胀卷积,是在标准的卷积核中注入空洞,以此来增加模型的感受野(reception field).相比原来的正常卷积操作,扩张 ...

  6. casual Convolution因果卷积、空洞卷积dilated convolution、Hybrid Dilated Convolution (HDC)

    1.因果卷积 2.空洞因果卷积 3.HDC https://blog.csdn.net/qq_26369907/article/details/97624028 https://blog.csdn.n ...

  7. 空洞卷积/扩张卷积(Dilated convolution)-笔记

    空洞卷积/膨胀卷积 (1)普通卷积操作 3*3的kernel,上方深绿色为输出特征图,下方蓝色为原输入图 (2)空洞卷积 其中r为扩张率,指的是卷积核的点的间隔数量.特别的,当r=1时,为普通卷积. ...

  8. 命名实体识别_用膨胀卷积进行命名实体识别 NER

    BiLSTM+CRF 是命名实体识别中最为流行的模型,但是 LSTM 需要按顺序处理输入的序列,速度比较慢.而采用 CNN 可以更高效的处理输入序列,本文介绍一种使用膨胀卷积进行命名实体识别的方法 I ...

  9. 膨胀卷积的缺点_膨胀卷积学习笔记

    膨胀卷积 (Dilated Convolution,也称为空洞卷积),与标准的卷积核不同,膨胀卷积在 kernel 中增加了一些空洞,从而可以扩大模型的感受野. 1.膨胀卷积和标准卷积区别 我们先通过 ...

  10. 语义分割学习笔记(四)膨胀卷积

    推荐课程: 1.膨胀卷积_哔哩哔哩_bilibili(膨胀卷积原理讲的很清楚) 2.膨胀卷积(Dilated convolution)详解_哔哩哔哩_bilibili(gradding effect问 ...

最新文章

  1. UA SIE545 优化理论基础 函数凸性的一些有趣的判断方法
  2. 用 JMX 检测应用程序
  3. SonarQube4.4+Jenkins进行代码检查实例之一
  4. 数据库修改,删除的操作必须有保险操作。
  5. 利用usb远程控制linux,Linux编程控制硬件(5) ---- 操作USB手柄
  6. x264编码参数大测试:03 subme与crf(c)
  7. 一步步编写操作系统 39 二级页表1
  8. Android:应用商城
  9. 你关注过浏览器最小字体为多大吗?
  10. 51单片机原理以及接口技术(四)--80C51的程序设计
  11. [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  12. TortoiseSVN 汉化
  13. 课程之Windows主机基本配置与管理、磁盘配额
  14. 一度智信|关于拼多多店铺数据分析细节
  15. texlive和texstudio安装及使用
  16. 抄码器视频教程牛羊抄码器冷库抄码机进口牛羊肉冷库冷冻肉抄码器怎么设置
  17. python从入门到撩妹 2 —— 30行代码实现520小彩蛋
  18. 手机和PC站点击商务通无轨迹解决方法
  19. 产品经理修炼需要注意的七个点
  20. 【毒思】纪念我死去的爱情

热门文章

  1. 【Scratch】青少年蓝桥杯_每日一题_2.23_小猫来回走
  2. 数据结构-简单实现二叉树的先序、中序、后序遍历(java)
  3. 不定积分24个基本公式_高分攻略丨语文阅读理解的24个万能答题公式
  4. mysql聚集索引可以多列吗_MySQL使用单列索引和多列索引
  5. UpTime:供电、系统、网络、制冷——2020年数据中心宕机四大主因
  6. 2020边缘计算状态报告:2028年企业IT基础设施边缘支出将达87亿美元
  7. 关于对2020年数据中心的发展的8个预测
  8. 云上效率提升指南 | K8S和Serverless还能这么玩
  9. java 递归_Java的递归、如何与流相结合
  10. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测