文章目录
abstract
- 论文使用了空洞卷积作为有力的工具,通过空洞卷积来控制图像分辨率,计算深度网络的特征响应; 同时空洞卷积还能扩大特征图每个像素的感受野从而实现在不增加网络参数的情况下充分利用不同程度的上下文信息。
- 本文提出了 ASPP 结构(astrous spatial pyrimid pooling 空洞空间金字塔)来在不同尺度上完成更加鲁棒的目标分割,ASPP 将输入的卷积层特征进行不同 dilation rate 的卷积操作来捕获不同尺度上的 object 和 图像上下文信息。
- 在之前的语义分割任务中,通常使用 maxpooling + 降采样的常用组合来实现不变性(invariance),但是这种操作会导致定位存在偏差,影响定位精度。本文中将传统的 DCNN 网络的最后一层特征图通过一个全连接的 Conditional Random Field(CRF)条件随机场来克服这种定位偏差任务,我们通过实验获得了质量和数量两个方面的实质性提升。
- 本文的关键词:空洞卷积,ASPP,条件随机场(conditional random field)
Introduction
- 以端到端方式训练的 DCNN (深度卷积神经网络)比依赖手工制作功能的系统提供了显著更好的结果。这种成功的关键是 DCNN 对局部图像变换的内置不变性,这使它们能够学习越来越抽象的数据表示
- 这种不变性对于分类任务显然是理想的(因为分类任务并不依赖于定位信息),但是对于密集的预测任务来说,比如语义分割,平移不变性是不需要的,而且还会影响定位预测的精度。
- 使用 DCNN 进行语义分割任务有三种挑战:
- 随深度递减的图像分辨率
- 以不同尺度大小存在的检测目标
- 由于 DCNN 平移不变性而损失的定位精度。
challenge1:池化和降采样导致的分辨率降:
- 第一种挑战的出现是因为分类任务中常用的 maxpooling + 降采样操作(即通过 stride 导致图像分辨率降低的操作)。这样的操作导致的是使用全卷积的 DCNN 存在严重的空间分辨率(significantly reduced spatial resolution)降低的情况。
- 为了克服这一障碍并有效地生成更密集的特征图,我们从DCNN 的最后几个最大池化层中去除下采样算子,取而代之的是在随后的卷积层中把 filters 设计成上采样的操作,从而以更高的采样率计算特征图。
- 空洞卷积是在原始的卷积核的各个点之间增加 hole(洞)来达到扩展感受野的目的,这种思想最早是来自信号处理中的小波变换;本文采用 astrous convolution 作为一个上采样滤波器卷积的缩写。
- 在实践中,我们将空洞卷积结合到全卷积网络中,来计算更加紧密的全分辨率的特征图,之后采用简单的双线性插值来得到与输出图片相同分辨率的特征图。这种策略提供了一种简单并强大的策略可以在密集的预测任务(dense prediction tasks:一般指的是语义分割、实例分割等任务,这类任务需要对所有的像素点进行预测或分类)中代替转置卷积层(deconvolutional layer)
- 与常规的卷积层通过增大卷积核尺寸来获得更大的感受野不同,空洞卷积允许在不增加额外参数的情况下获得更大的感受野。
challenge2:不同尺寸的受检目标
- 第二种挑战是因为图片中往往存在很多大小不同,尺寸各异的目标需要被检测。传统的解决方法是通过对一张图片获得不同的缩放版本(rescaled version),然后将他们聚合起来得到特征图或是 score maps [6][17][18];但是这种操作会产生大量的计算来获得对应一个输入 image 的不同尺寸的特征图。
- 受 spatial pyramid pooling (SPP)的启发,我们提出了一个具备高计算效率的,通过对一个给定特征图进行多个不同 rate 的空洞卷积操作来完成对这个给定特征图的重采样过程,以此我们可以直接获得图片多个尺度的上下文信息。我们把这种方式称作 astrous spatial pyramid pooling (ASPP)空洞空间金字塔池化操作
challenge3:保持空间不变性引入的定位误差
-
由于以目标为中心的分类器(object-centric classifier)要求空间不变形,这样会限制 DCNN 对于空间定位的精度。
-
一种解决的思路是在计算最终的分割结果之前,采用跳层(skip-layer)来提取多个网络特征层中的 “hyper-column” 特征 [14] [21]。
-
本文中解决定位精度问题是通过实现一个全连接的条件随机场(conditional random field)来完成的。
-
CRF 已广泛用于语义分割,将多路分类器计算的类别分数与像素和边缘或超像素 [25] 的局部交互捕获的低级信息相结合。
-
本文采用的 CRF 是一种全连接的、成对的(pairwise)的 CRF。因为它具有高效的计算能力,并且能够捕捉精细的边缘细节,同时满足长期依赖关系。该模型在[22]中被提出,以提高 boosting-based 的像素级分类器(pixel-wise classifier)的性能。在这项工作中,我们证明当与基于 DCNN 的像素级分类器结合时,它会导致最先进的结果。
-
一个用于分类任务的 DCNN 网络(例如 Resnet101 或者 VGG-16)将被重新用于语义分割任务,通过进行如下改变:
- 将所有的全连接层替换为卷积层,实现全卷积网络
- 通过空洞卷积增加特征图的分辨率,这使得我们可以对每 8 个像素进行特征响应的计算而非原本的每 32 像素计算一次特征响应。然后采用双线性插值向上采样 8 倍以达到输入图像的原始分辨率,并把此时的输出输入到一个全连接的 CRF 中来产生分割结果。
- 说明一下,这里空洞卷积的使用可以让原来降低 32 倍才能获得的感受野在降低 8 倍的时候就能达到,因此仅仅需要 downsampling 8倍
本文优势
- 速度优势:通过空洞卷积,本文的 DCNN 可以达到 8FPS 在 Titan X GPU 上,而全连接的 CRF 在 CPU 上的推理时间降到了 0.5 秒。
- 精度优势:在多个数据集上达到了 SOTA,例如 PASCAL VOC 2012, PASCAL-Context,PASCAL-Person-Part 和 Cityscapes
- 简洁:本文系统有两个非常易搭建的级联模块构成:DCNN 和 CRFs
Related Work
-
在本节的阅读中,并没有把所有内容原封不动地翻译下来,而是挑我自认为有用的部分进行翻译和转化。
-
基于 DCNN 的语义分割工作通常分为以下大方向:
- 第一个大类通常采用一个自底向上的级联方式来进行语义分割任务,例如将 bounding box 候选框和 mask 区域作为输入送进 DCNN 来将形状信息纳入到分类过程。类似的,[50] 依赖于超像素的特征表示,尽管这些方法可以从良好的分割带来的尖锐边界中受益,但它们也无法从任何错误中恢复过来。
- 第二大类是通过 DCNN 的特征为基础来进行密集的图片标注(dense image labelling)并把他们和独立获得的分割相关联。[21] 提出了使用 skip layers 来 concate 不同的中间特征来进行像素分类。
- 第三大类是使用 DCNN 直接提供密集的、类别级的像素标签,这使得完全放弃分割成为可能,也叫 segmentation-free 方法。这种方法直接使用全卷积的 DCNN ,将最后一层的全连接层以卷积层代替,为了解决在 introduction 中出现的定位问题,将中间层的特征图进行上采样和拼接。
-
本文的方法属于第三大类,我们通过对特征分辨率进行控制(空洞卷积),引入多尺度池化技术(ASPP),并将密集连接的的CRF集成到 DCNN 之上,来扩展这些工作。
-
结合 CRF 到 DCNN 中并不是我们最先尝试的,但是以往的工作知识使用了局部连接的 CRF,这种局部连接的方式受到超像素计算错误(be limited by erros in superpixel computation)的限制,或者忽略了长期依赖关系(long-range dependencies) 但我们提出了一个全连接的 CRF 方法,将每一个 pixel 作为一个 CRF node(条件随机场节点)来接受 unary potentials(一元势)。
-
最重要的是,我们采用的全连通CRF模型中的高斯CRF势(gaussian CRF potential)既能捕获长期依赖,又能适应快速平均场推理
Method
-
全卷积网络是进行语义分割的利器,但是全卷积网络的连续的 maxpooling 和 卷积中的 stride 的操作会很大程度的损失特征图的空间分辨率,在最近的工作中,几乎都是最终将特征图采样成原始尺寸的 1/32,例如原图 224 × 224 224×224 224×224 经过 DCNN 之后,尺寸就变成了 7 × 7 7×7 7×7,有操作通过使用转置卷积/反卷积(deconvolutional layer)来完成图像的尺寸还原,但是这种操作会引入额外的参数。
-
我们采用空洞卷积来代替上面的操作,这种方法可以计算任何层在任何分辨率下的特征响应(allows us to compute the responses of any layer at any desired resolution),一旦网络经过训练,它可以在事后应用,但也可以与训练无缝集成。
-
我们先来看 1-D 的信号, y [ i ] y[i] y[i] 是 1-D 信号 x [ i ] x[i] x[i] 通过长度为 K K K 滤波器 w [ k ] w[k] w[k] 进行空洞卷积的结果。
- 所谓的空洞率 rate
r
r
r 就是我们进行采样输入信号时候的间隔,普通的卷积操作
r
=
1
r=1
r=1
- 所谓的空洞率 rate
r
r
r 就是我们进行采样输入信号时候的间隔,普通的卷积操作
r
=
1
r=1
r=1
-
通过一张图片来介绍 2-D 的空洞卷积,给定一张图,假设我们首先进行降采样操作,将特征图分辨率缩小为原来的 1/2(分辨率缩小 1/2 则尺寸缩小为原来 1/4)然后使用内核执行卷积 - 这里是垂直高斯导数(vertical gaussian derivative)。如果将生成的特征图植入原始图像坐标中,我们意识到我们仅在图像位置的 1/4 处获得了响应。
-
与上述不同的是,我们可以通过一个空洞卷积来直接计算原始图片(全分辨率)的响应,在这个情况下我们保持 rate=2, stride=1(不进行降采样以及后面配套的升采样操作)。虽然这样的情况下看起来卷积核的尺寸增加了,但我们实际上增加的那些部分都是 0,在卷积运算的过程中我们只需要考虑那些非零的部分即可,因此运算的参数量依然保持不变。
- 上述图片帮助理解,卷积核的尺寸是扩增了,相当于变成了 13 的尺寸,并且引入了 0 到卷积核中(上述右图中的白色部分的值均为 0 ),虽然有效卷积的尺寸增加了,但其实只需要考虑卷积核中非零部分(即蓝色的部分)因此卷积核的实际运算参数并没有增加,该方案允许我们轻松而明确地控制神经网络特征响应的空间分辨率。因为当我们使用不同的 dilation rate,就相当于我们把卷积核的有效尺寸按照我们的意愿进行放缩。当我们设置 dilation rate = 2 我们可以认为当下产生的特征图是通过 13 × 13 13×13 13×13 的卷积核产生的响应。
-
本文的具体应用是:为了将vgg -16或ResNet-101网络中计算的特征响应的空间密度提高一倍,本文采取将最后一个 pooling 或者 stride=2 的卷积层设置成 stride=1 来避免信息丢失,然后将他们替换成 dilation rate=2 的空洞卷积。通过这种方法可以保持在输入图像分辨率的情况下计算特征响应,但是这种计算仍然消耗太大。为了减小运算消耗,我们引入了一个混合方法,通过空洞卷积来增加 4 倍的特征图密度,然后通过快速双线性插值恢复成输入图像的分辨率尺寸。双线性插值的方法是能够胜任的,因为分类得分图(log-probabilities)是很平滑的,如下图所示。
-
空洞卷积可以让我们任意程度增大感受野,为了保持运算参数量,我们通常使用 3 × 3 3×3 3×3 的卷积核,空洞卷积使用 dilation rate 来向卷积核的两个有效参数之间填充 dilation rate - 1 个 0 来扩充卷积核的有效尺寸,对于一个尺寸为 k × k k×k k×k 的卷积核,如果 dilation rate = r ,那么其有效卷积尺寸就变成了 k e = k + ( k − 1 ) ( r − 1 ) k_e=k+(k-1)(r-1) ke=k+(k−1)(r−1) 而不增加任何新的计算参数,因此他也可以精确的控制任一特征层特征图的感受野。
使用空洞空间金字塔池化完成多尺度图像表示
- 我们尝试了两种方法来处理语义切分中的尺度变化。
- 第一种方法是标准的多尺度处理方式,我们使用具有相同参数的平行 parallel DCNN分支,从多个(在我们的实验中有三个)原图像的缩放版本中提取DCNN分数图。为了得到最终的结果,我们以双线性的方式将平行DCNN分支的特征图插值到原始图像分辨率上,并通过在每个位置取不同尺度上的最大响应来融合它们。这种方式明显提高了表现,但是计算多个尺度的特征耗费了太多资源。
- 第二种方式是受启发于 RCNN 中提出的空间金字塔池化的方式,可以通过一个空间金字塔池化模块对一个特征图进行多次重采样,最终得到不同尺度的特征图。基于此我们发明了一种空间金字塔池化的变体,叫做 ASPP 空洞空间金字塔池化,这种方式采用了几个并行的空洞卷积层搭配不同的 dilation rate,从不同支路的空洞卷积生成的特征图相当于是对输入的原特征图的不同尺度的采样结果,这些并行的支路产生的特征最终进行融合产生最终的特征图。
为精确边界恢复设计的基于全连通条件随机场的结构预测
-
定位精确度和分类表现是一组 trade off 的因素,因为越深的网络对于分类的效果越好,但是随着网络加深而堆叠的 maxpooling 和 降采样操作将会导致特征响应越来越平滑,从而导致对位置信息的敏感度越来越差。如下图所示:
- score maps 可以预测物体的存在和大致位置,但不能真正划定它们的边界
- 之前的工作尝试从两个方面来解决这类定位问题:
- 一方面通过结合多个中间卷积层的信息来更好的决策目标边界
- 第二方面是通过应用超像素特征表示(super-pixel representation),本质上是将定位任务委托给了一个低级的分割方法
-
本文采用全连通的条件随机场(fully connected conditional random field) 来有效的解决定位挑战。如上图中所示,条件 DCNN 产生的特征图往往比较平滑,并且容易产生同质化的分类结果,这种条件下,使用小范围的 CRF 将会是有害的,因为我们要做的是恢复局部结构的细节信息,而不是进一步平滑。结合使用 contrast-sensitive potential 和长距离的 CRF 可以提高定位精度,但是仍然可能忽略细微结构(miss thin structures)而且通常需要解决一个困难的离散优化问题。
-
为了解决小范围的 CRF 的局限性,我们结合我们的系统提出了一个全连通的 CRF 模型,这个模型采用了下述能量公式:
-
x x x 是分配给像素的标签,我们把它看做是 unary potential θ i ( x i ) = − l o g P ( x i ) \theta_i(x_i)=-logP(x_i) θi(xi)=−logP(xi), P ( x i ) P(x_i) P(xi) 是由DCNN计算的像素 i i i 处的标签分配概率。
-
成对势 pairwise potential 的形式允许在使用全连接图时进行有效推理,即当连接所有的图片像素对 i , j i,j i,j 时。特别的我们用下列公式表示:
-
当 x i ≠ x j x_i ≠x_j xi=xj 时, μ ( x i , x j ) = 1 \mu(x_i,x_j)=1 μ(xi,xj)=1 否则其值为 0。也就是说,意味着只有两个像素 i , j i,j i,j 具有不同的标签才会被这个公式惩罚;剩下的表达式在不同的特征空间中使用两个高斯核:
- 第一部分的“双边”核代表它既依赖于像素位置( p p p)也同时依赖于RGB 颜色 I I I 。
- 第二部分的核只依赖于像素的位置
-
超参数 σ α , σ β , σ γ \sigma_\alpha, \sigma_\beta, \sigma_\gamma σα,σβ,σγ 控制着高斯核的规模(拖尾长度)
-
第一个核(中括号中的第一个部分)要求具有相似颜色和相似位置的像素必须具有相同的标签。而第二个核表示在执行平滑时只考虑空间接近即可。