Press "Enter" to skip to content

GLIP 引入语言图像预训练到目标检测

论文摘要:基于图像的语言预训练

今天我们将深入研究一篇论文,该论文在语言-图像预训练的巨大成功基础上构建,并将其扩展到目标检测任务:GLIP — Grounded Language-Image Pre-training(基于图像的语言预训练)。我们将介绍论文的关键概念和发现,并通过提供进一步的背景和对图像和实验结果进行注释,使其易于理解。让我们开始吧!

source

论文:基于图像的语言预训练

代码:https://github.com/microsoft/GLIP

首次发布日期:2021年12月7日

作者:Liunian Harold Li,Pengchuan Zhang,Haotian Zhang,Jianwei Yang,Chunyuan Li,Yiwu Zhong,Lijuan Wang,Lu Yuan,Lei Zhang,Jenq-Neng Hwang,Kai-Wei Chang,Jianfeng Gao

类别:表示学习,目标检测,短语定位,多模态深度学习,计算机视觉,自然语言处理,基础模型

大纲

  1. 环境和背景
  2. 宣称的贡献
  3. 方法
  4. 实验
  5. 进一步阅读和资源

环境和背景

GLIP(Grounded Language-Image Pre-training)是一个多模态语言-图像模型。与CLIP(Contrastive Language-Image Pre-Training)类似,它执行对比度预训练以学习语义丰富的表示,并在其模态之间进行对齐。而CLIP在图像级别上学习这些表示,这意味着一个句子描述整个图像,GLIP旨在将这种方法扩展到对象级别表示,这意味着一个句子可能对应图像中的多个对象。将文本提示中的单个标记与图像中的对象或区域之间的对应关系识别的任务称为短语定位。因此,GLIP中的“Grounded”一词。

因此,GLIP的目标是:

  1. 统一大规模预训练的短语定位和目标检测。
  2. 提供一个灵活的零样本目标检测框架,灵活意味着不受固定类别集的限制。
  3. 构建一个预训练模型,以零样本或少样本方式无缝转移到各种任务和领域。

有了这样的模型,您可以使用文本提示在给定的输入图像中找到感兴趣的对象或区域。最棒的是:您不受预定义类别的限制。

Fig. 1: Output of GLIP for different images and prompt formats. Image source + annotations by author

您可以进一步处理这些检测结果(例如将其输入到跟踪系统中)或创建一个具有特定感兴趣类别的自定义数据集,并使用这些数据集训练您自己的监督式检测系统。不仅可以涵盖罕见或非常特定的类别,还可以节省大量创建手动标签的时间和金钱。正如我们后面将看到的,GLIP的作者们通过引入教师-学生框架来进一步提高性能。

许多其他深度学习项目和领域已经采用了GLIP。例如,GLIGEN(基于语言的图像生成)使用GLIP来调节潜在扩散模型的图像生成,以增加可控性。此外,GLIP已与其他基础模型(如DINO(无标签自我蒸馏)和SAM(任意分割))结合使用,分别形成GroundingDINO和Grounded-Segment-Anything。GLIPv2将初始GLIP模型与视觉-语言理解相结合,不仅改善了短语定位,还实现了视觉问答任务的功能。

声明的贡献

  1. 大规模预训练用于组合短语定位和目标检测
  2. 提供了关于目标检测和短语定位的统一视角
  3. 深度跨模态融合,学习高质量的语言感知视觉表示,并实现卓越的迁移学习性能。
  4. 表明在深度视觉语言融合(例如GLIP)中,对话调整比浅融合网络(例如CLIP)更为有效。

方法

对于GLIP可以做什么有一个大致的想法,让我们更详细地了解论文的细节。

架构概述

从高层次来看,GLIP的架构与CLIP的架构非常相似,因为它也包括文本编码器、图像编码器和某种对比学习,用于相似的文本和图像特征。 GLIP的架构如图2所示。

图2:框架架构。图像来源+作者注释

GLIP在文本和图像编码器后添加了一个语言-图像感知的深度融合模块。此模块执行跨模态注意力并提取进一步的特征。通过计算生成的区域特征和单词特征之间的余弦相似度。在训练过程中,最大化匹配对的相似性,同时对不正确的对进行最小化。与CLIP不同,CLIP的匹配对位于相似性矩阵的对角线上,而在GLIP中,匹配不是在句子级别上进行的,而是在(子)词级别上进行的,通常位于对角线之外的位置。

将短语定位作为目标检测问题

作者指出,短语定位(将单词与图像中的对象/区域关联起来)的问题可以被公式化为目标检测目标,其中标准的损失目标为:

GLIP 引入语言图像预训练到目标检测 四海 第4张

定位损失与预测边界框的质量有关,这取决于格式,可能是边界框的大小和位置。分类损失是统一的关键部分。通过计算文本-图像特征的相似性得分的对数,而不是计算图像分类器的对数,可以使用相同的损失目标进行训练。

GLIP 引入语言图像预训练到目标检测 四海 第5张

不同的模型变体

训练了五个不同的模型来展示作者的设计选择和模型规模的影响:

图3:模型变体。图像来源+作者注释

教师-学生预训练

为了提高GLIP的性能,作者使用人工注释的数据(称为GoldG)训练了GLIP-T(C)模型(参见图3),从互联网上的文本-图像对生成了定位数据。他们称这个模型为教师模型,随后训练一个学生模型,将教师使用的数据和教师生成的数据一起提供给学生模型。有关示意图,请参见图4。

注意:尽管使用了教师和学生这些术语,但这与知识蒸馏中的过程不同,知识蒸馏是训练较小的学生模型以匹配较大的教师模型的输出。

图4. 教师-学生预训练。作者提供的图像

有趣的是,正如我们在实验中所看到的,学生在许多(但不是全部)数据集上无论是零样本检测还是少样本检测都超过了老师。为什么会这样呢?论文提出了一个假设,即尽管老师提供了一个置信度较低的预测(他们称之为“有根据的猜测”),但它成为了学生在生成的数据集中的“标准答案”(他们称之为“监督信号”)。

实验

GLIP论文介绍了各种实验和消融研究,主要涉及以下几个方面:

  1. 零样本领域转移
  2. 数据效率
  3. 提示工程

对于一些结果和它们的呈现方式,我对其中一些存在疑问,并将在注释中指出。我不想贬低GLIP的成就,而是以批判的眼光来看待。

现在让我们深入了解细节!

零样本领域转移

首先,我们将看一下零样本领域转移的结果。在这个任务中,目标是分析预训练的GLIP模型在与预训练期间使用的不同数据集(即COCO和LVIS)上的表现,并与以监督方式训练的基准模型进行比较。然后,对预训练的GLIP进行微调并在测试数据集上进行评估。

在图5中,我们可以看到COCO上的零样本领域转移结果。我们可以看到所有的GLIP模型在零样本性能上都优于监督式的Faster RCNN。我们还看到GLIP-L超过了之前的SOTA(在论文发布时)。我们可以看到更大的学生模型GLIP-L优于老师模型GLIP-T(C)。

图5:COCO上的零样本领域转移和微调。图片来源+作者注释

接下来,我列举了我在阅读这些结果和论文中提出的声明时的一些疑问,其中论文中提到GLIP-L超过了最佳监督模型SoftTeacher。

  1. 比SoftTeacher指标更好的模型是GLIP-L,比之好0.2分。这个小差距可能不是GLIP这种新方法的结果,而是由于训练超参数的一些差异造成的。
  2. GLIP-L甚至没有使用从老师模型生成的数据(Cap4M或Cap24M),而他们将其作为一个好的解决方案呈现。
  3. GLIP-L在训练数据的语料库上比SoftTeacher大得多。

在我看来,当在不明确或不同的约束条件下比较不同的方法和模型时,对于比较不同的GLIP模型和他们自己训练的DyHead-T模型的结果完全是正常的,我只是对一般情况下存在疑问。

在图6中,我们可以看到LVIS数据集上的零样本领域转移性能。我们可以看到最大的GLIP模型GLIP-L优于所有其他呈现的监督模型。

图6:LVIS上的零样本领域转移。图片来源+作者注释

最后,GLIP在Flickr30K实体上的短语定位表现与MDETR进行了比较(见图7)。GLIP的两个学生模型,GLIP-T和GLIP-L,都超过了MDETR的基线。

图7:Flickr30K实体短语定位表现。图片来源+作者注释

数据效率

另一个实验涉及数据效率。该实验旨在展示在特定数量的任务特定数据上微调预训练模型时性能(以平均精确度为指标)的变化。在图8中,模型在13个不同的数据集上进行评估,并将性能报告为在这13个数据集上的平均精确度。结果报告了0-shot、1-shot、3-shot、5-shot、10-shot和“all”-shot(我怀疑这不是完全微调的官方术语,但我想你明白我的意思 😅)。

图8:数据效率。图片来源+作者注释

提示工程

与CLIP类似,作者还报告了模型性能与输入文本提示的构造之间的相关性。他们提出了两种改进预训练模型性能的技术,而无需重新训练模型的权重:

  1. 手动提示调整
  2. 提示调整

手动提示调整的思想是通过提供额外的描述性词语来提供更多上下文,见图9:

图9:手动提示调整示例。图片来源+作者注释

手动提示调整始终可以用于改善性能,无论模型是否完全微调,或者模型是否在零样本或少样本场景中使用。

第二种方法,提示调整,需要访问下游任务的基本真实标签,并且特别适用于每个检测任务具有单个提示的场景(例如“检测汽车”)。在这种情况下,该提示首先会被翻译成特征嵌入,使用文本编码器。然后,冻结图像编码器和深度融合模块,仅优化输入嵌入,使用基本真实标签。优化后的嵌入将作为模型的输入,文本编码器可以被移除。

图10展示了这种提示调整对各种GLIP模型的结果。当应用于具有深度融合模块的模型时,提示调整几乎可以达到与微调模型权重相同的性能。

图10:提示调整的效果。图片来源+作者注释

进一步阅读和资源

正如本文开头提到的,GLIP已被许多项目广泛采用。

以下是建立在GLIP基础上的论文列表:

  1. GLIPv2:统一定位和视觉语言理解
  2. GLIGEN:开放集合的文本到图像生成
  3. Grounding DINO:将DINO与基于开放集合的预训练相结合的目标检测

如果您想深入了解GLIP及其他建立在GLIP基础上的有趣项目的实现,以下是一些存储库列表:

  • GLIP的官方实现
  • 用于与GLIP玩耍的Python Notebook
  • GroundingDINO:将GLIP和DINO结合
  • Grounded-Segment-Anything:将GroundingDINO和SAM结合

这是我关于CLIP基础模型的一篇文章,采用与本文相同的摘要方法:

CLIP基础模型

论文摘要— 从自然语言监督中学习可迁移的视觉模型

towardsdatascience.com

Leave a Reply

Your email address will not be published. Required fields are marked *