论文翻译
摘要
本文我们使用深度学习的方法解决语义分割的相关问题,我们作了三个主要贡献,并且都很有实用价值。首先,我们设计的空洞卷积非常适合稠密预测任务。借助空洞卷积(Atrous Convolution),我们可以有效控制输出特征图的分辨率。不仅如此,我们可以有效增大卷积核的感受野(field of view),并且不会增加参数量和计算量。其次,我们提出带空洞的空间金字塔池化(ASPP)模块,通过不同的采样率(sampling rates)和有效的感受野,ASPP对输入特征图进行不同尺度的处理。最后,结合DCNN以及概率图模型(CRF),对边界进一步优化处理。常规的DCNN模型,连续的的池化和降采样获得不变性(invariance),对于定位精度是非常不合适的。我们通过对DCNN输出进行CRF处理,可以得到比较精细的分割结果。我们提出的DeepLab系统在PASCAL2012上得到最好的分割结果,达到79.7%的平均IOU。
1 介绍
DCNN将计算机视觉系统的表现推向新的高度,尤其是在图像分类和目标检测领域。DCNN端到端的训练方式明显优于基于手工设计的特征。DCNN内在的不变性对于学习局部的图像变换尤为成功,使得可以学习比较抽象、高级的特征。这种不变性非常适合分类任务,但是阻碍了语义分割任务,抽象的空间信息是不需要的。
在语义分割任务中,DCNN面临方面挑战:(1)降低的特征图分辨率;(2)目标对象是多尺度;(3)较差的定位精度(due to DCNN invariance)。下面我们介绍如何解决上述问题。
第一个问题:用于分类的DCNN中连续的 Max-Pooling and Downsampling(striding)导致最终输出特征图的分辨率明显降低。为了克服这个阻碍,并且高效的产生稠密的特征图,我们将DCNN最后几层的max-pool去掉(通常是将滑动降为1),并且使用卷积进行上采样,保证特征图的采样率较高(rate值较高),指的是在非零的之间插入零值,也即是空洞卷积。该项技术广泛应用于信号处理,常用于处理undecimated waelet transform。我们使用术语“atrous convolution”作为具有上采样功能的卷积的简称。实际中,我们通过组合空洞卷积核,使得计算的特征图更加密集,后面添加简单的双线性插值,最终得到原图图像大小。相比于反卷积层,这种操作简单而且高效。与通常的具有更大的卷积核相比,空洞卷积可以增大感受野,并且不会增大计算参数。
第二个问题:实际情况下,目标通常是多尺度的,处理这种问题的标准方式是将图片进行不同尺度的缩放,然后将特征图进行融合。我们实验表明,这种方法确实有效果,但是引入过多的计算代价。受启发于空间金字塔池化(SPP),我们将输入特征图层进行不同rate的采样率。通过对原图进行不同尺度的卷积核(具有不同的感受野),可以获取到不同尺度的目标信息。与重复利用重采样特征不同的是,我们使用多个并行的空洞卷积层(with different sampling rate),我们称这种模块为ASPP。
第三个问题:分类问题倾向于DCNN空间不变性变换,但是限制了空间细节的精度。解决这种问题的一个办法是添加skip-layers来提取不同层次的特征,在最后进行融合,并得到分割结果。不同的是,我们使用CRF得到更好的细节。CRFs广泛应用于语义分割,将不同具有底层信息进行融合。尽管不断复杂的模型用于重建高层次的依赖,或者分割块之间的依赖性。我们提出全连接的CRF进行有效的计算和细节的获取,并且保持信息空间上长距离的依赖性。结合DCNN和CRF,我们获得较好的效果。
图1展示了DeepLab系统的整个过程,我们将VGG16和ResNet-101迁移到语义分割中,方式如下:(1)将全连接层转为卷积层;(2)通过空洞卷积提高特征图分辨率,将原图降低8倍,而不是32倍。然后使用双线性插值得到原图的分辨率,最后输入到CRF得到最后的分割结果。
从实际考虑,我们的主要优势:(1)速度:空洞卷积使得速度很快;(2)精确度很高;
相比于DeepLab-V1,我们更新的DeepLab-V2系统有如下几方面提高:(1)可以处理多尺度目标,使用多尺度输入或者ASPP;(2)采用ResNet-101,比VGG-16更好;(3)代码和模型:http://liangchiehchen.com/projects/DeepLab.html。
2 相关工作
前十几年的,语义分割通常依赖手动设计的特征,并与分类器结合(比如Boosting,Random Forests,SVM等)。虽然采用了大量提取特征的方法,但是特征表达能力依然有限。随着深度学习在图像分类领域的成功,很多学者将其迁移到语义分割的任务。因为这种任务既包括分类也包括分割,所以如何将两者进行有效结合,是比较关注的问题。
此部分省略;
3 方法
3.1 基于atrus卷积的密集特征提取及视场放大
采用全卷积的网络结构,DCNN成功应用于语义分割或者其它稠密预测的任务。但是,DCNN中重复的最大池化(max-pooling)以及滑动(stride)极大降低了输出特征图的分辨率,通常降低32倍。FCN使用反卷积层解决分辨率低的问题,但会引入额外的计算代价。
不同的是,我们采用空洞卷积(atrous convolution),它最初用于高效的小波变换(undecimated wavelet transform)。该算法使得在任意层得到期望的分辨率。它可以用于后续处理,一旦网络训练完成,我们可以将空洞卷积添加网络中继续进行训练。
首先考虑一维的信号输入,空洞卷积的输入
x
[
i
]
x[i]
x[i],输出为
y
[
i
]
y[i]
y[i],卷积核为
w
k
w_k
wk(一维卷积核的长度为
K
K
K)定义如下:
y
[
i
]
=
∑
k
=
1
K
x
[
i
+
r
⋅
k
]
w
[
k
]
.
y[i] = \sum_{k=1}^{K}x[i+r\cdot k]w[k].
y[i]=k=1∑Kx[i+r⋅k]w[k].
采样率为 r r r与滑动相关,标准卷积的 r = 1 r=1 r=1,见图2。
图2:一维无规则卷积的示意图。 (a)在低分辨率输入特征图上进行标准卷积的稀疏特征提取。 (b)在高分辨率输入特征图上应用具有速率r = 2的无规卷积的密集特征提取。
图3给出了2D上的简单例子。给定一张图像,首先进行2倍的降采样,然后执行7x7卷积操作。如果将输出特征图与原始图像相比,我们只是得到原图像1/4的响应。如果采用空洞卷积对原图进行卷积,并且上采样因子为2,引入零值插入,那么我们可以得到相对于原图大小的响应值。尽管卷积核尺寸增大,我们只需考虑卷积核非零值部分的值,那么卷积核参数量和操作量保持不变。我们可以随意明确的控制特征图响应的空间分辨率。
图3。二维无规卷积的示意图。 第一行:在低分辨率输入特征图上使用标准卷积进行稀疏特征提取。 第二行:在高分辨率输入特征图上应用具有r = 2的无规卷积的密集特征提取。
在DCNN网络结构中,可以在一系列层上连续使用空洞卷积,可以有效控制网络在任意高分辨率的最终响应值。比如,为了将VGG-16和ResNet-101特征图空间密度加倍,我们将pool5和conv5_1滑动距离设为1,然后替换后面的所有卷积为空洞卷积,rate=2。我们可以对所有层添加这种操作,但是会增加计算代价。我们采用兼顾精度和效率的方法,使用空洞卷积,将计算密度增加4倍,然后使用双线性插值(使用8倍的上采样),那么特征图就能恢复到原图的大小。因为DCNN的输出是很平滑的,所以插值操作是有效的,如图5所示。不像FCN的反卷积操作,需要学习额外的参数。
图5:飞机的得分图(在softmax函数之前输入)和置信度图(softmax函数的输出)。 在每次平均场迭代之后,我们显示得分(第一行)和置信度(第二行)图。 最后一个DCNN层的输出用作平均场推断的输入。
空洞卷积使得我们可以任意控制DCNN任何层的感受野。经典的DCNN网络使用的是小的卷积核(3x3)。空洞卷积采样率为r,则会引入 r − 1 r-1 r−1个零,有效增大了卷积核的尺寸为 k e = k + ( k − 1 ) ( r − 1 ) k_e = k+(k-1)(r-1) ke=k+(k−1)(r−1),不会增加参数和计算代价。那么这样就可以有效的控制感受野,有助于寻找精确到定位和内容一致性的平衡点。我们对这项技术作了充分的实验:我们的DeepLab-LargeFOV在VGG-16的fc6层采用 r = 12 r=12 r=12的采样率,并且获得较好的结果。
从应用的方面考虑,可以从两方面有效的使用空洞卷积。1、通过插入洞holes来上采样卷积核,或者对输入特征图进行采样。我们在早期的工作中使用这种操作,Caffe框架下添加im2col函数(it extracts vectorized patches from multichannel feature maps),该操作可以对特征图进行稀疏采样。2、使用与空洞采样率相同的倍数,对输入特征图进行采样,交错的产生 r × r r×r r×r个降低分辨率的特征图,总共产生 r × r r×r r×r个结果。然后对中间层层特征图使用标准的卷积,并通过再插值的方法产生原图大小的分割图。通过将空洞卷积转化为常规的卷积,我们可以使用现成的最优卷积操作。我们在tesnsorflow中使用第二种方法。
3.2 使用Atrous空间金字塔池的多尺度图像表示
由于在不同的目标尺寸的数据集上训练,DCNNs可以处理不同尺度的目标。明确的考虑目标尺度问题,可以有效处理大的目标和小的目标。
我们实验过两种处理不同的尺度目标的方法。1、标准的多尺度处理。我们提取不同尺度下原图的训练的DCNN网络,他们共享参数。为了得到最终的结果,我们将并行的DCNN网络特征图进行插值,得到原图大小的结果,选取最大值响应的方法进行融合。我们在训练和测试中都进行这样的操作。多尺度处理明显增加网络的表现。不同尺度的输入增加网络的计算代价。
2、第二个方式是受启发于RCNN中的空间金字塔采样,通过对单尺度目标进行不同程度的采样可以有效的分类。我们对这种方法进行变化,使用多个并行的空洞卷积核,具有不同的采样率,称之为ASPP(DeepLab-ASPP)方法,见图4:
图4。Atrous空间池化金字塔(ASPP)。 为了对中心像素(橙色)进行分类,ASPP通过采用具有不同速率的多个并行滤波器来利用多尺度特征。 有效视野以不同颜色显示。
3.3 精确边界恢复的全连通条件随机场结构预测
参考DeepLab-V1中的翻译部分。
4 实验结果
我们对ImageNet上预训练的VGG-16和ResNet-101网络进行微调,使其能够适应语义分割任务。与FCN一样,将1000类分类器修改为21类分类器,也正是语义分割的类数。损失函数使用交叉熵,计算输出特征图每一个像素的交叉熵之和(标签要进行8倍的降采样),所有位置像素权重相等。我们的目标是真实标签(8倍降采样)。优化器为SGD。我们将DCNN和CRF分开训练。
我们的评测数据集为:PASCAL 2012,PASCAL-Context,PASCAL-Person-Part,and Cityscapes。
4.1 PASCAL 2012
数据集:PASCAL 2012 包含20类前景类和1类背景。原始数据集包括分别包括1464,1449,1456张训练集,验证集和测试集。额外的标注数据集为10582张(trainaug)为训练集。评测指标为IOU。
4.1.1 会议版本结果
首先采用ImageNet预训练的VGG16网络结构,mini-batch=20,初始学习率为0.001(0.01 for the final clasifier layer),每2000步学习率降10倍,momentum=0.9,weight decay=0.0005。当在trainaug上微调DCNN后,交叉验证的方式学习CRF的参数。
视野和CRF:表1给出了不同感受野大小的DeepLab模型的变体,通过调整fc6层的卷积核的大小和采样率 r。首先直接使用VGG-16,使用原始的7x7卷积核,r=4,(since we use no stride for the last two max-pooling layers)。经过CRF后,精确度为67.64%,但是速度很慢。将卷积核降为4x4,速度增加(参考表1)。我们实验了两种小的卷积核,并且FOV很大,见表1 的最后两行。所有网络将fc6和fc7最后的两层卷积核数量从4096降为1024。最终,DeepLab-CRF-LargeFOV与直接对VGG-16的操作的效果相当(表一的第1和4行),速度是其3.36倍,参数更少(20.5MVS134.3M)。CRF可以使得准确率提高3%-5%。
表1:通过调整“ fc6”层的内核大小和粗采样率r的视场效果。 我们显示了CRF前后的模型参数数量,训练速度(img / sec)和val设置平均IOU。 DeepLab-LargeFOV(内核大小3×3,r = 12)达到最佳平衡。
测试集评估:我们将DeepLab-CRF-LargeFOV模型在PASCAL VOC 2012官方测试集上测试,达到70.3%的平均IOU。
4.1.2 会议版本的这项工作后的改进
在DeepLab-v1的基础上,我们对模型作了如下更新:(1)训练阶段,不同的学习率调整方式;(2)提出ASPP;(3)引入更深的网络(ResNet-101)和多尺度处理。
学习率:在训练DeepLab-LargeFOV的过程中,我们探索了不同的学习率策略,我们发现“poly”衰减方式优于“step”衰减方式,poly衰减:
(
1
−
i
t
e
r
m
a
x
i
t
e
r
p
o
w
e
r
)
(1-\frac{iter}{max iter}^{power})
(1−maxiteriterpower)。表2所示,使用poly(power=0.9),使用同样的batch size以及迭代次数,精度提升1.17%。固定batch size,提高训练次数,精度再次提高1.48%,达到64.9%。但是,总的训练时间增加了。当batch size=10,仍然能达到相近的精度(64.90%vs64.71%)。最后,我们固定batchsize=10,训练20k步。令人惊讶的是,验证集上精度达到65.88%(3.63% improvement over “step”),测试集达到67.7%。本文中,所有模型均采用poly学习率衰减。
表2:PASCAL VOC 2012评估结果(%)(在CRF之前,因为不同的学习超参数有所不同。训练DeepLab-LargeFOV时,采用“多”学习策略比“逐步”更有效)
空洞金字塔池:我们实验了ASPP策略,如图7所示,VGG-16中多个并行的fc6-fc7-fc8分支。他们都是用的3x3卷积核,但是fc6的 r 值不同。表3中,作如下设置:(1)基准模型LargeFOV,只有一个分支, r = 12 r=12 r=12;(2)ASPP-S,有四个分支,具有更小的采样率( r = { 2 , 4 , 8 , 12 } r=\{2,4,8,12\} r={2,4,8,12});(3)ASPP-L,四个分支,更大的采样率( r = { 6 , 12 , 18 , 24 } r=\{6,12,18,24\} r={6,12,18,24});每个结果都给出是否使用CRF。如表中所示,ASPP-S在baseline的基础上提升1.22%。但是,经过CRF处理后,两者相当。我们在测试集上测试了ASPP-L+CRF,达到72.6%。图像分割结果如图8:
图7。DeepLab-ASPP使用具有不同学习率的多个过滤器以多个比例捕获对象和上下文。
表3:ASPP对基于VGG-16的DeepLab模型的PASCAL VOC 2012 val set性能(平均IOU)的影响。LargeFOV:单个分支,
r
=
12
r =12
r=12。ASPP-S:四个分支,
r
=
{
2
,
4
,
8
,
12
}
r=\{2,4,8,12\}
r={2,4,8,12}。 ASPP-L:四个分支,
r
=
{
6
,
12
,
18
,
24
}
r=\{6,12,18,24\}
r={6,12,18,24}。
图8:与基线LargeFOV模型相比,ASPP的定性分割结果。 使用多个大型FOV的ASPP-L模型可以成功捕获多个尺度的对象以及图像上下文。
更深层次的网络和多尺度处理:我们将最近的ResNet-101网络迁移到语义分割。与VGG-16类似,我们使用空洞卷积。在之前处理的基础上,我们采用了其它的策略:(1)多尺度输入:我们分开的将输入图片缩放(scale=0.5,0.75,1)输入到DCNN,然后将他们最终的输出特征图进行融合(同位置取最大值);(2)模型在MS-COCO上预训练;(3)图像增强:训练过程中,随机对图片进行尺度缩放(from 0.5 to 1.5);表4中,我们在LargeFOV和ASPP模型之上分别评测了这些指标,显然ResNet-101明显优于VGG-16(eg our simplest ResNet-101达到68.72%,compared to 65.76% of our DeepLab-LargeFOV VGG-16 based variant, both before CRF)。多尺度融合提升2.55%,在MS-COCO上得到额外2.01%的提升。数据增强也是很有效的(提升1.6%)。采用LargeFOV(adding an atrous convolutional layer on top of ResNet, with kernel and rate=12)同样是有效的。CRF后处理最好的模型,达到77.9%。
表4:在PASCAL VOC 2012 val set上为DeepLab使用ResNet-101。 MSC:采用具有最大融合的多尺度输入。 COCO:在MS-COCO上进行预训练的模型。 Aug:通过随机调整输入比例来扩充数据。
定性结果:我们提供了CRF前后视觉上的对比结果(our best model variant),如图6。没有CRFDeepLab可以得到不错的分割结果,使用CRF之后,可以得到更好的 结果。
图6:PASCAL VOC 2012 val结果 在CRF之前/之后输入图像和我们的DeepLab结果。
测试集结果:我们已经将最终最佳模型的结果提交给了官方服务器,获得了79.7%的测试集性能,如表5中所示。该模型的性能大大优于以前的DeepLab变体(例如,带有VGG-16网的DeepLab-LargeFOV),并且目前是PASCAL VOC 2012细分排行榜上性能最高的方法。
表5:PASCAL VOC 2012测试集的性能。 我们在最近的arXiv论文的基础上增加了一些结果官方排行榜结果。
VGG-16 VS. ResNet-101:实验表明,基于ResNet-101的DeepLab能得到更好的分割结果。我们认为ResNet-101中的恒等映射具有更为好的特征,可以提取中间层的局部特征。没有CRF的ResNet-101比采用CRF的VGG-16具有更好的结果。
图9:CRF前后基于VGG-16 net或ResNet-101的DeepLab结果。 CRF对于使用VGG-16沿物体边界进行准确预测至关重要,而ResNet-101甚至在CRF之前就具有可接受的性能。
图10:(a)Trimap示例(左上:图像;右上:ground-truth;左下:2像素的trimap;右下:10像素的trimap)。 (b)在CRF之前和之后使用VGG-16或ResNet-101时,像素均值IOU是围绕对象边界的带宽的函数。
4.2 PASCAL-Context
数据集:PASCAL-Context数据集提供了整个场景下更为详细的语义分割,包括目标(eg. person)和背景(eg. sky)。训练最为常见的59类,以及一类背景。训练集和验证集分别为4998和5105张图。
评估:表6给出了基于VGG-16的LaregeFOV的结果,到达37.6%和39.6%(是否使用CRF),其它的结果可以参考表格中的数据以及相应的处理策略。
表6:与PASCAL-Context数据集上的其他最新方法的比较。
定性结果:我们将带或不带CRF的最佳模型的分割结果可视化,如图11中的后期处理所示。在CRF之前,DeepLab已经可以高精度地预测大多数object/stuff。 利用CRF,我们的模型能够进一步消除孤立的误报并改善沿object/stuff边界的预测
图11:PASCAL上下文结果。 在CRF之前/之后输入图像,ground-truth和我们的DeepLab结果。
4.3 PASCAL-Person-Part
数据集:我们在另一个数据集上进行训练和测试,PASCAL VOC 2010,36标注的数据。我们关注人体分块数据部分,包含更多的训练数据和更大的尺度和人体姿态变化。特别的,该数据集包含每个人的分块,比如眼睛,鼻子。我们合并分块为,头部,躯干,上下胳膊和上下腿,最终产生6个人体分类以及一个背景类。我们仅使用包含人体的图片训练(1716张图)和验证集(1817张图片)。
评估:人体分割结果见表7。Attention包含了VGG-16的实验结果,达到56.39%。因此,这一部分,我们主要关注基于ResNet-101的DeepLab模型。单独的DeepLab,达到58.9%,明显高于Deep-LargeFOV(VGG-16 net)和DeepLab-Attention,大概7%和2.5%。其它结果可以参考表格。图片结果见图12。
表7:与PASCAL-Person-Part数据集上的其他最新方法的比较
图12:PASCAL-Person-Part结果。 在CRF之前/之后输入图像,ground-truth和我们的DeepLab结果。
4.4 Cityscapes
数据集:该数据集包含高质量的、像素集的标注数据,数量为5000张,从50个不同城市采集的路边场景。包含19个语义分割标签(属于7个大类:gound,construction,object,nature,sky,human and vehicle)。训练集,验证集合测试集分别包含2945,500和1525张图片。
pre-release的测试集结果:我们曾经参与该数据集的发布,如表8所示,我们的模型排名第三,达到63.1%和64.8%(在额外粗糙度数据集)。
表8:Cityscapes数据集上的测试集结果,将我们的DeepLab系统与其他最新方法进行了比较。
Val测试集结果:初始结果发布后,我们在表9中进一步研究了验证集。我们研究了验证集的评测结果,Cityscapes图片的分辨率为2048x1024,在有限GPU资源的情况下,很难训练深度网络。我们也尝试降低分辨率为1/2,但是使用原图分辨率的结果更好,带来1.9%和1.8%的提升(是否添加CRF)。为了在推断过程中使用高分辨率,我们将每一张图分解为重叠的小块,与37类似。我们用ResNet-101代替VGG-16,我们没有探索多尺度训练和测试,因为GPU内存有限。我们作了其它方面的探索:(1)更深的网络(ResNet-101);(2)数据增强;(3)LargeFOV或者ASPP;(4)CRF处理;
表9:Cityscapes数据集上的Val设置结果。 Full:模型经过全分辨率图像训练。
当前测试结果:我们最好的模型达到70.4%的结果,模型仅仅在训练集上训练,见图13.
4.5 Failure modes
我们进一步定性分析了PASCAL VOC 2012 val集上最佳模型变型的一些故障模式。 如图14所示,我们提出的模型无法捕获物体(如自行车和椅子)的微妙边界。 由于一元词不够自信,CRF后期处理甚至无法恢复这些细节。 我们假设的编码器-解码器结构,可以通过利用解码器路径中的高分辨率特征图来缓解该问题。 如何有效地合并该方法留待将来的工作。
图14:Failure modes。 在CRF之前/之后输入图像,ground-truth和我们的DeepLab结果
5 结论
我们的DeepLab系统,通过重新设计图像分类网络,使其适应于语义分割。通过添加空洞卷积,可以产生密集的预测。我们进一步提出ASPP结构,可以处理不同尺度的目标。为了能得到精细的结果,结合DCNN和CRF。