SOLO:Segmenting Objects by Locations阅读笔记

论文下载地址: https://arxiv.org/abs/1912.04488

论文摘要:

       当前实例分割算法大部分是先检测后分割的框架,例如Mask-RCNN算法。或者先进行语义分割,然后再通过聚类算法来进行分类。论文提出了一种实例类别概念,实例类别根据实例的位置和大小为实例中的每个像素分配类别,从而很好地将实例分割转换为可分类解决的问题。论文提出的犯法可以达到和Mask-RCNN一样的精度。

SOLO:Segmenting Objects by Locations阅读笔记_第1张图片

引言:

       实例分割不仅需要确认图片中实例的个数,还需要在像素级对实例进行分割。实例分割主要分为两类,一类是自上而下,一类是自下而上。   自上而下主要流程是检测,然后在检测的基础上进行语义分割。自下而上的主要看流程是先进行分割(对每一个像素进行分类),然后都是用聚类等算法将像素进行聚类实例分割。           

        作者分析一张图片中不同实例之间的真正的区别是什么,通过分析COCO数据集发现,98.3%的实例的中心点像素值相差30像素,剩余的1.7%中的40.5%中的图像对大小比例为1.5倍。作者得出结论大多数图片中不同的实例拥有不同的中心点或者不同的大小尺度。因此作者通过实例位置和实例大小来进行实例分割。

       实例位置:将特征图划分为S*S大小的网格,每个实例会关联一个网格。就像语义分割的类别分类一样,中心位置的类别也是通过通道层面来决定的,每一个输出通道负责一个中心位置类别并且相应的通道映射应该预测属于该类别的对象的实例掩码。

       实例大小:引入FCN特征金字塔结构来解决实例大小问题。

SOLO算法结构:

  1. 整体流程

      将特征图分为S*S网格,如果实例中心落到网格里面,那么这个网格就负责两个功能:1.实例的类别。2.实例的分割掩码。

SOLO:Segmenting Objects by Locations阅读笔记_第2张图片

 

2. 语义类别

       对于每一个网格,SOLO会预测C维的来预测实例类别,C为类别的数量。因此语义类别的网络输出为S*S*C维度的(每个单元格都会有一个类别的输出)。

3. 实例掩码

       在语义类别预测的同时,每个网格单元还将生成相应的实例掩码。输出的实例掩码大小为H*W*(S*S)。在实例掩码这部分一般直接采用FCN网络结构来进行分割操作,但是传统的卷积具有平移不变性,然而我们需要的模型要具有空间可变性(因为我们分割的掩码是基于S*S的网格的,并且需要用不同的通道来分割)。论文直接将像素坐标进行归一化,创建一个与输入具有相同空间大小的张量,包含像素坐标,被归一化为-1到1。将这个张量和输入特征连接在一起传到下面的网络层中。通过简单的让卷积层访问它的坐标将空间功能增加到FCN上。

SOLO 学习训练:

1. 标签分配

       S*S的网格中有一个网格落在ground truth mask的中心位置就认为该网格是正样本,反之为负样本。得到实例的质心位置(n,m),w和h分别表示mask的长和宽,那么该实例的中心位置就是(n,m,w1,h1),其中w1= β*w,h1=β*h,β在论文中的取值为0.2,也就是说中心位置其实是一个小的矩形框。

2. Loss损失函数

                    的损失函数是Focal loss      

            

           N表示正样本的数量。p*和m*表示实例的类别和mask。d表示的是Dice loss。γ固定值为3。

检测结果:

SOLO:Segmenting Objects by Locations阅读笔记_第3张图片

 

你可能感兴趣的:(论文,深度学习)