实例分割任务
实例分割任务比语义分割任务更有挑战性,因为它在保证语义分割的同时,还要将图中的所有目标物单独分割出来。
集合中任意图片中的目标所属的语义分类标签集合是固定的、确定的,但是实例的数量却是变化的。因此语义分割任务可以轻松建模成“密集逐像素分类任务”,而实例分割不能这么做。
主流实例分割方法
1.先检测,然后分割--自顶向下
先检测出bbox,然后在每个bbox中分割出实例掩码(Mask R-CNN)。在训练过程中bbox标注作为监督信号,起重要作用。
2.先预测嵌入向量,然后通过聚类将像素点分组为单个实例--自底向上
通过疏远不同实例像素、拉近同一实例像素,使模型学习依赖关系(affinity relation),每个像素分配一个嵌入向量(embedding vector)。最后通过分组的后处理手段来分割实例。
本文方法
作者设计出一个单阶段实例分割模型SOLO(Segmenting Objects by Locations),它在实例掩码标注的监督下,可以直接分割实例,而无需bbox检测或者额外的像素成对关系。
核心问题在于如何将目标实例映射到一个确定的集合中,也即什么是“图像中各个实例间根本性的不同”。作者经过统计分析coco数据集,绝大多数目标(98.3%)对的中心距离大于30个像素,而对于中心距离小于30个像素的目标对,他们中有40.5%的尺度比高于1.5。有理由相信,可以通过 center locations 和 object sizes区分目标实例。因此,作者引入“实例类别”(instance categories)的概念(即量化的中心位置和目标尺寸),用于区分不同实例。
对于语义分割任务,全卷积网络的输入为N通道,每一个输出通道负责一个语义类别(包括背景)。类似地,作者采用实例类别(instance categories)作为分类依据。
SOLO总览
- Locations
一张图像会被划分为S×S个grid,它们为
个center location categories(CLC)。根据目标中心的坐标,一个目标实例会被分配到其中的一个gird中,这样就确定了该实例的CLC。不同于DeepMask和TensorMask,该模型通道维度不是mask图,而是CLC。每个输出的通道对应一个CLC,最终几何信息自然地保存在了width×height维度的空间矩阵中。
本质上来说,实例类别(instance category)可近似为实例对象的目标中心,因此将每个像素分到对应的实例类别,也就等同于从每个像素回归预测出目标中心。
然而,这里的关键点在于将定位预测任务转换为通过分类而非回归解决。因为分类直接将模型设计从实例不断变化的困境中解放出来,从而设计出固定数量的通道,同时还不依赖后处理。
- Sizes
为了区分不同尺度的实例,作者引入FPN,将不同尺度的目标分配到特征图的不同层级。后续实验表明FPN是该模型中的核心组件,对分割性能有相当大影响。
SOLO细节
如果一个实例的目标中心落在其中的grid中,那么这个grid负责:
- 预测实例的语义类别
- 分割出目标实例
- Semantic Category(语义类别)
对于每一个grid,SOLO都会预测出C维输出,对应类别概率。如果输入图像分割为S×S个grids,那么输出空间就为S×S×C。
- Instance Mask(实例分割)
如果输入图像分为S×S个grids,那么总共会有
个预测的mask图。那么分割分支输出的维度就为
。第k个channel的mask也就对应于grid(i , j)的实例分割结果,其中
。
通常使用FCN用于预测实例掩码,但是这种传统的卷积方法具有空间不变性(spatially invariant),它对于诸如图像分类任务能够引入鲁棒性。但是这里的任务要求空间敏感(spatially variant/sensitive)。作者通过ConvConv解决这个问题,semi-convolutional也可以解决该问题。
- Forming Instance Segmentation
在SOLO中,类别预测和mask预测通过grid cell关联:
。在得到结果之后,还要通过NMS处理,得到最终的实例分割结果。
SOLO Learing
- Label Assignment
grid(i, j)在gt mask的中心区域则为正样本,否则为负样本。中心区域定义:给定中心
以及gt mask的宽高,通过常数尺度因子
确定中心区域
。作者将该因子设为0.2,平均每个gt mask能对应到3个正样本。
对于每个正样本,都对应一个分割mask。因为每张图片被分为S×S个grids,那么每张图片就有
个输出的mask图。对于每个正样本,对应的mask即为标注。
- Loss Function
其中
为Focal Loss,
为:
其中
作者选取为Dice Loss:
SOLO Inference
input image->network->category score maps+masks
首先通过设置置信度阈值(0.1),过滤掉低置信度分类预测结果。然后选择前500个masks进行NMS。为了将soft mask转换为binary mask,作者设置阈值为0.5。
实验
- 横向对比
- 纵向对比
- 可视化
改进网络(Decoupled SOLO)
考虑到网络输出channel冗余,作者提出改进:
实验结果表明改进网络的有效性:
TODO。。。