Simple Open-Vocabulary Object Detection with Vision Transformers
May 2022
ECCV 2022
Matthias Minderer*, Alexey Gritsenko*, Austin Stone, Maxim Neumann, Dirk Weissenborn, Alexey Dosovitskiy, Aravindh Mahendran, Anurag Arnab, Mostafa Dehghani, Zhuoran Shen, Xiao Wang, Xiaohua Zhai, Thomas Kipf, Neil Houlsby (* Equal contribution)
[Google Research]
https://arxiv.org/abs/2205.06230
https://github.com/google-research/scenic/tree/main/scenic/projects/owl_vit
摘要:将简单的架构与大规模的预训练相结合,导致了图像分类的巨大改进。对于对象检测,预训练和缩放方法没有建立得很好,特别是在长尾和开放词汇设置中,其中训练数据相对较少。在本文中,我们提出了一种将图像文本模型迁移到开放词汇对象检测的强大方法。我们使用最小修改的标准Vision Transformer架构、对比图像文本预训练和端到端检测微调。我们对该设置的缩放益处的分析表明,增加图像级别预训练和模型大小可以持续改进下游检测任务。我们提供了在零样本文本条件和单样本图像条件对象检测上获得非常强的性能所需的自适应策略和正则化。GitHub上提供了代码和模型。
1 引言
目标检测是计算机视觉中的一项基本任务。直到最近,检测模型通常仅限于一组小的固定语义类别,因为使用大的或开放的标签空间获取本地化的训练数据成本高昂且耗时。随着强大的语言编码器和对比图像文本训练的发展,这一点发生了变化。这些模型从松散对齐的图像-文本对中学习图像和文本的共享表示,这在网络上大量可用。通过利用大量图像文本数据,对比训练在零样本分类性能和其他基于语言的任务方面取得了重大改进[33,19,44]。
最近的许多工作旨在将这些模型的语言能力迁移到对象检测[12,26,45,46,20]。例如,这些方法使用了针对图像裁剪嵌入的蒸馏[12]、图像级别标签的弱监督[46]或自训练[26,45]。在这里,我们提供了一种简单的架构和端到端的训练方法,即使在训练过程中看不到的类别上,也可以在没有这些方法的情况下实现强大的开放词汇检测。
我们从Vision Transformer架构开始[22],该架构已被证明是高度可扩展的,并在大型图像文本数据集上对其进行对比预训练[44,19]。为了将模型迁移到检测,我们做了一组最小的更改:我们删除了最终的令牌池层,而是为每个Transformer输出令牌附加了一个轻量级的分类和边框头。通过用从文本模型[2](图1)获得的类名嵌入替换固定的分类层权重,可以实现开放词汇分类。我们使用二分匹配损失对标准检测数据集上的预训练模型进行微调[6]。图像和文本模型都进行了端到端的微调。
我们分析了该方法的缩放益处,发现增加模型大小和预训练持续时间将继续提高检测性能,超过200亿图像-文本对。这一点很重要,因为与检测数据相比,图像文本对是丰富的,并且允许进一步缩放。
我们模型的一个关键特征是它的简单性和模块性。由于我们模型的图像和文本组件没有融合,所以我们的模型对查询表示的来源是不可知的。因此,我们可以不经修改地使用我们的模型作为单样本检测学习器,只需使用图像衍生嵌入对其进行查询。单样本对象检测是仅基于显示对象的查询图像块来检测新对象的挑战性问题[16,4,31]。图像条件one-shot功能是文本条件检测的一个强大扩展,因为它允许检测难以通过文本描述的对象(但很容易在图像中捕捉),例如专门的技术部件。尽管使用了一种非专门针对该问题的通用体系结构,但我们将对隐形COCO类别(在训练期间进行)的一次性检测的技术水平从26.0提高到41.8 AP50,提高了72%。
对于开放词汇文本条件检测,我们的模型在LVIS数据集上实现了34.6%的总体AP和31.2%的不可见类AP。
总之,我们做出了以下贡献:
1.一种将图像级预训练迁移到开放词汇表对象检测的简单而强大的方法。
2.现有技术的one-shot(图像条件)检测,大幅度提高。
3.详细的缩放和消融研究,以证明我们的设计合理。
我们相信,我们的模型将作为一个强大的基线,可以在各种框架中轻松实现,并为未来研究需要开放词汇本地化的任务提供一个灵活的起点。我们将我们的方法称为开放世界本地化的Vision Transformer,简称OWL ViT
![](https://img.haomeiwen.com/i13727053/58f778e31835ca82.png)
![](https://img.haomeiwen.com/i13727053/532eb118a6b16808.png)
2 相关工作
对比视觉语言预训练。 长期以来,将图像和文本嵌入共享空间的想法一直被用于实现“零样本”泛化[10,36,40]。由于对比损失和更好的架构方面的创新,最近的模型可以从网络衍生的图像和文本对中学习一致的视觉和语言表示,而不需要明确的人类注释。这大大增加了可用的训练数据,并导致了零样本分类基准的大幅改进[33,19,44,32]。尽管最近的任何图像文本模型都与我们的方法兼容,但我们的模型和数据集与LiT[44]和ALIGN[19]最为相似。
封闭词汇对象检测。 对象检测模型传统上是为封闭词汇设置而制定的。最初,“一级”和“两级”检测器(如SSD[28]和更快的RCNN[34])激增。最近,DETR[6]表明,对象检测可以被构造为一个集合预测问题,通过二分匹配进行训练,并获得有竞争力的结果。值得注意的是,这种架构不需要区域建议生成或非最大抑制。后续工作提出了DETR[48,43,37]的更有效变体,包括没有“解码器级”的架构[9]。我们的工作还简化了DETR,因为我们不使用解码器。与使用额外“检测”标记的[9]相比,我们通过直接从每个图像标记预测一个对象实例来进一步简化模型。
长尾和开放词汇对象检测。 为了超越封闭的词汇表,固定的分类层可以被语言替代,以创建开放的词汇检测器[2]。开放词汇对象检测最近在结合对比度训练的图像文本模型和经典对象检测器方面取得了很大进展[12,20,26,45,46,42]。该任务中的主要挑战是如何将图像文本主干的图像级表示迁移到检测,尽管罕见类的本地化注释很少。有效利用图像文本预训练至关重要,因为它允许缩放而不需要昂贵的人工注释。已经提出了各种方法。ViLD[12]提取通过将CLIP或ALIGN应用于来自类别不可知区域建议网络(RPN)的裁剪图像区域而获得的嵌入。然而,RPN限制了新对象的泛化性能,ViLD的两步提取训练过程加剧了这一问题。RegionCLIP也使用多级训练,它在字幕数据上生成伪标签,然后进行区域文本对比预训练,并迁移到检测。相比之下,我们的方法在公开可用的检测数据集上对图像和文本模型进行端到端的微调,这简化了训练并提高了对未知类的泛化能力。MDETR[20]和GLIP[26]对整个图像使用单个文本查询,并将检测公式化为短语基础问题。这限制了每个正向传递可以处理的对象类别的数量。我们的架构更简单、更灵活,因为它不执行图像-文本融合,可以处理多个独立的文本或图像派生查询。OVR-CNN[42]与我们的方法最相似,因为它微调图像文本模型以在有限的词汇表上进行检测,并依赖于图像文本预训练将其泛化为开放词汇表。然而,我们在所有建模和损失函数选择上有所不同。我们使用ViT[22]代替其ResNet[15],使用类似DETR的模型代替其更快的RCNN[34],使用LiT[44]代替其PixelBERT[18]的图像文本预训练和视觉接地损失。与我们的方法正交,Detic[46]通过仅在仅图像级注释可用的示例上训练分类头,改进了具有弱监督的长尾检测性能。
我们注意到,在我们对开放词汇检测的定义中,对象类别可能在检测训练和测试之间重叠。当我们特别提到在训练期间未发现局部实例的检测类别时,我们使用术语零样本。
图像条件检测。与开放词汇检测相关的是图像条件检测的任务,它指的是检测与单个查询图像匹配的对象的能力,该查询图像显示了所述类别的对象[4,16,7,31]。该任务也称为单样本对象检测,因为查询图像本质上是单个训练示例。基于图像的查询允许在对象名称未知的情况下进行开放世界检测,例如针对唯一对象或专用技术部件。我们的模型可以通过简单地使用图像派生的而不是文本派生的嵌入作为查询来执行此任务而无需修改。最近关于这个问题的先前工作主要集中在架构创新上,例如在查询和目标图像之间使用复杂的交叉注意形式[16,7]。相反,我们的方法依赖于简单但大型的模型和广泛的图像文本预训练
3 方法
我们的目标是创建一个简单且可扩展的开放词汇对象检测器。我们专注于基于Transformer的标准模型,因为它们的可扩展性[22]以及在封闭词汇检测中的成功[6]。我们提供了一个两阶段的配方:
1.在大规模图像文本数据上对比预训练图像和文本编码器。
2.添加检测头并微调中等大小的检测数据。然后可以以不同的方式查询模型,以执行开放词汇或少数样本检测。
3.1 模型
架构 我们的模型使用标准的Vision Transformer作为图像编码器,使用与文本编码器类似的Transformer架构(图1)。为了使图像编码器适应检测,我们移除了令牌池和最终投影层,而是线性投影每个输出令牌表示,以获得用于分类的每个对象图像嵌入(图1,右侧)。因此,预测对象的最大数量等于图像编码器的令牌数量(序列长度)。这在实践中不是一个瓶颈,因为我们的模型的序列长度至少为576(输入大小为768×768的ViT-B/32),这大于当今数据集中的最大实例数(例如,LVIS的294个实例[13])。通过小MLP传递令牌表示来获得框坐标。我们的设置类似于DETR[6],但通过移除解码器简化了设置。
开放词汇对象检测。 对于检测到的对象的开放词汇分类,我们遵循先前的工作,在分类头的输出层中使用文本嵌入,而不是学习类嵌入[2]。我们称之为查询的文本嵌入是通过将类别名称或其他文本对象描述传递给文本编码器来获得的。然后,模型的任务变成为预测每个对象的边界框和每个查询应用于对象的概率。每个图像的查询可能不同。实际上,每个图像都有自己的区分标签空间,由一组文本字符串定义。这种方法包含了经典的封闭局部对象检测,作为一种特殊情况,其中完整的对象类别名称集被用作每个图像的查询集。
与其他几种方法[26,20]相比,我们没有将图像的所有查询组合成单个令牌序列。相反,每个查询都由一个单独的令牌序列组成,该序列表示单独的对象描述,并由文本编码器单独处理。此外,我们的架构不包括图像和文本编码器之间的融合。尽管早期融合在直觉上似乎是有益的,但它大大降低了推理效率,因为对查询进行编码需要对整个图像模型进行前向传递,并且需要对每个图像/查询组合进行重复。在我们的设置中,我们可以独立于图像来计算查询嵌入,从而允许我们对每个图像使用数千个查询,这比早期融合的情况要多得多[26]。
One- or Few-Shot迁移。 我们的设置不要求查询嵌入来自文本。由于图像和文本编码器之间没有融合,我们可以在不修改模型的情况下向分类头提供图像而不是文本派生的嵌入作为查询。通过使用原型对象图像的嵌入作为查询,我们的模型可以执行图像条件的单热点对象检测。使用图像嵌入作为查询允许检测难以在文本中描述的对象。
3.2 训练
图像级对比预训练。 我们使用与[44]中相同的图像-文本数据集和损失对图像和文本编码器进行对比预训练(图1,左侧)。我们从零开始训练两个编码器,随机初始化,在图像和文本表示上具有对比损失。对于图像表示,我们使用多头注意力池(MAP)[25,43]来聚合令牌表示。文本表示是从文本编码器的最终序列结束(EOS)令牌获得的。或者,我们使用公开的预先训练的CLIP模型[33](详见附录A1.3)。
我们的仅编码器架构的一个优点是,几乎所有模型的参数(图像和文本编码器)都可以从图像级预训练中受益。检测专用头最多包含1.1%(取决于模型大小)的模型参数。
训练检测器。 对预先训练的模型进行微调以进行分类是一个研究得很好的问题。分类器,尤其是大型Transformer,需要经过精心调整的正则化和数据扩充才能表现良好。分类器训练的配方现在已经在文献中得到了很好的确立[39,38,3]。在这里,我们的目标是为开放词汇检测提供类似的微调方法。
我们模型的一般检测训练过程几乎与封闭词汇检测器的相同,只是我们为每个图像提供了一组对象类别名称作为查询。因此,分类头在由查询定义的每个图像标签空间上输出逻辑,而不是在固定的全局标签空间上。
我们使用DETR[6]引入的二分匹配损失,但如下所述将其用于长尾/开放词汇检测。由于对检测数据集进行详尽注释所需的努力,具有大量类的数据集以联合方式进行注释[13,24]。这样的数据集具有非连续的标签空间,这意味着每个对象可以有多个标签。因此,我们使用焦点S形交叉熵[48]代替软最大交叉熵作为分类损失。此外,由于并非所有对象类别都在每个图像中注释,联合数据集为每个图像提供正(存在)和负(已知不存在)注释。在训练过程中,对于给定的图像,我们使用其所有的正负注释作为查询。此外,我们根据数据中类别的频率随机抽样,并将其作为“伪负片”添加,以使每张图像至少有50张负片[47]。
即使是最大的联合检测数据集也仅包含≈106个图像,与用于预训练的数十亿图像级弱标签相比,这一数字很小[29,43,33,19]。众所周知,在这种大小的数据集(如ImageNet-1k)上训练的大型Transformer需要仔细调整正则化和数据扩充,才能表现良好[39,38,3]。我们发现检测训练也是如此,并在第4.6节中提供了大型Transformer实现极高性能所需的扩充和规范的详细分解。
4 实验
4.1 型号详情
对于图像模型,我们使用标准的视觉Transformer[22]。我们遵循[22]中的模型大小、patch大小以及Transformer与混合架构的术语。例如,B/32是指patch大小为32的ViT Base,而R50+H/32是指跨度为32的混合ResNet50+ViT Huge。
对于文本模型,我们使用与图像模型类似的Transformer架构。除非另有说明,否则我们使用具有12层、512隐藏大小(D)、2048 MLP大小和8个头的文本模型(这比B小)。
图像和文本模型首先在图像级进行预训练,然后在对象级注释上进行微调。如LiT[44](在其符号中为uu)中所示,在其36亿图像文本对的数据集上从头开始进行预训练。
预训练后,移除令牌池并添加检测头(参见第3.1节和图1)。该模型为每个输出令牌预测一个框。我们向预测的框坐标添加一个偏置,使得每个框默认以图像块为中心,该图像块对应于在将标记序列排列为2D网格时预测该框的标记。因此,该模型预测与该默认位置的差异,类似于区域建议网络[34]如何预测相对于预定义锚点的偏移。尽管后来在Transformer网络中,图像patch和令牌表示之间没有严格的对应关系,但以这种方式进行偏置框预测可以加快训练并提高最终性能(第4.6节)。
在大多数模型中,我们使用224×224的图像大小进行预训练(见附录A1.3),并使用更大的图像尺寸进行检测微调和评估(如表1所示)。为了在预训练后改变模型输入大小,我们使用线性插值调整图像位置嵌入的大小。模型以256的批量大小进行微调,最多可执行140'000步(对于较大的模型则更少)。我们使用JAX[5]和Scenic库[8]实现了我们的模型。
4.2 检测数据
由于我们模型的开放词汇表设计,我们可以通过用类名字符串替换整数标签来轻松地组合具有不同标签空间的数据集。对于对象级训练,我们使用了总共约200万张图像的公开可用检测数据集(OpenImages V4(OI)[24]、Objects 365(O365)[35]和/或视觉基因组(VG)[23],如图所示)。对COCO[27]、LVIS[13]和O365进行评估。有关数据集的详细信息,请参见附录A1.2。
由于OI、VG、O365和图像级预训练数据包含COCO/LVIS中的图像,我们使用严格的重复数据消除程序从用于训练的所有数据集中删除任何COCO或LVIS测试和验证图像(详细信息请参见附录A1.2)。除非另有说明,我们在实验中以70%-30%的比例随机混合OI和VG用于检测训练。如表1所示,我们使用LVIS基础训练(用于与先前工作的可比性)或O365和VG,比例为80%-20%。我们使用了一系列图像和标签增强,我们在第4.6节中对此进行了讨论。
4.3 开放词汇检测性能
我们使用LVIS v1.0 val[13]作为我们的主要基准,因为该数据集具有罕见类别的长尾,因此非常适合测量开放词汇性能。对于评估,我们使用所有类别名称作为每个图像的查询,即LVIS的每个图像1203个查询。如第4.6节所述,类预测集合在七个提示模板上。一些LVIS类别出现在我们用于训练的数据集中。因此,为了衡量不可见类别的性能,我们从训练数据中删除了所有带有与LVIS“罕见”类别匹配的标签的框注释。因此,APLVIS罕见度量衡量我们模型的“零样本”性能,因为模型没有看到这些类别的本地化注释。
表1显示了我们的模型和一系列先前工作的LVIS结果。我们比较了没有在完整LVIS数据集上训练的开放词汇模型。通过对部分LVIS(例如“基础”类别[12])进行训练获得的结果以灰色显示。我们的方法在开放词汇表(APLVIS)和零样本(APLVIS-罕见)场景中的体系结构规模上都具有很强的竞争力。我们的最佳模型实现了31.2%的APLVIS罕见,并使用了公开可用的CLIP主干。
为了与之前的工作进行比较,我们还提供了MS-COCO 2017和Objects 365的结果。对于这些评估,我们在OI+VG而不是O365+VG上训练模型,以衡量通用性。然而,大多数COCO和O365类别都存在于训练数据中,我们没有删除它们,因为它们构成了可用注释的很大一部分。因此,我们的COCO和O365结果不是“零样本”,而是测试我们模型的开放词汇迁移能力。我们的最佳模型(CLIP L/14;见表1)实现了43.5%的APCOCO;在没有O365的情况下训练的模型版本达到15.8%APO365(进一步结果见附录A1.8)。
![](https://img.haomeiwen.com/i13727053/951f792c3dc64d72.png)
4.4 少样本图像条件检测性能
如第3.1节所述,我们的模型可以执行单样本或单样本对象检测,只需将文本派生查询嵌入替换为图像派生查询嵌入。在少数样本检测中,我们会得到一个查询图像,在示例对象周围有一个框。目标是在新的目标图像中检测与示例相同类别的对象。为了获得查询嵌入,我们首先在查询图像上运行推断,并选择与查询框具有高框重叠的预测检测(在一些过滤之后;有关详细信息,请参见附录A1.7)。然后,我们使用该预测的图像嵌入作为对测试图像的查询。
![](https://img.haomeiwen.com/i13727053/1e0d93983852cf81.png)
对于这项任务的评估,我们遵循[16]中描述的程序:在检测训练期间,我们提出一些COCO类别以进行评估,此外,我们的检测训练数据中出现的所有同义和语义后代类别。我们不修改图像文本预训练阶段。
尽管不是专门为该任务设计的,但我们的模型在表2所示的四个COCO分割中以72%的优势显著优于最佳任务特定的先前工作。与之前的工作不同,我们的模型在推理过程中不会纠缠查询图像和目标图像特征,这使我们能够同时高效地在数千个不同的图像嵌入上运行我们的模型,增强了其实用性。
为了超越单个查询示例(一个样本),实现少数样本预测,我们可以简单地对每个类别的多个查询示例的图像嵌入进行平均。这导致了进一步的显著改进(表2,底行)。
![](https://img.haomeiwen.com/i13727053/9f1b2d94d06107cf.png)
4.5 图像级预训练的缩放
在确定我们的方法实现了强大的开放词汇表、零样本和图像条件检测性能之后,我们接下来分析了其缩放益处和设计选择。在本节中,我们重点介绍图像级预训练。在第4.6节中,我们将描述成功将预训练模型转换为检测所需的微调方法。
为了了解图像级预训练与最终检测性能的关系,我们系统地探索了预训练持续时间、模型大小和模型架构的维度。对于每种配置,我们都预先训练了几个模型,然后在一系列学习率和权重衰减范围内对其进行微调,因为这些参数的最佳设置因配置而异(有关涵盖的设置列表,请参见附录A1.3)。
我们首先考虑图像级预训练在一般情况下如何迁移到检测。图3显示了我们研究涵盖的所有架构、大小和训练前持续时间配置的图像级性能(零样本ImageNet精度)和对象级性能(无样本APLVIS罕见)之间的关系(显示了学习率和权重衰减的最佳结果)。我们发现,虽然最好的对象级模型通常也具有良好的图像级性能,但情况并非如此:许多在图像级任务中表现良好的模型很难迁移到检测。换言之,高图像级性能对于强迁移到检测是必要的,但还不够。
哪些因素促成了强有力的迁移?之前的分类工作发现,预训练和模型大小必须一起缩放,以实现最佳迁移——在大数据上过度训练小模型甚至会导致性能降低[21]。我们发现这种效应对于迁移到检测来说更为强烈。随着预训练量的增加,检测性能首先提高,然后达到峰值,而图像级性能继续提高(图3,右侧)。然而,通过增加模型大小和改进检测微调,可以扩展预训练检测性能的积极趋势(图3,右侧,R50+H/32)。
![](https://img.haomeiwen.com/i13727053/61959771d3bb9322.png)
考虑到增加模型大小可以提高性能,一个重要的问题是哪些架构具有最有利的缩放益处。对于分类,已经发现基于Transformer的架构在预训练计算方面比ResNets更有效,并且混合ResNetTransformer架构是最有效的,至少在较小的计算预算[22]。此外,研究发现,当预训练数据很少时,ResNets表现更好,但随着可用数据的增加,ResNets[22,38]被Transformer超越。我们进行了类似的检测分析。使用检测推断计算作为模型大小的度量,并为每个大小选择最佳超参数和预训练持续时间,我们发现,在小模型大小下,混合模型往往比纯ViT更有效,而ResNets在我们的设置中表现不佳(图4)。然而,对于大型模型,纯ViT超过了混合模型。为了开始解释这一差异,我们比较了总体和零样本检测性能,发现混合型和纯Transformer之间存在明显的分离(至少在小型号上;图4,右图)。这可能表明Transformer比混合架构更倾向于学习语义泛化(对于高零样本性能来说是必要的),这在大规模预训练可能时可能是有益的。总的来说,我们的发现超出了分类的范围,并建议进一步的扩展工作应该集中在纯Transformer架构上。
![](https://img.haomeiwen.com/i13727053/3f1fe9ee8493f667.png)
4.6 如何释放预训练的检测潜力
在第4.5节中,我们发现强大的图像级性能对于强大的检测性能是必要的,但还不够。现在我们将描述在图像级预训练后获得强大的开放词汇检测性能的方法。最终,我们配方的所有组件都旨在减少对相对较少的可用检测注释的过度拟合,以及注释所覆盖的较小语义标签空间。我们的方法依赖于(i)稳定优化的措施,(ii)谨慎使用可用的检测训练数据,以及(iii)一系列数据扩充。我们将在下面详细讨论这些消融,其中斜体数字(例如(15))表示表3中的单个消融实验。重要的是,零样本性能(APLVIS罕见)的最佳配方不一定能最大化分配性能(APOI)。我们在附录A1.9中讨论了这一发现和进一步消融。
![](https://img.haomeiwen.com/i13727053/7e55428d43483447.png)
稳定优化。 微调的目标是从可用的检测数据中学习,而不破坏在预训练期间学习的表示。为此,我们采取以下措施。首先,我们在微调期间将文本编码器的学习率降低到2×10−6(即,比图像编码器学习率小100倍)(3)。这可能通过防止文本编码器在对检测标签的小空间进行微调的同时“忘记”在预训练期间学习的语义来减少过度拟合。有趣的是,冻结文本编码器会产生很差的结果。第二,如第3.1节所述,我们将预测框坐标(11)偏置为以2D网格上相应标记的位置为中心。这加快了学习速度并提高了最终性能,可能是通过在损失中使用的二分匹配过程中打破对称性。第三,对于更大的模型,我们在图像和文本编码器上使用概率为0.1的随机深度正则化[17,1],以及更短的训练计划(第A1.3节)。
谨慎使用可用检测数据。 正如我们的烧蚀所示(表3),检测训练数据的数量是我们模型性能的限制因素。因此,我们结合了多个数据集——我们研究中大多数模型的OI+VG(1-2),最大模型的O365+VG,如表1所示。此外,我们注意保持可用注释不受干扰:我们从指示此类注释(例如OI)的数据集中删除“组”注释和“未详尽注释”类别(14)。这些注释为模型提供了冲突的监督,因为它无法学习(除了通过记忆)哪些注释是详尽的,哪些注释不是详尽的。移除它们可以提高大型模型的性能。此外,我们删除了随机裁剪增强留下的部分框,因为如果对象的大部分实际上被裁剪掉,这些框也会提供冲突的监督。与保留所有(12)个或仅保留未切割(13)个实例相比,保留具有至少60%原始面积的实例会产生更好的结果。
扩增。 最后,我们通过增加图像和查询来丰富可用的检测标签。在图像上,我们使用随机裁剪(如上所述移除部分裁剪的框)。此外,我们使用类似于“大规模抖动”的图像放大[11]。然而,我们不是简单地调整图像大小和填充图像,而是将几个缩小的图像平铺成一个大的“Mosaics”图像。我们随机抽样单个图像、2×2网格和3×3网格,概率分别为0.5、0.33和0.17(7-9)。为了增加查询(类别名称),我们在训练期间使用随机提示,并在多个提示上集成预测以进行评估(4-5)。在评估期间,我们使用80个CLIP提示进行训练,并在7个“最佳”CLIP提示(如[33]中所定义)上进行集成。最后,我们为每个图像随机抽样假阴性标签,直到至少有50个阴性标签[47]。附录A1.5和A1.6中提供了进一步的实施细节。
5 结论
我们提出了一种将对比度训练的图像文本模型迁移到检测的简单方法。我们的方法在具有挑战性的LVIS基准上实现了与更复杂的方法相竞争的零样本检测结果,并在很大程度上优于现有的图像条件检测方法。我们的结果表明,对数十亿个图像文本示例的预训练赋予了强大的泛化能力,即使只有相对有限的对象级数据可用(数百万个示例),也可以将其转换为检测。在我们的分析中,我们解开了将图像级表示成功迁移到检测的决定因素,并表明在更多数据上预训练简单、可扩展的架构可导致强大的零样本检测性能,反映了图像分类任务的先前观察结果。我们希望,我们的模型将成为进一步研究开放世界检测的有力起点。
附录
附录提供了其他示例、结果和方法细节。有关其他问题,请参阅https://github.com/google-research/scenic/tree/main/scenic/projects/owl_vit
A1.1 定性示例
![](https://img.haomeiwen.com/i13727053/2c58a94689b487ac.png)
![](https://img.haomeiwen.com/i13727053/5eec788f8d297fba.png)
A1.2 检测数据集
在这项工作中,使用了五个带有对象检测注释的数据集进行微调和评估。表A1显示了这些数据集的相关统计数据:
MS-COCO(COCO)[27]:Microsoft Common Objects in Context数据集是一个中等规模的对象检测数据集。它有80个对象类别的大约900k个边界框注释,每个图像有大约7.3个注释。它是最常用的对象检测数据集之一,其图像通常用于其他数据集(包括VG和LVIS)。这项工作使用了2017年的训练、验证和测试分割。
视觉基因组(VG)[23]包含对象、区域、对象属性及其在每个图像中的关系的密集注释。VG基于COCO图像,这些图像使用自由文本注释重新注释,平均每个图像35个对象。所有实体都被规范化为WordNet同义词集。我们只使用此数据集中的对象注释,而不使用属性、关系或区域注释来训练模型。
对象365(O365)[35]是一个具有365个对象类别的大规模对象检测数据集。我们使用的版本有超过10M个边界框,每个图像有大约15.8个对象注释。
LVIS[13]:大型词汇实例分割数据集有一千多个对象类别,遵循长尾分布,某些类别只有几个示例。与VG类似,LVIS使用与COCO中相同的图像,并用更多的对象类别重新注释。与COCO和O365不同,LVIS是一个联合数据集,这意味着在每个图像中只标注了一个子集。因此,注释分别包括存在的对象和不存在的类别的正负对象标签。此外,LVIS类别不是成对不相交的,因此同一对象可以属于多个类别。
OpenImages V4(OI)[24]是目前最大的公共对象检测数据集,具有约14.6个边界框注释(每个图像约8个注释)。与LVIS一样,它是一个联邦数据集。
![](https://img.haomeiwen.com/i13727053/dc5557b06e8a18f3.png)
重复数据消除
我们的检测模型通常在OpenImages V4(OI)和视觉基因组(VG)数据集的组合上进行微调,并在MS-COCO 2017(COCO)和LVIS上进行评估。在一些实验中,我们的模型还针对对象365(O365)进行了训练。我们从不在COCO和LVIS数据集上进行训练,但我们的训练数据集的公共版本包含一些与COCO和LV IS验证集相同的图像。为了确保我们的模型在训练过程中看不到验证图像,我们从OI、VG和O365序列分割中过滤出也出现在LVIS和COCO验证中的图像,并按照与[21]相同的程序测试分割。重复数据消除统计信息如表A2所示。
![](https://img.haomeiwen.com/i13727053/b7776d459f30d291.png)
A1.3 超参数
表A3提供了用于我们主要实验的超参数设置的详尽概述。除此之外,我们
–使用的余弦学习率衰减;
–使用的焦点损失,α=0.3和γ=2.0;
–为边界框、gIoU和分类损失设置相等的权重[6];
–使用Adam优化器,β1=0.9,β2=0.999;
–根据示例全局范数梯度裁剪使用(见第A1.9节);
–对于基于LIT和CLIP的模型,将文本编码器输入长度限制为16个令牌。
基于CLIP的模型。 除了图像嵌入功能外,公开可用的CLIP模型的视觉编码器还提供了类标记。为了评估类标记中的信息是否对检测微调有用,我们探索要么丢弃该标记,要么通过将其与其他特征图标记相乘来将其合并到其他特征图中。我们发现,将类标记与特征图标记相乘,然后是层规范,对于大多数架构来说效果最好,因此我们始终使用这种方法。用于CLIP模型微调的其他超参数如表A3所示。
![](https://img.haomeiwen.com/i13727053/13674f99655ff235.png)
A1.4 预训练图像分辨率
我们研究了图像文本预训练期间使用的图像大小对零样本分类和检测性能的影响(图A3)。为了减少混乱,仅显示了ViT-B/32架构的结果,但观察到的趋势扩展到其他架构,包括混合Transformer。在预训练期间使用较大的图像始终有利于零样本分类,但对检测性能没有显著影响。因此,我们默认使用常用的224×224分辨率进行预训练。我们在混合Transformer模型的一些实验中使用了288×288。
![](https://img.haomeiwen.com/i13727053/74ae83de74fb2ef6.png)
A1.5 随机否定
我们的模型是在联邦数据集上训练的。在这样的数据集中,并非所有类别都在每个图像中进行了详尽的注释。相反,每个图像都带有许多标记的边界框(构成一组正类别),以及已知图像中不存在的类别列表(即负类别)。对于所有其他类别,它们在图像中的存在是未知的。由于负片标签的数量可能很小,先前的工作发现,为每个图像随机采样“伪负片”标签并将其添加到注释中是有益的[47]。我们遵循相同的方法,将随机采样的伪负片添加到每个图像的真实负片中,直到至少有50个负片类别。与[47]相反,我们根据类别在整个数据集中的频率(即OI、VG和潜在O365的加权组合)对类别进行抽样。我们从样本中排除给定图像的阳性类别。
A1.6 图像比例放大
为了提高检测模型对对象大小的不变性,先前的工作发现,在训练期间使用图像尺度的强随机抖动是有益的[11]。我们使用类似的方法,但遵循最小化图像填充的两阶段策略。
首先,我们随机裁剪每个训练图像。采样过程被限制为产生纵横比在0.75和1.33之间、面积在原始图像的33%和100%之间的裁剪。如果至少60%的框区域位于裁剪后图像区域内,则保留边界框批注。裁剪后,通过在底部或右边缘附加灰色像素,将图像填充到正方形纵横比。
其次,我们将多幅图像组合成不同大小的网格(“Mosaics”),以进一步增加模型所看到的图像比例范围。除非另有说明,我们随机抽样单个图像、2×2Mosaics和3×3Mosaics,概率分别为0.5、0.33和0.17(图A4)。该过程允许我们使用广泛变化的图像比例,同时避免过度填充和/或在训练期间需要可变的模型输入大小
![](https://img.haomeiwen.com/i13727053/a3fb1930688051e5.png)
A1.7 One-shot(图像调节)检测详情
提取图像嵌入以用作查询。 我们给出了一个查询图像patchQ,我们希望在新的目标图像I中检测类似的patch。我们首先对从中选择patchQ的图像进行推断,并从我们的模型在Q区域中的类头部提取图像嵌入。通常,我们的模型预测许多重叠的边界框,其中一些将与Q高度重叠。每个预测边界框bi都有一个对应的类头特征zi。由于我们的DETR风格的二分匹配丢失,我们的模型通常会预测Q中对象的单个前景嵌入以及与其相邻的许多背景嵌入,这些都应该被忽略。由于所有背景嵌入都彼此相似,并且不同于单个前景嵌入,为了找到前景嵌入,我们在类嵌入组中搜索最不相似的类嵌入,其对应的框具有IoU>0.65和Q。我们将类嵌入zi与其他类嵌入的相似性评分为f(zi)=PN−1j=0 zi·z Tj。因此,当在I上运行推理时,我们使用最不相似的嵌入argminzi f(zi)类作为我们的查询特征。在大约10%的情况下,没有IoU大于0.65且Q为Q的预测框。在这些情况下,我们返回到将嵌入用于文本查询“对象的图像”。
图像条件评估协议。 我们遵循[16]的评估方案。在评估过程中,我们为模型提供了一个目标图像,该图像包含至少一个被搁置的MS-COCO类别的实例,以及一个包含相同被搁置类别的查询图像patch。目标图像和查询patch都是从验证集绘制的。我们报告了目标图像中检测的AP50。注意,与典型的对象检测不同,假设在目标图像内存在查询图像类别的至少一个实例。与之前的工作一样,我们使用Mask RCNN[14]来过滤太小或无法清晰显示查询对象的查询patch。在检测训练过程中,我们小心地展示了与任何类别相关的所有类别。我们删除了任何标签的注释,这些标签与已保留标签匹配或是已保留标签的后代(例如,标签“girl”是“person”的后代标签)。除此之外,我们还手动删除了任何类似于保留类别的标签。随着代码的发布,我们将发布所有的标签。
A1.8 COCO和O365的检测结果
我们在表A4中给出了COCO和O365数据集的额外评估结果。这些结果表明了我们方法的开放词汇泛化能力。尽管我们没有直接在COCO或O365上训练这些模型(除非另有说明),但我们的训练数据集包含与COCO和O365重叠的对象类别,因此根据我们的定义,这些结果不是“零样本”。文献中评估设置的广泛性使得与现有方法进行直接比较变得困难。我们努力注意表A4中与公平比较相关的差异。
![](https://img.haomeiwen.com/i13727053/3f085afc9355ec45.png)
A1.9 扩展消融研究
表A5扩展了正文表3中提供的消融结果。它使用与表3中概述的相同的训练和评估协议,但在研究中考虑的设置和架构(ViT-B/32和ViT-R26+B/32)范围内更进一步。我们将在下面讨论额外的消融
数据集比率。在我们的大多数实验中,我们使用OI和VG数据集进行训练。在正文(表3)中所示的消融研究中,我们发现拥有更多的训练数据(即VG和OI的训练)可以提高零射性能。在这里,我们进一步探索了这些数据集应该混合的最佳比率,并发现7:3=OI:VG比率效果最佳。注意,与这些数据集的相对大小相比,这显著超过了VG。加权VG可能是有益的,因为VG具有比OI更大的标签空间,因此每个VG示例比每个OI示例提供更有价值的语义监督。
我们还测试了VG“对象”和“区域”注释的相对值。在VG中,“区域”注释提供整个图像区域的自由文本描述,而不是标准的单个对象注释。有趣的是,我们发现区域注释的训练会损害模型的泛化能力,因此我们不使用它们进行训练。
损耗归一化和梯度限幅。 在其正式实施中,DETR[6]使用本地(即每个设备)损失归一化,因此对(本地)批量大小敏感。我们发现这是实践中的一个重要细节,它会显著影响性能。我们探讨了通过图像中的实例数或整个批处理中的实例数来规范化框、gIoU和分类损失的效果是否更好。我们的实验表明,每个示例的归一化表现最好,但仅当与每个示例的梯度裁剪相结合时,即,在跨批累积梯度之前,将每个示例的渐变范数单独裁剪为1.0时。我们发现,每个示例的裁剪都提高了训练稳定性,导致总体损失较低,并允许具有较大批量的训练模型。
实例合并。 像OI这样的联合数据集具有不相交的标签空间,这意味着多个标签可以应用于同一对象,这可能是由于(接近)同义标签(例如“Jug”和“Mug”),也可能是由于不相交的概念(例如“Toy”和“Elephant”标签都适用于玩具大象)。由于一次考虑单个标签的注释过程,因此可以使用几个相似(但不相同)的边界框来注释一个对象。我们发现将这样的实例合并到单个多标签实例中很有帮助。多标签注释与联合注释的非分离性质一致,我们推测这为模型提供了更有效的监督,因为它训练每个令牌来预测所有适当标签的单个框。如果没有这种实例合并,模型将需要为应用于对象的每个标签预测单独的框,这显然不能推广到无数可能的对象标签。
为了合并重叠的实例,我们对每个图像使用随机迭代过程,步骤如下:
1.选择边界框重叠最大的两个实例。
2.如果它们在并集上的交集(IoU)高于给定阈值:
2.1.合并标签。
2.2.随机选择一个原始边界框作为合并的实例边界框。
然后删除所选实例,并重复该过程,直到没有具有足够高IoU的实例。在研究了多个IoU阈值之后,我们注意到,不合并具有高度相似边界框的实例显然比合并它们更糟糕;并且0.7-0.9的中等高阈值在实践中效果最佳。
学习率。 在表3中,我们表明对于图像和文本编码器使用相同的学习率显然是次优的,并且有必要以较低的学习率来训练文本编码器。这可能有助于防止对模型在对比预训练阶段获得的广泛知识的灾难性遗忘。在这里,我们探索了一系列文本编码器学习率,并证明文本编码器的学习率需要比图像编码器低得多(例如,100×),才能获得良好的零样本迁移(APLVIS罕见)。然而,完全冻结文本编码器(学习率为0)也不能很好地工作。衡量分销绩效的APOI则相反。虽然对图像和文本编码器使用相同的学习率会导致APLVIS的大幅下降,但这会增加APOI。这表明,零射迁移(APLVIS罕见)的最佳配方不一定能最大化分配性能(APOI)。
裁剪的边界框过滤。 我们在训练模型时使用随机图像裁剪增强。在对生成的图像和边界框进行手动检查后,我们注意到经常出现退化边界框不再与其原始实例标签匹配的实例(例如,手周围的边界框带有标签“Person”,这是由于将大多数人从图像中切出而导致的)。为了减少由于必须记住这些实例而导致模型过度拟合的可能性,如果对象框区域的很大一部分位于随机裁剪区域之外,我们将删除对象注释。最佳面积阈值介于40%和60%之间,无论是保留所有边框子,还是只保留未切割的边框子,都表现得很好(表3和A1.9)。
Mosaics。 如附录A1.6所述,我们通过将多个小图像平铺成一个大的“Mosaics”来执行图像比例放大。我们探索了高达4×4的Mosaics尺寸,发现尽管除了单个图像之外仅使用2×2Mosaics明显比包括更大的Mosaics更糟糕,但对于所考虑的分辨率和patch尺寸,使用更大的拼接(即更小的Mosaics拼块)的好处因包含3×3或4×4Mosaics而饱和。我们没有对Mosaics比率进行广泛的扫描,对于网格大小从1×1(即单个图像)到M×M的Mosaics,我们使用概率为2·(M−k+1)M·(1+M)的k×k网格采样的启发式方法,使得较小的Mosaics比较大的Mosaics采样频率更高,与Mosaics大小成比例。
提示。 为了生成文本查询,与之前的工作类似,我们使用提示模板(如“{}的照片”(其中{}被类别名称替换)来增强对象类别名称,以减少图像级预训练和检测微调之间的分布偏移。我们使用CLIP提出的提示模板[33]。在训练期间,我们从80个CLIP提示模板列表中随机抽取样本,这样,在图像中,类别的每个实例都有相同的提示,但不同类别和不同图像的提示模板不同。在测试过程中,我们为“7个最佳”CLIP提示中的每一个评估模型,并通过对其进行平均来综合得到的预测概率。表A5中的结果表明,不使用任何提示都不能很好地执行,尤其是在分布APOI度量上。也许毫不奇怪,在训练中使用随机提示的情况下,测试时间提示集合效果更好。在某些情况下,提示会对不同的模型架构产生不同的影响。例如,对VG数据集应用随机提示增强有助于提高B/32模型的性能,但会恶化R26+B/32模型。我们推测,这种可变性是由于提示模板的数量相对较少;扩展提示模板列表可能会提供更一致的好处。因此,我们只对OI数据集使用训练时间随机提示,这会产生一致的好处。
位置偏置。 如正文中所讨论的,将框预测偏置到相应图像块的位置可以提高训练速度和最终性能。对于纯Transformer架构(表A1.9中的ViT-B/32)而言,增益尤其大,其中去除偏置会使APLVIS和APLVIS的性能降低几乎3个点,而混合R26+B/32仅下降略多于1个点。因此,我们推测,混合电路卷积分量的空间感应偏置与位置偏置具有类似的功能
![](https://img.haomeiwen.com/i13727053/5e9632bc18ce171a.png)
![](https://img.haomeiwen.com/i13727053/161dd074343d6717.png)
网友评论