ICCV 2023 | 北大&南洋理工联合提出开放词汇实例分割新方法 CGG: 性能俱佳同时具备时间和空间效率优势!

论文题目:Betrayed by Captions: Joint Caption Grounding and Generation for Open Vocabulary Instance Segmentation

发表单位:北京大学,南洋理工大学

论文地址:arxiv.org/abs/2301.00...

代码地址:点击文末阅读原文直达

导读

在计算机视觉领域,开放词汇实例分割(Open Vocabulary Instance Segmentation)是一个十分具有挑战性的任务,它需要模型能够识别并分割出图像中的各种对象,包括那些在训练数据中未曾出现过的新类别。

为了解决这个问题,本文提出了一个名为CGG(Caption Grounding and Generation)的框架,这是首个将图像分割和图像的Caption生成统一起来进行开放词汇学习的框架。CGG 在没有额外的大规模数据集预训练的情况下,在COCO的OVIS上取得了6.8%的性能提升,在开放集合全景分割(Open Vocabulary Panoptic Segmentation, OSPS)上提升了15%的性能。

如图所示,CGG 框架和之前工作的区别,相比于之前的工作(例如a中直接使用 VLM 的 contrastive loss 来对齐文本和图像特征,b图中使用 grounding loss 去对齐文本和区域的图像特征),CGG 同时使用了 Caption 的 Ground Loss 和 Caption Generation Loss 充分挖掘 Caption 中包含的 Novel 类别信息。

方法

模型设计思路

CGG 框架的核心思想是充分利用标题数据(Caption)进行模型训练。标题数据不仅包含了细粒度的名词,可以帮助模型更好地进行查询对象(Object Query,编码每个实例信息)的定位,而且还可以作为监督信号,强制模型预测新颖类别(Novel Class)。这种方法不仅提高了模型的性能,而且提高了数据利用的效率。

上图展示了 CGG 的模型结构,本文使用 Mask2Former 的架构作为 baseline,把其扩到开放式场景中。提出的 ground losscaption generation loss 分别作用到 decoder 输出的 object query 上以及 cation generation 的输出上。

这里插一句,Mask2Former 虽然是一年多前的工作了,但细心的小伙伴可能会发现今年很多新工作都是基于它做进一步应用的,其注意力机制的设计思路等很值得大家借鉴学习下,没思路的可以从 DETR -> MaskFormer -> Mask2Former -> OneFormer -> ... 这条路开起。

标题对齐损失函数(Caption Grounding Loss)

以往的开放词汇目标检测和图像分割的方法往往利用grounding loss 去对齐图像中物体的特征和标题的特征,来实现视觉信息和类别单词文本特征的对齐。然而,之前的工作,例如OVR-CNN提取标题中的所有词,OpenSeg提取名词以及形容词。但在图像标题中,显然这些词中的部分单词并不能直接对应到图中可以被分割出来的物体,例如'and', 'a', 'the', 'young', 'room'等。将这些没有表示可视物体的单词加入grounding loss 会导致模型学到没有意义的表示,在图像和文本特征的跨模态学习中产生错误的对齐。

为了改进这一不足,本文提出了仅在表示物体的名词上计算标题损失函数(caption grounding on object nouns)。这个损失函数与以往的grounding loss的不同是,让视觉骨干网络(vision backbone)提取出来的vision feature只跟标题中表示物体的名词(object nouns)对齐,这样可以保证模型学到有效的对齐,从而大幅提高了模型的性能。

仅通过这一项改动,CGG在COCO上OVIS的测试中,novel类的AP相比之前最好的方法XPM提升了6.8%!

标题生成损失函数(Caption Generation Loss)

通过上述的改进之后的grounding loss,模型已经有了很大的性能提升,但是上述loss存在一个缺点,即简单的抛弃了除object nouns之外的词。

据此,本文提出了一个新的问题:这些其他词究竟能不能对预测novel类别提供帮助?

作者做了一个实验,在COCO数据集中计算novel class和其他高频单词在标题中共同出现的频率,发现不同的novel class往往会伴随着特定的词语出现,例如horse就通常伴随着ride。(见图3)。那么直观上来说,如果将这些除了object nouns之外的词也加入训练,模型在标题中看到了ride,就会倾向于判断图中的某个物体是horse,也可以提升novel类别识别的准确率。

因此,为了利用起来除object nouns之外的词,本文提出利用标题生成任务(caption generation task),即让模型根据图像特征去预测图像的标题,再跟ground truth标题比对,计算标题生成损失函数,让模型可以学习并理解图像整体的含义,将除了object nouns之外单词的信息也一同学习,包括物体之间的动作、状态、关系,并不只限于物体本身。

增加了标题生成损失函数之后,CGG在COCO上OVIS的测试中,novel类的AP相比于只使用标题对齐损失提升了6.2%。

这两个改进的动机都是为了提高模型在开放词汇实例分割任务上的性能。通过这两个改进,模型可以更好地对齐多模态特征,以及更好地预测图像中出现的实例及其关系,从而在开放词汇实例分割任务上取得更好的结果。

实验

Open Vocabulary Instance Segmentation

本文在COCO上进行了Open Vocabulary Instance Segmentation (OVIS)的测试,结果如下:

在novel类的AP上,CGG超过了之前最好的方法XPM 6.8%。

Open Vocabulary Object Detection

因为CGG以Mask2Former为框架蓝本,所以也可以进行目标检测任务。本文也在COCO上进行了Open Vocabulary Object Detection(OVOD)的测试(使用的是在OVIS任务上训练的模型),结果如下:

可以看到,即便没有对OVOD任务进行特殊设计,CGG仍然在novel类的AP上超过了之前的方法2.7%。

Open-Set Panoptic Segmentation

同样,CGG也具备完成全景分割任务的能力。本文还在COCO上进行了Open Vocabulary Panoptic Segmentation(OVOD)的测试,结果如下:

消融实验

本文在COCO的OVIS上进行了grounding loss和generation loss的消融实验,可以看到,caption generation loss对caption grounding loss有着良好的辅助作用,使得模型在novel类别上的AP提升了6.2%。仅使用generation loss的时候,模型性能不佳,说明grounding loss仍是训练开放词汇实例分割的基本模块。

总结

本文提出了一种简单有效的 Open Vocabulary Instance Segmentation 方法,除了性能上的优势之外,CGG 模型还具有时间和空间效率上的优势。

CGG 没有使用大规模多模态语料进行与训练

CGG 着重研究如何最大程度的利用训练数据中图像标题的信息,没有像其他工作一样在大规模图像-文本对数据,例如 CC3M 上进行训练。即便如此,CGG 的性能还是超过了使用这些数据的模型。

CGG 没有使用视觉语言模型(VLM)

近年来,视觉语言模型,例如 CLIP,被广泛运用于 Open Vocabulary 领域,得益于其在大规模多模态预料上进行的预训练,VLM 具有强大的多模态特征对齐能力。很多 Open Vocabulary 领域的工作都依靠 CLIP 等模型进行图像和文本的特征对齐,并利用 CLIP 在大规模语料上训练过,很可能见过 novel 类别的图像以及文本特性,来提高 novel 类别的识别准确度。而本文仅使用在纯文本数据集上训练过的 BERT embedding,既减小了 inference 的时间空间开销,又避免了数据泄露的问题。


总结下来,CGG(Caption Grounding and Generation)是一种新的开放词汇实例分割框架,它通过将分割和标题生成统一起来进行开放词汇学习,大幅提高了模型在开放词汇实例分割任务上的性能。

写在最后

欢迎对计算机视觉前沿技术感兴趣的小伙伴扫描屏幕下方二维码或者直接搜索微信号 cv_huber 添加小编好友,备注:学校/公司-研究方向-昵称,与更多小伙伴一起交流学习!

相关推荐
林开落L10 分钟前
前缀和算法习题篇(上)
c++·算法·leetcode
远望清一色11 分钟前
基于MATLAB边缘检测博文
开发语言·算法·matlab
tyler_download13 分钟前
手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程
算法·chatgpt
SoraLuna33 分钟前
「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
算法·macos·动态规划·cangjie
我狠狠地刷刷刷刷刷36 分钟前
中文分词模拟器
开发语言·python·算法
鸽鸽程序猿36 分钟前
【算法】【优选算法】前缀和(上)
java·算法·前缀和
九圣残炎42 分钟前
【从零开始的LeetCode-算法】2559. 统计范围内的元音字符串数
java·算法·leetcode
YSRM1 小时前
Experimental Analysis of Dedicated GPU in Virtual Framework using vGPU 论文分析
算法·gpu算力·vgpu·pci直通
韭菜盖饭1 小时前
LeetCode每日一题3261---统计满足 K 约束的子字符串数量 II
数据结构·算法·leetcode
geng小球2 小时前
LeetCode 78-子集Ⅱ
java·算法·leetcode