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

技术讨论 hello_uncle ⋅ 于 2周前 ⋅ 79 阅读

作者丨Smarter
来源丨Smarter
编辑丨极市平台

在计算机视觉中,所有视觉可见的事物都可以描述成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) 评价指标,计算公式如下:

006C3FgEly1gp1r36p3mcj312w0fggmy

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进行统一预测,这对于如何解全景分割任务具有重大意义。

paper: Fully Convolutional Networks for Panoptic Segmentation

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

Reference

1. Panoptic Segmentation

2. Panoptic Feature Pyramid Networks

3. DeeperLab: Single-Shot Image Parser

4. Fully Convolutional Networks for Panoptic Segmentation

大叔

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!