DeepLap 系列论文

DeepLap 系列论文

分割中仍存在的问题

1、不断降低的分辨率,连续的池化或下采样导致图像的分辨率大幅下降,从而损失了原始信息,且在上采样过程中难以恢复。因此,越来越多的网路都在试图减少分辨率的损失,比如使用空洞卷积,或者使用步长为2的卷积操作代替池化。实验证明,此类方法是有效的。

2、多尺度目标的存在,无法很好的分割。

3、定位精度比较低,对物体的边界分割不够细化。

DeepLap v1

摘要

主要背景:DCNNs 的最后一层不足以进行精确分割目标。

主要贡献:本文将深度卷积神经网络和CRF(条件随机场)相结合,克服了深度网络的较差的局部化特征,同时模型创新性的将Hole(即空洞卷积)算法应用到DCNNs模型上。

网络效果:该网络在超过了以前的方法的精度。

介绍

DCNN 在图像标记任务中存在两个技术障碍:1)信号下采样;2)空间不敏感;

第一个问题涉及到:在DCNN中重复最大池化和下采样带来的分辨率下降问题,分辨率的下降会丢失细节。DeepLab是采用的***atrous***(带孔)算法扩展感受野,获取更多的上下文信息。

第二个问题涉及到:分类器获取以对象中心的决策是需要空间变换的不变性,这天然的限制了DCNN的定位精度,DeepLab采用完全连接的条件随机场(DenseCRF)提高模型捕获细节的能力。

主要贡献:

速度:带空洞卷积算法(atrous)的DCNN 可以保持8FPS的速度,全连接CRF平均推断需要0.5s.

准确:在PASCAL 语义分割挑战中获得了第二。

简单:DeepLab 是由两个非常成熟的模块(DCNN和CRFS)级联而成。

网络结构DCNN

作者为了加载预先在ImageNet训练好的VGG-16模型,并保证图片仅缩放了8倍做了如下修改:

  • 把全连接层(fc6、fc7、fc8)改成卷积层(做分割)
  • 把最后两个池化层(pool4、pool5)的步长2改成1(padding 到原来大小)(保证feature的分辨率)
  • 把最后三个卷积层(conv5_1、conv5_2、conv5_3)的dilate rate设置为2,且第一个全连接层的dilate rate设置为4(保持感受野)
  • 把最后一个全连接层fc8的通道数从1000改为21(分类数为21)

为了加速训练,作者将第一个全连接层fc6,通道数从4096变为1024,卷积核大小从7x7变为3x3,后续实验中发现此处的dilate rate为12时(LargeFOV),效果最好。

DeepLap 系列论文

空洞卷积:

DeepLap 系列论文

蓝色部分是输入:7x7 image

青色部分为输出:3x3 image

空洞卷积核:3x3 kernel,采样率(扩张率)为2,无padding

这种带孔的采样又称***atrous算法***,可以稀疏的采样底层特征映射,该方法具有通常性,并且可以使用任何采样率计算密集的特征映射。在VGG16中使用不同采样率的空洞卷积,可以让模型再密集的计算时,明确控制网络的感受野。保证DCNN的预测图可靠的预测图像中物体的位置。

训练时将预训练的VGG16的权重做fine-tune,损失函数取是输出的特征图与ground truth下采样8倍做交叉熵和;测试时取输出图双线性上采样8倍得到结果。但DCNN的预测物体的位置是粗略的,没有确切的轮廓。在卷积网络中,因为有多个最大池化层和下采样的重复组合层使得模型的具有平移不变性,我们在其输出的high-level的基础上做定位是比较难的。这需要做分类精度和定位精度之间是有一个自然的折中。

CRF在语义分割上的应用:

对于每个像素位置ii具有隐变量xi(这里隐变量就是像素的真实类别标签,如果预测结果有21类,则(i∈1,2,…,21),还有对应的观测值yi(即像素点对应的颜色值)。以像素为节点,像素与像素间的关系作为边,构成了一个条件随机场(CRF)。通过观测变量yi来推测像素位置i对应的类别标签xi。条件随机场示意图如下:

DeepLap 系列论文

Fully connected CRF

CNN是一个逐步提取特征的部分,原始位置信息会随着网络深度的增加而减少或消失。CRF在传统图像处理上的应用是做一个平滑。CRF简单说,是在决定一个位置的像素值时(paper里是label),会考虑周围像素点的值(label)。但是通过CNN得到的概率图在一定程度上已经足够平滑,所以短程的CRF没有太大的意义。于是考虑使用Fully connected CRF,这样就会综合考虑全局信息,恢复详细的局部结构,如精确图形的轮廓。CRF几乎可以用于所有的分割任务中图像精度的提高。

CRF是后处理,是不参与训练的,在测试时对特征提取后得到的得分图进行双线性插值,恢复到原图尺寸,然后再进行CRF处理,因为缩小8倍的,所以直接放大到原图是可以接受的。如果是32倍,则需要上采样(反卷积)。

DeepLap 系列论文

第一列是原图像和Ground Truth;第二列是DCNN的输出,上面是得分图(Score map),下面是置信图(Belief map)。最后一个DCNN层的输出用作CRF的输入。后面三列分别是CRF迭代1、2、10次后的得分图和置信图。

CRF中使用的是softmax后的概率图。具体CRF请见论文。(比较难)

多尺度网路结构MLP

作者尝试融合了多层次网路信息,前四个pool层之后都额外的接了两个卷积层,第一个卷积层128 3x3,第二卷积层128 1x1,和最后一层concat之后会多了5*128=640个通道,然后进行sofrmax,训练这部分分支时,固定其它网络的参数。实验表示多尺度有助于提升预测结果,但是效果不如CRF明显。

Experiment

测试细节:

项目 设置
数据集 PASCAL VOC 2012 segmentation benchmark
DCNN模型 权重采用预训练的VGG16
DCNN损失函数 交叉熵
训练器 SGD,batch=20
学习率 初始为0.001,最后的分类层是0.01。每2000次迭代乘0.1
权重 0.9的动量, 0.0005的衰减

DeepLab由DCNN和CRF组成,训练策略是分段训练,即DCNN的输出是CRF的一元势函数,在训练CRF时是固定的。在对DCNN做了fine-tune后,对CRF做交叉验证。具体参数请参考论文。

CRF和多尺度的表现

在验证集上的表现:

DeepLap 系列论文

可以看到带CRF和多尺度的(MSc)的DeepLab模型效果明显上升了。

DeepLap v2

摘要

主要贡献:充分利用空洞卷积,可在不增加参数的情况下有效的扩大感受野,合并了更多的上下文信息,DCNNs 和 CRF 相结合,进一步优化网络效果。提出了ASPP模型,ASPP用多个采样率和感受野的过滤器探测传入的卷积特征层,从而在多个尺度捕获目标和图像上下文,通过图模型(fully connected Conditional Random Field,DenseCRF)来精确分割目标的边界。

网络效果:ASPP 增强了网络的在多尺度下多类别分割的鲁棒性,使用不同的采样比例和感受野提取特征,能在多个尺度上捕获目标和上下文信息。

实验结果:在PASCAL VOC 2012 数据集上取得了79.7% miou, 在其他数据集上也进行了充分实验。

文中认为使用深度CNN网络进行语义分割所面临的问题与对应的解决方法:

1)尺寸减小的特征图:文中通过去掉最后几个下采样池化来提高卷积特征的大小,并且引入了空洞卷积在没有增加参数和计算量的同时增大特征图感受野。

2)多尺寸大小的目标:针对这个问题,文中考虑了空间金字塔池化的思想,这里只用不同比例的空洞卷积构造“空间金字塔结构”(Atrous Spatial Pyramid Pooling,ASPP)。

3)由于深度CNN具有平移不变性影响分割准确性,文中引入了全连接条件随机场(DenseCRF),使得分割边界的定位更加准确,从而解决该问题。

网络设计

1.网络结构

下图展示的是文章使用方法运算流程,整体的流程与v1的相差不大。在卷积网络、特征池化与CRF上做了一些改进。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gviMxKc1-1605773987384)(https://www..com/images/321/9079004416f40fee00dafe82f9c11eb9.png)]

2.空洞卷积

3.ASPP(从多尺度角度提取特征)

为了适应分割目标中不同的大小的目标文章提出了两种解决办法:

1)改变输入图像的尺寸构造图像金字塔,使用形同的CNN 网络去生成这些图的特征,这些特征恢复到原分辨率之后按位取最大值融合,使用该方法可以提高分割的性能,但是带来大量的计算开销。

2)在一个固定的特征图上使用不同的ratio 的空洞卷积并行的进行去提取特征,结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NpQJEGcL-1605773987387)(https://www..com/images/758/d4d6812c254c5ba1ba35aeb04e1287fe.png)]

在模型最后进行像素分类之前增加一个类似Inception的结构, 包含不同rate的Atrous Conv.这样做的好处不仅有deeplabv1中提出的增加感受野的功能, 更重要的是可以增强模型对不同尺寸的同一物体语义信息的把握能力.

上图中为四路不同rate 的空洞卷积,kernel_size = 3,膨胀率分别为6、12、18、24.将feature map 通过四个空洞卷积后,将四个feature map 相加起来。然后进行8x upsampling(bilinear)。

4.引入了Fully-Connected CRF

原始CNN网络的输出见图5的第二列所示,可以看到该分割的结果非常粗糙,这是由于CNN网络的平移不变性导致的边界定位精度低,引入CRF来解决这个问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wvWLM4wG-1605773987389)(https://www..com/images/425/4783da2cbc00504efb17534b7503ab89.png)]

DeepLabv2较 Deeplabv1变化:

①引入ASPP能更好的处理多尺度物体的分割;这个有点和SPP类似.

②backbone由VGG-16改为ResNet,带来一定效果的提升。

实验结果

作者训练过程中使用的主要tricks有:

(1)数据扩增:参照《Semantic contours from inverse detectors》将VOC 2012的训练集由1464扩增到10582张;

(2)初始学习率、momentum以及CRF参数的选取都类似于DeepLabv1,通过调整膨胀速率来控制FOV(field-of-view),在DeepLab-LargeFOV上,作者对学习率下降策略进行了不同的尝试,相对于step的测试,poly策略在Batch_size=30,迭代20000次时能在VOC 2012验证集上达到65.88%的mIOU(未做CRF后处理);

(3)其中(2)提到了LargeFOV,LargeFOV是指采用膨胀速率r=12的膨胀卷积策略,作者在VGG-16的fc6采用该膨胀卷积,并将fc7和fc8改为1x1的全卷积,命名为DeepLab-LargeFOV,作为对比,同时在VGG-16的fc6-fc8层用四路采用不同膨胀速率的膨胀卷积作用于各自的fc6,在fc7和fc8同样采用全卷积策略,命名为DeepLab-ASPP,根据膨胀卷积r的不同组合,r={2,4,8,12}的称为DeepLab-ASPP-S,r={6,12,18,24}的称为DeepLab-ASPP-L,如下图分别为VGG16上的DeepLab-LargeFOV和DeepLab-ASPP示意图:

DeepLap 系列论文

DeepLap v3

摘要

主要贡献:为了解决多尺度下的分割问题,本文设置了级联和多尺度的空洞卷积模块,扩充了ASPP模块。(1)重新讨论了空洞卷积的使用,让我们可以在串行和空间金字塔池化的框架下,能够获得更大的感受野从而获得多尺度信息。(2)改进了ASPP模块,使用不同采用率的空洞卷积 和 BN层组成,我们尝试以串行或并行的方式布局模块。(3)讨论了一个小问题,使用大采样率的3x3 的空洞卷积,因为图像边界响应无法捕捉远距离信息(小目标),会退化为1x1的卷积,文中建议将图像级特征融合到ASSP模块中。

网络效果:网络在没有经过DenseCRF 后处理,也可以获得不错的结果。

实验结果:在PASCAL VOC 2012数据集中获得了与其他模型想当的性能。

语义分割常用特征提取框架(获取上下文信息):

1、图像金字塔:从输入图像入手,将不同尺度的图像分别送入网络进行提取特征,后期再进行特征融合。其中大尺度的输入提供了小目标的细节,小尺度的输入图像被编码成整体的上下文信息。这种方法有内存限制。

2、编解码结构:编码器部分利用下采样进行特征提取,解码器部分利用上采样还原特征图尺寸和对象细节。

3、深度网络&空洞卷积:经典分裂算法利用连续下采样提取特征,而空洞卷积是利用不同的采样率。

4、空间金字塔结构:除了ASPP外,仍有其他网络使用了该思想,如SPPNet,PSPNet等。

空洞卷积获取密集特征

完全卷积的方式被证明用在语义分割上有效,但是频繁的max-pooling 和 striding 导致特征图的空间分辨率严重降低,反卷积(FCNS) 已经被用来恢复空间分辨率,但是空洞卷积更加有效,原因是空洞卷积的感受野更大,在参数量不变的情况下,空洞卷积可以通过提高空洞率,让每次采样时在输入特征图上的重合采样区域更多,从而获得更密集的特征响应,举个例子:比如一个普通的卷积神经网络输入与输出尺寸之间差了32倍(down sampling 5次),当我们希望功能响应的空间密度加倍时,可以把最后一层的卷积或者池化层步幅stride设置为1,然后后续卷积替换为空洞率为2的空洞卷积,这样就能获得更密集的空间响应而不需要学习更多的参数。这里的密集,指的是特征图的分辨率,普通卷积的下采样操作会让特征图尺寸越来越小,最后得到的结果对应回原图的位置上,把每个特征图的像素点看作提取到的特征的话,整张图的特征响应就会变得稀疏。因此如果将最后一个缩小分辨率的卷积层替换成空洞卷积,可以 在保持运算量的同时不减小特征图分辨率,使输入与输出尺寸之间差16倍,这样就获得了更密集的特征响应。

之前提到的密集与稀疏特征响应,指的是提取到的特征图的分辨率。普通卷积的下采样操作会让特征图尺寸越来越小,最后得到的结果对应回原图的位置上,把每个特征图的像素点看作提取到的特征的话,整张图的特征响应就会变得稀疏。而空洞卷积可以在运算量不变的情况下不降低特征图的分辨率,这样得到的特征图对应回原图上就更加密集。

在DCNN中,可以在一系列层中使用空洞卷积从而可以以任意的高分辨率计算网络的特征响应。将这种方法贯穿整个网络可以一直以原始分辨率计算特征图,但是计算成本过高,因此可以在效率和准确率之间做一个折中,将图像分类网络转化为一个密集特征提取器。

网络结构

DeepLap 系列论文

上图是原来的ResNet模块,通过不断的下采样操作使得特征图的尺寸不断减小,同时深度也越来越深,在分类任务时是有好处的,在较深的模块更容易获得全局信息,但是对于分割网络来说这样损失了太多的细节,特征响应变得稀疏。但是通过将后几个block改为空洞卷积后,运算量没有增高大,但是却能够维持分辨率不降低,这样获取了更加密集的特征响应,使得还原到原图时细节更好。

空间金字塔池化(Atrous Spatial Pyramid Pooling ,ASPP)

拥有不同空洞率的ASPP有效的获取了多尺度信息,但是发现随着采样率增大,尤其是滤波器的等效尺寸接近特征图的尺寸时,整个3x3滤波器就会退化为1x1 滤波器,只是中间的一个权重值有用,为了克服这个问题,文章使用全局平均池化在最后一个特征图上,并且通过1x1 卷积得到256个特征上采样到所需空间尺寸,所以最终的ASPP包含四个并行操作:一个1x1卷积核三个3x3 卷积,都是256个卷积核,如下图:

DeepLap 系列论文

所有分支得到的特征图将会拼接在一起通过另外一个1x1 卷积。最后通过16x上采样获得分割图。

DeepLap v3+

摘要

背景概述:深度神经网络采用空间金字塔池化模块或编解码结构来完成语义分割任务。前者通过多分辨率、多感受野的滤波器或池化操作来探测输入的特征,从而能够编码多尺度的上下文信息。后者网络通过逐步恢复空间信息来捕捉更清晰的目标边界。

主要贡献:结合了两者的优点,通过添加一个简单有效的解码器模块来细化分割结果,特别是沿对象边界分割的结果。(1)提出了一种编码器-解码器结构,采用DeepLap v3作为encoder,添加decoder得到新的模型(DeepLap+)。(2)采用Xception模型来处理分割任务,并在ASPP模块和解码器模块上应用深度可分离卷积,从而产生更快更强的编解码器网络。

网络效果:该网络超过了以往方法的精度水平,可以更好的分割边界。

实验效果:在PASCAL VOC 2012 数据集和Cityscapes数据集中分别取得了89%和82.1%的miou。

介绍

在这项工作中,我们考虑两种类型的神经网络,使用***空间金字塔池***模块或***encoder-decoder***结构语义分割,前一个捕捉丰富的上下文信息,通过集中特性在不同的分辨率上,而后者是能够获得比较细化的物体边界。

(1)在Deeplab v3中和PSPNet 中,虽然丰富的语义信息被编码,但是在backbone网络多次下采样使得被分割的边缘信息丢失,导致边缘模糊。(2)使用空洞卷积可以减少下采样,缓解由于下采样过多而使得被分割物体的边缘信息丢失的问题,但是空洞卷积往往导致占用过多的内存,计算过于复杂,特别使当输出的分辨率是输入分辨率的1/8或者1/4时。(3)由于编码器-解码器结构不需要空洞卷积,其计算量往往较少。

我们尝试结合两种方法的优点,提出通过结合多尺度的上下文信息来丰富编解码网络中的编码器模块。

DeepLap 系列论文

网路结构

空洞卷积:(1)控制前向传播过程中被计算的特征分辨率(2)调整感受野的大小,能够捕捉多尺度信息

Depthwise separable convolutional (深度可分离卷积)

​ 结构:一个depthwise convolution convolution + 一个1x1卷积层

​ 作用:大大减少了计算复杂度

​ 改进:将空洞卷积核depthwise convolution 进行结合,构成atrous separable convolution

DeepLab v3作为编码结构

  1. 通过改变deeplab v3编码器最后一个(两个)模块的striding并改为使用空洞卷积,能够控制output stride为16(8)
  2. Deeplabv3改进了ASPP模块,有多个分支的不同rate的空洞卷积以及图像层特征

译码器

  1. 使用双线性插值法对编码器输出特征放大4倍
  2. 将放大后的编码器输出特征和来自backbone的低层特征进行拼接
  3. 使用1x1卷积对特征通道数进行压缩,使训练更容易,防止编码器输出特征信息被来自backbone的低层特征所压制

DeepLap 系列论文

改进的Aligned Xception

DeepLap 系列论文

  1. 使用更深的Xception结构,但是保留原有的entry flow network结构
  2. 所有最大池化层改为 separable convolution 来进行下采样,从而能够在任意分辨率的特征图上提取特征
  3. 在每个3x3卷积层后都加了BN和ReLU层

实验

数据集:PASCAL VOC2012,Cityspaces

评价指标:mIOU,Multiply-Adds

结果

1、来自低层的特征进行1x1的卷积后输出通道数的变化对结果的影响(resnet101)

DeepLap 系列论文

2、解码器3x3 卷积结构变化对结果的影响(resnet101 backbone)

DeepLap 系列论文

3、不同推理策略对结果的影响(resnet101 backbone)

DeepLap 系列论文

从Table3可以看出,output stride=8时,计算量增加将近3倍,但是mIoU的提升却非常小。所以设置output stride=8得不偿失

4、以修改的Aligned Xception作为backbone的deeplabv3+不同推理策略的结果的影响

DeepLap 系列论文

与Table 3中的结果相比,Aligned Xception在语义分割方面确实比resnet101有优势,在结果更好的情况下计算量更小

5、在Pascal Voc2012测试集上的结果

DeepLap 系列论文

6、在CityScapes上的结果(Xception backbone)

DeepLap 系列论文

常用实验内容

(1)模型变体(不同的主路径,不同的模块)

(2)学习率相关实验

(3)不同数据集(多用几个数据集)

Xception backbone)

DeepLap 系列论文

常用实验内容

(1)模型变体(不同的主路径,不同的模块)

(2)学习率相关实验

(3)不同数据集(多用几个数据集)

(4)和之前的方法对比