精华内容
下载资源
问答
  • 空洞卷积

    2020-04-17 21:39:37
    空洞卷积的意义 空洞卷积(Dilated/Atrous Convolution)最初是为解决图像语义分割的问题而提出的。常见的图像分割算法通常使用池化层来增大感受野,同时也缩小了特征图尺寸,然后再利用上采样还原图像尺寸。特征图...

    空洞卷积的意义

    空洞卷积(Dilated/Atrous Convolution)最初是为解决图像语义分割的问题而提出的。常见的图像分割算法通常使用池化层来增大感受野,同时也缩小了特征图尺寸,然后再利用上采样还原图像尺寸。特征图缩小再放大的过程造成了精度上的损失,因此需要有一种操作可以在增加感受野的同时保持特征图的尺寸不变,从而代替池化与上采样操作,在这种需求下,空洞卷积就诞生了。

    空洞卷积的定义

    空洞卷积就是跳过一些元素进行卷积。下图a代表普通3*3卷积。下图b代表空洞数为2的空洞卷积(在特征图上每两行或两列选取元素与卷积核卷积),虽然其卷积核尺寸为3*3,但是其感受野已经增大到5*5。下图c代表空洞数为3的空洞卷积。pytorch中conv2d函数的dilation参数即代表空洞数。

    上图中,同样的一个3*3卷积,却可以起到5*5、7*7等卷积的效果。可以看出,空洞卷积在不增加参数量的前提下,增大了感受野。假设空洞卷积的卷积核大小为k,空洞数为d,则其等效卷积核大小k^{'}计算如下所示:

                                                                                           k^{'}=k+\left ( k-1 \right )\left ( d-1 \right )

    空洞卷积的优缺点

    优点

    在不引入额外参数的前提下可以任意扩大感受野。同时保持特征图的分辨率不变。这一点在分割与检测任务中十分有用,感受野的扩大可以检测大物体,而特征图分辨率不变使得物体定位更加准确。

    缺点

    • 网格效应(Gridding Effect):由于空洞卷积是一种稀疏的采样方式,当多个空洞卷积叠加时,有些像素根本没有被利用到,会损失信息的连续性和相关性,进而影响分割、检测等要求较高的任务。
    • 远距离的信息没有相关性:空洞卷积是一种稀疏的采样方式,导致远距离卷积得到的结果之间缺乏相关性,进而影响分类结果。
    • 不同尺度物体的关系:大的空洞数对于大物体的分割与检测有利,但是对于小物体则有弊无利,如何处理好多尺度问题的检测,是空洞卷积设计的重点

    空洞卷积缺点的解决办法

    对于上述问题,图森未来提出了HDC(Hybrid Dilated Convolution)结构,详情请查看:https://www.zhihu.com/question/54149221

     

    本文摘抄自:《深度学习之Pytorch物体检测实战》一书

    展开全文
  • 最近用到多尺度空洞卷积相关知识,然后看了一些关于空洞卷积的博客,他们对于感受野的计算方式看的一头雾水,发现针对用到的计算公式和每一部分的含义没有相关解释,让人看了之后还是不太明白,因此,写了这一篇博客...

    最近用到多尺度空洞卷积相关知识,然后看了一些关于空洞卷积的博客,他们对于感受野的计算方式看的一头雾水,发现针对用到的计算公式和每一部分的含义没有相关解释,让人看了之后还是不太明白,因此,写了这一篇博客,以便像我这样的小白能够提供帮助!最后别忘了点赞、收藏,以便查看!

    开题之前,大家一定要区分下面两个知识点的区别,很多博客说的比较笼统,以至于造成误解!!!!!

    在这里插入图片描述
    图a、图b、图c的空洞率分别为1, 2,4。当空洞率为1时就是普通卷积。

    知识点一:当前空洞卷积感受野的大小

    当前感受野的大小,即实际卷积核大小(也可以理解为如果就他这一层的话,感受野是多少)(废话有点多,哈哈哈)

    计算公式如下:

    在这里插入图片描述中N:
    参数解释:N为当前感受野大小(理解成只有这一层卷积的话),k为卷积核大小,R为空洞率

    实例:

    图(a):N=3+(3-1)(1-1)=3
    图(b):N=3+(3-1)
    (2-1)=5
    图 ( c):N=3+(3-1)*(4-1)=9
    (对于为什么图b,图c具体为什么不是7,9,见下面的解释)

    知识点二:连续空洞卷积感受野的大小

    计算公式:

      从前往后: F后 = (F前 - 1) + K   (F前代表上一层感受野的大小, K代表当前这一层实际感受野大小,即上一步的N)
    

    实例:

    F后=(F前 - 1) + K,当没有F前时,此时F前的值为1.
    图(a):

    • 第0层:F前=1
    • 第一层:F后=(1-1)+3=3

    图(b):经过连续空洞率为1和2后,F后的计算流程如下;

    • 第0层:F前=1
    • 第一层:F后=(1-1)+3=3
    • 第二层:F后=(3-1)+5=7(因为关于上一层的感受野,所以也就和当前成的感受野的大小不一样,因此,为直观的理解,对于关于上一层的感受野,则需要带上外围(空洞率为2时,不带外围感受野大小为5,带上外围为7),不带外围,表示当前感受野的大小)

    图( c):经过连续空洞率为1、2、4后,F后的计算流程如下;

    • 第0层:F前=1
    • 第一层:F后=(1-1)+3=3
    • 第二层:F后=(3-1)+5=7
    • 第三层:F后=(7-1)+9=15

    扩展

    相对前面每一层卷积的感受野是多少

    假设有三层卷积,那么第三层对于第二层的感受野是多少,对于第一层的感受野是多少呢?

    实例:

    1. 以两层为例,
      当经过第一层正常卷积,第二层dilated rate = 2后的感受野大小如图(b)所示
      当dilated rate = 2,就是卷积核中元素之间有一个空格代表0,所以原来的3*3卷积核变成了5*5,然后计算它的感受野,就他这一层的话感受野就是5*5,如果是关于上一层的感受野,上一层采用正常卷积的话有,(R - 3 + 0) /1 + 1 = 5 —> R = 7,所以感受野就是7.
    2. 以三层为例,
      当经过第一层正常卷积,第二层dilated rate = 2, 第三层 dilated rate = 4后的感受野大小如图(C)所示
      图(C) 的感受野是15*15,是相对于前两层的感受野而言的,第三层3×3经过dilate=4后变为9*9.所以对于第二层的感受野有:(R - 5 + 0)/1 + 1 = 9 —> R = 13 , 对第一层有:(R - 3 + 0)/1 + 1 = 13 —> R = 15,所以感受野是15.

    常规卷积核感受野大小见b站视频:
    参考链接
    区别:与常规卷积的感受野大小的计算方式不同的就是连续空洞卷积中N的大小,常规卷积中N的大小是个常数3。

    展开全文
  • 吃透空洞卷积

    2021-06-18 00:17:14
    一、空洞卷积的提出空洞卷积中文名也叫膨胀卷积或者扩张卷积,英文名也叫Atrous Convolution空洞卷积最初的提出是为了解决图像分割的问题而提出的,常见的图像分割算法通常使用池化层...

    一、空洞卷积的提出

    空洞卷积中文名也叫膨胀卷积或者扩张卷积,英文名也叫Atrous Convolution

    空洞卷积最初的提出是为了解决图像分割的问题而提出的,常见的图像分割算法通常使用池化层和卷积层来增加感受野(Receptive Filed),同时也缩小了特征图尺寸(resolution),然后再利用上采样还原图像尺寸,特征图缩小再放大的过程造成了精度上的损失,因此需要一种操作可以在增加感受野的同时保持特征图的尺寸不变,从而代替下采样和上采样操作,在这种需求下,空洞卷积就诞生了(略有修改,引自[4])

    玖零猴:感受野(Receptive Field)的理解与计算@玖零猴

    https://zhuanlan.zhihu.com/p/113487374

    当然,如果不用空洞卷积这种方案,那怎么去弥补经过下采样而造成信息损失呢?其实,这是另一个思路了,于是才有了我们熟知的skip connection,它可以为上采样弥补信息,像FCN、U-Net这种典型的拓扑网络,如下图所示,其实我个人认为,如果一个问题如果从不同的思路去想的话,就会出现不同的解决方案

    图1 FCN、U-Net典型的分割拓扑结构:下采样、上采样、skip connection(图来自[6])

    空洞卷积自2016在ICLR(International Conference on Learning Representation)上才被提出后,本身是用在图像分割领域,但立马被deepmind拿来应用到语音(WaveNet)和NLP领域,它在物体检测也发挥了重要的作用,虽然不要求逐个像素检测,但对于小物体的检测也是十分重要的

    二、空洞卷积的原理

    与正常的卷积不同的是,空洞卷积引入了一个称为 “扩张率(dilation rate)”的超参数(hyper-parameter),该参数定义了卷积核处理数据时各值的间距。扩张率中文也叫空洞数(Hole Size)。

    在此以 卷积为例,展示普通卷积和空洞卷积之间的区别,如图2所示

    图2 普通卷积和空洞卷积的对比(来自[4])

    图2中从左到右分别为a、b、c子图,三幅图是相互独立进行卷积的(区别于下面图4),大框表示输入图像(感受野默认为1),黑色的圆点表示的卷积核,灰色地带表示卷积后的感受野(后面有相关计算公式,这里都是一层卷积的,直接可以看出来)

    • a是普通的卷积过程(dilation rate = 1),卷积后的感受野为3

    • b是dilation rate = 2的空洞卷积,卷积后的感受野为5

    • c是dilation rate = 3的空洞卷积,卷积后的感受野为8

    可以这么说,普通卷积是空洞卷积的一种特殊情况

    另外,空洞卷积可以增大感受野,但是可以不改变图像输出特征图的尺寸(分辨率,resolution),这句话怎么理解?

    为了更好地理解这一点,我们从一维去分析容易理解点

    图3 一维版的普通卷积(a、b)和空洞卷积(c),黑色的圆表示填充部分,a、b、c它们相互独立进行卷积 (来自[8])

    从b和c可以看出,有无空洞卷积,并不影响输出特征图的尺寸,也就是说输出特征图的尺和空洞数无关,因此可以利用空洞卷积增大感受野,而输出特征图的尺寸可以保持不变

    影响输出特征图尺寸的因素有输入特征图的尺寸  ,卷积核的大小  ,填充  ,步长  ,计算公式如下:

    由于保持特征图尺寸不变,所以导致了计算过程的计算量比较大

    保持住特征图不变,那怎么能利用多尺度信息?

    在解答这个问题之前,先补充两点知识

    知识一:我们知道,神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。

    知识二:在赢得其中一届ImageNet比赛里VGG网络的文章中,他最大的贡献并不是VGG网络本身,而是他对于卷积叠加的一个巧妙观察。1个 7 x 7 的卷积层的正则等效于 3 个 3 x 3 的卷积层的叠加。而这样的设计可以大幅度的减少参数,有正则化的效果,参数少了就没那么容易发生过拟合。这也是现在绝大部分基于卷积的深层网络都在用小卷积核的原因,常常使用3 x 3的卷积核

    一般每一层的卷积核都是用3 x 3 大小的,而每一层只要设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息,当然这样操作并不影响特征图的尺寸,这样一来,又避免下采样那样造成信息损失,同时也利用到多尺度信息,真是一举两得啊

    获取多尺度信息在视觉任务中相当重要,尤其是在Dense prediction(对每个像素进行分类)问题上,它能够提高准确性的,如语义分割

    dense prediction problems such as semantic segmentation ... to increase the performance of dense prediction architectures by aggregating multi-scale contextual information(来自[1])

    三、感受野的计算

    为了好看,我们把图2放下来

    图2 普通卷积和空洞卷积的对比(来自[4])

    从图2可以看出,同样一个  的卷积,却可以起到  、  等卷积的效果,空洞卷积在不增加参数量的前提下(参数量=卷积核大小+偏置),却可以增大感受野,假设空洞卷积的卷积核大小为  ,空洞数为  ,则其等效卷积核大小  ,例如  的卷积核,则  ,公式如下(来自[4])


    当前层的感受野计算公式如下,其中,  表示当前层的感受野,  表示上一层的感受野,  表示卷积核的大小

    表示之前所有层的步长的乘积(不包括本层),公式如下:

    同样的,当前层的步长并不影响当前层的感受野,感受野和填补(padding)没有关系

    下面举个例子练练手,此图4和上面的图2有区别,图2的三幅图是独立的,而图4是从左到右连续进行卷积,它们属于top-bottom关系

    图4 三个不同的空洞卷积,卷积核的kernel size=3, stride=1, 但是空洞卷积的dilation rate分别是1,2,4。默认初始化感受野是1。(来自[1])

    感受野的计算

    输入图像: 1

    第一层卷积:3

    第二层卷积:


    综上,得

    第三层卷积:

    综上,得

    四、潜在的问题及解决方法

    潜在问题 1:The Gridding Effect

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

    由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。这对 pixel-level dense prediction 的任务来说是致命的。

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

    远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。

    解决方案

    具体可参考[5,9]

    • Panqu Wang,Pengfei Chen, et al**.Understanding Convolution for Semantic Segmentation.//**WACV 2018

    • Fisher Yu, et alDilated Residual Networks. //CVPR 2017

    • Zhengyang Wang,et al.**Smoothed Dilated Convolutions for Improved Dense Prediction.//**KDD 2018.

    • Liang-Chieh Chen,et al.Rethinking Atrous Convolution for Semantic Image Segmentation//2017

    • Sachin Mehta,et alESPNet: Efficient Spatial Pyramid of DilatedConvolutions for Semantic Segmentation. //ECCV 2018

    • Tianyi Wu**,et al.Tree-structured Kronecker Convolutional Networks for Semantic Segmentation.//AAAI2019**

    • Hyojin Park,et al.Concentrated-Comprehensive Convolutionsfor lightweight semantic segmentation.//2018

    • Efficient Smoothing of Dilated Convolutions for Image Segmentation.//2019

    reference

    1、Yu, Fisher, and Vladlen Koltun. "Multi-scale context aggregation by dilated convolutions." arXiv preprint arXiv:1511.07122 (2015).(https://arxiv.org/abs/1511.071220)

    2、Understanding Convolution for Semantic Segmentation(https://arxiv.org/abs/1702.08502)

    3、Rethinking Atrous Convolution for Semantic Image Segmentation(https://arxiv.org/abs/1706.05587)

    4、书籍《深度学习之PyTorch物体检测实战》

    5、如何理解空洞卷积(dilated convolution)?(https://www.zhihu.com/question/54149221)

    6、U-Net++作者对U-Net的分析(https://zhuanlan.zhihu.com/p/44958351)

    7、GIF动图,加深普通卷积和空洞卷积的区别: https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md

    8、如何理解Dilated Convolutions(空洞卷积)

    9、yyfyan:总结-空洞卷积(Dilated/Atrous Convolution)(https://zhuanlan.zhihu.com/p/50369448)

    转载自:视学算法

    展开全文
  • 深度学习之空洞卷积

    2018-03-09 13:46:35
    深度学习之空洞卷积原始出处论文,介绍了空洞卷积实现方法以及实现意义。
  • 空洞卷积1

    2021-07-16 15:24:45
  • 空洞卷积理解

    2019-09-23 17:24:25
    空洞卷积如下: 空洞卷积提出原因: 池化层在增大感受野的同时降低了分辨率,为了在进行upsample的时候得到高的分辨率就需要空洞卷积 空洞卷积如何实现: 空洞卷积是在原有特征图上根据空洞的rate,得出原有...
  • TensorFlow实现卷积、反卷积和空洞卷积 TensorFlow已经实现了卷积(tf.nn.conv2d卷积函数),反卷积(tf.nn.conv2d_transpose反卷积函数)以及空洞卷积(tf.nn.atrous_conv2d空洞卷积(dilated convolution)),这...
  • 今天小编就为大家分享一篇PyTorch 普通卷积和空洞卷积实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 空洞卷积笔记

    2020-06-03 19:56:19
    看了一些空洞卷积的博客,这个知识点得自己做做笔记。看起来像语义分割里用得更多,用空洞卷积代替下采样来增大感受野,同时保持分辨率。这么说的话空洞卷积在小目标检测里应该也有一定的作用,不过听说空洞超参的...
  • 目录什么是空洞卷积为什么需要空洞卷积卷积的问题空洞卷积的好处总结空洞卷积存在的问题潜在问题 1:The Gridding Effect 什么是空洞卷积 Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积) 或者是 ...
  • 空洞卷积的理解

    2021-08-31 11:41:02
    一、空洞卷积的本质 空洞卷积(dilated convolution)在标准卷积里注入空洞,增加感受野(reception filed)。 空洞卷积比普通卷积多了个超参数称为dilation rate,指的是kernel的间隔数量。普通卷积的dilation rate...
  • 空洞卷积、转置卷积

    2019-11-10 11:59:45
    Atrous Convolution 空洞卷积 空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions),向卷积层引入了一个称为“扩张率(dilation rate)"的新参数,该参数定义了卷积核处理数据时各值的间距。空洞...
  • 空洞卷积
  • 空洞卷积(多孔卷积)

    千次阅读 2018-10-07 22:01:09
    Dilated/Atrous conv 空洞卷积/多孔卷积 什么是空洞卷积? Dilated convolution/Atrous convolution 可以叫空洞卷积或者扩张卷积。 空洞卷积诞生于图像分割领域,图像输入到网络中经过CNN提取特征,再经过...
  • 空洞卷积计算感受野

    2021-02-22 14:50:32
    空洞卷积感受野的计算: 空洞卷积感受野的大小分两种情况: (1)不带padding的空洞卷积: 若空洞卷积率为dilate rate 则感受野尺寸=(dilate rate-1)×(k-1) + k #k为卷积核大小; 不带padding的感受野其实就是添加...
  • 空洞卷积与反卷积

    千次阅读 2018-09-23 12:09:09
    空洞卷积(dilated conv),也称扩张卷积。空洞卷积可以在kernel有效增大感受野的同时不增加模型参数或者计算量。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能较好的应用空洞卷积。在...
  • 空洞卷积能够在不减小感受野的情况下降低空间特征的损失,可以获取long-ranged information。但是也有弊端:比如空间上的连续所能给出的信息可能因此而丢失(比如边缘之类的),同时对于小物体的分割未必有利。同时,...
  • 空洞卷积实现代码

    2021-04-29 22:20:35
    经过几天的学习理论知识和实践,终于把unet跟空洞卷积结合了。 还没看过空洞卷积的请看下面链接 空洞卷积理论知识 代码 uent.py import numpy as np import os import skimage.io as io import skimage.transform as...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,304
精华内容 2,121
关键字:

空洞卷积