• Panoptic FCN:真正End-to-End的全景分割


    本文介绍了全景分割的一些主要指标并回顾之前流行的box-based和box-free的全景分割算法(以Panoptic FPN和DeeperLab为例),最后着重介绍了2021CVPR Oral的Panoptic FCN--被作者认为是真正的End to End的全景分割。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

    图片

    paper: Fully Convolutional Networks for Panoptic Segmentation

    code: https://github.com/yanwei-li/PanopticFCN

    图片

    在计算机视觉中,所有视觉可见的事物都可以描述成thing和stuff两种形式(thing指的是可数物体如人、动物、工具,stuff指的是具有相似结构或材料的非晶态区域如草、天空、道路),从而延申出了两类经典的计算机视觉任务:语义分割和实例分割。其中语义分割的任务是预测每个像素点的语义类别(即预测stuff),而实例分割的任务是预测每个实例物体包含的像素区域(即预测thing),分别如上图b和c所示。然而从图片中可以看出,语义分割和实例分割都不足以完备的描述出一副图像中的视觉信息,2019年FAIR首次提出全景分割的概念,全景分割任务需要同时预测出每个像素点赋予类别Label和实例ID(即同时预测thing和stuff,如图d所示),如果能够很好的解决全景分割任务,那么就能够完备的描述出一幅图像的视觉信息,对于无人驾驶、VR等场景来说,完备的场景解析是非常有意义的。

    下面主要先介绍一下全景分割的一些主要指标,然后回顾一下之前流行的box-based和box-free的全景分割算法(以Panoptic FPN和DeeperLab为例),最后重点讲一下中2021CVPR Oral的Panoptic FCN,个人认为是目前真正意义上的第一个End-to-End全景分割,非常精彩!

    01 评价指标

    FAIR为全景分割设计了新的评价标准 PQ (panoptic segmentation) 、SQ ( segmentation quality)、RQ (recognition quality) ,计算公式如下:

    图片

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

    图片

    从上面的公式能够看到,在预测与标注匹配后的分割质量 SQ 计算时,评价指标PQ只关注每个实例的分割质量,而不考虑不同实例的大小,即大物体与小物体的分割结果对最终的PQ结果影响相同。然而在一些应用场景中更关注大物体的分割结果,如肖像分割中大图的人像分割、自动驾驶中近距离的物体等,于是进一步提出了 PC (Parsing Covering) 评价指标,计算公式如下:

    图片

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

    02 Panoptic FPN

    Panoptic FPN是全景分割box-based的经典方法,box-based的全景分割基本都跟Panoptic FPN非常类似,这里以Panoptic FPN为例,介绍一下box-based的全景分割常规做法。

    图片

    如上图所示,Panoptic FPN使用FPN作为backbone部分,来提取多尺度的语义信息,然后后续接一个instance segmentation branch,来预测instance,实际上fpn+instance segmentation branch等同于mask rcnn,其中instance segmentation branch由一个box branch和一个instance branch组成,instance的预测过程是先通过box branch预测出box,然后通过预测box的范围在instance branch预测出instance,这就是box-based全景分割的由来。Panoptic FPN在mask rcnn的基础上再增加一个semantic segmentation branch,来预测出semantic。instance segmentation branch和semantic segmentation branch的输出分别对应thing和stuff。

    另外由于box-based的全景分割通过两个branch分别预测thing和stuff,会导致出现两个branch预测结果有重合区域,需要引入后处理过程来去重。Panoptic FPN设计的后处理过程和NMS很类似:

    (1)根据不同实例的置信度来去除重叠部分

    (2)以实例优先原则去除实例和语义分割输出之间的重叠部分

    (3)去除stuff标记为“其他”或者给定面积阈值下的区域

    之后的box-based全景分割算法大多数都是围绕着如何改进后处理还有不同branch如何进行信息融合进行的。但是无论怎么改进,box-based的全景分割存在一个天然的缺陷,最终的预测结果主要取决于box branch的预测精度,并且box branch的feature map尺寸受限制。

    03 DeeperLab

    DeeperLab是全景分割box-free的经典方法,去除了类似Panoptic FPN的box预测部分,直接预测出thing和stuff。相比Panoptic FPN等方法,去除了box branch预测精度的影响,并且能在更大feature map上进行全景分割。

    图片
    DeeperLab包含Encoder、Decoder 和 Prediction 三个部分,其中,Encoder 和 Decoder 两个部分是参数共享的。在Encoder部分,末尾使用了ASPP模块来增加特征表达能力;在Decoder部分,通过使用S2D和D2S模块来高效的融合不同尺度的特征。

    为了得到目标实例预测,作者使用基于关键点的方法,在 object instance segmentation branch,同时预测了 keypoint heatmap、long-range offset map、short-range offset map和middle-range offset map四种输出,得到像素点与每个实例关键点之间的关系,并依此融合形成类别未知的不同实例,另外semantic segmantion branch预测出语义信息,最后结合两个branch输出得到全景分割的结果。

    04 Panoptic FCN

    图片

    上述的以Panoptic FPN为代表的box-based全景分割还有以DeeperLab为代表的box-free全景分割都是将thing和stuff拆分成两个branch来进行预测的,这必然会引入更多的后处理还有设计不同branch信息融合的操作,整个系统显的即冗余又复杂。个人认为Panoptic FCN是真正意义上的第一个end-to-end全景分割,通过将thing和stuff统一成特征描述子kernels来进行预测,同时省去了复杂后处理还有不同branch信息融合的操作,是全景分割发展历程中的集大成者。

    图片

    Panoptic FCN主要由Kernel Generator、Kernel Fusion和Feature Encoder三个部分组成。Panoptic FCN先通过引入kernel generator来为thing和stuff生成kernel weights,然后通过kernel fusion对多个stage的kernel weights进行合并,feature encoder用来对高分辨率feature进行编码,最后将得到的kernels和编码feature卷积得到最终预测结果。

    Kernel Generator

    kernel generator由kernel head和position head两个branch构成,首先通过position head同时预测thing和stuff的位置(其中,thing通过预测center来定位和分类,stuff通过region来定位和分类),然后根据thing和stuff的位置,从kernel head中产生kernel weights。这里有一个细节是,thing通过定位的点从kernel head对应的点抽取kernel weight,而stuff通过定位的区域mask和kernel head相乘得到kernel weight,这样子thing和stuff的kernel weight维度能够保持相同。

    Kernel Fusion

    kernel fusion将不同stage产生的kernel weights进行合并,保证thing的实例感知和stuff的语义一致性。简单来说通过对不同stage的kernel weights平均池化产生所有thing和stuff的kernel weights,然后通过阈值来去除相似的kernel weight,最后产生M个thing的kernel weights和N个stuff的kernel weights。具体细节可以看开源code。

    Feature Encoder

    feature encoder首先对高分辨率feature进行编码得到编码feature,然后用kernel fusion得到的M+N个kernel weights对encoded feature进行卷积,得到最终的预测结果,其中每个输出通道表示一个thing或者stuff的mask预测。和SOLO类似,Panoptic FCN的kernel head和feature encoder都引入了coord,有利于和position head特征进行位置对齐,对精度的提升非常大。

    实验结果

    最终得到的实验结果,速度和精度的平衡超过了之前的全景分割算法。

    图片

    Panoptic FCN是第一个将thing和stuff进行统一预测,这对于如何解全景分割任务具有重大意义。

     

    Reference

    1. Panoptic Segmentation

    2. Panoptic Feature Pyramid Networks

    3. DeeperLab: Single-Shot Image Parser

    4. Fully Convolutional Networks for Panoptic Segmentation

  • 相关阅读:
    #入魔这些年#零度智控&模型控社区大型征文活动,万元大奖等你拿
    2013百度安卓巴士轻应用4城市巡展沙龙,免费报名啦
    专访高磊:安卓APK安全加固的引领者
    Android——程序移植 相关知识总结贴
    iPhone开发视频教程 Objective-C部分 (51课时)
    Android项目实战--手机卫士开发系列教程
    Android——BitMap(位图)相关知识总结贴
    《Linux内核设计与实现》读书笔记
    golang API 请求队列
    自定义Antd Pro 默认元素
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/14604675.html
Copyright © 2020-2023  润新知