Instance Segmentation/zh
| Article | |
|---|---|
| Topic area | Computer Vision |
| Prerequisites | Convolutional Neural Network, Object Detection, Semantic Segmentation |
概述
实例分割是一项计算机视觉任务,旨在检测图像中的每一个物体实例,并为每个实例生成像素级精度的掩膜。与语义分割不同——后者为每个像素分配一个类别标签,但不区分同一类别的不同物体——实例分割将每个独立物体分开处理:相邻的两辆汽车会得到两个独立的掩膜,而不是合并为一个"汽车"区域。与物体检测不同——后者用轴对齐的边界框来定位物体——实例分割则精确勾勒出物体的边界。
对于一张图像,输出是一组长度可变的元组,每个元组由一个类别标签、一个置信度分数和一个覆盖该物体的二值掩膜组成。实例分割是自动驾驶、医学影像、机器人操控、卫星图像分析和照片编辑工具等应用的基础。它比其任何组成任务都更困难,因为模型必须同时解决一个检测问题(有多少物体、属于哪些类别、位于何处)和一个细粒度的像素标注问题(哪些像素属于哪个实例),并且必须以能够处理重叠和遮挡物体的方式来完成。
与相邻任务的关系
实例分割位于若干已被深入研究的问题的交汇处。语义分割生成单一的标签图,无法对物体进行计数。物体检测生成轴对齐的边界框,框内包含物体周围的背景像素。全景分割是一种严格的泛化,它将针对"things"(可数物体,如人和汽车)的实例分割与针对"stuff"(非定形区域,如天空和道路)的语义分割统一起来,将每个像素恰好分配给一个分段。
理解二者差异的一种有用方式是:语义分割回答"每个像素是什么",检测回答"每个物体在哪里",而实例分割同时回答这两个问题。许多架构利用了这一点:在多个任务之间共享一个主干网络,并附加针对各任务的专用头。
两阶段方法
多年来占主导地位的范式是在两阶段检测器之上扩展一个掩膜头。Mask R-CNN[1]在Faster R-CNN的基础上,增加了一个小型全卷积网络,为每个感兴趣区域(RoI)预测一个二值掩膜。两个阶段分别为:(1)一个区域建议网络,它根据主干网络的特征图生成候选物体框;(2)逐 RoI 的检测头,对候选框进行分类、对边界框进行精化,并预测一个固定分辨率的掩膜(通常为 28x28 或 14x14),然后将其缩放到该边界框。
一项关键贡献是 RoIAlign,它将量化的 RoIPool 替换为在浮点坐标处进行的双线性采样。量化会引入几像素的对齐误差——这对于边界框回归是可以容忍的,但对于掩膜来说是灾难性的,因为一两个像素的偏差就会明显地降低边缘质量。RoIAlign 在不改变模型其余部分的情况下,将掩膜AP提高了数个百分点。
掩膜头将掩膜预测与分类解耦:它为每个类别预测一个独立的二值掩膜,并在推理时选择与预测类别对应的那一个。每个 RoI 的掩膜损失是仅在真实类别对应的通道上计算的二元交叉熵,从而避免不同类别之间相互竞争。
单阶段与实时方法
两阶段方法精确但速度较慢,因为每个 RoI 都要顺序地通过掩膜头。单阶段实例分割旨在实现实时推理,直接从稠密的特征图中预测掩膜。
YOLACT[2]将掩膜预测分解为两部分:一组对整张图像有效的"原型掩膜",每张图像只生成一次;以及在每次检测时预测的每个实例的系数。最终的实例掩膜是这些原型的线性组合,然后被预测的边界框裁剪。SOLO[3]则完全重新表述了该问题:它在网格的每个单元上预测一个实例类别和相应的掩膜,以直接的稠密掩膜预测取代"先检测后分割"的流程。CondInst[4]为每个实例预测动态卷积滤波器,这些滤波器作用于共享的特征图以生成掩膜。
基于 Transformer 的方法
检测 Transformer 将实例预测重新表述为集合预测。DETR[5]使用可学习的物体查询(object queries),这些查询关注图像特征并输出固定大小的(类别、边界框)预测集合;训练时采用匈牙利匹配损失,强制与真值之间形成一一对应关系,从而消除了对非极大值抑制的需求。
MaskFormer 和 Mask2Former[6]将这一思想扩展到分割任务,让每个查询直接预测一个类别和一个掩膜。单一的 Mask2Former 架构在语义分割、实例分割和全景分割基准上都取得了最先进的结果,这表明尽管在不同度量下评估,但底层问题在架构层面上是统一的。其关键洞见是,掩膜预测是一种自然的注意力形式:每个查询的掩膜就是该查询在图像特征上的注意力图。
训练目标
实例分割模型通常使用结合分类、边界框回归和掩膜预测的多任务损失进行训练:
$ {\displaystyle \mathcal{L} = \mathcal{L}_{\text{cls}} + \lambda_{\text{box}} \mathcal{L}_{\text{box}} + \lambda_{\text{mask}} \mathcal{L}_{\text{mask}}} $
掩膜损失最常用的是逐像素二元交叉熵,有时还会辅以Dice 损失以改善边界质量:
$ {\displaystyle \mathcal{L}_{\text{Dice}} = 1 - \frac{2 \sum_i p_i g_i}{\sum_i p_i + \sum_i g_i}} $
其中 $ p_i $ 是预测概率,$ g_i \in \{0,1\} $ 是像素 $ i $ 处的真值标签。当前景仅占像素的一小部分时,Dice 损失比交叉熵更能处理类别不平衡,但单独使用时噪声较大;将两者结合使用是标准做法。
评估
标准度量是掩膜平均精度(mask AP),其计算方式与边界框 AP 类似,但交并比是在预测掩膜和真值掩膜之间计算,而不是在边界框之间计算。COCO mAP[7] 在 0.5 到 0.95 (步长 0.05) 的 IoU 阈值范围内,以及在不同物体尺寸分组(小、中、大)上对 AP 取平均。研究者还提出了边界感知度量(如 Boundary AP),以便更好地奖励清晰的掩膜边缘,因为像素级IoU在掩膜在视觉上还远未干净时就已饱和。
常用的数据集包括 COCO (80 个类别,约 11.8 万张训练图像)、LVIS[8](1200 多个类别,呈长尾分布)以及 Cityscapes (具有精细像素级标注的城市驾驶场景)。
局限性与开放问题
实例分割继承了检测面临的诸多困难(小物体、密集场景、新类别),并增加了若干分割特有的失败模式:细长结构(电线、动物的肢体)由于其像素面积相对于损失而言很小,会被系统性地欠分割;由于输出分辨率较粗,掩膜边界通常会偏离真实边界几个像素;严重遮挡会同时干扰检测器(漏掉实例)和掩膜头(一个掩膜覆盖两个物体)。LVIS 等数据集中长尾的类别分布暴露了常见类别准确率与稀有类别准确率之间的差距,并推动了基于类别平衡损失和采样的研究。
另一个前沿方向是开放词表的、可由提示驱动的实例分割。Segment Anything Model[9]表明,在十亿级掩膜数据集上训练的模型,可以在以前未见过的类别上,根据点提示或框提示产生高质量的掩膜,将分割与固定标签集合解耦。再结合用于类别分配的视觉-语言模型,这指向了一种在开放词表上运作的实例分割系统,而不再局限于 COCO 时代数据集的封闭分类体系。
参考文献
- ↑ He et al., Mask R-CNN, ICCV 2017.
- ↑ Bolya et al., YOLACT: Real-time Instance Segmentation, ICCV 2019.
- ↑ Wang et al., SOLO: Segmenting Objects by Locations, ECCV 2020.
- ↑ Tian et al., Conditional Convolutions for Instance Segmentation, ECCV 2020.
- ↑ Carion et al., End-to-End Object Detection with Transformers, ECCV 2020.
- ↑ Cheng et al., Masked-attention Mask Transformer for Universal Image Segmentation, CVPR 2022.
- ↑ Lin et al., Microsoft COCO: Common Objects in Context, ECCV 2014.
- ↑ Gupta et al., LVIS: A Dataset for Large Vocabulary Instance Segmentation, CVPR 2019.
- ↑ Kirillov et al., Segment Anything, ICCV 2023.