一.提出原因

空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。

dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv。

二.空洞卷积

Dilated/Atrous Convolution 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convolution map 里注入空洞,以此来增加 reception field。相比原来的正常convolution,dilated convolution 多了一个 hyper-parameter 称之为 dilation rate 指的是kernel的间隔数量(e.g. 正常的 convolution 是 dilatation rate 1)。

利用添加空洞扩大感受野,让原本3 x3的卷积核,在相同参数量和计算量下拥有5x5(dilated rate =2)或者更大的感受野,从而无需下采样。扩张卷积(dilated convolutions)又名空洞卷积(atrous convolutions),向卷积层引入了一个称为 “扩张率(dilation rate)”的新参数,该参数定义了卷积核处理数据时各值的间距。换句话说,相比原来的标准卷积,扩张卷积(dilated convolution) 多了一个hyper-parameter(超参数)称之为dilation rate(扩张率),指的是kernel各点之前的间隔数量,正常的convolution 的 dilatation rate为 1。


(a)图对应3x3的1-dilated conv,和普通的卷积操作一样。(b)图对应3x3的2-dilated conv,实际的卷积kernel size还是3x3,但是空洞为1,需要注意的是空洞的位置全填进去0,填入0之后再卷积即可。【此变化见下图】(c)图是4-dilated conv操作。

在上图中扩张卷积的感受野可以由以下公式计算得到


其中i+1表示dilated rate。

比如上图中(a),dilated=1,F(dilated) = 3×3;图(b)中,dilated=2,F(dilated)=7×7;图(c)中,dilated=4, F(dilated)=15×15。dilated=2时具体的操作,即按照下图在空洞位置填入0之后,然后直接卷积就可以了。


在相同的计算条件下,空洞卷积提供了更大的感受野。空洞卷积经常用在实时图像分割中。当网络层需要较大的感受野,但计算资源有限而无法提高卷积核数量或大小时,可以考虑空洞卷积

但是!有一个问题一直困扰着我,对空洞卷积而言,他的中间有一部分都是0,那么使用这些0元素进行卷积的pixel,信息不会丢失吗?,通过查阅资料,这恰好是空洞卷积所存在的问题之一

潜在问题 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] 循环结构。

第三个特性是,我们需要满足一下这个式子:
M i = max ⁡ [ M i + 1 − 2 r i , M i + 1 − 2 ( M i + 1 − r i ) , r i ] M_i=\max[M_{i+1}-2r_i,M_{i+1}-2(M_{i+1}-r_i),r_i] Mi​=max[Mi+1​−2ri​,Mi+1​−2(Mi+1​−ri​),ri​]

其中 r i r_i ri​是第 i i i层的dilation rate,而 M i M_i Mi​ 是指在 i 层的最大dilation rate,那么假设总共有n层的话,默认 M n = r n M_n=r_n Mn​=rn​,假设我们应用于 kernel 为 k ∗ k k * k k∗k 的话,我们的目标则是 M 2 ≤ k M_2\leq k M2​≤k ,这样我们至少可以用 dilation rate 1 即 standard convolution 的方式来覆盖掉所有洞。

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

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

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

以下的对比实验可以明显看出,一个良好设计的 dilated convolution 网络能够有效避免 gridding effect.

多尺度分割的另类解:Atrous Spatial Pyramid Pooling (ASPP)

在处理多尺度物体分割时,我们通常会有以下几种方式来操作:

然仅仅(在一个卷积分支网络下)使用 dilated convolution 去抓取多尺度物体是一个不正统的方法。比方说,我们用一个 HDC 的方法来获取一个大(近)车辆的信息,然而对于一个小(远)车辆的信息都不再受用。假设我们再去用小 dilated convolution 的方法重新获取小车辆的信息,则这么做非常的冗余。

基于港中文和商汤组的 PSPNet 里的 Pooling module (其网络同样获得当年的SOTA结果),ASPP 则在网络 decoder 上对于不同尺度上用不同大小的 dilation rate 来抓去多尺度信息,每个尺度则为一个独立的分支,在网络最后把他合并起来再接一个卷积层输出预测 label。这样的设计则有效避免了在 encoder 上冗余的信息的获取,直接关注与物体之间之内的相关性。

参考文章:

https://zhuanlan.zhihu.com/p/89425228
https://www.zhihu.com/question/54149221

深入理解空洞卷积:优点以及存在问题相关推荐

  1. 如何理解空洞卷积(dilated convolution)

    论文:Multi-scale context aggregation with dilated convolutions 简单讨论下dilated conv,中文可以叫做空洞卷积或者扩张卷积.首先介绍 ...

  2. 如何理解空洞卷积(dilated convolution)ID-CNN

    作者:谭旭 链接:https://www.zhihu.com/question/54149221/answer/192025860 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 简单讨论下d ...

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

    文章来源:https://blog.csdn.net/alxe_made/article/details/88594550 1. 扩张卷积的提出 Multi-Scale Context Aggrega ...

  4. 卷积、转置卷积、可分离卷积、分组卷积、空洞卷积的理解

    文章目录 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 转置卷积 深度可分离卷积 分组卷积 空洞卷积 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 这里主要是汇总一些本人觉得比较好的文 ...

  5. [卷积核]空洞卷积(转)

    转自: https://www.cnblogs.com/hellcat/p/9687624.html 目录 一.空洞卷积的提出 二.空洞卷积原理 三.空洞卷积问题 感受野跳跃 小尺度物体检测 四.网络 ...

  6. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍 关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional networ ...

  7. 空洞卷积(Dilated Convolution):有之以为利,无之以为用

    https://www.toutiao.com/a6695893685260780044/ 原论文链接 https://arxiv.org/pdf/1705.09914.pdf 一.论文核心 < ...

  8. Dilated/Atrous conv 空洞卷积/多孔卷积

    Dilated/Atrous conv 空洞卷积/多孔卷积 原文链接:https://blog.csdn.net/silence2015/article/details/79748729 Dilate ...

  9. 卷积,特征图,转置卷积和空洞卷积的计算细节

    六月 北京 | 高性能计算之GPU CUDA培训 6月22-24日三天密集式学习  快速带你入门阅读全文> 正文共2029个字,13张图,预计阅读时间13分钟. 最近在做姿态估计的项目,在定制和 ...

最新文章

  1. 跳一跳j算法ava代码_DBSCAN聚类算法的理解与应用
  2. linux主机电影源码,求::totem电影播放机源代码!!!!
  3. Vue安装jquery插件
  4. 可扩展的TextView,ExpandableTextView与Scroller类的使用
  5. 为Sublime Text 3的C++编译器(g++)添加C++11标准的方法
  6. Nginx + tornado + supervisor部署
  7. 宏定义Define的一些用法
  8. Golang zip 压缩与解压
  9. IIC控制设计读写EEPROM
  10. jQuery MVC 科室异步联动
  11. 济南清北学堂游记 Day 2.
  12. nginx1.6.2编译安装
  13. 80端口攻击_使用 ZoomEye 寻找 APT 攻击的蛛丝马迹
  14. python把excel填充到网页_Python获取某网页数据并写入excel
  15. Type-C扩展坞自适应供电专利维权案例
  16. 【历史上的今天】7 月 1 日:分时系统之父诞生;支付宝推出条码支付;世界上第一支电视广告
  17. 计算机原材料费,计算机基础考试原材料
  18. Java(1),Java架构师之路
  19. 给博客增加豆瓣观影和阅读
  20. 川师大计算机专业好就业吗,四川师范大学好就业吗?附四川师范大学就业率最高的专业名单...

热门文章

  1. java错误信息表_java报表
  2. Java周末舞会算法
  3. python中简述对象和类的关系_Python笔记-习题42 对象、类及从属关系
  4. ADS(Authenticated data structure)
  5. 您的首个 App 内购买项目必须以新的 App 版本提交
  6. php++内购续期订阅,appstore:内购项目之自动续期订阅
  7. (ROS)Moveit编程示例
  8. 初学Java(三)——学习准备
  9. 如何进行文献检索和阅读(转)
  10. 【Ubuntu】SMBus Host controller not enabled(虚拟机进入不了图形界面)