实例分割是什么?既要分出每个物体,又要精确抠出它的轮廓
实例分割(Instance Segmentation)是一种识别并分割出图像中每一个物体个体的计算机视觉技术。它和语义分割不同:语义分割只根据语义类别对像素进行分组,比如把所有属于“人”的像素标在一起,而实例分割会区分同一类别的多个个体,比如“第一个人”“第二个人”“第三个人”,并且为每一个个体都精确地勾勒出它的轮廓。
和其他视觉任务的区别
可以用一张街景照片来对比几种常见的视觉任务。图像分类:判断整张图里有什么,比如“这张图里有人和车”。目标检测:找出每个物体,并用一个矩形框标出它的位置,但框里会包含一部分背景。语义分割:给每个像素标注类别,画面中所有人的像素都被标成“人”,但分不清谁是谁。实例分割:既识别出每一个单独的物体,又给出它精确的像素级轮廓,每个人、每辆车都有自己独立的“剪影”。全景分割则在实例分割的基础上,还要标注天空、道路等背景区域,实现对整个画面的完整分割。
它是怎么做的
实例分割通常涉及两个主要步骤:目标检测,先找出图像中的每个物体在哪里;以及语义层面的像素分割,再为每个检测到的物体精确地划分出属于它的像素。
最有代表性的方法是 Mask R-CNN,由何恺明等人在 2017 年提出。它在 Faster R-CNN 目标检测模型的基础上,增加了一个分支:对每一个检测到的候选区域,在预测类别和边界框的同时,并行地预测一个像素级的分割掩码。它还提出了 RoIAlign 操作,解决了以往方法中特征和像素位置对不齐的问题,让分割的边缘更加精确。Mask R-CNN 简单有效,成为实例分割领域的经典方法。此后出现了不依赖候选框的方法,比如 YOLACT、SOLO,以及基于 Transformer 的 Mask2Former 等。2023 年,Meta 发布的 SAM(Segment Anything Model)能够分割几乎任何物体,只需要用户点一下或画个框,极大地提升了分割的通用性。
应用
实例分割在很多领域都有重要的应用:自动驾驶,精确地识别和区分道路上的每一辆车、每一个行人;医学影像,分割出每一个细胞、每一个肿瘤,用于计数和测量;机器人抓取,知道每个物体的精确形状,才能准确地抓取;图像和视频编辑,一键抠图、替换背景、给特定的人或物体加特效;工业质检,精确地定位和测量缺陷;以及农业中统计果实的数量和大小、遥感中提取建筑物的轮廓等。