ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

论文解读《SOLO: Segmenting Objects by Locations》

2021-03-22 21:33:08  阅读:367  来源: 互联网

标签:SOLO S2 mask Locations cell instance Objects 维度


实例分割属于比较challenging的任务,他相当于是object detection和semantic segmentation的结合体。在SOLO出现之前,有两种常用的paradigm:(1)top-down:先进行目标检测,再对检测框做分割,经典的方法有Mask RCNN、PANet、TensorMask等;(2)bottom-up:让每一个像素学习到一个embedding,拉近相同instance像素之间的embedding的距离,推远不同instance像素之间embedding的距离,最后根据embedding之间的距离进行cluster。

而这两种范式都显得indirect,前者需要较高的检测精度,后者需要有较好的embedding的学习,这都稍都影响了实例分割的效果。因此本文提出的SOLO可谓打破陈规之举,因为他实现了之间端到端预测instance mask的功能。也就是说,输入是一张image,直接输出instance mask以及对应的类别,整个过程属于box-free和grouping-free的范式。

作者在研究SOLO时对instance之间的差别进行了rethinking。通过对所有的annotation统计发现:98.3%的instance质心相隔超过30个pixel,而剩下的1.7%中,大小比例超过1.5的占据了40.5%。也就是说,instance的不同完全可以归结于两个因素:(1)Location;(2)Size。

(1)对于Location的考虑:把image分成 S ∗ S S*S S∗S 个cell,每一个cell负责预测1个instance。当一个实例落入某个cell,则该cell负责预测该instance;(2)对于Size的考虑:采用FPN结构来适用于不同尺度的instance。

下图是整个SOLO网络结构示意图:
在这里插入图片描述
输入为一张image,通过FCN进行多尺度的特征提取,得到多尺度的feature map。随后接入两个分支:(1)分类分支:最后的输出是 S ∗ S ∗ C S*S*C S∗S∗C 维度的矩阵,这里 C 表示总类别数,表示着总共 S ∗ S S*S S∗S 个cell,每一个cell负责预测一个C维的类别向量;(2)Mask分支:输出维度是 H ∗ W ∗ S 2 H*W*S^{2} H∗W∗S2 ,其中 H ∗ W H*W H∗W 表示feature map的维度, S 2 S^{2} S2 这个维度表示总共有 S 2 S^{2} S2个cell去预测 S 2 S^{2} S2个mask。

其中Semantic category和Instance mask是对应的,例如某一个cell位于 i i i 行 j j j 列,则该类别对应到Instance mask的第 i ∗ S + j i*S+j i∗S+j 个维度的mask(i,j从零开始计数)。

值得注意的是,传统的卷积操作具有空间不变性,这种性质在分类任务中很有必要,但是在分割任务中并不适用,需要的是对位置信息更加敏感的网络。因此文章采用了CoordConv,即在特征图赏concat了两个维度的位置信息,这样在做conv的时候就有位置信息的参与了,实现了position sensitive。

网络的Loss Function如下:
在这里插入图片描述
其中第一项分类的Loss采用focal loss,第二部分mask的loss计算公式如下:
在这里插入图片描述
里面的参数含义懒得打字了,如下图:
在这里插入图片描述
关于 d m a s k d_{mask} dmask​ 的选择最终选取了Dice Loss,其表达形式如下:
在这里插入图片描述
其中 D D D 的计算公式如下:
在这里插入图片描述
Inference阶段:(懒得打字了,别骂我):
在这里插入图片描述
Decoupled SOLO:由于 S S S 的值可能很大,mask的维度为 S 2 S^{2} S2 就显得不太合适了,因此作者采用如下思想,将维度从 S 2 S^{2} S2 减小到 2 S 2S 2S:
在这里插入图片描述

实验是在MS COCO数据集上做的,主要实验结果如下:
在这里插入图片描述

一点感悟:

(1)SOLO这种直接预测instance mask的范式设计的非常漂亮,抛开了传统的top-down和bottom-up这两种间接求解的范式,简化步骤保证性能的同时,使得实例分割很大程度上不再依赖于detector或者embedding的grouping;

(2)CoordConv感觉用得非常妙,卷积的平移不变性对于分类任务是有利的,但对于实例分割,如果一张image有两个相同的人,传统的卷积网络可能会学习到相同的特征,因此会混淆两个instance;而采用CoordConv,加入了位置信息之后,该平移不变性将会打破,而这种position sensitive对实例分割这类任务非常有利;

(3)最后那个decoupled SOLO的设计,确实非常精妙,通过将 S ∗ S S*S S∗S 的维度拆分成两个 S S S 的组合,大大减少了训练的参数。

有几个不解的问题:

(1)如果instance非常密集,导致一个cell中存在多个instance,那么这个cell到底负责预测哪一个instance?(可能这里还要考虑FPN?);(2)然后多个尺度的feature map之间是如何协调的,因为肯定涉及到不同尺度特征图上的cell去预测同一个instance,这里的后处理是怎样操作的?

具体怎样操作的还是需要抽空研究一番代码。

标签:SOLO,S2,mask,Locations,cell,instance,Objects,维度
来源: https://blog.csdn.net/jackzhang11/article/details/115078147

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有