论文:SOLO: Segmenting Objects by Locations
论文链接:https://arxiv.org/abs/1912.04488
代码链接:GitHub - WXinlong/SOLO: SOLO and SOLOv2 for instance segmentation, ECCV 2020 & NeurIPS 2020.
核心:预测每个像素所在的物体的实例类别。
作者指出实例类别就是量化后的物体中心位置和物体的尺寸,通过位置和形状进行区分实例,同一中心位置,同一尺寸物体为同一实例,否则为不同类别。
网络结构
网络结构如图2所示:
原图经过FCN网络生成feature map,分别送入网络两个分支,Semantic Category以及Instance Mask,Semantic Category分支feature map为S*S*C,用于预测各个位置目标的的类别,C为类别数。Instance Mask分支feature map为H*W*S^2,因为Instance Mask分支有S^2个位置,因此Instance Mask分支会生成S^2个H*W的feature map,用于目标的全图位置预测。
为检测不同尺度目标,引入FPN,每层输出各自接入以上两个分支。
Semantic Category
经过fpn得到的feature map为H*W经过上采样变为S*S,可通过三种方法:
1、直接双线性差值
2、adpative pooling
3、区域网格插值
经作者实验,三种方法差别不大。
正负样本设置:网格落到中心区域则为正样本,否则为负样本。给出真值mask的cx,cy,w,h;中心区域为(cx, cy, 0.2w, 0.2h),设置为0.2时,每个真值mask平均生成3个正样本。
Instance Mask
Instance Mask生成H*W*S^2的feature map,Semantic Category每个位置都会对应于实例mask分支中每一个channel,用于生成目标的mask。
因为FCN在一定程度上具有空间不变性,因此在FCN基础上增加两个channel,增加坐标信息,将像素横纵坐标x,y,归一化到[-1,1],如图3所示,将FCN生成特征图H*W*256增加2个 channel。
损失函数
Lcate采用Focal Loss(FL)
Lmask如公式2所示,
dmask作者尝试了BCE、FL以及Dice loss(DL),发现DL优于FL优于BCE。
FL比BCE效果好,主要是因为一个实例分割mask中大多数像素在背景上,FL可以削弱样本不均衡问题,通过降低分类效果好的样本的loss。DL将整张图看作一个目标,能够创建前景与背景之间平衡,且不需要超参数。如公式3、4所示。
实验结果
SOLO解耦
Instance Mask分支channel为S×S,这对计算量是比较大的要求,但其实图片中通常并不会有这么多的实例,因此有很多通道是多余的。对此作者将通道变为2S,如图7所示。