单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

最近一两年,单阶段实例分割的工作出现的越来越多,有基于检测的(先检测后预测mask,检测框架有anchor-based也有anchor-free的),也有直接从图片像素到mask的。而自从anchor-free的单阶段目标检测框架FCOS出来以后,基于该目标检测框架的单阶段实例分割也出现了好几个不错的工作。单阶段目标检测和实例分割的框架一般会显得简洁有效,对其他视觉问题也会有一定的启发意义。自己后面也会陆续更新一系列单阶段实例分割的论文解读的博客,也算是做个笔记。

今天写的第一篇,大概是CVPR2020的一个工作,题目是EmbedMask:Embedding Coupling for One-stage Instance Segmentation。文章链接在这儿EmbedMask代码作者也开源了EmbedMask简单的来说,是对每一个候选框(Proposal)和每一个像素(Pixel)都计算一个Embedding,其实也就是特征编码,最后根据像素和候选框的Embedding的距离决定该像素是否属于该框框住的物体。框架是基于anchor-free的单阶段目标检测框架FCOS

FCOS里,特征图的每一个像素位置或负责预测一个框,这样其实该位置处的框的特征编码是256维度的向量。相比于anchor-based的单阶段目标检测比如RetinaNet,一个像素位置负责编码九个框,特征图的单个像素位置只负责回归一个框,会减少歧义。

 

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

整个实例分割的框架如上所示,蓝色模块是作者新加的针对实例分割的模块,其他颜色的模块继承自FCOS。

Overview

由于FCOS每一个像素位置单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation负责一个框,因此,该位置可以表示为单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation,其中单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation,单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation,单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation分别代表是原来FCOS的输出,即分别为该像素处的物体的类别(背景或前景类),像素处预测的该像素相对于框的四周的偏移量,以及该像素处包含物体的概率。单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation分别代表该ProposalEmbedding以及间隔Embedding。间隔Embedding用于确定该像素的EmbeddingProposalEmbedding在多少距离时可以把该像素归入到该Proposal框住的物体。像素PixelEmbedding记为单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

Embedding定义

针对ProposalEmbedding是对物体的全局语义信息的编码,而针对像素的Embedding是对物体局部位置的语义信息的编码。全局语义信息和局部语义信息结合,可能可以更好地对物体进行分割。由于FCOS利用了特征金字塔,所以即使每一个特征图的位置只负责预测一个框,但是数目也是可观的,为了减少处理的框减少计算量并减少噪声样本,在对物体进行实例分割时只考虑目标检测阶段经过NMS之后的候选框(Proposal记为单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation,该ProposalEmbedding记为单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation。对于像素单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance SegmentationEmbedding

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation ,假如单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation的距离足够近,比如小于一个间隔单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation,,则该像素属于该框框住的物体。

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

这样可以简单地设计如下的损失函数,训练实例分割网络。单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

上式两项分别代表把属于某一个物体单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation的像素在Embedding空间与聚类中心也就是单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation越来越近,而不属于单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation的像素会被推开。

但是文中指出这样做 存在一些问题,那就是针对不同尺度的物体,都设置了一个固定的阈值,按照文中的说法,大物体阈值应该要大些,小物体阈值需要小些。因此采用了一种更加自适应的方式来根据物体尺度自适应设置间隔。

可学习的间隔

将间隔这一个超参数和像素以及候选框(Proposal)的Embedding打包在一起表示,省去超参数的调参烦恼。

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

上式的单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation的候选实例Embedding,单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation的间隔Embedding。像素单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation的Embedding与Proposal的Embedding的聚类越接近,单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation越接近于一。因此mask分支的训练损失函数为

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation 是真值,代表0或者1.

平滑损失

训练的时候,在NMS之后留下来的框和真值框求IOU,大于一定阈值的框记为单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation由真值框负责,这样该真值框单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation对应的Embedding也是聚类中心、以及单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation所对应的间隔Embedding可以按如下方式计算得到

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

而测试的时候,单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation ,测试和训练的时候单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation不太一样,因此引入了下面的平滑损失。

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

网络训练

目标函数单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation

框回归和分类的样本采样:和FCOS一样,只是正样本的选择更加严格,只是GT框*的部分区域像素是正样本。

实例Embedding和间隔采样:框和GT框的IOU大于0.5.

像素Embedding的采样: ????GT框类的一部分像素。

实验结果

部分实验结果如下,更多可以去阅读原文。

单阶段实例分割之一 EmbedMask: Embedding Coupling for One-stage Instance Segmentation