雷锋网 AI 科技评论按,本文作者刘环宇,系浙江大学控制科学与工程自动化系硕士,旷视科技研究院算法研究员,全景分割算法 OANet 第一作者,研究方向包括全景分割、语义分割等。同时,他也是 2018 COCO + Mapillary 全景分割比赛旷视 Detection 组冠军团队成员。
本文原载于知乎,雷锋网获授权转载。
前言
在计算机视觉中,图像语义分割(Semantic Segmentation)的任务是预测每个像素点的语义类别;实例分割(Instance Segmentation)的任务是预测每个实例物体包含的像素区域。全景分割 [1] 最先由 FAIR 与德国海德堡大学联合提出,其任务是为图像中每个像素点赋予类别 Label 和实例 ID,生成全局的、统一的分割图像。
接下来我们将全面解读全景分割任务,下面这张思维导图有助于大家整体把握全景分割任务特性:
![5f9e1a3570d226879c339b6bf9ba5a2e.png](https://i-blog.csdnimg.cn/blog_migrate/8ae2fb8ddf30d467b30ea3b18e14ee21.jpeg)
全景分割解读思维导图
首先,我们将分析全景分割任务的评价指标及基本特点,并介绍目前最新的研究进展;然后介绍我们发表于 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 网络相互独立,网络之间不会共享参数或者图像特征,这种方式不仅会导致计算开销较大,也迫使算法需要使用独立的后处理程序融合两支预测结果,并导致全景分割无法应用在工业中。
因此,可以从以下几个角度分析与优化全景分割算法
(1)网络框架搭建;
(2)子任务融合;
(3)全景输出预测;
这三个问题分别对应的是全景分割算法中的三个重要环节,下面我们将分别分析这些问题存在的难点,以及近期相关工作提出的改进方法与解决方案。
全景分割评价指标
FAIR 研究团队 [1] 为全景分割定了新的评价标准 PQ (panoptic segmentation) 、SQ ( segmentation quality)、RQ (recognition quality),计算公式如下:
![d1865a3cbdc70463683776c2cb9b8da8.png](https://i-blog.csdnimg.cn/blog_migrate/7c6f19697d9eda9617251233c824976f.jpeg)
PQ 评价指标计算公式
其中,RQ 是检测中应用广泛的 F1 score,用来计算全景分割中每个实例物体识别的准确性,SQ 表示匹配后的预测 segment 与标注 segment 的 mIOU,如下图所示,只有当预测 segment 与标注 segment 的 IOU 严格大于 0.5 时,认为两个 segment 是匹配的。
![791c79a007565cff638605755e39b05c.png](https://i-blog.csdnimg.cn/blog_migrate/1ba2ece9ea6fb22961f42958abb60b42.jpeg)
全景分割预测结果与真实标注匹配图解 [1]
从上面的公式能够看到,在预测与标注匹配后的分割质量 SQ 计算时,评价指标 PQ 只关注每个实例的分割质量,而不考虑不同实例的大小,即大物体与小物体的分割结果对最终的 PQ 结果影响相同。Yang et al. [6] 注意到在一些应用场景中更关注大物体的分割结果,如肖像分割中大图的人像分割、自动驾驶中近距离的物体等,提出了 PC (Parsing Covering) 评价指标,计算公式如下:
![40680b7983631005af8d0a06d410c13b.png](https://i-blog.csdnimg.cn/blog_migrate/b7c541d34e7875dd8a337a99244132bc.jpeg)
PC 评价指标计算公式
其中,R, R' 分别表示对应类别的预测 segments 与真实 segments,|R| 表示对应类别的实例在真实标注中像素点数量,Ni表示类别为 i 的真实标注像素点总和。通过对大的实例物体赋予更大的权重,使评价指标能够更明显地反映大物体的分割指标。
网络框架搭建
由于 object instance segmentation 子任务与 stuff segmentation 子任务分别属于两个不同的视觉预测任务,其输入数据及数据增强方式、训练优化策略与方法、网络结构与方法具有较大的不同,如何将两个子任务融合并统一网络结构、训练策略,是解决该问题的关键。
FAIR 研究团队提出了一种简洁有效的网络结构 Panoptic FPN [2],在网络框架层面将语义分割的全卷积网络(FCN)[3] 和实例分割网络 Mask RCNN [4] 统一起来,设计了单一网络同时预测两个子任务,网络结构如下图所示。
![32140fa155d762ca858f929ea635c91a.png](https://i-blog.csdnimg.cn/blog_migrate/297feebe0a0b6dfef206b53d0125e28b.jpeg)
Panoptic FPN 网络框架图
该网络结构能够有效预测 object instance segmentation 子任务与 stuff segmentation 子任务。在 Mask RCNN 网络与 FPN [5] 的基础上,作者设计了简单而有效的 stuff segmentation 子分支:在 FPN 得到的不同层级的特征图基础上,使用不同的网络参数得到相同大小的特征图,并对特征图进行加法合并,最后使用双线性插值上采样至原图大小,并进行 stuff 类别预测。
MIT 与谷歌等联合提出 DeeperLab [6],使用 bottom-to-up 的方法,同时实现 object instance segmentation 子任务与 stuff segmentation 子任务,其网络结构如下图所示:
![eb9d4f1037b314984583e0a0ca7fc75b.png](https://i-blog.csdnimg.cn/blog_migrate/2cee99fcda678b46e48006697fff9f43.jpeg)
DeeperLab 网络结构图
该网络包含了 encoder、decoder 与 prediction 三个环节,其中,encoder 和 decoder 部分对两个子任务均是共享的,为了增强 encoder 阶段的特征,在 encoder 的末尾使用了 ASPP (Atrous Spatial Pyramid Pooling) 模块 [7];而在 decoder 阶段,首先使用 1×1 卷积对低层特征图与 encoder 输出的特征图进行降维,并使用内存消耗较少的 space-to-depth [8, 9] 操作替代上采样操作对低层特征图进行处理,从而将低层特征图(大小为原图 1/4)与 encoder 输出的特征图(大小为原图 1/16)拼接起来;最后,使用两层 7×7 的大卷积核增加感受野,然后通过 depth-to-space 操作降低特征维度。
为了得到目标实例预测,作者采用类似 [10, 11, 12] 的使用基于关键点表示的方法,如下图所示,在 object instance segmentation 子分支头部,分别预测了 keypoint heatmap(图 a)、long-range offset map(图 b)、short-range offset map(图 c)、middle-range offset map(图 d)四种输出,得到像素点与每个实例关键点之间的关系,并依此融合形成类别不可知的不同实例,最后得到全景分割的结果。
![bc455109f2ebfd7081f9c4de84de0719.png](https://i-blog.csdnimg.cn/blog_migrate/b42c3dd0d1db18f2bfedaee409289292.jpeg)
object instance segmentation 子分支头部预测目标
子任务融合
虽然通过特征共享机制与网络结构设计,能够将 object instance segmentation 子任务与 stuff segmentation 子任务统一起来,但是这两个子分支之间的相互联系与影响并没有得到充分的探究,例如:两个子分支的任务是否能够达到相互增益或者单向增益的效果?或者如何设计将两个子分支的中间输出或者预测关联起来?这一部分问题我们可以统一将它称作两个子任务的相互提升与促进。
中科院自动化研究所提出了 AUNet [13],文中设计了 PAM(Proposal Attention Module)与 MAM(Mask Attention Module)模块,分别基于 RPN 阶段的特征图与 object instance segmentation 输出的前景分割区域,为 stuff segmentation 提供了物体层级注意力与像素层级注意力,其网络结构图如下图所示:
![b9fc7bed3eeaa23f6dc6befe3767fc34.png](https://i-blog.csdnimg.cn/blog_migrate/325a9b45504d62b9239282814cd1d725.jpeg)
AUNet 网络结构图
为了使 object instance segmentation 的预测输出与 stuff segmentation 预测输出保持一致性,丰田研究院设计了 TASCNet [14],其网络结构如下图所示:
![29c18791c341f2db60aad8895ad6b01a.png](https://i-blog.csdnimg.cn/blog_migrate/fe8853a8ba256b71786c859ab5e173f7.jpeg)
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 [15],其网络结构图如下图所示:
![2471b0f05bbe274c66ba5ac1be878087.png](https://i-blog.csdnimg.cn/blog_migrate/0d2bc545576280d31ca9da24cfc7d9a4.jpeg)
UPSNet 网络结构图
将 object instance segmentation 子分支与 stuff segmentation 子分支的输出通过映射变换,可得到全景头部输出的特征张量,该张量大小为 (Ninst+ Nstuff)×H×W,其中,N_{inst} 为动态变量,表示一张图像中实例的数量,Nstuff表示 stuff 类别个数,对于每张图像其数值是相同的,下文使用 Xthing和 Xstuff分别表示这两种特征张量。此外,网络对像素进行了未知类别的预测(Unknown Prediction),从而使得网络能够将部分像素点判断为未知类别并在测试的时候进行忽略,避免做出错误的类别导致 PQ 指标下降。
在得到 object instance segmentation 子分支与 stuff segmentation 子分支的输出后,经过如下图所示的变换,映射成 Xthing和 Xstuff。
![83ba2b8c69c6c86e6fe76e180eeea448.png](https://i-blog.csdnimg.cn/blog_migrate/ea1f7c12f689f1c7fe7a6808689f012c.jpeg)
panoptic segmentation head 示意图
Xstuff可以直接从不规则类别分割的输出中提取,Xthing中的第 i 个实例的掩膜区域可由 Xmaski+ Ymaski获得,其中 Xmaski表示第 i 个实例对应的真实标注框与标注类别在 stuff segmentation 子分支输出截取的掩膜区域,Ymaski表示第 i 个实例对应的 instance segmentation 子分支得到的掩膜区域映射到原图的掩膜区域,最后使用标准的逐像素点的交叉熵损失函数对全景头部输出的张量进行监督训练。
Occlusion Aware Network 专栏解读
论文链接:
An End-to-End Network for Panoptic Segmentation
Motivation
在全景分割相关实验中,我们发现,依据现有的启发式算法进行 object instance segmentation 子分支与 stuff segmentation 子分支的预测合并,会出现不同实例之间的遮挡现象。为了解决不同实例之间的遮挡问题,我们提出了 Occlusion Aware Network(OANet),并设计了空间排序模块(Spatial Ranking Module),该模块能够通过网络学习得到新的排序分数,并为全景分割的实例分割提供排序依据。
网络结构设计
我们提出的端到端的全景分割网络结构如下图所示,该网络融合 object instance segmentation 子分支与 stuff segmentation 子分支的基础网络特征,在一个网络中同时实现全景分割的训练与预测。在训练过程中,对于 stuff segmentation 我们同时进行了 object 类别与 stuff 类别的监督训练,实验表明这种设计有助于 stuff 的预测。
![d9a3a64f7263cbbb866be3599a4d46ae.png](https://i-blog.csdnimg.cn/blog_migrate/69eb7ebc18ef4fc55d7e82a88457ad22.jpeg)
OANet 网络结构图
采用一种类似语义分割的方法,我们提出一个简单但非常有效的算法,称作 Spatial Ranking Module,能够较好地处理遮挡问题,其网络结构如下所示:
![542975692dfb2e4ddb9fefbc05f30261.png](https://i-blog.csdnimg.cn/blog_migrate/90919324c76b517b95ef180dcfa92ecb.jpeg)
Spatial Ranking Module 网络结构图
我们首先将输入的实例分割结果映射到原图大小的张量之中,该张量的维度是实例物体类别的数量,不同类别的实例分割掩膜会映射到对应的通道上。张量中所有像素点位置的初始化数值为零,实例分割掩膜映射到的位置其值设为 1;在得到该张量后,使用大卷积核 [16] 进行特征提取,得到空间排序得分图;最后,我们计算出每个实例对象的空间排序得分,如下所示:
![62bd6102d59313f7ea3e9f951af55505.png](https://i-blog.csdnimg.cn/blog_migrate/c0befa86fb7fca34a8969d96d118e805.jpeg)
这里,Si; j; cls表示类别为 cls 的、像素点(i; j)中的得分值,需要注意的是 Si; j; cls已被归一化为概率,mi; j 是掩膜像素点指示符,表示像素点(i; j)是否属于实例,每个实例的空间排序得分由预测的掩码区域所有像素点的排序分数平均得到,Pobjs 表示最终得到的每个实例的排序得分,并将此得分用于全景输出。
如下图所示,若使用目前通用的启发式融合算法,即仅基于实例分割的检测框的置信度作为遮挡处理依据,如图所示,行人检测框的置信度要明显高于领带检测框的置信度,当两个实例发生重叠时,领带的实例会被行人实例遮挡;当加入空间排序得分模块后,我们通过该模块可以预测得到两个实例的空间排序分数,依据空间排序分数得到的排序会更可靠,PQ 会有更大改善。
![130081602715e232fbdad23d58ee8553.png](https://i-blog.csdnimg.cn/blog_migrate/a126f94e6e321621517f458f4678ccb4.jpeg)
空间排序模块流程示意图
实验分析
我们对 stuff segmentation 分支的监督信号进行了剥离实验,如下表所示,实验表明,同时进行 object 类别与 stuff 类别的监督训练,能够为 stuff segmentation 提供更多的上下文信息,并改进预测结果。
![486ab901fc777485e40c3aa24f97fd57.png](https://i-blog.csdnimg.cn/blog_migrate/60cdfb4aaf0655b009fb0f035cc25156.jpeg)
为了探究 object instance segmentation 子分支与 stuff segmentation 子分支的共享特征方式,我们设计了不同的共享结构并进行实验,如下表所示,实验表明,共享基础模型特征与 FPN 结构的连接处特征,能够提高全景分割指标 PQ。
![461b42c216a74d97176830a719841fa9.png](https://i-blog.csdnimg.cn/blog_migrate/18b5b301fa6fd01e7f485d9cdc1aa0ff.jpeg)
为了探究我们提出的 spatial ranking module 算法的有效性,我们在不同基础模型下进行了实验,如下表所示,其中,w/ spatial ranking module 表示使用我们提出的空间排序模块得到的结果,从实验结果中可以看到,空间排序模块能够在不同的基础模型下大幅提高全景分割的评测结果。
![8a6597e2669655a929056239fc9c791a.png](https://i-blog.csdnimg.cn/blog_migrate/3c622e9b41a551687a05da1236901434.jpeg)
为了测试不同卷积设置对学习处理遮挡的影响,进行了如下实验,结果表明,提高卷积的感受野可以帮助网络学习获得更多的上下文特征,并取得更好的结果。
![ac35592abe7e67b93c57516b0924fb7f.png](https://i-blog.csdnimg.cn/blog_migrate/deba45137498e93eca9f3fea4b9177e3.jpeg)
下表是本文提出的算法与现有公开指标的比较,从结果中可以看到,本文提出的算法能够取得最优的结果。
![1f2004b473b47fe3ab17d563d274bd84.png](https://i-blog.csdnimg.cn/blog_migrate/567ca699b0e82ac1507d121aa70d7635.jpeg)
总结与分析
从上文的文献分析来看,全景分割任务的不同重要问题均得到了广泛探究,但是全景分割任务依然是有挑战性、前沿的场景理解问题,目前仍存在一些问题需要进行探究:
第一,由于全景分割可通过分别预测实例分割子任务与不规则类别分割子任务、两个子任务预测结果融合得到,整个算法流程中包含较多的细节与后处理操作,包括 segments 的过滤、启发式融合算法、ignore 像素点的判断等。这些细节对全景分割指标有较大的影响,在一定程度上也阻碍了不同算法的对比与评测;
第二,全景分割评测指标虽然能够较好地评测全景分割中实例物体检测准确度,以及实例物体与不规则类别的分割准确度,但是该评测指标更侧重每个实例,并没有关注每个实例之间的区别。文献 [6] 提出了对大物体有更好的评测指标 PC (Parsing Covering),使得大物体的分割效果对最终的评测指标影响更大,在一些关注大物体的任务如肖像分割、自动驾驶中更为有效;
第三,全景分割中子任务的融合问题,目前研究依然较多地将全景分割看做是 object instance segmentation 与 stuff segmentation 两个子任务的合集,如何从全局、统一的分割问题出发,针对性设计符合全景分割的统一网络,具有重要的意义。
参考文献
[1] Kirillov A, He K, Girshick R, et al. Panoptic segmentation[J]. arXiv preprint arXiv:1801.00868, 2018.
[2] Kirillov A, Girshick R, He K, et al. Panoptic Feature Pyramid Networks[J]. arXiv preprint arXiv:1901.02446, 2019.
[3] Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 3431-3440.
[4] He K, Gkioxari G, Dollár P, et al. Mask r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2961-2969.
[5] Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 2117-2125.
[6] Yang T J, Collins M D, Zhu Y, et al. DeeperLab: Single-Shot Image Parser[J]. arXiv preprint arXiv:1902.05093, 2019.
[7] Chen L C, Papandreou G, Kokkinos I, et al. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 40(4): 834-848.
[8] Shi W, Caballero J, Huszár F, et al. Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 1874-1883.
[9] Sajjadi M S M, Vemulapalli R, Brown M. Frame-recurrent video super-resolution[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 6626-6634.
[10] Papandreou G, Zhu T, Chen L C, et al. PersonLab: Person pose estimation and instance segmentation with a bottom-up, part-based, geometric embedding model[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 269-286.
[11] Tychsen-Smith L, Petersson L. Denet: Scalable real-time object detection with directed sparse sampling[C] // Proceedings of the IEEE International Conference on Computer Vision. 2017: 428-436.
[12] Law H, Deng J. Cornernet: Detecting objects as paired keypoints [C] // Proceedings of the European Conference on Computer Vision (ECCV). 2018: 734-750.
[13] Li Y, Chen X, Zhu Z, et al. Attention-guided unified network for panoptic segmentation[J]. arXiv preprint arXiv:1812.03904, 2018.
[14] Li J, Raventos A, Bhargava A, et al. Learning to fuse things and stuff[J]. arXiv preprint arXiv:1812.01192, 2018.
[15] Xiong Y, Liao R, Zhao H, et al. UPSNet: A Unified Panoptic Segmentation Network[J]. arXiv preprint arXiv:1901.03784, 2019.
[16] Peng C, Zhang X, Yu G, et al. Large Kernel Matters--Improve Semantic Segmentation by Global Convolutional Network[C] // Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4353-4361.