查看原文
其他

【源头活水】开放世界实体分割 Open-World Entity Segmentation

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—diddo
地址:https://zhuanlan.zhihu.com/p/394621314
大家好,介绍一个我们在投的工作 "Open-World Entity Segmentation". 这篇工作是我们在图像分割领域一个思考,和MaskFormer属于同期工作、思想有些类似但是出发角度不太相同。特别想澄清的点,entity segmentation不是panoptic segmentation的子问题,更像是早期的image segmentation. 有类别标签的任务有其无法处理的问题,例如题目中我们提到的开放世界问题。无类别标签相对于全景分割的优势性,我们也在下文中详细解释,请大家细细品读。
在这个工作中,我们的出发点是想解决语义/实例/全景分割在某些落地场景中实际存在的一些问题。例如大家经常使用Adobe的Photoshop来进行图像编辑,在此过程中往往需要软件对图像进行分"块"而无需对这些"块"进行分类识别。而这种"块"的定义是我们人类对类别和实例区分的一个主观反应。在实际产品部署中,我们一般使用分割模型进行分"块"处理。然而现有的语义/实例/全景分割模型往往都要考虑类别信息,这导致在此类图像编辑场景中出现了一些不可避免的问题,如下图所示:(1) 类别的歧义性导致模型对同一个"块"有两种解读,例如水和河,沙地和贫瘠的土地。(2)网络无法预测出训练阶段为标注的类别,缺少一定的泛化能力,例如卷发梳、笔和电话。这两种现象均是在实际业务中真实存在的。为什么我们会确定这种现象真实存在。。。因为这篇工作就是和Adobe的研究团队一起合作完成的。
对于上面所描述的两种现象,我们认为这些现象与训练中考虑类别有很大的关系。假如我们在训练阶段不考虑这些类别,是否能消除这两种现象?与此同时,不考虑类别信息可以让我们的网络更多地关注每一个"块"的分割效果,这也更符合Photoshop这类软件的实际使用情况。基于这个思考,我们提出了实体(Entity)分割任务,实体也就是我们刚刚所描述的”块“。与全景分割相比,每一个实体是一个不考虑类别信息的thing或者stuff。这样的话,我们很容易直接使用已标注的panoptic数据进行探索。由于实体是一个很主观的概念,我们做了大量的用户调研来判断我们对实体"块"的定义是合理的。具体的用户调研结果,请查看我们的附录文件。
在介绍具体指标和具体方法之前,在这里也具体说明一下实体分割相对全景分割的优势,特别是在数据注释方面,它比全景分割具有更大的自由度和灵活性:

(1) 人类注释者可以自由地注释任何认为合适的实体/对象(即使它不能被轻易命名或识别),而无需繁琐地检查它们是否属于预定义的类别标签列表的一部分。我们人类通常可以准确地确定某物的形状和掩码,即使我们在语义上不知道“某物”是什么。

(2) 由于我们不区分“thing”和“stuff”,因此没有必要强制特定类别完全遵循“thing”或“stuff”的行为。例如,给定一个图像,其中两个湖泊或河流被一块土地完全隔开,人类注释者应该将它们注释为两个独立的掩码,而不是像全景分割通常所做的那样一个联合的“东西”掩码。
接下来的任务需要我们确定具体指标去衡量我们的分割结果。在这里我们考虑了两点需求:一是对每一个实体的确信程度,这样能够保证优先考虑最确信的mask,二是每一个实体不存在覆盖的关系。借鉴成熟的目标检测和实例分割的衡量指标   , 我们提出了预测实体mask之间没有相互覆盖的  衡量指标。只需要简单修改cocoapi的几行代码,就可以顺利将    转换成    。其思路是将cocoapi的分类信息全部置为1,并且在预测的时候保证mask之间没有overlap。同时    也能够衡量预测实体的确信程度,因为    与我们预测的mask得分排序息息相关。
最后是我们具体方法的设计。没有类别信息,我们无法知道什么是thing什么是stuff?所以在这里更需要我们对实体(Entity)建立统一表达。对于统一表达,我们的设计初衷是简单有效不复杂。在全景分割任务中有很多文章对这方面进行了探索,然而很多文章使用了强悍的transformer结构。相比transformer结构,CNN的结构会更加容易收敛加速训练时间。因此,最终决定用CNN结构建立统一表达。PanopticFCN是一个典型的全景分割CNN结构,至少在我们投稿阶段,PanopticFCN是全景分割的SOTA。然而PanopticFCN也没有完全做到stuff和thing的的统一表达,例如在kernel处理的方式以及最后贴图的顺序上。因此,没有合适的模型更激发了我们用CNN结构进行统一表达的兴趣。在整个探索过程中,我们特别惊奇地发现中心点能够很好地表达不考虑类别的thing和stuff。如下是我们利用FCOS检测器进行entity detection的实验记录。
这个实验表格清晰地表明了,不需要修改一阶段的目标检测器就可以很好的定位出不考虑类别的stuff或者entity。在FCOS上良好的实体(Entity)检测效果,直接导致我们使用Condinst作为baseline进行实体分割。在FCOS的基础上,Condinst在正样本点的对应位置产生动态卷积核卷积低层feature map上做entity segmentation。良好的实体检测效果保证了Condinst良好的实体分割效果。
在Condinst的基础上,我们提出了两个模块来更加适应实体分割这项具体任务。Global kernel bank利用静态卷积让我们的网络能够捕捉到所有实体(Entity)的共性,而overlap suppression利用softmax的强约束关系保证两个mask之间不具有overlap。最重要的是,我们提出的这两个模块仅仅作用在训练阶段,而不会改变Condinst原有的推理过程,因此也不会在推理阶段增加计算量。这两个模块的具体设计及其简单,具体可参照我们的论文。
在具体的量化指标上,我们首先对训练及推理在同一数据源下进行了评测。左图为我们的方法和投稿前其他优秀的panoptic segmentation框架的对比(不考虑panoptic结果的具体分类即可)。而右图是我们的方法和baseline Condinst的对比,两个模块具有1.5个点的提高。
考虑到泛化能力,我们对跨数据集也进行了评测。左图每一列和行分别代表所使用的训练数据和测试数据。可以看到,我们这种方法不仅在跨数据集上的评测指标不错,也可以合并所有的数据集进行统一的训练最终在三个数据集下都有不错的效果。
当然从量化指标上无法看到这个实体分割任务在泛化性能的优势,因此我们将在COCO上训练的模型进行了跨数据集的可视化。下图所示为我们在ImageNet的可视化结果,可以看到我们的模型能够很好的分割出在COCO上未标注的类别,例如蜥蜴,猴子或者火柴等等。对于更多的跨数据集可视化效果(ADE20K, Cityscapes, Object365以及Places2),请参考我们的附录文件。
目前,我们的paper已经放在了Arxiv上,感兴趣的小伙伴可以下载一下。由于考虑不周,我们的v1版本将正文和附录(大量跨数据集的可视化结果)合并在了一起,导致文件大小有45M,请小伙伴耐心下载一下。我们也会尽快分离出正文和附录提供一个v2的版本。这个工作的代码已全部开源,欢迎试用。在代码库中,我们提供了很多训练好的模型链接方便大家直接可视化使用,这些模型所使用的backbone包含了ResNet,Swin-Trasformer以及Segformer中的backbone MiT系列。
https://github.com/dvlab-research/Entity
些许思考:(1) 从模型角度出发,实体分割的建模方式与目前的目标检测和实例分割接近,因此在模型的设计上理论上检测涨点的结构、NMS-free的结构同样适用于实体分割任务。(2)从任务出发,实体分割具有很强的泛化能力进行无类别的全图分割,这或许有很强的潜力去做有类别的识别任务,例如全景分割,few shot或者长尾分布的分割。Mask都已分好,识别是不是也会变得容易很多?目前我们也在基于这个结构对全景分割进行尝试,PQ指标也几乎和PanopticFCN持平。因此实体分割也可以做为pretrain的模型承担一些任务的上游任务。
这些思考也仅仅代表自己的想法,可能也是错误的,请大家多多指教。


本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存