Panoptic Segmentation
全景分割为每个像素赋予一个类别,并为每个可计数对象分配独立 ID,将语义分割和实例分割统一起来。涵盖模型、PQ 和代码。
全景分割是一项计算机视觉任务,为图像中的每个像素分配两个值:类别标签,以及对于属于可计数目标的像素所分配的实例 ID。它结合了语义分割和实例分割:语义分割为每个像素标注类别,但会合并同类目标;实例分割会区分单个目标,却不标注背景。最终得到一张覆盖整个场景且不重叠的地图,其中道路、天空和草地被标为区域,而每辆车和每个人都各自成为一个分割区域。Facebook AI Research 和海德堡大学的 Alexander Kirillov 及其同事在发表于 CVPR 2019 的全景分割论文中定义了这项任务及其指标,并选择这个名称来体现其定义:包含单个视野中所有可见内容。
Stuff 与 Things#
全景分割将类别划分为两种:
- Things:形状明确、可以计数的物体,例如人、汽车、动物和手提包。每个物体都会获得自己的实例 ID,因此并排站着的两个人会成为两个独立的分割区域。
- Stuff:纹理或材质相似、形态不定的区域,例如道路、天空、草地、水面和墙壁。同一 stuff 类别的所有像素组成一个分割区域,因为将天空划分为多个实例没有意义。
COCO 全景基准使用 133 个类别,其中 80 个 things 类别和 53 个 stuff 类别;Cityscapes 驾驶场景基准评估 19 个类别,其中 8 个 things 类别和 11 个 stuff 类别。模糊不清或不属于任何类别的像素会标记为 void,并在评估时忽略。COCO 全景格式将每张图像存储为 PNG,其中每个分割区域都有唯一 ID;此外还会用 JSON 文件将每个 ID 映射到其类别。
全景分割模型的工作原理#
早期系统会在共享的主干网络上运行语义分支和实例分支,然后用固定规则合并它们的输出。例如,Panoptic FPN会根据置信度解决实例之间的重叠,优先保留实例而非 stuff 区域,然后移除面积低于阈值的 stuff 区域:
Panoptic-DeepLab 等自底向上模型会预测语义图,同时预测每个目标的中心点,以及从每个像素指向其中心的偏移量,然后根据 thing 像素所指向的中心点对其分组。通用模型则使用一种掩码分类架构来完成语义、实例和全景分割。Mask2Former会预测一组固定数量的查询,每个查询生成一个掩码和一个类别,可同时覆盖 things 和 stuff;它在发表于 CVPR 2022 的论文中报告了 COCO 全景数据集上 57.8 PQ 的成绩。下面的 Hugging Face Transformers 流水线会运行一个在 COCO 全景数据集上训练的 Mask2Former 检查点:
import numpy as np
from transformers import pipeline
# Load Mask2Former trained on COCO panoptic: 80 thing and 53 stuff classes
segmenter = pipeline("image-segmentation", model="facebook/mask2former-swin-tiny-coco-panoptic")
# Each returned segment is one non-overlapping region with a class label and a binary mask
segments = segmenter("https://ultralytics.com/images/bus.jpg", subtask="panoptic")
for segment in segments:
share = np.array(segment["mask"]).mean() / 255
print(f"{segment['label']}: {share:.1%} of pixels")输出列出了 10 个分割区域。4 个人、2 个手提包和 1 辆公交车(占图像的 30.7%)各自作为独立的 thing 区域出现;另外还有 pavement-merged(30.9%)、building-other-merged(19.5%)和 tree-merged(4.8%)三个 stuff 区域各自形成一个区域;后缀 "-merged" 表示这些 COCO stuff 类别由更细的标签合并而成。每个像素只属于一个分割区域,没有被任何区域覆盖的 0.4% 像素则为 void。
全景质量(PQ)#
全景预测使用全景质量进行评分。如果预测分割区域与同类别的真实分割区域之间的交并比(IoU)超过 0.5,两者就算匹配;由于分割区域彼此不重叠,每个区域最多只能匹配一次。匹配项为真正例(TP),未匹配的预测为假正例(FP),未匹配的真实分割区域为假负例(FN)。PQ 等于所有匹配项 IoU 之和除以 TP + ½FP + ½FN,可分解为两部分:
- 分割质量(SQ):匹配区域的平均 IoU,用于衡量掩码的贴合程度。
- 识别质量(RQ):TP / (TP + ½FP + ½FN),即分割区域检测的 F1 分数。
PQ 按类别计算并取平均,基准测试还会分别报告 things 和 stuff 的 PQ。
全景分割与语义分割、实例分割的区别#
- 语义分割:回答每个像素“这是什么类别?”。三个相邻的汽车会成为一个汽车区域。
- 实例分割:仅对检测到的目标回答“这个像素属于哪个目标?”。背景像素没有标签,不同目标的掩码也可能重叠。
- 全景分割:为每个像素同时回答这两个问题,并确保每个像素恰好属于一个分割区域。
Ultralytics YOLO26 通过独立任务提供这两部分功能:-seg 模型会为每个目标返回掩码和类别,而 -sem语义分割模型会为每个像素返回类别,并在 19 个 Cityscapes 类别或 150 个 ADE20K 类别上进行预训练。










