标准卷积可以看做空洞卷积rate=1(Note:rate=2表示中间空洞间隙为1)的特殊形式 中间的空洞间隙,计算感受野的时候,也属于感受野的有效范围。 空洞卷积可以在不需要引入额外参数的前提下,任意扩大感受野。 一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标。因此空洞卷积主要应用于检测、分割。 因为空洞卷积得到的某一层的结果中,邻近的像素是从相互独立的子集中卷积得到的,相互之间缺少依赖。 远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。 deeplabv3在v2基础上进一步探索空洞卷积,分别研究了级联ASPP与并联ASPP两种结构。 总结-空洞卷积(Dilated/Atrous Convolution)
我们知道正常的卷积已经能够提取特征了,那么空洞卷积又是做什么的呢? 空洞卷积(atrous convolutions),又称扩张卷积(dilated convolutions),向卷积层引入了一个成为“扩张率(dilated rate)”的新参数,该参数定义了卷积核处理数据时各值的间距 下图是正常卷积核空洞卷积的动态图对比: 下图为卷积核为3x3,步长为1的普通卷积: ? 下图为卷积核为3x3,步长为1,扩张率为1的空洞卷积: ? 对比上两动图,先感受下区别。 空洞卷积有什么用呢? 所以总的来说,空洞卷积主要作用: 不丢失分辨率的情况下扩大感受野 调整扩张率获得多尺度信息 不丢失分辨率的情况下扩大感受野: 我们通过图例来看下空洞卷积是如何发挥作用的? 首先空洞卷积是怎么在不丢失特征分辨率的情况下扩大感受野,看下图: ?
导读 空洞卷积在图像分割需要增加感受野同时保持特征图的尺寸的需求中诞生,本文详细介绍了空洞卷积的诞生、原理、计算过程以及存在的两个潜在的问题,帮助大家将空洞卷积这一算法“消化吸收”。 一、空洞卷积的提出 空洞卷积中文名也叫膨胀卷积或者扩张卷积,英文名也叫Atrous Convolution 空洞卷积最初的提出是为了解决图像分割的问题而提出的,常见的图像分割算法通常使用池化层和卷积层来增加感受野 在此以 卷积为例,展示普通卷积和空洞卷积之间的区别,如图2所示 图2 普通卷积和空洞卷积的对比(来自[4]) 图2中从左到右分别为a、b、c子图,三幅图是相互独立进行卷积的(区别于下面图4),大框表示输入图像 3 b是dilation rate = 2的空洞卷积,卷积后的感受野为5 c是dilation rate = 3的空洞卷积,卷积后的感受野为8 可以这么说,普通卷积是空洞卷积的一种特殊情况 另外,空洞卷积可以增大感受野 为了更好地理解这一点,我们从一维去分析容易理解点 图3 一维版的普通卷积(a、b)和空洞卷积(c),黑色的圆表示填充部分,a、b、c它们相互独立进行卷积 (来自[8]) 从b和c可以看出,有无空洞卷积
导读 空洞卷积在图像分割需要增加感受野同时保持特征图的尺寸的需求中诞生,本文详细介绍了空洞卷积的诞生、原理、计算过程以及存在的两个潜在的问题,帮助大家将空洞卷积这一算法“消化吸收”。 一、空洞卷积的提出 空洞卷积中文名也叫膨胀卷积或者扩张卷积,英文名也叫Atrous Convolution 空洞卷积最初的提出是为了解决图像分割的问题而提出的,常见的图像分割算法通常使用池化层和卷积层来增加感受野 扩张率中文也叫空洞数(Hole Size)。 在此以 ? 卷积为例,展示普通卷积和空洞卷积之间的区别,如图2所示 ? = 2的空洞卷积,卷积后的感受野为5 c是dilation rate = 3的空洞卷积,卷积后的感受野为8 可以这么说,普通卷积是空洞卷积的一种特殊情况 另外,空洞卷积可以增大感受野,但是可以不改变图像输出特征图的尺寸 等卷积的效果,空洞卷积在不增加参数量的前提下(参数量=卷积核大小+偏置),却可以增大感受野,假设空洞卷积的卷积核大小为 ? ,空洞数为 ? ,则其等效卷积核大小 ? ,例如 ?
空洞卷积的计算过程 该文章只单纯的讲解计算的细节,关于对应的原理和证明可以戳尾部的参考文献。 卷积计算过程 上述计算对应的公式如下: ? 其中 I 表示输入,W 表示卷积对应的权重。 每个卷积核对应的权重 W 在计算卷积过程中,值是固定的,我们称为权重共享。 空洞卷积的计算过程 空洞卷积(Dilated convolutions)在卷积的时候,会在卷积核元素之间塞入空格,如下图所示: 空洞卷积过程,蓝色表示输入,绿色表示输出 这里引入了一个新的超参数 d,( 进而,假定输入空洞卷积的大小为 i,步长 为 s ,空洞卷积后特征图大小 o 的计算公式为: ? (https://www.zhihu.com/question/43609045) 3、如何理解空洞卷积(https://www.zhihu.com/question/54149221/answer/192025860
目录 一、从普通卷积到空洞卷积的直观理解 二、关于卷积的重新思考——普通卷积的缺陷 三、空洞卷积的拯救之路:Dilated Convolution to the Rescue 3.1 潜在问题 :Hybrid Dilated Convolution (HDC) 3.4 多尺度分割的另类解:Atrous Spatial Pyramid Pooling (ASPP) 四、总结 一、从普通卷积到空洞卷积的直观理解 总结:多次叠加多个具有相同空洞率的卷积核会造成格网中有一些像素自始至终都没有参与运算,不起任何作用,这对于像素级别的预测是不友好的。 总结:简单来说,就是空洞卷积虽然在参数不变的情况下保证了更大的感受野,但是对于一些很小的物体,本身就不要那么大的感受野来说,这是嫉妒不友好的。 3.3 通向标准化设计:Hybrid Dilated Convolution (HDC) 说得更简单明白一点其实就是使用多个不同空洞率的空洞卷积核混合,当然至于没一个卷积核的空洞率rate怎么选择,是有一些技巧和原则的
因此Atrous conv.也被称为“空洞卷积”。一些论文也称之为"dilated convolution"。它通常用于小波变换,现在它被应用于卷积中以进行深度学习。 当r > 1时,它是一个带孔的卷积,r是在卷积过程中对输入样本进行采样的步幅。 下图说明这一点 ? 标准卷积(顶部)空洞卷积(底部) atrous卷积的想法很简单。在上图的顶部是标准卷积。 在图的底部,它是一个空洞卷积。我们可以看到,当rate = 2时,输入信号被交替采样。首先,pad = 2 意味着我们在左侧和右侧填充2个零。 在DeepLab中,使用VGG-16或ResNet-101,最后一个池化(pool5)或卷积conv5_1的步幅分别设置为1,以避免信号被过度抽取。并且使用rate=2的空洞卷积替换所有后续卷积层。 DeepLab模型 ASPP: 使用并行的空洞卷积的DeepLab模型 CRF: 全连接的条件随机场做最后处理 4.2 与最先进的方法对比 ?
ESPNet系列的核心在于空洞卷积金字塔,每层具有不同的dilation rate,在参数量不增加的情况下,能够融合多尺度特征,相对于深度可分离卷积,深度可分离空洞卷积金字塔性价比更高。 卷积将输入映射到低维特征空间,空洞卷积金字塔使用$K$组$n\times n$空洞卷积同时重采样低维特征,每个空洞卷积的dilation rate为$2^{k-1}$,$k={1, \cdots, K} ,深度分离卷积以及深度可分离空洞卷积的参数量和有效感受域如表1所示。 原始的ESP模块结构如图1a所示,论文首先将point-wise卷积替换为分组point-wise卷积,然后将计算量较大的空洞卷积替换为深度可分离空洞卷积,最后依然使用HFF来消除网格纹路,结构如图1b CONCLUSION *** ESPNet系列的核心在于空洞卷积金字塔,每层具有不同的dilation rate,在参数量不增加的情况下,能够融合多尺度特征,相对于深度可分离卷积,深度可分离空洞卷积金字塔性价比更高
一、空洞卷积的提出 空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions),向卷积层引入了一个称为 “扩张率(dilation rate) 二、空洞卷积原理 如下如,卷积核没有红点标记位置为0,红点标记位置同正常卷积核。 ? 假设原始特征为feat0,首先使用扩张率为1的空洞卷积生成feat1,feat1上一点相对feat0感受野为3*3(如图a); 然后使用扩张率为2的空洞卷积处理feat1生成feat2(如图b),使第一次空洞卷积的卷积核大小等于第二次空洞卷积的一个像素点的感受野 ,图b即feat1上一个点综合了图a即feat0上3*3区域的信息,则生成的feat2感受野为7*7,即整个图b深色区域; 第三次处理同上,第二次空洞卷积的整个卷积核大小等于第三次空洞卷积的一个像素点的感受野 三、空洞卷积问题 感受野跳跃 我们对同一张图连续三次使用扩张率为1的空洞卷积,观察整张图的中心点的感受野(如下图) ?
毕竟在介绍DeepLab2的时候需要用到空洞卷积。 (1)空洞卷积 空洞卷积的原理如图所示,仔细看了下原理,才知道在传统的CNN中,正常都会采用pooling池化来达到降维的目的,这种在图像语义分割中会产生一定的副作用,如经典的FCN在第3-5的featuremap 因此空洞卷积的目的是:不要池化层,毕竟池化之后正常会减少像素的信息而导致信息损失。 可以看出,DeepLab2使用了带孔/空洞卷积,金字塔型的空洞池化(ASPP)和全连接 CRF等多项技术的结合。 其中空洞卷积见第1部分,而SPP是一种空间金字塔分辨率的方式,从而来实现多个尺度的featuremap,从而可以实现对多种不同尺度图像对象的语义分割。
在空洞卷积提出以前,大部分的空间尺寸恢复工作都是由上采样或反卷积实现的。 2 空洞卷积 一句话概括空洞卷积:调整感受野(多尺度信息)的同时控制分辨率的神器。 从图中可以看出,当比率为1的时候,空洞卷积退化为常见的卷积。 ? (2) 空洞卷积结构1 下图(b)是基于上面第三种结构的空洞卷积分割网络结构图,(a)是对应的第三种结构的网络结构图。 ? 这种结构将上个结构的串联空洞卷积变成了并联的空洞卷积运算,基于同一级特征结构提取不同尺度下的卷积结果。 ? 4 实验及分析 (1) 卷积核的有效权重 通过前面的了解,我们可以发现一个问题。
一、空洞卷积的基础原理空洞卷积(Dilated Convolution) 是一种改进的卷积操作,通过在卷积核中引入“空洞”来扩大感受野。 空洞卷积的巧妙之处空洞卷积的核心思想是:在不增加计算负担的情况下,让卷积核“看到”更远的区域。 其方法是在卷积核中引入“空洞”,即在核的元素之间留出间隔。 这就是空洞卷积的聪明之处。二、空洞卷积的架构空洞卷积网络的结构跟传统CNN大体差不多,但通过在卷积层里加空洞,模型能更好地抓住远距离的依赖关系。我们一步步来看它是怎么搭起来的。1. 空洞卷积模块空洞卷积模块是网络的主体,每个模块包括空洞卷积层、批归一化(BatchNorm)和激活函数(ReLU)。我们拆开来看看它是怎么干活的。 2.1 空洞卷积层空洞卷积的核心在于那个 dilation 参数,它控制卷积核里元素之间的间隔。空洞率越大,卷积核跳得越远,感受野就越大。
深度学习基础入门篇9.3:卷积算子:空洞卷积、分组卷积、可分离卷积、可变性卷积等详细讲解以及应用场景和应用实例剖析 1.空洞卷积(Dilated Convolution) 1.1 空洞卷积提出背景 在像素级预测问题中 尺寸为 $3\times{3}$ ,扩张率分别为 $1,2,4$ 时的空洞卷积分别如 图1,图2,图3所示。 图片 图1 扩张率为1时的3*3空洞卷积 扩张率为1时,空洞卷积与标准卷积计算方式一样。 图片 图2 扩张率为2时的3*3空洞卷积 图片 图3 扩张率为4时的3*3空洞卷积 扩张率大于1时,在标准卷积的基础上,会注入空洞,空洞中的数值全部填0。 空洞卷积的感受野计算方式与标准卷积大同小异。 图片 图5 空洞卷积的感受野示例 其中,通过一层空洞卷积后,感受野大小为$5\times5$,而通过两层空洞卷积后,感受野的大小将会增加到$9\times9$。
DeepLabv3在ImageNet预训练的Backbone中使用空洞卷积,将输出stride减少到16或8,而不是通常的32,并通过提出Atrous空间金字塔池模块(ASPP)来增加感受野,该模块并行地应用了不同扩张率的卷积层分支 图2是一个空洞卷积的例子。 PSPNet提出了金字塔池化模块(Pyramid Pooling Module, PPM),它通过首先应用平均池化来应用不同输入分辨率的卷积层的并行分支。 HarDNet主要使用3×3卷积和1×1卷积减少GPU内存消耗。 另一种方法是使用空洞卷积,扩张率为r的卷积在感受野上等于kernel大小为2r+1的卷积。 BatchNorm紧跟每个卷积之后。ReLU则是在第一个1 × 1卷积,3 × 3卷积,和求和之后。 深度学习框架支持组卷积,每个组卷积应用相同的扩张率。
微观层面:提出了可切换的空洞卷积(SAC),用不同的空洞率来对相同的输入特征做卷积,使用switch函数来结合结果。上图(b) 展示了 SAC 的概念。 这三个分支里的卷积层的配置如下:卷积核大小为[ 1 , 3 , 3 ],空洞率为[1,3,6],padding为[0,3,6]。 Switchable Atrous Convolution 空洞卷积是增大卷积层滤波器感受野的有效方式。 特别地,空洞率r的空洞卷积在两个连续的滤波器值之间引入r−1个0,相当于将卷积核大小由k×k增大到ke=k+(k−1)(r−1),而不会增加参数的个数或计算量。 下图b为3×3卷积层和空洞率为1(红色)与2(绿色)的一个例子:不同尺度的同类物体可以通过相同的卷积权重和不同的空洞率来检测。 ?
所以空洞不光针对文件,也可以针对内存,可以将虚址中的缺页中断理解为填补内存空洞的过程,文件中也有类似的机制。 空洞的产生 下面分平台说明。 带有空洞的文件复制后还有空洞吗? widnows 的空洞本质上是一种数据压缩,将很多 0 压缩在一起,不过确确实实起到了节省存储空间的目的。 空洞的应用 下面的脚本可以搜索文件系统中带空洞的文件: #! 最终结论就是,文件空洞并没有内存空洞那么有用,如果你遇到过它的应用场景,欢迎在评论区拍砖斧正~~ 参考 [1]. lseek函数与文件空洞 [2]. windows稀疏文件
空洞文件(hole file) 我们知道 lseek()系统调用,使用 lseek 可以修改文件的当前读写位置偏移量,此函数不但可以改变位置偏移量,并且还允许文件偏移量超出文件长度,这是什么意思呢? ,所以形成了空洞,这部分区域就被称为文件空洞,那么相应的该文件也被称为空洞文件。 文件空洞部分实际上并不会占用任何物理空间,直到在某个时刻对空洞部分进行写入数据时才会为它分配对应的空间,但是空洞文件形成时,逻辑上该文件的大小是包含了空洞部分的大小的,这点需要注意。 空洞文件有什么用呢? 来看一下实际中空洞文件的两个应用场景: ⚫ 在使用迅雷下载文件时,还未下载完成,就发现该文件已经占据了全部文件大小的空间,这也是空洞文件;下载时如果没有空洞文件,多线程下载时文件就只能从一个地方写入,这就不能发挥多线程的作用了
[SAConv可切换空洞卷积介绍] SAConv(可切换空洞卷积)原理与优点详解 一、SAConv的核心原理 SAConv(Switchable Atrous Convolution)是一种创新的卷积模块 ,旨在解决传统空洞卷积(Dilated Convolution)在多尺度目标检测中的局限性。 其核心设计思想如下: 动态空洞率切换机制 SAConv通过可学习的开关函数(Switch Functions)动态调整卷积核的空洞率(Dilation Rate),而非固定使用单一空洞率。 例如,一个SAConv模块的计算量仅比普通卷积增加约0.3GFLOPs,但性能提升显著。 四、总结 SAConv通过动态空洞率切换和全局上下文感知,解决了传统空洞卷积的固定感受野问题,显著提升了模型的多尺度特征提取能力和鲁棒性。
空洞文件(Sparse File)是一种在磁盘上并非完全分配存储空间的文件。它包含了一些逻辑上存在但物理上并未存储的数据。 空洞文件在多线程共同操作文件时具有极大的优势。 空洞文件在实际应用中有两个典型场景: 1、在使用迅雷下载文件时,尚未完全下载时文件已经占据整个文件大小的空间,这就是空洞文件的应用。 如果没有空洞文件,多线程下载时只能从一个位置写入,无法充分发挥多线程的优势。有了空洞文件,不同地址可以同时写入,发挥了多线程的优势。 通过空洞文件,可以避免一开始就分配过多的资源,节约了存储空间的浪费。 在 Linux 中,可以通过使用 lseek 和 write 系统调用来创建空洞文件。 在文件系统中,读取空洞文件时,操作系统会将空洞部分的数据补充为0,使得读取的文件内容包含完整的文件大小。
论文地址: https://arxiv.org/pdf/1802.10062.pdf 来自北京邮电大学和美国伊利诺伊大学(UIUC)的研究者们提出一种适用于密集人群计数的空洞卷积神经网络模型 CSRNet 此类多通道卷积网络在不同通道上采取大小不等感受域的卷积网络,以适应不同场景(如高、中、低密集程度)的人群计数需要。 图 2 多通道卷积网络中的大、中、小通道在 ShanghaiTech PartA 中的测试表现相似 ? 表 1 更深的单通道卷积网络使用较少参数却在 ShanghaiTech PartA 中获得更小误差 此外,作者为了避免过度使用降采样而导致密度图的分辨率损失,在网络的后半部分引入了空洞卷积层,利用空洞卷积增大感受域并维持分辨率 图 3 使用卷积+池化+上采样(上)与空洞卷积(下)输出同样分辨率图像,空洞卷积可保留更多图像细节 ?