DeeperLab: Single-Shot Image Parser 详解

论文链接:

代码链接:https://github.com/Ixuanzhang/models/tree/master/research/deeplab/evaluation

文章来自MIT,Google和Berkeley联合出品,研究的内容是全景图像的快速高效分割和解析任务。

摘要

        本文提出了一种bottoom-up,single-shot的全景图像分析方法。全景图像分析包含"stuff"形式(类别)的语义分割及“thing”形式(区别不同个体)的实例分割。目前,全景图像分析的经典方法是由语义分割任务及实例分割任务的独立的模块组成,同时其需要进行多次inference操作。与之相反的是,本文提出了用相对简单的全卷积的方式对图像进行场景分析。以single-shot的方式同时处理语义分割及实例分割两种任务,从而得到一个处理速度较快的流线型模型。针对定量分析,本文使用了基于实例的全景质量-PQ度量及基于区域建议覆盖分析-PC度量,其可以更好的捕捉“stuff”类别及更大目标实例的图像分析质量。基于Mapillary Vistas 数据集进行实验,本文的单一模型基于GPU实现了31.95%(val)及31.6%(test)的PQ及55.26%(val)的PC。运行速度为3fps或者接近实时速度22.6fps,但准确率会有所下降。

1  简介

    (1)DeeperLab简介

                                          DeeperLab: Single-Shot Image Parser 详解_第1张图片

  • DeeperLab基于single-pass的全卷积网络来产生语义及实例分割的预测mask。最后通过一个快速的算法将预测结果进行融合得到解析的结果最后通过一个快速的算法将预测结果进行融合得到解析的结果。
  • DeeperLab的运行时间几乎与检测到对象数目无关,这使得 DeeperLab更适合复杂场景的图像解析。
  • 使用 PQ 和 PC 指标作为质量评估的标准。
  • 实验数据集:Mapillary Vistas dataset(包含分辨率高达4000*6000的图像)、Cityscapes、Pascal VOC 2012、 COCO

(2)文章主要贡献

  • 提出一些用于高效图像解析的神经网络设计策略,显著降低高分辨率输入的内存占用情况。这些创新包括深度可分离卷积的扩展应用使用带两层预测头的共享解码输出增大内核大小而不是使用更深的网络,使用空间到深度和深度到空间的变换而不是上采样操作,采用困难样本挖掘策略,详细的消融研究显示了实践中这些策略的影响;
  • 基于以上设计策略,提出了一种一次性高效,自底向上的图像解析网络,DeeperLab。在Mapillary Vistas数据集上,所提出的基本模型Xception-71达到31.95%的验证PQ、31.6%的测试PQ以及55.26%的验证PC,GPU上每秒可以处理3帧图像;加宽版本的MobileNetV2基础模型能够在CPU上达到接近实时的性能(22.61fps),准确率稍有下降;
  • 提出一种称为Parsing Covering的指标替代用于评估基于区域远景的图像解析结果。

2   相关工作

       Image parsing:Imae parsing的作用是将图像分解为连续的视觉模式,像纹理及检测目标等,其涵盖了分割,检测,识别等任务。首次使用基于贝叶斯框架进行Image parsing,后来基于AND-OR图, Exemplars及条件随机场等方法进行全场景理解任务。早期这些任务的评估标准是独立的,比如,检测有检测的评估标准,分割有分割的评估标准。随着基于实例的全景质量(PQ)评估引入多个benchmarks中,全景分割越来越受到关注。

        语义分割:大多数state-of-art的分割模型在基于FCN的基础上进行一些创新性改进得到的。比如,上下文信息对像素级的标记十分重要,因此,有些工作使用图像金字塔对不同尺寸的输入图像进行编码操作。PSPNet提出了基于不同网格尺寸的图像金字塔池化结构,DeepLab提出了使用不同rate的并行的空洞卷积结构(ASPP)从而可以有效的利用上下文信息。另一个有效的方法是使用encoder-decoder结构。在encoder阶段得到图像的上下文信息,而在解码阶段对边界进行恢复。DeeperLab利用FCN,ASPP,encoder-decoder等结构来最大化image parsing的准确率。

        实例分割:当前实例分割的方法可以归类为top-down及bottom-up的方法。top-down的方法通过增强state-of-the-art检测器得到的框获得instance masks。其中,FCIS使用位置敏感性score maps。Mask R-CNN基于FPN的基础上进行搭建,在Faster R-CNN上增加了另一个分割分支,取得较好的效果。另一方面,bottom-up的方法采用两阶段的处理过程,由分割模型得到的像素级预测按照实例预测的方式进行聚合。PersonLab预测人体的关键点及进行人体实例分割,而DeNet及CornerNet通过预测边界框的角点来检测实例。

        评价标准:语义分割的结果可以通过基于区域或者轮廓的指标来进行评估。基于区域的评估标准定量评价标记正确的像素所占比例,包括:overall pixel accuracy,mean class accuracy,mean IOU。而基于轮廓的度量则关注分割边界的标记精度。比如,在分割边界较窄的三角地带评估像素级的准确率及IOU。对于类别不可知的分割可以使用covering 标准来度量。实例分割可以看作是mask检测,是边界框检测的增强。因此,此类任务通常使用APr进行度量,像计算mask的IOU而不是边界框的IOU。在0.5到0.95不同重叠率阈值下计算AP的平均值进而评估分割结果。基于区域覆盖指标来评估实例分割结果,该方法适用于无法计算预测值重叠率的情形。图像解析结果可以通过Panoptic Quality(PQ)指标进行评估,同时将具有相同“stuff”类别的图像区域作为单个实例。而PQ度量存在的一个问题是,无论目标物的尺寸为多大,都视为相同的,因此,PQ度量可能会过度强调小的物体,像“thing”类别的而不是“stuff”类。

3 文章所提出的方法

    受到DeepLab和PersonLab的启发,文章所提出的DeeperLab网络结构如下图所示。(采用encoder-decoder模式)

DeeperLab: Single-Shot Image Parser 详解_第2张图片

                                                                                               DeeperLab网络结构

从图中可以看出,网络结构包括以下三个模块:

3.1 编码模块

       backbone:Wider  MobileNet2 (用5*5卷积替换原MobileNet2中的3*3卷积)     +  ASPP

       本文基于高效的深度可分离卷积实验了两个网络结构:1)标准的Xception-71用于获得较高的准确率,2)更宽的MobileNetV2用于更快的推理。虽然标准的MobilenetV2在输入大小为224x224的ImageNet图像分类任务中表现较好。但是对于较高输入分辨率的图像解析任务,其有限的感受野(491x491)无法捕捉大范围的上下文信息。正如Xception-71那样,叠加更多3x3的卷积是增大感受野的一种方式,然而增加的额外的网络层会造成大量的内存占用。考虑到计算资源有限,将MobileNetV2中的所有3x3的卷积替换为5x5的卷积。这种方法在不增加内存占用的条件下有效的增加了感受野的大小(981x981),计算量会稍有增加。本文称其为更宽的MobileNetV2。

        本文增加了网络中的ASPP结构(更增加感受野),encoder输出的feature map stride为16,其空间分辨率为输入上每个分辨率以16的倍数进行降采样得到的分辨率。   

3.2  解码模块

       解码模块目的:恢复物体边界的细节信息。参照DeepLabV3+的做法,文章将编码器输出与主干网络中步长为4的低层特征图相融合。其中,为了不额外增加内存消耗,使用了如下图所示的空间到深度(space-to-depth)的变换操作。最后,得到4096个通道的特征图,再经过深度到空间的降维操作后变成256个通道(stride为4)的特征图。

                                     DeeperLab: Single-Shot Image Parser 详解_第3张图片

                                                                                  深度到空间和空间到深度的变换示意图

       具体:ASPP的输出与低层feature map的通道数首先经过1x1的卷积进行降维处理来减少通道数。DeeplabV3+考虑到不同分辨率的将降维后的ASPP输出进行基于双线性插值进行上采样(是DeeplabV3+中采用的,本文中并未采用该方法),然而上采样的操作会大大增加内存的消耗。本文对低层次的feature map采用了space-to-depth的操作,如下图,使占用的内存不会发生改变。与encoder相似,decoder使用大小为7x7的深度卷积来增加感受野的范围。通道数为4096,然后,通过depth-to-space操作来实现上采样操作,得到一个通道数为256,stride为4的feature map,作为image parsing处理的输入。

3.3 图像解析预测头

       这里包括5个预测头,都是由两个卷积层(7×7和1×1各一个)组成。其中,一个预测头有256个滤波器(通道),用于语义分割;另外四个预测头有64个滤波器,用于类别无关的实例分割。

3.3.1 语义分割头   

       语义分割时采用最小化bootstrappe(引导性)交叉熵损失,并且借鉴难例挖掘(困难样本挖掘)的思路,仅选择损失值最大的K个像素进行反向传播。加权bootstrappe交叉熵损失函数的定义如下面公式所示。

                                              DeeperLab: Single-Shot Image Parser 详解_第4张图片

                                                                                  bootstrappe交叉熵损失

      基于引导性交叉熵损失对分割进行训练,即将每个像素按照其对应的交叉熵损失进行排序,只对其前K个位置的像素进行反向传播(hard example mining),本文设置K的大小为0.15xN,N为图像中所有像素的个数。此外,根据实例的大小,对像素的损失进行了加权重操作(wi=3(实例区域小于64*64,关注small instance)  or   wi=1(其他)),从而更加关注小样本和hard pixels。

3.3.2  实例分割头

                              DeeperLab: Single-Shot Image Parser 详解_第5张图片

      实例分割使用基于关键点的目标实例表示法,选择目标边界框的四个角和质心作为5个关键点。参照PersonLab的做法,文章定义了四种不同的预测头,在计算损失函数时的规则不同,目的就是学习更好的实例分割结果,四种头分别是关健点图、远程偏移量图、短程偏移量图以及中程偏移量图。最后,将四个预测合并为一个与类别无关的实例分割图,给定预测的语义和实例分割结果,将语义和实例标签分配给图像中每一个像素。

  • The keypoint heatmap(图a):用于预测像素是否位于以对应关键点为中心半径为R的disks中。如果在其中,则目标激活值为1,否则为0。无论实例多大,统一设置R为25(所以网络对large和small实例的关注度是相同的)。预测得到的kepoint heatmap通道数为P,每个通道对应一个关键点,基于标准的sigmoid交叉熵损失对误差进行惩罚。
  • The long-range offset map(图b):用于预测一个像素相对于所有关键点的偏移,编码每个像素的长距离信息。得到的长偏移map通道数为2P。每两个通道用于预测每个关键点水平及垂直方向上的偏移,使用L1损失,只激活属于目标实例的像素。
  • The short-range offset map(图c):与 long-range offset map相似,半径仍为25。得到的短偏移map通道数为2P,被用来提高关键点的位置。使用L1损失,只激活在半径范围内的像素。
  • The middle-range offset map(图d):用于预测有向关键点练习图(DKRG)中定义的关键点对之间的偏移。该map用于组合来自相同objects实例的关键点。本文采用star-graph,质心点与四角的点双向连接。预测得到的map通道数为2E,其中E为DKRG中有向边的数量(E=8)。使用L1损失,只激活在半径范围内的像素。

3.4 预测融合(Fusion)

3.4.1 实例预测

      与PersonLab相类似,根据实例相关的四个预测maps生成实例分割map。

  • Recursive offset refinement:本文观察到距离关键点越近则预测的准确率就越高,因此,像PersonLab一样递归的增强(细化)偏移maps.
  • Keypoint localization:对于每个关键点,在short-range偏移map上使用霍夫投票,同时使用对应关键点heatmap的激活值作为投票权重,从而生成short-range score map。同样,在long-range偏移map上使用霍夫投票,权重都为1,生成long-range的score map。两个score maps按照(每个像素)权重相加进行融合。通过在融合后的score maps中寻找局部最大值从而定位关键点。最后,使用 Expected-OKS对所有关键点重新打分。
  • Instance detection:为了实例检测,基于一个快速的贪婪算法对关键点进行聚合。首先,所有关键点被推入一个优先队列中,一次pop一个。如果被pop的关键点已经在检测的实例中存在,则丢弃继续执行。否则,根据middle-range offsets 来确认保留四个关键点的位置,从而形成一个新的检测实例。新检测实例的置信分数为各个关键点分数的平均值。检测完所有实例后使用NMS去除重叠较大的实例。
  • Assignment of pixels to instances:最后,对检测到的实例通过使用long-range offset map进行label操作。将每个像素分配到检测到的实例中,该实例中的关键点与该像素预测到的关键点二者之间的L2距离最短。

3.4.2  语义、实例融合

      本文选择简单的融合方法。先从语义分割开始,分别考虑“stuff”类别(像天空)及“thing”类别(人)。对于预测的像素为“stuff”类的则标记一个独一无二的实例Label。对于其他像素(除被定义为stuff的像素外),实例标签由实例分割结果确定,而语义标签,则由语义分割中投票数较多的情况决定。(即先由考虑stuff,由语义分割分支得,再考虑thing类,由实例分割分支得,再辅助语义分割的结果(投票))。

3.5  文章使用的评估标准

      本文所有实验结果都采用了Panoptic Quality(PQ)全景质量和Parsing Covering(PC)解析覆盖两个度量标准。其中,PQ将相同“东西“类别的所有区域当作一个实例,不会考虑实例的尺寸大小;PC是考虑到实例尺寸大小的覆盖指标。 

      PQ的上述特点,使得10x10大小的实例与1000x1000大小的实例的效果是等价的。因此,PQ对于小区域的误报会很敏感,通过删除一些小区域等启发式方法可以提高性能。因此,PQ适用关心实例解析质量、但不关心实例大小的应用。

      一些应用中,会更关注大的物体(例如:肖像分割(大的人像应该被更好的分割)、自动驾驶(临近的物体比远处的物体更重要)),因此,本文考虑了实例的大小,扩展了已经存在的 Covering metric用来评估图像解析质量。Parsing Covering (PC),定义如下。

DeeperLab: Single-Shot Image Parser 详解_第6张图片

    本文发现由于Covering无法计算背景类别,同时受其他类别假样本的影响,因此无法惩罚假样本。而在图像解析中需要考虑每个像素及类别,因此,上述情形是不存在的。

     PQ与本文提出的PC的不同点在于,PC不进行匹配,因此也就不涉及匹配阈值,尝试将“stuff”与“thing”类同等对待,则如果分割的部分为正确的,则分割的“stuff”类仍可以部分接受PC score。比如,有三个大小相同的树,其中一棵被完美分割,则无论将树看作是“stuff”类还是“thing”类,使用PC进行评估,二者的分数是相同的。

4 实验结果

      Mapillary数据集: 66个语义类别(各种和交通相关的的图像)   分辨率从1024*768 最大到4000*6000     该数据集上进行ablation studies。还在其他数据集上测试:Cityscapes  Pas-cal VOC 2012, and COCO

       backbone:ImageNet-1K(预训练的)   初始学习速率=0.01   fine-tune 所有层的batch normalization参数   训练过程中使用随机尺度的数据增强     (当backbone使用MoblileNetV2时,训练的batch sizes是28   当backbone使用Xception-71时,训练的batch sizes是16)      我们将图像的最大长度调整为1441个像素,以处理大的输入变化,在训练期间随机裁剪721*721块图像。  没有使用任何启发式的后处理,如小区域删除或对低置信度预测分配空标签。

4.1 在Mapillary Vistas数据集上的表现

      DeeperLab目的:实现精度、速度的平衡

      验证集上的表现:

      迭代次数比后边的消融实验长(500k,消融实验迭代次数:200k次)。backbone为(1)Xception-71  PQ、PC如下 ,精度高  (2)Wider MobileNetV2:速度快     (3)Light Wider MobileNetV2:解码阶段用3*3的卷积核  更好的filter(128,而不是256)   速度更快,但精度不高(精度drop不多,但速度提升了很多)

                                DeeperLab: Single-Shot Image Parser 详解_第7张图片

                                                                          验证集上的实验结果

      测试集上的表现

                                  DeeperLab: Single-Shot Image Parser 详解_第8张图片

                                                                                测试集上的实验结果

      4.2 消融实验

      正文中报告的是本文提出的Xception-71、Wider MobileNetV2以及Light Wider MobileNetV2三种网络在Mapillary Vistas数据集上进行的消融实验,并没有与其他算法进行对比的实验结果。所有模型参数都是端到端训练没有采用分段预训练每个组件的过程,除了主干网络使用ImageNet-1K预训练之外。

      (1) Wider MobileNetV2 backbone设计:由原始的3*3  实验不同卷积核大小,例如:5*5 或 7*7   ---》目的:扩大感受野大小。由下图可看出,改变卷积核大小事提高精度很有效的一种方式采用ASPP模型,更进一步的提高了精度。

 

                                                                  DeeperLab: Single-Shot Image Parser 详解_第9张图片

                                                                                                 卷积核大小消融实验

      (2)Decoder and prediction head design:backbone为:带有ASPP木块的Wider MobileNetV2。第一行baseline直接对feature maps仅使用1*1卷积得到的结果。a、使用BU(双线性插值上采样)减少ASPP、low-feature 的feature输出:PQ提高0.93%,PC提高0.85%     b、使用BU(双线性插值上采样)减少ASPP、low-feature 的feature输出,并在所有的预测头前加一个3*3的卷积层,较a PQ提高0.81%,PC提高1.12%     c、使用BU(双线性插值上采样)减少ASPP、low-feature 的feature输出,decoder部分将卷积核由3*3扩大为7*7,在heads中增加了一个额外的卷积, PQ达到22.31%%,PC达到44.62%          d、用S2D/D2S策略替换bilinear upsampling策略,PQ达到23.48%%,PC达到46.33%

                                                                    DeeperLab: Single-Shot Image Parser 详解_第10张图片

                                                                                 解码器与预测头的设计消融实验

      (3)Hard pixel mining:a、增加HPM,根据损失对像素进行排序,只对前15%的像素进行反向传播,PQ增加0.75。   b、增加SI(设小于64*64的实例的权重为原权重的3倍),PQ提高0.2%   c、前两者都用,PQ提高0.92%,PC提高1%

                                                                     DeeperLab: Single-Shot Image Parser 详解_第11张图片

                                                                                       难例挖掘消融实验

      (4)Directed keypoint relation graph(有向关键点关系图):两种不同的有向关键点关系图:star graph、rectangular graph(关键点以矩形连接,没有质心关键点)。结论:质心关键点对实例分割是重要的

                                                                       DeeperLab: Single-Shot Image Parser 详解_第12张图片

                                                                                         关键点关联图建模方法

         (5)Deeper network backbone:以Xception-71作为网路的backbone的消融研究

DeeperLab: Single-Shot Image Parser 详解_第13张图片

                                                                                     主干网络深度消融实验

        上面,文章分别从主干网络卷积核大小、解码器和预测头的设计、难例挖掘、关键点关联图建模方法、主干网络深度等五个方面进行了消融实验,数据还是非常详细且有说服力的。

5 总结

       提出的模型设计在精度和速度之间取得了很好的平衡。这通过采用single-shot、自底向上和单推理范式,并集成各种设计创新来实现。这些创新包括扩展应用深度可分离卷积使用具有简单两层预测头的共享解码器输出扩大内核大小而不是使网络更深使用空间到深度和深度到空间而不是向上采样,以及执行困难数据挖掘。此外,我们还提出了PC度量。

 

 

                         

                                                             

你可能感兴趣的:(Panoptic,Segmentation)