https://github.com/microsoft/GLIP
本文提出了一种用于学习对象级、语言感知和语义丰富的视觉表示的接地语言图像预训练(GLIP)模型。GLIP将目标检测和短语接地结合起来进行预训练。这种统一带来了两个好处:1)允许GLIP从检测和接地数据中学习,以改进任务并引导良好的接地模型;2) GLIP可以通过自训练方式生成接地框来利用大量图像-文本对,使学习到的表示语义丰富。在我们的实验中,我们在27M基础数据上预训练GLIP,包括3M人类注释和24M网络爬网图像-文本对。学习到的表示展示了对各种对象级识别任务的强zero-shot和few-shot迁移能力。1) 当直接在COCO和LVIS上评估时(在预训练没有看到COCO中的任何图像),GLIP分别达到49.8 AP和26.9 AP,超过了许多监督基线。2) 在COCO上微调后,GLIP在val上达到60.8 AP,在测试开发上达到61.5 AP,超过了之前的SoTA。3) 当迁移到13个下游目标检测任务时,one-shot GLIP可以与完全监督的Dynamic Head相匹敌。代码在此https URL上发布。
1、引言
视觉识别模型通常经过训练以预测一组固定的预先确定的对象类别,这限制了它们在现实应用中的可用性,因为需要额外的标记数据来概括新的视觉概念和领域。CLIP[45]表明,可以在大量原始图像-文本对上有效地学习图像级视觉表示。由于配对文本包含比任何预定义概念库更广泛的视觉概念集,因此预训练的CLIP模型语义丰富,可以在zero-shot设置下轻松迁移到下游图像分类和文本图像检索任务。然而,为了获得对图像的细粒度理解,正如许多任务所要求的那样,如目标检测[36,49]、分割[7,40]、人体姿势估计[54,63]、场景理解[16,30,64]、动作识别[20]、视觉语言理解[8,32–35,41,53,55,70,73],非常需要对象级视觉表示。
在本文中,我们证明了短语接地是一项识别句子中短语与图像中对象(或区域)之间细粒度对应关系的任务,是一项有效且可扩展的预训练任务,用于学习对象级、语言感知和语义丰富的视觉表示,并提出了接地语言图像预训练(GLIP)。我们的方法统一了短语接地和对象检测任务,因为对象检测可以被视为上下文无关的短语接地,而短语接地可以被视为上下文化的对象检测任务。我们强调我们的主要贡献如下。
通过将目标检测重新表述为短语接地来统一检测和接地。重新格式化改变了检测模型的输入:它不仅将图像作为输入,还将描述检测任务2中所有候选类别的文本提示作为输入。例如,COCO对象检测的文本提示[37]是一个由80个短语组成的文本字符串,即80个COCO对象类名,由“.”连接,如图2(左)所示。如图2(右图)所示,任何物体检测模型都可以通过用词-区域对齐分数(即区域(或框)视觉特征和标记(或短语)语言特征的点积)替换其框分类器中的物体分类逻辑来转换为基础模型。使用语言模型计算语言特征,该模型为新的检测(或接地)模型提供了双编码器结构。与仅在最后一个点积层融合视觉和语言的CLIP不同[45],我们表明,如图2(中间)所示,GLIP应用的深度跨模态融合对于学习高质量的语言感知视觉表示和实现优异的迁移学习性能至关重要。检测和接地的统一还允许我们使用这两种类型的数据进行预训练,这对两项任务都有好处。在检测方面,由于基础数据,视觉概念库显著丰富。在接地方面,检测数据引入了更多的边界框注释,并帮助训练新的SoTA短语接地模型。
使用大量图像文本数据放大视觉概念。给定一个良好的接地模型(教师),我们可以通过自动生成大量图像-文本配对数据的接地框来增加GLIP预训练数据,其中名词短语由非线性规划解析器检测[2]。因此,我们可以在27M基础数据上预训练(学生)GLIP大模型(GLIP-L),包括3M人类注释细粒度数据和24M网络爬网图像文本对。对于24M图像-文本对,有78.1M高置信度(>0.5)短语框伪注释,58.4M唯一名词短语。我们在图3中展示了生成框的两个真实示例。教师模型可以准确地定位一些可能比较难的概念,例如注射器、疫苗、美丽的加勒比海绿松石,甚至是抽象词(视图)。对这种语义丰富的数据进行训练,可以提供语义丰富的学生模型。相比之下,之前关于缩放检测数据的工作无法预测教师模型预定义词汇表之外的概念[77]。在这项研究中,我们表明,这种扩大接地数据的简单策略在经验上是有效的,大大改进了LVIS和13个下游检测任务,尤其是在罕见类别上(第4.2和5节)。当预训练的GLIPL模型在COCO上进行微调时,它在COCO 2017val上达到60.8 AP,在测试开发上达到61.5 AP,超过了当前公共SoTA模型[10,65],该模型以各种方法放大了目标检测数据。
基于GLIP的迁移学习:一种适用于所有人的模式。接地重构和语义丰富的预训练有助于领域迁移。GLIP可以迁移到各种任务中,几乎不需要额外的人工注释。当在COCO和LVIS数据集上直接评估GLIP-L模型时(在预训练期间没有看到COCO中的任何图像),它在COCO val2017和LVIS val上分别达到49.8和26.9 AP,超过了许多监督基线。当在13个现有的目标检测数据集上进行评估时,GLIP表现出出色的数据效率,这些场景包括细粒度物种检测、无人机视图检测和自中心检测,我们称之为“野外目标检测”(ODinW)(第5.1节)。例如,zero-shot GLIP-L优于在Objects365上预训练的10炮监督基线(Dynamic Head),而one-shot GLIP-L则与完全监督的Dynamic Head竞争。此外,当特定于任务的注释可用时,可以只调整特定于任务的提示嵌入,而不调整整个模型,同时保持模型参数不变。在这种快速调整设置(第5.2节)下,一个GLIP模型可以同时在所有下游任务上表现良好,从而减少微调和部署成本。
2、相关工作
标准物体检测系统经过训练,可以定位在群组标记数据集中预定义的一组固定物体类,例如COCO[37]、OpenImages(OI)[30]、Objects365[50]和Visual Genome(VG)[28],其中包含不超过2000个物体类。这种带人类注释的数据的扩展成本很高[59]。GLIP通过将目标检测重新表述为短语接地(字到区域匹配)问题,提出了一种价格合理的解决方案,从而能够使用接地和大量图像文本配对数据。虽然我们目前的实现是建立在Dynamic Head(DyHead)[10]的基础上,但我们的统一公式可以推广到任何对象检测系统[4、6、9、10、10、36、48、49、76]。
最近,有一种趋势是发展视觉和语言方法来解决视觉识别问题,其中视觉模型是在自由形式的语言监督下训练的。例如,CLIP[45]和ALIGN[21]在数亿或数亿个图像-文本对上执行跨模式对比学习,并可以直接执行Open词汇表图像分类。通过将CLIP/对齐模型中的知识提取到两级检测器中,提出了ViLD[14]来推进zero-shot 目标检测。或者,MDETR[23]在现有多模式数据集上训练端到端模型,这些数据集在文本短语和图像对象之间具有显式对齐。我们的GLIP继承了这一研究领域的语义丰富和语言感知特性,实现了SoTA对象检测性能,并显著提高了到下游检测任务的可迁移性。
本文主要研究用于目标检测的域迁移。目标是建立一个预训练的模型,以zero-shot或few-shot 的方式无缝地迁移到各种任务和领域。我们的设置不同于zero-shot 检测[1、12、14、46、47、68],其中一些类别被定义为不可见/罕见,并且不存在于训练集中。我们希望GLIP在稀有类别上表现良好(第4.2节),但我们没有明确将任何类别从训练集中排除,因为基础数据语义丰富,我们希望它们涵盖许多稀有类别。这类似于开放词汇表对象检测[68]中的设置,该设置期望原始图像文本数据涵盖许多罕见的类别。一系列工作将构建开放世界对象提议模块确定为关键挑战,该模块可以在测试时提出任何新对象[22、25、60、74、75];GLIP提供了一个新的视角:该模型不需要从开放集中提出所有可能的新对象;相反,它只需要提出文本提示中提到的对象,因为检测分支以提示为条件。
除了罕见类别的性能外,我们还考虑了现实场景中的迁移成本,即如何以最少的数据量、训练预算和部署成本实现最佳性能(第5节)。特别是,我们证明了GLIP支持即时调整[31],这与完全微调的性能相匹配,但只调整了一小部分模型参数。我们还提出了一个新的发现,在目标检测中,快速调整对于具有深度视觉语言融合(如GLIP)的模型最有效,而对于浅层融合模型的效果要差得多。这与最近研究仅针对浅层融合视觉语言模型(如CLIP[13,71,72])进行快速调谐的工作形成了对比。
3、接地语言形象预训练
从概念上讲,目标检测和短语接地有很大的相似性。它们都试图定位对象并将其与语义概念对齐。这种协同作用促使我们将经典的目标检测任务转化为一个基础问题,并提出一个统一的公式(第3.1节)。我们进一步提出在图像和文本之间添加深度融合,使检测模型具有语言意识,从而形成一个强大的基础模型(第3.2节)。通过重构和深度融合,我们可以在可扩展且语义丰富的基础数据上预训练GLIP(第3.3节)。
3.1统一公式
背景:目标检测。
典型的检测模型将输入图像馈送到视觉编码器EncI,以CNN[18,56]或Transformer[39,67,69]为主干,并提取区域/框特征O,如图2(底部)所示。每个区域/框特征被送入两个预测头,即框分类器C和框回归器R,分别用分类损失LCL和定位损失Lloc进行训练:
在两级检测器中,使用具有RPN损失Lrpn的独立区域建议网络(RPN)来区分前景和背景并细化锚定。由于Lrpn不使用对象类的语义信息,我们将其合并到定位损失Lloc中。在单级检测器中,定位损失Lloc也可能包含中心度损失[57]。
框分类器C通常是一个简单的线性层,分类损失LCL可以写成:
此处3,O∈ RN×d是输入图像的对象/区域/框特征,W∈ Rc×d是框分类器C、Scls的权重矩阵∈ RN×c是输出分类对数,T∈ {0,1}N×c是根据经典多对一匹配[9,36,48,49]或二部匈牙利匹配[4,10,76]计算的区域和类之间的目标匹配。损失(S;T)通常是两级探测器的交叉熵损失,以及一级探测器的Focal损失[36]。目标检测作为短语接地。我们没有将每个区域/框分类为c类,而是将检测重新表述为一个接地任务,通过在文本提示中将每个区域接地/对齐到c短语(见图2)。如何为检测任务设计文本提示?给定对象类[人,自行车,汽车,…,牙刷],一种简单的方法是
Prompt=“检测:人、自行车、汽车、…、牙刷”,
其中,每个类名都是一个待固定的候选短语。通过提供这些类的更具表现力的描述和/或利用预训练的语言模型的偏好,可以设计更好的提示。例如,当使用预训练的BERT模型[11]初始化我们的语言编码器EncL时,提示“person.bicycle.car…..toothbrush”比上述更人性化的提示效果更好。我们将在第5.2节中讨论即时设计。
在接地模型中,我们计算提示中图像区域和文字之间的对齐分数Sground:
其中P∈ RM×d是来自语言编码器的上下文单词/标记特征,其作用类似于(2)中的权重矩阵W,如图2(右)所示。接地模型由图像编码器EncI和语言编码器EncL组成,通过最小化(1)&(2)中定义的损失来进行端到端训练,用(3)中的区域词对齐分数Sground简单替换(2)中的分类logits scl。
然而,在(2)中,我们现在有了logits Sground∈ RN×M和目标T∈ {0,1}N×c。由于以下四个原因,(子)单词标记M的数量总是大于文本提示中短语c的数量:1)一些短语包含多个单词,例如,“红绿灯”;2) 一些单词短语被分成多个(子)词标记,例如,“牙刷”到“牙齿”和“刷子”;3) 一些是添加的token,例如“Detect:”、“、”、语言模型中的特殊token,以及4)在标记化序列的末尾添加[NoObj]token。当损失为(Focal)二元sigmoid损失(我们在第4节和第5节中使用的损失)时,我们展开原始目标矩阵T∈ {0,1}N×c到T0∈ {0,1}N×M,如果一个短语是正匹配,并且所有添加的标记与所有图像特征负匹配,则使所有子词正匹配。通过此更改,损失(Sground;T0)保持不变。在推理过程中,我们将token概率平均为短语概率。4.
检测和接地之间的等效性。
通过上述重新表述,我们可以将任何检测模型转换为接地模型,并且检测和接地这两个视图在理论上对于训练和推理都是等效的。我们还从经验上验证了这一点:具有Swin微型主干的SoTA DyHead检测器[10]在我们重新计算之前和之后的COCO val2017上具有相同的性能。请参阅附录进行讨论。借助于语言编码器的自由形式输入,经过预训练的短语接地模型可以直接应用于任何目标检测任务。这使得以zero-shot方式将我们的GLIP模型迁移到任意检测任务成为可能。
相关工作。
我们的接地公式受到MDETR[23]的启发,我们的接地损失与MDETR的细粒度对比损失具有相同的精神。我们比MDETR更进一步,找到了一种有效的方法将检测重新表示为接地,并为检测和接地任务找到了一个简单的统一损失。我们的接地模型也类似于zero-shot 检测模型[1,14,46,47,75]。Bansal等人[1]的开创性工作使检测模型能够通过使用预训练的手套词嵌入[43]作为短语特征进行zero-shot 检测∈ Rc×d,如果以(3)的形式书写。最近,从预训练的深度语言模型中提取的短语特征被引入开放词汇检测[68]。GLIP与zero-shot 检测的不同之处在于,GLIP提供了检测和接地的统一视图,并实现了两个关键要素,即语言感知深度融合和与图像文本数据的放大,下文将对此进行描述。
3.2语言感知深度融合
在(3)中,图像和文本由单独的编码器编码,并且仅在最后融合以计算对齐分数。我们称这种模型为后期融合模型。在视觉语言文献[8、23、32、33、35、41、53、55、73]中,视觉和语言特征的深度融合对于学习表演短语基础模型是必要的。我们介绍了图像和语言编码器之间的深度融合,它在最后几个编码层中融合了图像和文本信息,如图2(中间)所示。具体来说,当我们使用DyHead[10]作为图像编码器,BERT[11]作为文本编码器时,深度融合编码器是:
其中L是DyHead[10]中DYHEADMODULS的数量,BERTLayer是在预训练的BERT上新添加的BERT层,O0表示来自视觉主干的视觉特征,P0表示来自语言主干(BERT)的token特征。跨通道通信由跨通道多头注意力模块(X-MHA)(4)实现,然后是单通道融合,并在(5)&(6)中更新。在不添加上下文向量的情况下(Oi t2i用于视觉模态,Pi i2t用于语言模态),该模型简化为一个后期融合模型。
在跨通道多头注意力模块(XMHA)(4)中,每个头部通过关注另一个通道来计算一个通道的上下文向量:
其中{W(符号,I),W(符号,L):符号∈ {q,v,out}}是可训练的参数,分别与多头自注意力中的查询、值和输出线性层的作用相似[58]。
深度融合编码器(4)-(6)具有两个优点。1) 它提高了相位接地性能。2) 它使学习到的视觉特征具有语言意识,因此模型的预测取决于文本提示。这对于实现一个模型服务于所有下游检测任务的目标至关重要(如第5.2节所示)。
3.3使用可扩展的语义丰富数据进行预训练
为了收集语义丰富、数量庞大的检测数据,人们付出了大量的努力。然而,人类注释被证明是昂贵且有限的[15,30]。之前的工作旨在以自训练的方式扩大规模[77]。他们使用教师(预训练的检测器)从原始图像中预测框子,并生成伪检测标签来训练学生模型。但生成的数据在概念库的大小方面仍然有限,因为教师只能预测在现有数据集上构建的概念库中定义的标签。相比之下,我们的模型可以在检测和更重要的是接地数据方面进行训练。我们表明,基础数据可以提供丰富的语义来促进本地化,并且可以以自训练的方式进行扩展。
首先,与现有检测数据相比,黄金接地数据涵盖了更大的视觉概念词汇表。扩大检测词汇量的最大尝试仍然不超过2000个类别[15,28]。通过基础数据,我们扩展了词汇表,几乎涵盖了基础字幕中出现的任何概念。例如,Flickr30K[44]包含44518个独特短语,而VG字幕[28]包含110689个独特短语,数量级比检测数据的词汇表大。我们在第4.4节中提供了一项实证研究,表明0.8M黄金接地数据比额外的2M检测数据在检测稀有类别方面带来了更大的改进。
此外,我们没有放大检测数据,而是展示了一种有希望获得语义丰富数据的方法:放大接地数据。我们使用一种受自训练启发的简单方法。我们首先用gold(人类注释)检测和接地数据预训练教师GLIP。然后,我们使用该教师模型预测网络收集的图像文本数据的方框,并通过非线性规划解析器检测名词短语[2]。最后,使用gold数据和生成的伪接地数据训练学生模型。如图3所示,教师能够为语义丰富的实体生成准确的方框。
为什么学生模式可能优于教师模式?虽然自训练文献[77]中的讨论仍很活跃,但在视觉基础的背景下,我们假设教师模型正在利用语言语境和语言泛化能力来准确地将其可能固有不知道的概念基础化。例如,在图3中,教师可能无法直接识别某些概念,如疫苗和绿松石,如果它们不存在于gold数据中。然而,丰富的语言语境(如句法结构)可以为教师模型进行“有教育的猜测”提供强有力的指导。如果模型能够定位小的疫苗,则可以定位疫苗;如果能找到加勒比海,它可以定位绿松石。当我们训练学生模型时,教师模型的“教育猜测”成为“监督信号”,使学生模型能够学习疫苗和绿松石的概念。
4.迁移到既定基准
经过预训练后,GLIP可以轻松地应用于接地和检测任务。我们在三个已建立的基准上显示了强大的直接域迁移性能:1)MS-COCO对象检测(COCO)[37],包含80个常见对象类别;2) LVIS[15]涵盖1000多个对象类别;3) Flickr30K[44],用于短语接地。我们训练了5种GLIP变体(表1)来烧蚀其三个核心技术:1)统一接地损失;2) 语言感知深度融合;3) 以及使用这两种类型的数据进行预训练。实施细节见附录。
GLIP-T(A)基于SoTA检测模型,即Dynamic Head[10],我们的字区域对齐损失取代了分类损失。它基于Swin微型主干,在O365(Objects365[50])上预训练,其中包含0.66M图像和365个类别。如第3.1节所述,该模型可以被视为一个强大的经典zero-shot 检测模型[1],完全依赖于语言编码器来概括新概念。
GLIP-T(B)通过语言感知深度融合增强,但仅在O365上预训练。
GLIP-T(C)在1)O365和2)GoldG上预训练,这是MDETR[23]策划的0.8M人类注释黄金接地数据,包括Flickr30K、VG Caption[28]和GQA[19]。我们已经从数据集中删除了COCO图像。旨在验证黄金接地数据的有效性
GLIP-T基于Swin微型主干网,并基于以下数据进行预训练:1)O365,2)GLIP-T(C)中的GoldG,以及3)Cap4M,4M图像-文本对,从网络收集,带有GLIP-T(C)生成的框。我们还对现有的图像字幕数据集进行了实验:CC(具有3M数据的概念字幕)[51]和SBU(具有1M数据)[42]。我们发现CC+SBU GLIP-T在COCO上的性能略优于Cap4M GLIP-T,但在其他数据集上稍差。为了简单起见,我们在COCO上报告了这两个版本,但在其他任务中只报告了Cap4M模型。
我们在附录中给出了完整的结果。
GLIP-L基于Swin Large,并使用以下数据进行训练:1)FourODs(2.66M数据),4个检测数据集,包括Objects365、OpenImages[27]、视觉基因组(不包括COCO图像)[28]和ImageNetBoxes[29];2) GLIP-T(C)中的GoldG;和3)CC12M+SBU,24M图像文本数据从网络上收集并生成框。
4.1.COCO的zero-shot和监督迁移
我们在MS-COCO上进行了实验,以评估模型向常见类别的迁移能力。我们在两种设置下进行评估:1)zero-shot 域迁移和2)监督迁移,其中我们使用标准设置微调预训练模型。对于微调设置,我们还测试了GLIP-L模型的性能,其中我们将COCO图像包括在预训练数据中(最后一行)。具体来说,我们在预训练数据中添加了完整的GoldG+grounding数据和COCO train2017。请注意,COCO 2017val的部分图像显示在GoldG+[23]中。因此,我们只报告该模型的测试开发性能。更多详情请参见附录。
我们引入了一个额外的基线:DyHead在Objects365上预训练。我们发现Objects365中完全覆盖了COCO 80类别。因此,我们可以以“zero-shot ”方式评估在Objects365上训练的DyHead:在推理过程中,我们限制模型仅从COCO 80类进行预测,而不是从365类进行预测。我们列出了标准COCO检测模型供参考。我们还列出了使用额外数据预训练的两个最先进的模型。
结果如表2所示。总的来说,GLIP模型实现了强大的zero-shot和监督性能。zero-shot GLIP模型可与成熟的监督模型匹敌或超越。最佳的GLIP-T达到46.7 AP,超过更快的RCNN;GLIP-L达到49.8 AP,超过DyHead-T。在监督设置下,最佳GLIP-T比标准DyHead(55.2 v.s.49.7)提高5.5 AP。GLIP-L有着庞大的Swin主干,在COCO上超过了当前的SoTA,在2017val上达到60.8,在测试开发上达到61.5,without some bells and whistles in prior SoTA [65] such as model EMA, mixup, label smoothing, or soft-NMS.
我们分析了GLIP的zero-shot性能,发现了三个影响因素:Objects365和COCO之间的紧密域重叠、深度融合和接地数据。由于Objects365涵盖COCO中的所有类别,O365预训练的DyHead-T表现出强大的性能,达到43.6zero-shot AP;将该模型重新表述为接地模型,我们观察到性能略有下降(GLIP-T(a));添加深度融合可通过2 AP(GLIP-T(B))提高性能;最大的贡献者是gold grounding数据,其中GLIP-T(C)达到46.7的zero-shotAP。虽然添加图像文本数据对COCO(GLIP-T v.s.GLIP-T(C))略有改善或没有改善,但正如我们在LVIS实验中所示,我们发现它在推广到罕见类方面至关重要。
4.2.LVIS上的zero-shot 迁移
我们评估了该模型在zero-shot设置下在LVIS上识别多样和罕见物体的能力。我们报告了MiniVal,其中包含MDETR中引入的5000幅图像,以及完整的验证集v1.0。请参阅附录中的评估详细信息。
结果如表3所示。我们列出了三个在LVIS注释数据上训练的监督模型。GLIP在所有类别上都表现出强大的zero-shot 性能。GLIP-T与监督MDETR相当,而GLIPL则大大优于监督RFS。
使用接地数据的好处显而易见。Gold Ground数据比MiniVal APr(型号C v.s.型号B)提高了4.2个点。添加图像文本数据将性能进一步提高3.1个百分点。我们得出结论,基础数据的语义丰富性显著帮助模型识别稀有对象。
4.3.Flickr30K实体上的短语基础
我们评估了该模型在Flickr30K实体上以自然语言固定实体的能力[44]。Flickr30K包含在gold grounding数据中,因此我们在预训练后直接评估模型,如MDETR[23]所示。我们使用MDETR中指定的任意框协议。结果如表4所示。我们使用不同的预训练数据评估了三种版本的GLIP。我们列出了SoTA接地模型MDETR的性能。MDETR在GoldG+上训练,包含130万个数据(GoldG是GoldG+的子集,不包括COCO图像)。具有GoldG的GLIP-T(第3行)实现了与具有GoldG+的MDETR相似的性能,这可能是由于引入了Swin Transformer、DyHead模块和深度融合。更有趣的是,添加检测数据有助于接地(第4行v.s.3),再次显示了两个任务之间的协同作用和我们的统一损失的有效性。图像文本数据也有帮助(第5行v.s.4)。最后,放大(GLIP-L)可以达到87.1Recall@1,优于之前的SoTA 2.8个百分点。
4.4分析
在本节中,我们通过在不同数据源上预训练GLIP-T进行消融研究(表5)。我们回答了两个研究问题。首先,我们的方法假设使用检测数据集来引导模型。一个自然的问题是,当与不同的检测数据配对时,接地数据是否会带来改善。我们发现,添加接地数据会带来与不同检测数据(第1-6行)一致的改善。
其次,我们已经证明了接地数据对于常见和罕见类别的有效性。一个正交方向是通过包含更多图像和类别来放大检测数据(第3.3节)。我们打算在放大检测数据和接地数据之间进行实证比较。我们提出了使用4个公共检测数据集(第8行)训练的GLIP,作为使用人类注释扩展检测数据的极端尝试。该模型使用总计2.66M的检测数据进行训练,具有1500多个类别的对齐词汇表。然而,它仍然落后于LVIS的COCO和APr上的第6行,其中第6行仅使用0.66M检测数据和0.8M黄金接地数据进行训练。添加图像文本数据进一步扩大了LVIS APr的差距(20.8比15.0)。我们得出结论,接地数据确实语义更丰富,是扩大检测数据的一种有希望的替代方法。
5、野外目标检测
为了评估GLIP对各种现实任务的可迁移性,我们策划了一个“野外目标检测”(ODinW)设置。我们在Roboflow5上选择了13个公共数据集,每个数据集都需要不同的本地化技能。许多数据集的设计具有特定的应用目的,以模拟真实部署场景。例如,EgoHands需要定位一个人的手;坑洞涉及检测道路上的坑洞;ThermalDogsandPeople涉及在红外图像中识别狗和人。详情请参阅附录。
我们证明了GLIP有助于迁移到如此多样的任务。(1) GLIP带来了极大的数据效率,与基线相比,任务特定数据显著减少,达到了相同的性能(第5.1节)。(2) GLIP支持新的域迁移策略:当适应新任务时,我们可以简单地更改文本提示,并保持整个基础模型不变。这大大降低了部署成本,因为它允许一个集中式模型服务于各种下游任务(第5.2节)。
5.1数据效率
我们改变了任务特定注释数据的数量,从zero-shot(未提供数据)到X快照(每个类别至少提供X个示例[24、62、66]),再到使用训练集中的所有数据。我们根据提供的数据微调模型,并对所有模型使用相同的超参数。每个数据集都带有预先指定的类别名称。由于GLIP具有语言意识,我们发现用更具描述性的语言重新编写一些预先指定的名称是有益的(有关讨论,请参阅第5.2节)。我们将其与在Objects365上预训练的SoTA检测器DyHead-T进行了比较。我们使用标准COCO训练的DyHead-T进行了测试,发现其具有类似的性能。为简单起见,我们仅报告前者。我们还试验了比例余弦相似性方法[61],但发现其性能略低于普通方法,因此我们仅报告后者。有关完整的统计信息,请参阅附录,包括X-shot实验的三次独立运行。
结果如图4所示。我们发现,统一的接地重建、深度融合、接地数据和模型放大都有助于提高数据效率(从底部红线(Dyhead-T)到上部紫线(GLIP-L))。因此,GLIP具有变革性的数据效率。zero-shot GLIP-T优于5炮DyHead-T,而一炮GLIP-L与完全监督的DyHead-T竞争。
我们在图5中进一步绘制了5个不同数据集上GLIP变体的zero-shot性能。我们发现,引入接地数据可以显著改善某些测试新概念的任务,例如,在坑洞和EgoHands上,没有接地数据的模型(A和B)表现糟糕,而有接地数据的模型(C)表现轻松。
5.2.一个模型适用于所有任务
随着神经模型变得越来越大,如何降低部署成本吸引了越来越多的研究兴趣。最近在语言模型[52]、图像分类[72]和目标检测[61]方面的工作探索了将预训练模型适应新领域,但只改变最少的参数。这种设置通常表示为线性探测[26]、快速调谐[72]或高效任务适配器[13]。目标是使单个模型服务于各种任务,每个任务仅向预训练的模型添加少数任务特定的参数或不添加参数。这降低了训练和存储成本。在本节中,我们根据部署效率指标评估模型。
手动提示调谐。
由于GLIP执行语言感知定位,即GLIP的输出在很大程度上取决于语言输入,我们提出了一种有效的方式让GLIP进行任务迁移:对于任何新的类别,用户可以在文本提示中使用表达性描述,添加属性或语言上下文,以注入领域知识并帮助GLIP迁移。例如,在图6的左侧,模型无法定位新实体“黄貂鱼”的所有位置。然而,通过向提示中添加属性,即“扁平和圆形”,该模型成功地定位了所有出现的stringrays。通过这个简单的提示更改,我们将stingray上的AP50从4.6提高到9.7。这类似于GPT-3[3]中的提示设计技术,并且实际上很吸引人,因为它不需要注释数据或模型重新训练。有关更多详细信息,请参阅附录。
快速调谐。
我们进一步考虑可以访问特定于任务的训练数据,但希望调整最少的参数以便于部署的设置。对于经典检测模型,王等人[61]报告了“线性探测”的有效性(即仅训练框回归和分类头)。GLIP也可以是“线性探测”,我们只微调区域和提示嵌入之间的框头和投影层。由于语言感知深度融合,GLIP支持更强大但仍然有效的迁移策略:即时调优[31,52]。对于GLIP,由于每个检测任务只有一个语言提示(例如,对于凹坑的提示可以是“检测凹坑”。对于所有图像,我们首先从语言主干中获得提示嵌入P0,然后丢弃语言主干,只微调P0作为任务特定的输入(第3.2节)。
我们评估了模型在三种设置下的性能(图7):线性探测、快速调整(仅适用于GLIP)和全模型调整。对于DyHeadT,由于传统的目标检测模型无法接受语言输入,因此不适用快速调谐;线性探测和全模型调谐之间的差距很大。GLIP-T(A)没有语言感知深度融合;因此,快速调整和线性调整实现了类似的性能,并且显著落后于全模型调整。然而,对于GLIP-T和GLIP-L,快速调谐几乎与完全调谐结果相匹配,而不改变任何接地模型参数。有趣的是,随着模型和数据大小的增大,全模型调整和快速调整之间的差距变小(GLIP-L v.s.GLIP-T),这与自然语言处理文献[38]中的发现相呼应。
6、结论
GLIP将对象检测和短语基础任务相结合,以学习对象级、语言感知和语义丰富的视觉表示。经过预训练后,GLIP在已建立的基准和13个下游任务的zero-shot 和微调设置方面显示出了良好的结果。我们将详细研究GLIP如何随文本图像数据大小进行缩放,以供将来研究。
确认
我们感谢匿名评论者的评论和建议。我们感谢戴、刘子成、陈一玲对本项目的帮助。根据合作协议N66001-19-2-4032,LL和KC部分得到DARPA MCS项目的支持。
附录
本附录组织如下。
•在A节中,我们在概念题注12M数据集[5]上提供了模型基础预测的更多可视化。
•在B节(参考第3.1节)中,我们讨论了检测和接地之间的等效性。
•在C.1节(第4节中提及)中,我们介绍了第4节中使用的模型的预训练详细信息。
•在第C.2节(参见第4节)中,我们介绍了COCO、LVIS和Flickr30K实验的评估细节。
•在第C.3节(由第4节引用)中,我们讨论了公共图像文本数据(谷歌概念字幕,SBU)与我们收集的图像文本数据之间的差异。
•在D节中,我们详细分析了语言感知深度融合的计算成本和性能影响。
•在E.1节(第5节)中,我们介绍了野外目标检测(ODinW)中的13个数据集。
•在第E.2节(参考第5节)中,我们详细介绍了手动提示设计。
•在第E.3节(参考第5.1节)中,我们给出了数据效率实验的细节。
•在第E.4节(参考第5.3节)中,我们给出了线性探测和快速调谐实验的详细信息。
•在E.5节中,我们展示了第5节中所有实验的每个数据集结果。
A、 可视化
我们提供了更多来自教师模型的预测可视化。即使给定噪声图像-文本对,我们的模型仍然能够准确地定位语义丰富的短语。
B、 检测与接地等效性探讨
在本文的第3.1节中,我们讨论了检测和接地之间的等效性。我们用实证实验证实了这一讨论。
当所有对象类别都适合单个提示时。
我们首先确认,当所有类别都适合一个提示时,我们的接地公式等价于经典的目标检测。我们在COCO[37]上进行了实验。我们首先选择基于Swin微型 Transformer主干[39]的SoTA检测模型Dynamic Head(DyHead)[10]作为基本对象检测模式。然后,我们将此模型转换为接地模型,如第3.1节所述:我们将80个带有“.”的类名连接到一个提示中,并用接地损失替换DyHead的分类损失。我们使用BERT(base uncased)[11]对文本提示进行编码。连接类名时,我们遵循固定顺序。
我们使用与[10]中完全相同的超参数训练这两个模型:我们使用标准2x训练配置进行训练[17]。我们的训练批量为32,学习率为1×10−4(对于具有接地重构的模型,我们使用1×10−5用于BERT文本编码器)。我们将学习率衰减为总训练步骤的67%和89%。
这两个模型在COCO 2017val上实现了相同的性能:49.4 AP。他们的结果接近Dai等人[10]表6最后一行中报告的49.7(微小差异可能是由于实现差异)。因此,我们得出结论,当所有类别都可以纳入单个提示时,接地和检测任务是等效的。
当并非所有对象类别都可以放入单个提示时。
提示的文本编码器对输入句子长度有限制。例如,BERT只能对最多包含512个标记的句子进行编码。在我们的实现中,为了减少计算成本,我们将输入长度限制为256。因此,对于具有较大词汇表的某些数据集(例如,Objects365[50]有365个对象类别),我们无法将所有类别名称放入一个提示中。作为一种实用的解决方案,我们可以在训练时间和推理时间将类别名称分割为多个提示。我们发现这会导致性能轻微下降。例如,在主要论文的表2中,在Objects365上预训练的DyHead-T在COCOzero-shot 上达到43.6,而GLIP-T(A)(DyHead的接地重构模型)在COCO上达到42.9。
C、 迁移到既定基准
我们介绍了第4节中使用的模型的实现细节,并讨论了公共图像文本数据和我们爬行的数据之间的差异。
C、 1、预训练细节
在第4节中,我们介绍了GLIP-T(A)、GLIP-T(B)、GLIP-T(C)、GLIP-T和GLIP-L。我们将在下面介绍实现细节。我们预训练了基于32个GPU和64个批量大小的Swin小模型的模型,以及基于64个GPU和64个批量大小的Swin大模型。我们使用1×10的基本学习率−5为语言主干,1×10−4适用于所有其他参数。在总训练步骤的67%和89%时,学习率下降了0.1倍。当COCO上的zero-shot性能饱和时,我们衰减学习速率。所有型号的最大输入长度为256个token。
检测数据提示设计。
如B节所述,当我们对Objects365等数据集进行预训练时,我们无法将所有类别都放入一个提示中。在预训练期间,我们随机对类别进行下采样,并在提示中仅保留下采样的类别。我们在提示中随机洗牌类别的顺序。
对于每个训练示例,动态随机进行下采样,并用作数据扩充。具体来说,例如,我们将图像中出现的正类表示为CPO,其余负类表示为Cneg。我们总是保留所有的CPO。以0.5的概率,我们从Cneg抽样,直到我们在提示中有85个类别;概率为0.5时,我们从[1,85]中均匀选择一个整数N− |Cpos |]并在提示中输入N个类别。
使用生成的框扩充图像文本数据。
当我们使用生成的框对图像文本数据进行预训练时,我们发现这有利于增加难度。我们将一些负面字幕(来自其他示例,与图像不匹配)与正面字幕(与图像匹配)混合,以形成更长的文本输入。该模型经过训练以预测方框,并将其与正面字幕中的正确短语对齐。该模型需要首先在几个潜在字幕中识别肯定字幕,然后将方框与肯定字幕中的正确短语对齐。这使得基础任务更具挑战性,并帮助模型在预训练期间学习语义表示。这种增强也是动态随机完成的。对于每个训练示例,我们以0.3的概率进行此类增强,并在19个负字幕中进行混合;概率为0.3时,我们混合了一个随机数(在1-19之间均匀绘制)的负字幕;在剩下的时间里,我们不会进行这种扩充。
C、 2、评估细节
对于COCO的微调,我们使用1×10的基本学习率−5适用于预训练模型。
对于LVIS的zero-shot 评估,由于LVIS有1000多个类别,它们不能适合一个文本提示,我们将它们分割成多个块,将40个类别适合一个提示,并使用不同的提示多次查询模型。我们发现,在预训练过程中,模型往往过度拟合LVIS,因此我们监控所有模型在minival上的性能,并使用最佳检查点报告结果。
对于Flickr30K上的zero-shot评估,模型在预训练过程中也可能过度拟合,因此我们监控所有模型在验证集上的性能,并使用最佳检查点报告结果。
C、 3、公共数据与网络绘制数据的区别
如第4节所述,对于使用图像文本数据预训练的GLIP-T,我们训练了两个版本,一个使用公共数据(CC3M,SBU),另一个使用我们爬行的数据(Cap4M)。在这里,我们在表6中对两种模型进行了比较。
这两种型号仅略有不同,在LVIS上Cap4M版本更好,而在COCO上CC3M+SBU版本更好。我们推测,这可能是因为公共数据经过更广泛的筛选,包含更常见的类别和更少罕见的概念。因此,它在COCO上表现稍好,而在LVIS上表现稍差。
D、 深度融合的计算成本和性能分析
在本节中,我们将更详细地介绍第3节中提出的语言感知深度融合的计算成本和性能影响。
D、 1、计算成本
我们测试了GLIP-T和GLIP-L的语言感知深度融合的额外计算成本。对于推理,我们在批处理大小为1的P100 GPU上进行测试。注意,对于不进行深度融合的GLIP推理,我们可以缓存提示的语言嵌入;因此,没有深度融合的GLIP的推理时间相当于DyHead[10]。
对于训练,我们在具有16个V100 GPU的标准DGX-2机器上进行测试(我们在多GPU设置下进行测试,因为它模拟了实际的训练环境):对于GLIP-T模型,我们每批使用2个图像,对于GLIP-L模型,我们每批使用1个图像。由于融合模块涉及大量输入元素的多头注意力,我们为深度融合模块启用梯度检查点6,这增加了训练时间,但减少了GPU内存消耗。
表7显示,语言感知深度融合带来的额外计算成本总体不到1倍。
D、 2、性能
我们分析了当使用不同类型的预训练数据时,语言感知深度融合的效果。我们预训练了GLIP-T的四种变体,结果如表8所示。深度融合有助于测试1)常见类别(即COCO);2) 固定任务(即Flickr30K),以及3)低资源迁移到现实世界的下游任务(即ODinW)。
然而,在LVIS上,深度融合的影响似乎不清楚:当仅使用检测数据时,深度融合似乎会降低性能(第1行与第2行);当存在接地数据时,深度融合会降低常见类别的性能,但会提高罕见类别的性能。我们的假设是,当GLIP仅使用检测数据(例如,O365)进行训练时,语言模型可能“过度拟合”到O365中的类别,并且不能很好地推广到新类别(即,分布外文本表示的输出)。深度融合可能会“放大”这种过度匹配,因为视觉表现取决于语言模型。因此,当在包含新类别(例如LVI)的提示上测试时,深度融合可能会降低性能。当使用接地数据时,可以缓解这种过度配合。
E、 野外目标检测
在本节中,我们将为第5节中的实验提供详细信息和附加结果。
E、 1、数据集详细信息
我们使用Roboflow 7中的13个数据集。Roboflow拥有30多个数据集,我们排除了太具挑战性(例如,检测不同种类的棋子)或没有特定领域知识(例如,理解手语)无法解决的数据集。
我们在表9中提供了我们使用的13个数据集的详细信息。我们将PASCAL V0C 2012数据集作为参考数据集,因为已经在此数据集上建立了公共基线。对于PascalVOC,我们遵循约定并报告验证集。对于手枪,没有官方的验证或测试集,所以我们自己分割数据集。
E、 2、手动提示调谐
如第5节所述,我们发现手动设计一些提示以提供语言指导是有益的。我们提供了表10中使用的提示。我们为6个数据集设计了提示。由于一些提示是句子,我们仅将这些提示应用于使用基础数据(GLIP-T(C)、GLIP-T和GLIP-L)训练的模型。对于GLIP-T(A)和GLIP-T(B),我们发现对兔子和蘑菇数据集使用提示是有益的,因为提示只有单个单词或短短语。总的来说,使用提示可以在不进行任何模型重新训练的情况下提高AP(例如,对于EgoHands,AP从22.1提高到50.0)。
E、 3、数据效率
我们在第5.1节中提供了实验的详细信息。我们的训练批量为4,学习率为1×10−4(对于具有接地重构的模型,我们使用1×10−对于BERT文本编码器),权重衰减为0.05。我们没有发现增加批量大小可以显著提高性能。出于计算原因,我们使用4的批处理大小。按照惯例,我们在微调期间冻结主干的底部2层。我们监控验证性能,并在验证性能稳定时将学习率降低0.1。在X-shot设置中,我们对数据集进行随机采样,使每个类别至少有X个示例[24]。我们改变随机种子(从而改变采样数据),并为每个X-shot实验进行3次独立运行。我们提供了两种DyHead-T变体作为基线,一种在COCO上训练,另一种在Objects365上训练。我们在表14中报告了完整的zero-shot 结果,在表11中报告了少量炮结果。
E、 4、一个模型适用于所有任务
在第5.2节中,我们就部署效率进行了实验:调整最少的参数以获得最佳性能。对于所有模型,我们使用线性探测设置进行实验;对于GLIP模型,我们还实验了即时调优设置。对于线性探测,我们尝试了普通方法(简单地调整分类和定位头)和余弦尺度方法[61]。下面我们提供了实施细节。
对于普通线性探测,我们以1×10的学习率进行训练−4,批量大小为4,权重衰减为0.05。对于使用余弦标度的线性探测,我们根据王等人[61]的建议使用20.0的标度,学习率为0.01,批量大小为4,权重衰减为0.05。为了快速调整,我们以学习率为0.05,批量大小为4,权重衰减为0.25进行训练。我们已对超参数进行了初步搜索。
结果见表12(线性探测)和表13(快速调谐)。将其与完整调优结果(表11)进行比较,我们发现GLIP的即时调优性能具有竞争力,显示了部署效率。与王等人[61]报告的线性探测可以为经典检测模型提供具有竞争力的性能相反,我们发现线性探测与完全调谐相比效果不佳。我们发现,原因可能是我们案例中的迁移数据集(ODinW)包含许多新任务和域,而王等人的实验侧重于迁移到公共域(例如,PascalVOC和COCO)。在表15中,我们报告了每个数据集的性能。我们发现,对于一些常见任务或领域(例如,PascalVOC和车辆),DyHead-COCO的线性探测具有完全微调的竞争力,但对于一些新领域的其他任务(例如,AerialDrone),差距很大。
E、 5、所有结果
我们在表14、表15和表16(下一页)中报告了在0、1、3、5、10次和完整数据以及线性探测、即时调优和完整模型调优下的每个数据集性能。