deeplab-v1论文解析
会议论文ICLR2015
用深度神经网络和全连接条件随机场解决图片语义分割问题
摘要
深度卷积神经网络(DCNNs)在最近的高级别视觉任务上,都取得了最佳的效果。
比如图像分类,目标检测。
本文联合深度卷积神经网络和概率图模型解决像素分类的问题(也叫做语义分割)
实验表明,利用DCNNs得到的最后一层特征,并不足以得到较好的分割结果。
这是因为DCNNs具有的特征不变性导致的。
分类问题训练出来的DCNNs特征往往具有位置不变性。
因为无论图片山的目标位置在哪里,图片山所有像素都需要对应一个类别。
为了解决DCNNs的位置不变性对分割问题所带来的问题,我们在DCNN的最后一层之后加了一个全连接的条件随机场(CRF).
实验表明,我们提出的"DeepLab- CRF"系统,精度超过之前的所有方法。
在PASCAL VOC-2012的分割数据集的测试集上,我们达到了71.6%的精度。
论文主要展示了我们是如何获取这样的精度的:通过精巧的网络结构设计和对能够提取更加密集特征的空洞卷积的新应用。
介绍
我们的"DeepLab“系统的主要创新有三:
- 速度:因为使用了空洞卷积,我们的DCNN的速度达到了8 fps,不过要注意,当测试的时候,这其中的CRF就需要0.5秒.
- 准确:在 PASCAL分割任务上,我们取得第一名,比第二名高7.2%.
- 简介: 我们的系统是由两个相对比较容易写代码的模块构成的:DCNNs和CRFs.
相关工作
我们与其他论文的主要不同就是把对像素进行处理的CRF和DCNN结合在一起时,用DCNN直接作为CRF中已经计算好的一项:”一元项“。
一些方法把CRFs用作DCNN的重排序系统。
一些方法把超像素作为CRF的节点,然后用图割办法来进行推理。
这种方法的误差主要在超像素边界的计算上,当然,他们都没有使用长距离的超像素信息来估计像素类别。
我们的方法不再估计超像素,而是估计每个像素,并且有用到距离比较远像素来估计每个像素,还可以用CRF的前向推理去直接优化一个DCNN损失函数。
我们注意到,现有大量的关于条件随机场在图像分割上的应用,但是我们是第一个相当高效的将全连接条件随机场应用在了图像的语义分割问题上。
在第一个版本的代码发布之后,我们注意到了其他两个小组也在研究将DCNNs和CRFs结合在一起使用。其中一个小组专注做出更好的分类,另一个小组展开了CRF的平均场地推导过程,把整个系统转化为端到端的可训练的前馈网络。
将卷积神经网络应用在密集图片标注上
接下来我们会详细描述我们是如何把VGG-16从一个分类网络转化为一个高效且精准的语义分割的密集特征提取器的。
4.1 空洞卷积:高性能的空洞,密集滑窗特征提取器
第一步:把VGG-16中的所有的全连接层都转化为卷积层。然后将输入模型的图片不再缩放到224x224,而是图片的大小不做变化,直接输入到网络中。这时我们能够得到相对于原图缩小32倍后的像素得分图。
第二步:由于32倍太小,所以我们想办法得到缩小8倍后的像素得分图。我们跳过最后两个maxpooling的下采样部分(将其stride由2变为1),并且把他们之后的3个层卷积层的滤波器变成dalated rate =2的空洞滤波器。然后把第一个全连接层转化而成的7x7的卷积层,并将此层的滤波器变成dalited rate=4的空洞滤波器。
具体实现的话,我们有一种等效的方法。我们可以保持滤波器不变的同时,对特征图采样。当dalited rate=2时,就采样2份特征图来做标准卷积。当dalited rate=4时,就采样4份特征图来与原来滤波器做标准卷积。如图1所示。
空洞卷积这个思路,在1999年的连续小波变换里,已经被提出来了。
我们用caffe框架中的im2col将特征图采样,然后进行标准卷积,从而实现对空洞卷积的等效。这个操作在我们计算任意dilated rate卷积的时候,都非常方便。im2col是将多维度的图像特征图转化为如图1中所示的向量。
我们在预先训练的VGG-16网络上微调。将网络最后输出1000个channel换为21个。损失函数就是每个像素位置上的交叉熵之和。每个像素的loss在总loss中的权重是相同的。网络输出的目标特征图是有标注的图下采样8倍得到的。用SGD优化。
测试的时候,我们需要原图大小的得分图。如图2所示,使用简单的双线性上采样将得分图放大8倍。注意到,FCN中并没有使用空洞卷积,生成了非常粗糙的32倍下采样得分图。但是我们得到的8倍下采样得分图比较平滑精细。因为FCN的32倍下采样得分图非常粗糙,所以FCN才使用了可学习的上采样技术,这个可学习的上采样技术显著地增加了网络的复杂度和训练时间。我们并不需要使用上采样技术,微调我们的网络只需10个小时,而训练FCN网络需要数天。
4.2控制卷积网络的感受野的大小以及密集计算的加速
我们的网络之所以成功得到密集得分,还有一个要素:精确地控制网络的感受野大小。
一般从image net训练出来的DCNN具有比较大的感受野。
比如全卷积化后的VGG-16的感受野为224x224和404x404。
转化为全卷积的VGG-16,第一个全连接层有4096组7x7的权重,这个层的计算量就是我们这个网络计算量的瓶颈。
解决这一层计算量大的问题:把卷积核变成4x4(or 3x3).这样就把感受野降低到了128x128或者308x308,这一层的计算量降低2-3倍。
在Titan GPU和caffe上,这个VGG网络十分快:一个306x306的输入图片,产生39x39的密集特征得分图的fps是8.训练时的fps=3.
我们将全连接处的4096减少到1024也成功了,没有降低性能,计算量进一步减少。
用一个小的网络代替vgg,测试的fps能到达到30.
vgg的感受野具体计算和DeepLab的感受野具体计算可参考这里:https://www.toutiao.com/i6963945583077982731/?group_id=6963945583077982731
全连接条件随机场和多尺度预测:细节轮廓恢复
5.1 用图片分类网络给出精确位置得分是相互矛盾的
如图2所示,DCNN可以可靠地给出每个像素的粗分类结果,但是不能给出准确的结果。在卷积神经网络里,整张图片的分类准确度和与对每个像素分类的准确度是互斥的:较深的具有多层max-pooling的被证明在整张图片的分类问题上表现更好,同时这样的网络具有很好的位置不变性和较大的感受野,造成在最后一层的每个像素位置给出准确的得分比较困难。
解决这个问题,有两个方向。第一个是利用多层信息的跳层连接来更好的估计目标的轮廓信息。第二个方向是采用超像素思路,本质上把问题转化为一个更简单的分割任务。
下一小节中,我们提出一个新的方向,结合使用了CDNNs和进行精细分割的全连接CRFs,并且取得了非常好的效果,比之前的方法要准确。
5.2 全连接条件随机场进行精细位置分类
一般来说,CRFs被将分割遮罩图上的噪声点去掉。这个模型里有个能量项,这个能量项跟邻域的像素点有关,两个像素在距离上比较接近时,其分类就倾向于相同。短距离CRFs的主要作用是清除弱分类器带来的这些噪声点样的错误,这些弱分类器通常用的是手工设计的特征。
DCNN分类器并非弱分类器,它给出的结果非常平滑没有噪声点错误。在这种情况下,再使用短距离CRFs不合适,我们的目标是恢复细节,而不是平滑分割结果。
使用对比度增强的能量函数的短距离CRFs也可以,就是求解太困难。
我们使用全连接CRF模型,来避免短距离CRFs的缺点。能量函数为:
x是每个像素对应的类别。一元势函数为,由DCNN算出,它只像素的类别是时的概率。
这些公式要注意的是,这里的x是个序列,是指一整幅图片上每个像素的类别构成的矩阵。
是位置i处的类别。
5.3 多尺度预测
最近的论文都进行了多尺度预测,所以我们也搞,毕竟多尺度可以提升分割精度。
我们将输入图片后面接上一个两层的MLP(3x3,channel=128,1x1,channel-128)
将前四个maxpooling后的层都接一个两层的MLP,
然后将这个五层的 feature map都在channel维度连接到网络的最后一个特征图上。
所以这个输入到softmap的特征图,在channel维度上增加了5*128=640channels.
疑问:特征图直接在channel维度上连接,那么特征的大小不一致该如何解决?输入softmax的特征图大小都应该是8倍下采样的,那么原图需要8倍下采样?这个两层的 MLP并不对维度进行下采样,所以,图片应该输入MLP前进行8倍下采样了。
多尺度新增加了5个2层的 MLP,他们的训练与主网络分开训练,待主网络完成后,单独微调。
虽然多尺度思路带来了一些提升,但是其提升不如CRF带来的提升大。如下表所示:
实验结果分析评价
数据集
PASCAL VOC 2012分割数据集,20类待分割物体,20个物体之外,其他像素为背景。数据集分为三部分:训练集,验证集,测试集,分别含有1464,1449,1456张图片。我们对数据集进行了数据增强,增强后一共10582张图片。评价办法是mIOU,一共21类,每个类别一个IOU,一共21个IOU,对这21个IOU取平均就是mIOU。
训练
我们使用分段训练,分别训练DCNN和 CRF,认为CRF的一元势函数由DCNN提供,并且在CRF训练时是固定不变的。
对于DCNN的训练,我们使用了VGG-16的预训练结果。网络改为Deeplabv1后,我们对网络进行了微调。mini-batch =20,init lr=0.001,最后一个层的init lr = 0.01,每过2000个迭代步骤,学习率乘以0.1.SGD中的 momentum为0.9,L2正则化系数为0.0005.
训练好DCNN后,我们开始CRF模型的训练。使用交叉验证法。这里一共需要学习5个参数。我们先固定两个参数,然后搜索其他3个参数。网络搜索。
在验证集上进行测试
使用CRF带了4%的提升。下图展示了使用CRF前后的结果。
上图最后三行是分割失败的例子。
多尺度特征
多尺度特征提升1.5%。效果如下图:
感受野
空洞卷积可以通过膨胀系数精确控制感受野。如下图表
我们在第一个全连接层上,实验了不同的卷积核大小,不同的膨胀系数。
如果表2所示,我们将卷积核修改为3x3 膨胀系数改为12,并且把channel数由4096改为1024后,性能与kernel size=7时一样,但是速度提升了3.36倍。
目标边界的平均像素交并比
为了评价目标边界像素的准确率,我们把边界周围的像素单独计算IOU,如下图所示:
使用多尺度和CRF后,可以显著提升边界处像素的准确性。
与最好的模型进行比较
我们的模型是deeplab-CRF,我们与FCN-8s,TTI-Zoomout-16模型在'val'数据集上进行了比较。如上图所示,最后一行的我们模型的结果。第三行左边是FCN-8s的结果,右边是TTI-Zoomout-16的结果
我们的模型可以重现么?
我们是在excellent Caffe架构上实现的。我们开源了代码,配置文件,训练得到的模型。需要重现的话,可以访问这里:https://bitbucket.org/ deeplab/deeplab-public.
测试集上的结果
如上图,最好的模型是DeepLab-MSc-CRF-LargeFOV,其mIOU是71.6%.
讨论
我们的deeplab-crf主要是借鉴了深度卷积神经网络和全连接条件随机场的思路,将分割做得比较准确和快速。
后面打算把模型的两部分合二为一,把模型做成端到端。
后面打算在更多的数据集上做一下实验,甚至在三维深度图上,或者是视频上。
最近我们将实验用bbox或者轮廓线来训练。
我们使用了深度卷积模型和概率图模型。所以我们会进一步他们之间的关系,开发他们之间在分割任务上的潜力。
感谢:
除了感谢基金会,还感谢英伟达公司捐赠的GPU,感谢论文审稿人的详细意见和建设性反馈。
本文暂时没有评论,来添加一个吧(●'◡'●)