• 扫盲记-第五篇--图像全景分割


    全景分割(Panoptic Segmentation

    前言

    在计算机视觉中,图像语义分割(Semantic Segmentation)的任务是预测每个像素点的语义类别;实例分割(Instance Segmentation)的任务是预测每个实例物体包含的像素区域。全景分割(Panoptic Segmentation最先由 FAIR 与德国海德堡大学联合提出,其任务是为图像中每个像素点赋予类别 Label 和实例 ID ,生成全局的、统一的分割图像

    CCV 2018 最受瞩目的 COCO + Mapillary 联合挑战赛也首次加入全景分割任务,是全景分割领域中最权威与具有挑战性的国际比赛,代表着当前计算机视觉识别技术最前沿。在全景分割比赛项目中,旷视研究院 Detection 组参与了COCO 比赛项目与 Mapillary 比赛项目,并以大幅领先第二名的成绩实力夺魁,在全景分割指标 PQ 上取得了0.532的成绩,超越了 human consistency ,另外,相关工作An End-to-End Network for Panoptic Segmentation发表于 CVPR 2019。

    全景分割任务,下面这张思维导图有助于整体把握全景分割任务特性:

    全景分割解读思维导图

    本文介绍思路:首先,将分析全景分割任务的评价指标及基本特点,并介绍目前最新的研究进展;然后介绍发表于 CVPR 2019 的工作Occlusion Aware Network (OANet),以及旷视研究院 Detection 组参与的 2018 COCO Panoptic Segmentation 比赛工作介绍;最后对全景分割当前研究进行总结与分析。

    任务与前沿进展解读

    全景分割任务,从任务目标上可以分为 object instance segmentation 子任务与 stuff segmentation 子任务。全景分割方法通常包含三个独立的部分object instance segmentation 部分,stuff segmentation 部分,两子分支结果融合部分。

    通常 object instance segmentation 网络和 stuff segmentation 网络相互独立,网络之间不会共享参数或者图像特征,这种方式不仅会导致计算开销较大,也迫使算法需要使用独立的后处理程序融合两支预测结果,并导致全景分割无法应用在工业中。

    因此,可以从以下几个角度分析与优化全景分割算法:

    • 网络框架搭建;
    • 子任务融合;
    • 全景输出预测。

    这三个问题分别对应的是全景分割算法中的三个重要环节,下面将分别分析这些问题存在的难点,以及近期相关工作提出的改进方法与解决方案。

    全景分割评价指标

    FAIR研究团队为全景分割定了新的评价标准 PQ (panoptic segmentation) 、SQ ( segmentation quality)、RQ (recognition quality),【Panoptic segmentation-2019】计算公式如下:

     

    PQ评价指标计算公式

    其中,RQ 是检测中应用广泛的 F1 score,用来计算全景分割中每个实例物体识别的准确性,SQ 表示匹配后的预测 segment 与标注 segment 的 mIOU,如下图所示,只有当预测 segment 与标注 segment 的 IOU 严格大于 0.5 时,认为两个 segment 是匹配的。

     

    全景分割预测结果与真实标注匹配图解

    从上面的公式能够看到,在预测与标注匹配后的分割质量 SQ 计算时,评价指标 PQ 只关注每个实例的分割质量,而不考虑不同实例的大小,即大物体与小物体的分割结果对最终的 PQ 结果影响相同。

    文献【DeeperLab: Single-Shot Image Parser - 2019】注意到在一些应用场景中更关注大物体的分割结果,如肖像分割中大图的人像分割、自动驾驶中近距离的物体等,提出了 PC (Parsing Covering) 评价指标,计算公式如下:

     

    PC评价指标计算公式

    其中,R和R’分别表示对应类别的预测segments与真实segments,|R|表示对应类别的实例在真实标注中像素点数量,Ni表示类别为 i 的真实标注像素点总和。通过对大的实例物体赋予更大的权重,使评价指标能够更明显地反映大物体的分割指标。

    网络框架搭建

    由于 object instance segmentation 子任务与 stuff segmentation 子任务分别属于两个不同的视觉预测任务,其输入数据及数据增强方式、训练优化策略与方法、网络结构与方法具有较大的不同,如何将两个子任务融合并统一网络结构、训练策略,是解决该问题的关键。

    FAIR 研究团队提出了一种简洁有效的网络结构Panoptic FPN【Panoptic Feature Pyramid Networks - 2019】,在网络框架层面将语义分割的全卷积网络(FCN实例分割网络 Mask RCNN统一起来,设计了单一网络同时预测两个子任务,网络结构如下图所示。

     

    Panoptic FPN网络框架图

    该网络结构能够有效预测 object instance segmentation 子任务与 stuff segmentation 子任务。在 Mask RCNN 网络与FPN的基础上,设计了简单而有效的 stuff segmentation 子分支:在 FPN 得到的不同层级的特征图基础上,使用不同的网络参数得到相同大小的特征图,并对特征图进行加法合并,最后使用双线性插值上采样至原图大小,并进行 stuff 类别预测。

    MIT 与谷歌等联合提出DeeperLabDeeperLab: Single-Shot Image Parser-2019使用 bottom-to-up 的方法,同时实现 object instance segmentation 子任务与 stuff segmentation 子任务,其网络结构如下图所示:

     

    DeeperLab网络结构图

    该网络包含了 encoder、decoder 与 prediction 三个环节,其中,encoder 和 decoder 部分对两个子任务均是共享的,为了增强 encoder 阶段的特征,在 encoder 的末尾使用了ASPP (Atrous Spatial Pyramid Pooling) 模块【Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs - 2018】。而在 decoder 阶段,首先使用 1×1 卷积对低层特征图与 encoder 输出的特征图进行降维,并使用内存消耗较少的space-to-depth【Frame-recurrent video super-resolution - 2018】操作替代上采样操作对低层特征图进行处理,从而将低层特征图(大小为原图 1/4)与 encoder 输出的特征图(大小为原图 1/16 )拼接起来。最后,使用两层 7×7 的大卷积核增加感受野,然后通过 depth-to-space 操作降低特征维度。为了得到目标实例预测,作者采用类似【PersonLab: Person pose estimation and instance segmentation with a bottom-up, part-based, geometric embedding model-2018, Cornernet: Detecting objects as paired keypoints-2018】的使用基于关键点表示的方法,如下图所示,在 object instance segmentation 子分支头部,分别预测了 keypoint heatmap(图a)、long-range offset map(图b)、short-range offset map(图c)、middle-range offset map(图d)四种输出,得到像素点与每个实例关键点之间的关系,并依此融合形成类别不可知的不同实例,最后得到全景分割的结果。

     

    object instance segmentation子分支头部预测目标

    子任务融合

    虽然通过特征共享机制与网络结构设计,能够将 object instance segmentation 子任务与 stuff segmentation 子任务统一起来,但是这两个子分支之间的相互联系与影响并没有得到充分的探究,例如:两个子分支的任务是否能够达到相互增益或者单向增益的效果?或者如何设计将两个子分支的中间输出或者预测关联起来?这一部分问题我们可以统一将它称作两个子任务的相互提升与促进。

    中科院自动化研究所提出了AUNet【Attention-guided unified network for panoptic segmentation-2018】,文中设计了 PAM (Proposal Attention Module)与 MAM(Mask Attention Module)模块,分别基于 RPN 阶段的特征图与 object instance segmentation 输出的前景分割区域,为 stuff segmentation 提供了物体层级注意力与像素层级注意力,其网络结构图如下图所示:

     

    AUNet网络结构图

    为了使 object instance segmentation 的预测输出与 stuff segmentation 预测输出保持一致性,丰田研究院设计了TASCNet 【Learning to fuse things and stuff - 2018】,其网络结构如下图所示:

     

    TASCNet网络结构图

    网络首先将 object instance segmentation 子分支得到的实例前景掩膜区域,映射到原图大小的特征图中,得到全图尺寸下的实例前景掩膜区域,并与 stuff segmentation 预测的实例前景掩膜进行对比,使用 L2 损失函数最小化两个掩膜的残差。

    全景输出预测

    Object instance segmentation 子分支与 stuff segmentation 子分支的预测结果在融合的过程中,一般通过启发式算法(heuristic algorithm)处理相冲突的像素点,例如简单地以 object instance segmentation 子分支的预测结果为准,并以 object instance segmentation 子分支的检测框得分作为不同实例的合并依据。

    这种方式依据简单的先验逻辑判断,并不能较好地解决全景分割复杂的合并情况,因此,如何设计有效的模块解决 object instance segmentation 子分支与 stuff segmentation 子分支到全景分割输出的融合过程,也是全景分割任务中的重要问题。

    Uber 与港中文联合提出了UPSNet【UPSNet: A Unified Panoptic Segmentation Network - 2019】,其网络结构图如下图所示:

    UPSNet网络结构图

    将 object instance segmentation 子分支与 stuff segmentation 子分支的输出通过映射变换,可得到全景头部输出的特征张量,该张量大小为(Ninst + Nstuff) x H x W,其中Ninst为动态变量,表示一张图像中实例的数量,Nstuff表示 stuff 类别个数,对于每张图像其数值是相同的,下文使用Xthing和Xstuff分别表示这两种特征张量。

    此外,网络对像素进行了未知类别的预测(Unknown Prediction),从而使得网络能够将部分像素点判断为未知类别并在测试的时候进行忽略,避免做出错误的类别导致 PQ 指标下降。

    在得到 object instance segmentation 子分支与 stuff segmentation 子分支的输出后,经过如下图所示的变换,映射成Xthing和Xstuff

    panoptic segmentation head示意图

    Xstuff可以直接从不规则类别分割的输出中提取,Xthing中的第i个实例的掩膜区域可由Xmask_i + Ymask_i获得,其中Xmask_i表示第Ymask_i个实例对应的真实标注框与标注类别在 stuff segmentation 子分支输出截取的掩膜区域,Ymask_i表示第i个实例对应的 instance segmentation 子分支得到的掩膜区域映射到原图的掩膜区域,最后使用标准的逐像素点的交叉熵损失函数对全景头部输出的张量进行监督训练。

    2019 An End-to-End Network for Panoptic Segmentation -- OANet

    Motivation

    在全景分割相关实验中发现,依据现有的启发式算法进行 object instance segmentation 子分支与 stuff segmentation 子分支的预测合并,会出现不同实例之间的遮挡现象。

    为了解决不同实例之间的遮挡问题,提出了 Occlusion Aware Network OANet,并设计了空间排序模块(Spatial Ranking Module),该模块能够通过网络学习得到新的排序分数,并为全景分割的实例分割提供排序依据。

    网络结构设计

    提出的端到端的全景分割网络结构如下图所示,该网络融合 object instance segmentation 子分支与 stuff segmentation 子分支的基础网络特征,在一个网络中同时实现全景分割的训练与预测。在训练过程中,对于 stuff segmentation同时进行 object 类别与 stuff 类别的监督训练,实验表明这种设计有助于 stuff 的预测。

     

    OANet网络结构图

    采用一种类似语义分割的方法,提出一个简单但非常有效的算法,称作Spatial Ranking Module,能够较好地处理遮挡问题,其网络结构如下所示:

    Spatial Ranking Module网络结构图

    首先将输入的实例分割结果映射到原图大小的张量之中,该张量的维度是实例物体类别的数量,不同类别的实例分割掩膜会映射到对应的通道上。张量中所有像素点位置的初始化数值为零,实例分割掩膜映射到的位置其值设为 1。

    在得到该张量后,使用大卷积核【Large Kernel Matters--Improve Semantic Segmentation by Global Convolutional Network - 2017】进行特征提取,得到空间排序得分图;最后,计算出每个实例对象的空间排序得分,如下所示:

     

    其中,Si;j;cls表示cls的、像素点(i ; j)中的得分值,需要注意的是,Si;j;cls已被归一化为概率,mi;j是掩膜像素点指示符,表示像素点(i ; j)是否属于实例,每个实例的空间排序得分由预测的掩码区域所有像素点的排序分数平均得到,Pobjs表示最终得到的每个实例的排序得分,并将此得分用于全景输出。

    如下图所示,若使用目前通用的启发式融合算法,即仅基于实例分割的检测框的置信度作为遮挡处理依据。如图所示,行人检测框的置信度要明显高于领带检测框的置信度,当两个实例发生重叠时,领带的实例会被行人实例遮挡;当加入空间排序得分模块后,我们通过该模块可以预测得到两个实例的空间排序分数,依据空间排序分数得到的排序会更可靠,PQ 会有更大改善。

     

    空间排序模块流程示意图

    实验分析

    对 stuff segmentation 分支的监督信号进行了剥离实验,如下表所示,实验表明,同时进行 object 类别与 stuff 类别的监督训练,能够为 stuff segmentation 提供更多的上下文信息,并改进预测结果。

     

    为了探究 object instance segmentation 子分支与 stuff segmentation 子分支的共享特征方式,我们设计了不同的共享结构并进行实验,如下表所示,实验表明,共享基础模型特征与 FPN 结构的连接处特征,能够提高全景分割指标 PQ。

     

    为了探究提出的 spatial ranking module 算法的有效性,在不同基础模型下进行了实验,如下表所示,其中,w/ spatial ranking module 表示使用我们提出的空间排序模块得到的结果,从实验结果中可以看到,空间排序模块能够在不同的基础模型下大幅提高全景分割的评测结果。

    为了测试不同卷积设置对学习处理遮挡的影响,进行了如下实验,结果表明,提高卷积的感受野可以帮助网络学习获得更多的上下文特征,并取得更好的结果。

    下表是本文提出的算法与现有公开指标的比较,从结果中可以看到,本文提出的算法能够取得最优的结果。

     

    2018 COCO全景分割比赛冠军解读

    旷视研究院 Detection 组参与的全景分割 COCO 比赛项目与 Mapillary 比赛项目中,以大幅领先第二名的成绩实力夺魁,在全景分割指标 PQ 上取得了 0.532 的成绩,超越了 human consistency。

     

    全景分割预测可视化图例

    在比赛中,使用了如下图所示的流程,首先分别预测 stuff semantic segmentation 与 object instance segmentation,然后通过后处理的操作得到全景分割的结果。

     

    全景分割算法流程图

    在 stuff semantic segmentation 预测阶段,对网络结构进行了部分调整以得到更好的分割效果。首先,网络最终的下采样倍数设为 8 ,保证输出结果的分辨率;然后,由于网络的 encoder 不会扩大网络的感受野,因此在标准 ResNet 之后使用了若干层 Res-Block。

    另外,实验发现 stuff 类别和 object 类别之间的上下文对于 stuff 分割较为重要,因此在网络预测中融入了上下文信息,并通过多阶段、多种监督的方式实现,网络结构如下图所示:

    stuff semantic segmentation结构图

    对于 object instance segmentation,采用了与 Mask RCNN 相同的网络结构及训练配置。最后,通过使用更大的网络基础模型,multi scale + flip 的测试方法,以及多模型的ensemble操作,取得了最终的预测结果,如下图所示:

    Panoptic Results on COCO test-dev Dataset

    总结与分析

    从上文的文献分析来看,全景分割任务的不同重要问题均得到了广泛探究,但是全景分割任务依然是有挑战性、前沿的场景理解问题,目前仍存在一些问题需要进行探究:

    第一,由于全景分割可通过分别预测实例分割子任务与不规则类别分割子任务、两个子任务预测结果融合得到,整个算法流程中包含较多的细节与后处理操作,包括 segments 的过滤、启发式融合算法、ignore 像素点的判断等。这些细节对全景分割指标有较大的影响,在一定程度上也阻碍了不同算法的对比与评测;

    第二,全景分割评测指标虽然能够较好地评测全景分割中实例物体检测准确度,以及实例物体与不规则类别的分割准确度,但是该评测指标更侧重每个实例,并没有关注每个实例之间的区别。文献 【DeeperLab: Single-Shot Image Parser - 2019】提出了对大物体有更好的评测指标 PC (Parsing Covering),使得大物体的分割效果对最终的评测指标影响更大,在一些关注大物体的任务如肖像分割、自动驾驶中更为有效;

    第三,全景分割中子任务的融合问题,目前研究依然较多地将全景分割看做是 object instance segmentation 与 stuff segmentation 两个子任务的合集,如何从全局、统一的分割问题出发,针对性设计符合全景分割的统一网络,具有重要的意义。

    学习内容来源 公众号:PaperWeekly  作者:刘环宇

    https://mp.weixin.qq.com/s/u6-AsgNa9dMReq8S1lnxiQ

  • 相关阅读:
    log4j2分析总结(一)
    Idea(三)常用插件以及快捷键总结
    设计模式(七)_模板方法模式
    Idea(二) 解决IDEA卡顿问题及相关基本配置
    设计模式(六)_观察者模式
    SpringBoot(十一)_springboot热部署
    UML类图学习
    设计模式(五)_工厂方法模式
    设计模式(四)_简单工厂模式
    设计模式(三)_装饰器模式
  • 原文地址:https://www.cnblogs.com/jeshy/p/10583960.html
Copyright © 2020-2023  润新知