为什么用空洞卷积?

普通的Deep CNN中普遍包含Up-sampling / pooling layer,导致

  • 内部数据结构丢失;空间层级化信息丢失。

  • 小物体信息无法重建 (假设有四个pooling layer 则任何小于 2^4 = 16 pixel 的物体信息在理论上将无法重建和分割。)
    普通卷积过程如下:

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

  • 空洞卷积是可以在不做pooling损失信息的情况下,指数级增加感受野,让每个卷积输出都包含较大范围的信息。

  • 不降低图像高分辨率的前提下增加感受野,能够很好的结合上下文信息,从而精细语义分割效果。
    空洞卷积过程如下:


上图是一个扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,而且仅需要9个参数。
在相同的计算条件下,空洞卷积提供了更大的感受野。空洞卷积经常用在实时图像分割中。当网络层需要较大的感受野,但计算资源有限而无法提高卷积核数量或大小时,可以考虑空洞卷积。

空洞卷积

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

下图对于膨胀率有一个比较直观的体现:

  dilation rate=1          dilation rate=2       dilation rate=4
假设原始特征为feat0

  • 首先使用扩张率为1的空洞卷积生成feat1,feat1上一点相对feat0感受野为3*3(如图a);

  • 然后使用扩张率为2的空洞卷积处理feat1生成feat2(如图b),使第一次空洞卷积的卷积核大小等于第二次空洞卷积的一个像素点的感受野,图b即feat1上一个点综合了图a即feat0上3*3区域的信息,则生成的feat2感受野为7*7,即整个图b深色区域;

  • 第三次处理同上,第二次空洞卷积的整个卷积核大小等于第三次空洞卷积的一个像素点的感受野,图c即feat2上每个点综合了feat0上7*7的信息(感受野),则采用扩张率为3的空洞卷积,生成的feat3每一个点感受野为15*15

相比较之下,使用stride为1的普通3*3卷积,三层之后感受野仅仅为(kernel-1)*layer+1=7。
由此可见,感受野大大增加!
膨胀率为2 的卷积核:

空洞卷积目前存在的问题

  • 感受野跳跃问题
    假设仅仅多次叠加 dilation rate=2 的 3 x 3 kernel 的话,则会出现这个问题:

    会发现得到的感受野并不连续,也就是并不是所有的 pixel 都用来计算了,因此这里将信息看做 checker-board (棋盘效应)的方式会损失信息的连续性。这对 pixel-level dense prediction 的任务来说是致命的。

空洞卷积计算

感受野计算

(1)正常图像空洞卷积:
感受野尺寸 size=(dilation−1)∗(kernelsize−1)+kernelsizesize=(dilation-1)*(kernelsize-1) + kernelsize size=(dilation−1)∗(kernelsize−1)+kernelsize kernelsize为卷积核大小

(2)padding的空洞卷积:
感受野尺寸 size=2∗(dilation−1)∗(kernelsize−1)+kernelsizesize=2 *(dilation-1)*(kernelsize-1)+kernelsize size=2∗(dilation−1)∗(kernelsize−1)+kernelsize kernelsize为卷积核大小

卷积核大小、图像输出尺寸计算

其中一种计算方法

这里引入了一个新的超参数 dilation,(dilation - 1) 的值则为塞入的空格数,假定原来的卷积核大小为 k,那么塞入了 (dilation - 1) 个空格后的卷积核大小 n 为:
n=k+(k−1)∗(dilation−1)n=k+(k-1)*(dilation-1)n=k+(k−1)∗(dilation−1)
进而,假定输入空洞卷积的图像尺寸大小为 i,步长 为 s ,空洞卷积后特征图大小 o 的计算公式为:
o=[i+2p−k−(k−1)∗(dilation−1)s]+1o=[\frac{i+2p-k-(k-1)*(dilation-1)}{s}] +1o=[si+2p−k−(k−1)∗(dilation−1)​]+1

另外一种计算方法
定义:w-图片宽度 h-图片高度 s-卷积步长 p-padding  f-卷积核的大小 d-空洞卷积参数

普通卷积之后特征图计算公式:
w(out)=(w(in)−f+2ps)+1w(out)=(\frac{w(in)-f+2p}{s})+1w(out)=(sw(in)−f+2p​)+1
h(out)=(h(in)−f+2ps)+1h(out)=(\frac{h(in)-f+2p}{s})+1h(out)=(sh(in)−f+2p​)+1
进行空洞卷积后的计算公式:
w(out)=(w(in)+2p−1−(f−1)∗ds)+1w(out)=(\frac{w(in)+2p-1-(f-1)*d}{s})+1w(out)=(sw(in)+2p−1−(f−1)∗d​)+1
h(out)=(h(in)+2p−1−(f−1)∗ds)+1h(out)=(\frac{h(in)+2p-1-(f-1)*d}{s})+1h(out)=(sh(in)+2p−1−(f−1)∗d​)+1

空洞卷积(扩张卷积dilated convolution)相关推荐

  1. DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Dilated Con ...

  2. DL之CNN:卷积神经网络算法简介之卷积矩阵、转置卷积(反卷积Transpose)、膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略

    DL之CNN:卷积神经网络算法简介之卷积矩阵.转置卷积(反卷积Transpose).膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略 目录 卷积矩阵的简介 卷积.转置卷积--Tran ...

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

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

  4. 空洞卷积(Atrous/Dilated Convolution)

    由Deeplabv1提出的. 有两种实现方式: 一,卷积核填充0. 二,输入等间隔采样. 扩张率(dilation rate),也叫空洞数(Hole Size). 标准卷积可以看做空洞卷积rate=1 ...

  5. 空洞卷积atrous/dilated convolution

    1.定义 空洞卷积(atrous/dilated convolution)又称膨胀卷积是针对图像语义分割问题中下采样会降低图像分辨率.丢失信息而提出的一种卷积思路.空洞卷积向卷积层引入了一个称为&qu ...

  6. Multi-Scale Context Aggregation by Dilated Convolution 对空洞卷积(扩张卷积)、感受野的理解

    dilated convolution是针对图像语义分割问题中下采样会降低图像分辨率.丢失信息而提出的一种卷积思路. 在基于FCN思想的语义分割问题中,输出图像的size要和输入图像的size一致.但 ...

  7. 膨胀卷积(Dilated convolutions)(又叫空洞卷积、扩张卷积)

    一.背景 论文:Multi-Scale Context Aggregation by Dilated Convolutions   大部分图像分割的框架都是经历一系列的卷积和下采样的模块之后,再不断与 ...

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

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

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

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

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

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

最新文章

  1. 困扰数学家50年的问题,竟被博士小姐姐用一周业余时间解决了
  2. 一個简单的okhttp访问网络的例子
  3. 杜甫在线演唱《奇迹再现》、兵马俑都能开口说话……微博网友用AI技术分分钟打破次元壁...
  4. 深度学习主机环境配置: Win10+Nvidia GTX 1080i+CUDA8.0+CUDDN6
  5. 【转】C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?
  6. matlab中有哪些输出函数,MATLAB中查找并输出的函数有什么
  7. 合并排序 非递归 java_合并排序-非递归
  8. 从0到1:打造移动端H5性能测试平台
  9. python修改第三方库重写_对Python第三方库,再次封装
  10. html使用iframe包含pdf文件,react项目利用iframe显示pdf文件并打印
  11. 微信小程序页面实现防抖
  12. threejs的环境光+点光源+平行光源+球面光 以及hepler理解+阴影()
  13. pcf8591c语言编程,PCF8591应用程序
  14. C++对象模型学习——构造函数语意学
  15. 云控系统机房搭建为什么用到网络交换机?
  16. idea提示:无法解析 文件 ‘xxx.xml‘,servelet应该有mapping
  17. 关于九针串口的公头和母头
  18. Linux系统ifconfig命令没有显示eth0,只有lo,且ip显示为127.0.0.1
  19. 【webrtc QOS】视频帧率、分辨率自适应
  20. 数据挖掘导论 复习一(介绍+数据预处理方法+定性归纳)

热门文章

  1. 安装原生Win7-SP1重要补丁
  2. 华为平板解锁工具_华为平板M6 10.8英寸首发评测 办公+影音+智能全面开花
  3. VBA编程基础和编程环境(二)
  4. 用 reStructuredText 写作:快速入门指南
  5. 《数字信号处理》——(一).DTFT、DFT(python实现)
  6. 一个基于QT的开源串口调试工具
  7. Mirth Connect 第三章 创建通道
  8. Debian分区工具partman
  9. Diamond软件的使用(6)--Lattice原语基本概念
  10. MMC-HVDC仿真模型,pscad柔性直流输电仿真mmc仿真模型,双端mmc模型,MMC为21电平NLM和均压控制