🚩🚩实例分割论文专栏快速跳转🚩🚩【实例分割】
目录
✅代码:code
✅论文:paper
我们提出了一种新的、极其简单的实例分割方法。 与许多其他密集预测任务相比,例如语义分割,它的实例个数是任意的,使实例分割变得更具挑战性。 为了预测每个实例的掩码,主流方法要么遵循“检测然后分割”策略(例如,Mask R-CNN),或者首先预测嵌入向量,然后使用聚类技术将像素分组为单独实例。 我们从以下角度看待实例分割的任务通过引入“实例”的概念,提供了一个全新的视角类别,它将类别分配给实例中的每个像素根据实例的位置和大小,从而很好地将实例分割转换为单次分类可解决的问题。 我们展示一个更简单、更灵活的实例分割框架,具有强大的性能,达到与 Mask R-CNN 相当的精度,并且在精度方面优于最近的单次实例分割器。 我们希望这个简单而强大的框架可以作为除了实例分割之外,还能作为许多实例级识别任务的基线。
作者先卖个关子,说明目前实例分割方法可以分为两类,即自上而下和自下而上。
这两种范例都是逐步和间接的,它们要么严重依赖于准确的边界框检测,要么依赖于每像素嵌入学习和分组处理。那么基于以上问题的思考,作者引出自己的解决思路。
首先重新思考一个问题:图像中的对象实例之间的根本区别是什么?
对MSCOCO数据集的验证数据集进行了分析,发现36780个对象中98.3%的实例对象之间的中心点距离都超过了30个像素。而在剩下的1.7%中,40.5%两个实例对象大小比例超过了1.5倍比例。基于此,我们完全可以推论:利用目标的Center locations和目标的Sizes是否就能较好表示不同的实例对象? 这也就是作者提出的实例类别的概念:实例的中心点位置和形状。
下一步就是如何基于实例类别实现实例分割?
实例分割和语义分割在算法处理上最大的不同就是,实例分割需要处理同类别的实例重叠或粘连的问题。那么如果将不同的实例分配到不同的输出channel上,不就可以解决这个问题了吗?本文作者正是这种思路,不过这样也面临两个问题: 一是通道分配顺序的问题,语义分割是根据类别进行通道分配的。而对于实例分割,相同类别的不同实例需要分配到不同通道上,需要解决按照什么样的规则分配。二是尺度问题,不同尺度的物体利用相同大小的输出来预测会导致正负样本不平衡,以及小目标分割边缘不够精细的问题。所以作者利用位置来分配实例应该落入哪一个通道,利用FPN来解决尺度问题。
SOLO网络的本质就是:将实例分割问题转化为两个问题:类别预测+实例掩膜生成
这里有一个重要假设:每个格子都只属于一个单独的实例。每个格子仅仅属于(可以分配)一个语义类别。
缺点:不好解决两个物体有重叠的情况或者一个格子里多个实例。
图像经过全卷积网络(FCN)后进入两个分支的预测。一个类别分支,预测每个网格所处的物体类别,每个网格对应一个C维类别向量(C为类别数),总的类别矩阵大小为S x S x C;一个mask分支预测每个网格所属的物体mask,总的mask矩阵大小为H x W x (S x S)。
mask是不关乎类别的,无论是什么物体,只要该物体落入了这个网格,mask 分支都预测它的mask。如图所示:在中间两个长颈鹿存在的网格中,分割的mask是两者都有的。
给定一个预定义的网格数,例如 S = 20,我们的 SOLO 头输出S*S = 400 个频道映射。 然而,预测有些冗余,因为在大多数情况下,对象在图像中稀疏地分布。因此采用更高效的SOLO变体,称为解耦 SOLO,如下图所示。
开发了一个端到端的实例分割框架,称为 SOLO。可以以恒定的推理时间将原始输入图像直接映射到所需的实例掩模,从而消除了自下而上方法中的分组后处理或边界框检测和 RoI 操作的需要。鉴于其简单性,灵活性,以及强大的性能,希望SOLO能够服务于其他实例级识别任务的baseline。
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷