zl程序教程

您现在的位置是:首页 >  其他

当前栏目

空洞卷积(Atrous/Dilated Convolution)

2023-04-18 13:08:43 时间
  • 由Deeplabv1提出的。
  • 有两种实现方式:
    • 一,卷积核填充0。
    • 二,输入等间隔采样。
  • 扩张率(dilation rate),也叫空洞数(Hole Size)。
  • 标准卷积可以看做空洞卷积rate=1(Note:rate=2表示中间空洞间隙为1)的特殊形式
  • 中间的空洞间隙,计算感受野的时候,也属于感受野的有效范围。(单个卷积的感受野计算公式:[(rate-1)(k-1) + k] ** 2 ,其中(rate-1)(k-1) 是因为空洞而新增加的边长增量)
  • 作用:
    • 扩大感受野:
      • 原本为了增加感受野同时不增加计算量,只能进行降采样(pooling或s2/conv),但空间分辨率(fm尺度)因此缩小了。
      • 空洞卷积可以在不需要引入额外参数的前提下,任意扩大感受野。
      • 一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标。因此空洞卷积主要应用于检测、分割。
    • 捕获多尺度上下文信息:
      • 空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate-1个0。
      • 当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息(常考deeplabv2的ASPP)。而多尺度信息在视觉任务中相当重要。
  • 用法:
    • 语义分割由于需要获得较大的分辨率图,因此经常在网络的最后两个stage丢弃降采样操作,改用空洞卷积减少感受野的丢失。
  • 缺点:
    • 在实际中不好优化,且缺少对应的算子加速,速度会大大折扣。
    • 因为空洞卷积得到的某一层的结果中,邻近的像素是从相互独立的子集中卷积得到的,相互之间缺少依赖。因此存在gridding问题(网格效应/棋盘问题):
      • 局部信息丢失:由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。
      • 远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。
  • 改进方法:
    • HDC:
      • 不同于采用相同的空洞率的deeplab方案,该方案将一定数量的layer形成一个组,然后每个组使用连续增加的空洞率,其他组重复。
      • 如deeplab使用rate=2,而HDC采用r=1,r=2,r=3三个空洞率组合,这两种方案感受野都是13。
      • 但HDC方案可以从更广阔的像素范围获取信息,避免了grid问题。
      • 同时该方案也可以通过修改rate任意调整感受野。
    • deeplabv3在v2基础上进一步探索空洞卷积,分别研究了级联ASPP与并联ASPP两种结构。
  • 总结-空洞卷积(Dilated/Atrous Convolution)