【计算机视觉】Open-Vocabulary Semantic Segmentation with Mask-adapted CLIP(OVSeg)

简介: 基于掩码的开放词汇语义分割。从效果上来看,OVSeg 可以与 Segment Anything 结合,完成细粒度的开放语言分割。

一、摘要

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

最近的两阶段方法首先生成与类别无关的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)中的示例。

image.png

(a) CLIP使用自然图像进行预训练,数据增强较少。

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

(c)我们的分析表明,预训练的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 的分割模型和一个开放的词汇分类模型。

image.png

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

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

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

具体来说,假设我们想要将masks分类为$K$个类别,我们可以首先使用CLIP模型的文本编码器为每个类别生成$K$个文本嵌入;接下来,我们将每个mask embedding $v_i$与文本嵌入进行比较,并预测$k$类概率为$p_{i,k}$
$$ p_{i,k}=\frac{\exp(\sigma(v_i,t_k)/ T)}{\sum_{k}(\exp(\sigma(v_i,t_k)/ 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$的概率。我们将这两个预测集合起来计算最终预测。我们使用MaskFormer的融合模块将mask预测融合到语义分割中。

3.2 Collecting diverse mask-category pairs from captions

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

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

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

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

image.png

对于给定的图像-标题对,只有“苹果”和“橘子”是 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 \times E}$,其中$N_p$为patch的个数,$E$为token维数。masked image还带有一个压缩的二进制mask $M_p∈{0,1}^{N_p}$,其中每个元素表示给定的patch是保留还是masked out。只有当patch内的所有像素都被完全masked时,该patch才被视为masked token。直观的感觉是,边界像素通常存在于部分masked patches中,对区域分类至关重要。我们分配一个可学习的张量,将prompt tokens表示为$P∈R^{N_p \times E}$。

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

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

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

image.png

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

四、Experiments

4.1 Training Dataset

我们在COCO数据集上训练我们的模型。我们首先使用来自COCO-Stuff的分割标签训练修改后的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是一个经典的分割数据集。

image.png

五、Conclusion

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

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

相关文章
|
机器学习/深度学习 自然语言处理 文字识别
【计算机视觉】CLIP:连接文本和图像(关于CLIP的一些补充说明)
我们推出了一个名为CLIP的神经网络,它可以有效地从自然语言监督中学习视觉概念。CLIP可以应用于任何视觉分类基准,只需提供要识别的视觉类别名称,类似于GPT-2和GPT-3的“零样本”功能。
|
数据可视化 数据挖掘 测试技术
【计算机视觉】Open-Vocabulary Object Detection 论文工作总结
Open-Vocabulary Object Detection (OVD)可以翻译为**“面向开放词汇下的目标检测”,**该任务和 zero-shot object detection 非常类似,核心思想都是在可见类(base class)的数据上进行训练,然后完成对不可见类(unseen/ target)数据的识别和检测,除了核心思想类似外,很多论文其实对二者也没有进行很好的区分。
|
机器学习/深度学习 计算机视觉
【计算机视觉 | 目标检测】Open-Vocabulary Object Detection Using Captions
出发点是制定一种更加通用的目标检测问题,目的是借助于大量的image-caption数据来覆盖更多的object concept,使得object detection不再受限于带标注数据的少数类别,从而实现更加泛化的object detection,识别出更多novel的物体类别。
|
机器学习/深度学习 算法 计算机视觉
【计算机视觉 | 目标检测】Open-vocabulary Object Detection via Vision and Language Knowledge Distillation
在这项工作中,我们考虑借用预训练的开放词汇分类模型中的知识来实现open vocabulary检测。
|
机器学习/深度学习 人工智能 自然语言处理
【计算机视觉】CORA: Adapting CLIP for Open-Vocabulary Detection with Region Prompting and Anchor Pre-Matching
CORA 在目标检测任务中提出了一种新的 CLIP 预训练模型适配方法,主要包括 Region Prompting 和 Anchor Pre-Matching 两部分。 这种方法能够让 CLIP 模型适应目标检测的任务,能够识别出图像中的对象,并提供准确的分类和定位信息。
|
机器学习/深度学习 资源调度 自然语言处理
|
6月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
606 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
2月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
2月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。

热门文章

最新文章