实例分割(instance segmentation)
/ IN-stuns seg-men-TAY-shun /
实例分割是日常视觉任务里要求最高的一种:它为每一个独立的物体生成一张像素级精确的掩膜——也就是精确的轮廓——并且即便它们属于同一类别,也要把它们一一区分开。想象三只相互重叠的羊:实例分割会输出三张各自独立的掩膜,一羊一张,每张都描出那只动物精确的轮廓。它是检测(有哪些物体、在哪里)与分割(精确形状)的融合,还额外具备了数数和区分个体的能力。
可以把它看作两个早先想法的合并。目标检测为每个物体给一个框,能数出数量,但框只是个粗糙的矩形。语义分割给出精确的像素轮廓,却把同类物体并成一团。实例分割则同时做到两者:这个像素是「人」,而且具体是「第二个人」。最有名的方法Mask R-CNN,干脆在Faster R-CNN检测器上加装一个预测掩膜的分支——先找到每个物体,再涂出它精确的形状。
它驱动着那些必须把单个物体干净地分离出来的任务:机器人从杂乱料箱里抓取某一件、在显微镜切片上数细胞、为交通分析把每辆车分开,或是把照片里的某个人抠出来。诚实地说,代价很高。训练数据贵得吓人——得由人工一笔一笔描出每个物体的轮廓——而且模型比单纯的检测更笨重、更慢。在相互接触、长得又像的物体之间,那条边界,始终是错误最容易钻进来的地方。
一台仓库机器人朝一箱完全相同的盒子里看。实例分割为每个盒子返回一张独立的掩膜——盒子1、盒子2、盒子3——每张都精确勾出轮廓,于是机械爪能准确知道一个盒子在哪儿结束、下一个从哪儿开始,即使它们彼此重叠。
同一类别,但每个物体各有自己的掩膜——检测、精确形状与计数三者合一。
实例分割往往就是人们想象中「AI看见物体」真正应该有的样子——但它是标注和运行成本最高的任务之一。还有一种全景分割(panoptic segmentation),它把针对可数物体的实例掩膜,与针对天空、道路这类无定形物质的语义区域,结合在一起。