【计算机视觉 | 目标检测】OVSeg:Open-Vocabulary Semantic Segmentation with Mask-adapted CLIP论文讲解

一、摘要

开放词汇语义分割旨在根据文本描述将图像分割成语义区域,这些区域在训练过程中可能没有看到。

最近的两阶段方法首先生成与类别无关的mask proposals,然后利用预训练的视觉语言模型(例如CLIP)对 masked regions 进行分类。我们认为这种模式的性能瓶颈是预训练的CLIP模型,因为它在 masked images 上表现不佳。

为了解决这个问题,我们建议对一组masked image regions及其相应的文本描述进行微调CLIP。我们通过挖掘现有的图像标题数据集(例如,COCO Captions)来收集训练数据,使用CLIP将masked image regions与图像标题中的名词相匹配。

与更精确的人工标注的固定类分割标签(如COCO-Stuff)相比,我们发现我们的有噪声但多样化的数据集可以更好地保留CLIP的泛化能力。随着整个模型的微调,我们利用masked images中的“空白”区域,使用我们称之为mask prompt tuning。

实验表明,在不改变任何CLIP权值的情况下,mask prompt tuning带来了显著的改善,可以进一步改善全调优模型。

二、Introduction

语义分割的目的是将像素划分为具有相应语义类别的有意义区域。尽管已经取得了显著的进展,但现代语义分割模型主要是用预定义的类别进行训练,无法泛化到看不见的类别。为了达到人类水平的感知,本文研究了开放词汇语义分割,其中模型通过文本描述的任意类别对图像进行分割。

视觉语言模型,如CLIP,从十亿尺度的图像-文本对中学习丰富的多模态特征。由于其优越的开放词汇分类能力,已有研究提出使用预训练的视觉语言模型进行开放词汇分割。其中,两阶段方法显示出巨大的潜力:它们首先生成class-agnostic mask proposals,然后利用预训练的CLIP来执行开放词汇表分类(参见图1(b))。他们的成功依赖于两个假设:

  1. 模型可以生成class-agnostic mask proposals ;
  2. 预训练的CLIP可以将其分类性能转移到masked image proposals。

为了检验这两个假设,我们进行了以下分析。首先,我们假设有一个“oracle”掩码生成器和一个普通的CLIP分类器。我们使用ground-truth mask作为region proposals,并将masked images提供给预训练的CLIP进行分类。该模型在ADE20K-150数据集上的mIoU仅达到20.1%。接下来,我们假设一个“oracle”分类器,但它是一个普通的mask proposal generator —在COCO数据集上预训练的MaskFormer。我们首先提取 masked region proposals,然后将每个区域与ground-truth对象masks进行比较,找到重叠程度最高的对象,并将对象标签分配给提取的区域。尽管region proposals不完善,但该模型的mIoU明显更高,达到66.5%。

这一分析清楚地表明,预训练的CLIP不能对masked images进行令人满意的分类,这是两阶段开放词汇表分割模型的性能瓶颈。我们假设这是由masked images和CLIP的训练图像之间的显著域间隙引起的。CLIP是用最小的数据增强在自然图像上进行预训练的。另一方面,mask proposals从原始图像中裁剪和调整大小,并进一步被noisy segmentation masks破坏,参见图1 (b)中的示例。

在这里插入图片描述
(a) CLIP使用自然图像进行预训练,数据增强较少。

(b)两阶段开放词汇语义分割方法首先生成与类别无关的mask proposals,然后利用预训练的CLIP进行开放词汇分类。CLIP模型的输入是裁剪后的masked images,这些图像与自然图像有很大的域差。

©我们的分析表明,预训练的CLIP在masked images上效果不佳。

为了解决这个问题,我们建议通过对masked images和相应的文本标签进行微调来适应CLIP。

一个直接的解决方案是使用分割标签,例如,来自COCO-stuff数据集。然而,这会导致对不可见类的不好泛化。这种手动标注的masks是准确的,但类仅限于一个封闭的集合(例如,COCO-stuff的171个类)。我们假设文本多样性的缺乏导致微调后的CLIP失去对打开词汇概念的泛化能力。相反,我们通过挖掘现有的图像标题数据集(例如COCO Captions)来收集训练数据。给定图像-标题对,我们首先提取标题中的名词,并使用预训练的分割模型生成与类别无关的masked region proposals。然后,使用预训练的CLIP模型,我们为每个提取的名词分配最佳region proposal。通过学习这种masked images与新类别之间的弱监督比对,适应后的CLIP更好地保留了开放词汇分类的泛化能力。

接下来的问题是如何有效地对CLIP进行微调?masked images与自然图像最显著的区别是masked images中的背景像素被masked,导致许多空白区域,这些空白区域在馈送到CLIP transformers 时将被转换为 “zero tokens”。这样的tokens不仅不包含有用的信息,而且还会给模型带来域分布偏移(因为这样的tokens在自然图像中不存在),并导致性能下降。为了缓解这种情况,我们提出了mask prompt tuning,即visual prompt tuning。

在我们的实验中,我们以“zero-shot”的方式测量开放词汇分割数据集上的分割性能—我们不为每个评估数据集调整模型。我们使用带有标题的COCO-stuff数据集训练我们的模型。

综上所述,我们的贡献包括:

(1)我们的分析表明,预训练的CLIP在mask proposals上表现不佳,使其成为两阶段方法的性能瓶颈。

(2)从captions中收集不同的mask-category pairs,使CLIP适应masked images,并保持其泛化能力。

(3)我们提出了mask prompt tuning,专门用于masked image adaptation。此方法不改变CLIP的权重,支持多任务权重共享。

(4)在2017年,我们首次证明开放词汇generalist 模型可以在没有特定数据集调整的情况下与监督专家模型的性能相匹配。

三、Method

我们首先回顾两阶段开放词汇分词方法。然后讨论了如何获得一个mask-category pairs的数据集来对CLIP进行微调。最后,我们讨论了提出的mask prompt tuning技术,以适应masked images的CLIP。

3.1 Two-stage models for open-vocabulary semantic segmentation

我们的两阶段开放词汇语义分割模型如图所示。它包括一个生成mask proposals的分割模型和一个开放的词汇分类模型。

在这里插入图片描述
两阶段方法由一个分割模型(如MaskFormer)和一个CLIP模型组成。首先,利用CLIP的文本嵌入对改进后的MaskFormer进行训练,进行开放词汇分词。然后,我们使用预训练的分割模型来生成与类别无关的proposals,并将proposals与从相应标题中提取的名词对齐。在收集了不同的mask-category pairs之后,我们用提出的mask prompt tuning来微调CLIP。

MaskFormer预测一组 N N N个mask proposals和相应的类预测。每个提议用一个 H × W H\times W H×W二进制 masks 表示,表示目标物体的位置。类预测是一个 C C C维分布,其中 C C C为训练集中的类数。

在之后,我们修改了MaskFormer,这样对于每个mask,它都会生成一个 C C C维的提议嵌入,其中 C C C是CLIP模型的嵌入维数(ViT-B/16为512,ViT-L/14为768)。这个改变允许MaskFormer执行开放词汇分割。

具体来说,假设我们想要将masks分类为 K K K个类别,我们可以首先使用CLIP模型的文本编码器为每个类别生成 K K K个文本嵌入;接下来,我们将每个mask embedding v i v_i vi与文本嵌入进行比较,并预测 k k k类概率为 p i , k p_{i,k} pi,k

公式
p i , k = exp ⁡ ( σ ( v i , t k ) / T ) ∑ k ( exp ⁡ ( σ ( v i , t k ) / T ) ) p_{i,k}=\frac{\exp(\sigma(v_i,t_k)/ T)}{\sum_{k}(\exp(\sigma(v_i,t_k)/ T))} pi,k=k(exp(σ(vi,tk)/T))exp(σ(vi,tk)/T)

其中 σ ( ⋅ , ⋅ ) σ(·,·) σ()表示两个嵌入向量之间的余弦相似度,τ是温度系数。

我们用171个类在COCO-Stuff数据集上训练修改后的MaskFormer。我们使用CLIP的文本编码器来处理类名以生成文本嵌入。我们还附加了一个可学习嵌入 ∅ 来表示“无对象”的范畴。对于其他训练设置,我们遵循原始的MaskFormer。

请注意,以这种方式训练的mask proposals生成器并不是严格的“类不可知”,因为对象的定义是由训练集中的类定义决定的。例如,如果训练集只包含“人”作为一个类,则模型不太可能自动将人分割为“脸”、“手”、“身体”或更精细的身体部位。

如何训练一个通用的和类不可知论的模型来生成mask proposals是一个重要的话题,但超出了本文的范围。

除了MaskFormer的预测之外,在之后,我们使用CLIP添加了一个并行预测分支。MaskFormer生成mask proposals,N其中1和0分别代表前景和背景。对于每个mask,我们选择一个包含所有前景像素的紧密边界框,裁剪图像,mask out backgrounds,并重新调整大小到CLIP的分辨率。我们将mask proposals提供给CLIP,并计算类 k k k的概率。我们将这两个预测集合起来计算最终预测。我们使用MaskFormer的融合模块将mask预测融合到语义分割中。

3.2 Collecting diverse mask-category pairs from captions

为了使CLIP更好地处理masked images,我们建议在由masked images和文本对组成的数据集上对CLIP进行微调。一个直接的解决方案是利用手动标注的分割标签,例如,来自COCO-Stuff。

这样的标签是准确的,但有一组封闭的类别。

我们尝试了这个解决方案,并从COCOStuff收集了965K对mask-category,跨越171个类别(例如,香蕉,橙色)。然后我们调整CLIP的图像编码器,同时冻结文本编码器。然而,我们观察到这种朴素的方法限制了CLIP的泛化能力,因为如果有更多看不见的类,性能会下降。我们假设,由于有限的文本词汇表,经过微调的CLIP过度适合171个类,失去了推广到未知类别的能力。

与分割标签相比,图像标题包含更丰富的图像信息,涉及更大的词汇表。例如,在下图中,图像标题是“有苹果、橘子和茶壶”。虽然“apple”和“orange”是cocoa - stuff中的有效类,但其他概念不是有效类并被忽略。

在这里插入图片描述
对于给定的图像-标题对,只有“苹果”和“橘子”是COCO中的类别。通过从标题中提取名词,我们还可以得到一个新的“茶壶”类别。

基于这一观察,我们设计了一种自标记策略来提取mask-category pairs。如上图所示,给定一张图像,我们首先使用预训练MaskFormer来提取mask proposal 。我们使用现成的语言解析器提取所有名词,并将它们视为潜在的类。然后,我们使用CLIP将最匹配的mask proposal 配对到每个类。从COCO-Captions中,我们收集了130万个mask-category pairs,其中包含27K个唯一名词,每张图片使用5个标题,或者440K对,包含12K个名词,每张图片使用1个标题。实验表明,这种嘈杂但多样化的mask-category数据集的性能明显优于手动分割标签。

3.3 Mask prompt tuning

在收集数据集之后,一个自然的问题是如何有效地微调CLIP ?

masked image和自然图像最显著的区别是masked image中的背景像素被设置为零,导致许多“空白区域”。将masked image馈送到CLIP时,图像将被分割成不重叠的小块并进行标记。这些空白区域将变成zero tokens。这样的tokens不仅不包含有用的信息,而且还会给模型带来域分布偏移(因为这样的tokens在自然图像中不存在),并导致性能下降。为了减轻这种情况,我们提出了一种称为mask prompt tuning的技术,即视觉提示调优。

具体来说,当输入CLIP时,masked image将被标记为张量 T ∈ R N p × E T∈R^{N_p \times E} TRNp×E,其中 N p N_p Np为patch的个数, E E E为token维数。masked image还带有一个压缩的二进制mask M p ∈ 0 , 1 N p M_p∈{0,1}^{N_p} Mp0,1Np,其中每个元素表示给定的patch是保留还是masked out。只有当patch内的所有像素都被完全masked时,该patch才被视为masked token。直观的感觉是,边界像素通常存在于部分masked patches中,对区域分类至关重要。我们分配一个可学习的张量,将prompt tokens表示为 P ∈ R N p × E P∈R^{N_p \times E} PRNp×E

最后,transformer的最终输入被计算为 T T T M p M_p Mp + P P P ⊗ (1 − M p M_p Mp),其中 ⊗ 表示元素的乘法,我们可以将这样的 prompt tokens 添加到transformer 的更深层。

与完全调整整个模型相比,mask prompt tuning有几个优点。首先,它是专门为分割任务设计的,其中部分输入图像masked。其次,与全模型调优相比,mask prompt tuning的可训练参数数量要少几个数量级,训练效率要高得多。此外,作为一个基础模型,CLIP可能同时用于许多任务,并且我们可能不允许调整CLIP的权重。

mask prompt tuning不需要改变CLIP的权重,适合多任务场景。最后,我们的实验表明,mask prompt tuning单独导致显着改善。如果与全模型微调一起使用,可以进一步提高开放词汇表分割性能。

在这里插入图片描述
所提出的掩码提示调整可以在不改变权重的情况下使CLIP适应 masked images。我们用可学习的mask prompt tuning替换masked patches中的zero tokens。

四、Experiments

4.1 Training Dataset

我们在COCO数据集上训练我们的模型。我们首先使用来自COCO-Stuff[5]的分割标签训练修改后的MaskFormer。

接下来,我们在从COCO Captions获得的mask-category数据集上对CLIP进行微调。数据集中有118k个训练图像,标记有171个有效类别,从物体(例如橙色、汽车)到物体(例如天空、道路)。如果没有特别说明,我们在训练期间使用所有171个类别的数据。

4.2 Evaluation Dataset

我们的开放词汇表模型能够在任意数据集上执行zero-shot segmentation,而无需对数据集进行特定的自适应。因此,我们在具有挑战性的ADE20K、Pascal VOC和Pascal Context数据集上测试了我们的模型。ADE20K是一个用于场景理解的密集像素注释数据集,它涵盖了室内和室外场景的各种注释。它的验证集中有2K张图像。我们选择了两个版本的类别,一个有150个常用类别(A-150),另一个有更多样化的847个类别(A-847)。Pascal VOC是一个经典的分割数据集。

在这里插入图片描述

五、Conclusion

本文研究了开放词汇语义分割,该模型通过文本描述的任意类别对图像进行分割。我们认为当前两阶段方法的性能瓶颈是预训练的CLIP,因为它在masked images上表现不佳。

我们建议将CLIP应用于masked images。为了保持CLIP的开放词汇分类能力,我们使用从图像采集数据集中挖掘的不同mask-category pairs来调整CLIP。在此基础上,提出了一种无需改变初始权值即可适应CLIP的mask prompt tuning方法。该模型具有通用性,可以对任意数据集进行zero-shot segmentation,而无需对数据集进行特定的自适应。我们首次证明了开放词汇通才模型可以匹配监督专家模型的性能。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 通过下载 youmi-vocabulary 背单词微信小程序的代码和相关资源文件后,我们可以直接进行设定和定制。 首先,我们可以打开代码文件,然后根据自己的需求对页面布局、颜色、字体等进行修改。如果想要增加新的功能或者修改现有功能,可以找到相应的代码文件进行编辑,如卡片的显示、单词的存储和读取等。 在设定过程中,我们可以对小程序的首页进行设置,比如添加背景图片、修改标题、调整按钮位置等。另外,我们还可以设定各个页面间的跳转关系,如单词卡片页面跳转到单词详情页面、单词详情页面跳转到例句页面等。对于每个页面的样式和交互,可以通过修改代码中的CSS样式和JavaScript代码来实现。 如果想要添加新的单词库或者词典,我们可以在资源文件中添加相应的文件,然后在代码中引用这些文件,以便在小程序中使用。同时,我们还可以根据需要对单词库进行编辑,如添加新的单词、修改释义或者例句等。 在完成设定后,我们可以运行小程序进行调试,检查是否有错误或者不符合预期的地方。如果发现问题,可以根据提示进行修改,直到满足我们的需求为止。 最后,将修改后的代码和资源文件上传到微信小程序开发者工具中,进行编译和发布,即可在微信中使用我们自己定制的 youmi-vocabulary 背单词微信小程序了。 ### 回答2: youmi-vocabulary 背单词微信小程序是一个用于帮助用户背单词的工具。用户只需要将代码及相关资源文件下载后,可以直接设定并使用该小程序。 首先,将代码及相关资源文件下载到本地。可以通过下载链接或者将代码拷贝到本地的方式进行下载。下载完成后,可以将代码放置在合适的位置。 接下来,设定该微信小程序。打开微信开发者工具,选择该项目所在的文件夹,即可进行设定。在设定过程中,可以配置小程序的基本信息、界面设计、功能模块等,以及与服务器的连接方式等。 一旦设定完成,就可以使用该小程序了。用户可以通过微信扫描小程序二维码,或者在微信搜索框中搜索小程序名称,进入小程序页面。在小程序页面上,用户可以进行单词背诵、词义理解、例句听写等功能。小程序会根据用户设定的英语水平、背诵计划等提供个性化的背单词内容和学习进度统计。 此外,youmi-vocabulary 还提供了一些其他功能,例如字典查询、记忆曲线、背单词游戏等,以提高用户的学习效果和学习兴趣。 总结来说,youmi-vocabulary 背单词微信小程序是一个方便用户背单词的工具。用户只需要下载代码及相关资源文件,并进行设定,就可以使用该小程序,并享受它提供的个性化背单词功能和其他学习辅助功能。 ### 回答3: youmi-vocabulary 背单词微信小程序是一个帮助用户背诵并记忆单词的工具。用户可以在微信小程序上下载该小程序的代码和相关资源文件,并进行设置,以便使用该小程序。 通过下载 youmi-vocabulary 背单词微信小程序的代码和资源文件,用户可以获得小程序的完整功能并进行自定义设置。这些代码和资源文件可能包括小程序的前端代码、后端代码、配置文件、图片等。用户可以根据自己的需求修改这些文件,例如更改小程序的界面样式、增加新的功能、调整单词库等。 在设定时,用户可以根据自己的需求进行个性化设置。例如,用户可以选择自己所需的单词库,根据自己的学习进度和水平设定背诵计划,并进行记忆方面的设置,如背单词的方式(英译汉、汉译英、听力等),记忆模式(选择题、填空题等),以及复习频率等。 通过设定,youmi-vocabulary 背单词微信小程序可以根据用户的需求和设置,在背诵单词的过程中提供个性化的学习体验。用户可以根据自己的设定,系统自动提供对应的背诵任务和学习资料,帮助用户高效、有序地记忆单词。同时,用户也可以根据自己的学习情况进行实时调整和优化设定,以达到最佳学习效果。 总之,通过下载 youmi-vocabulary 背单词微信小程序的代码和相关资源文件,并进行设定,用户可以个性化地使用这个小程序,高效记忆单词,提升自己的语言能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值