Github:https://github.com/alirezazareian/ovr-cnn
目录
① 学习视觉语义空间(Learning Visual Semantic Space)
② 学习开放词汇检测(Learning Open Vocabulary Detection)
③ 基础类之外的检测(Detection Beyond Base Classes)
开放词汇对象检测(Open-Vocabulary Object Detection, OVR-CNN)的训练架构
③ 检测超出基类(Detection Beyond Base Classes)
论文翻译
摘要:
尽管深度神经网络在目标检测中具有显著的准确性,但由于监督要求,它们的训练和扩展成本很高。特别是,学习更多的对象类别通常需要按比例增加边界框注释。弱监督和零样本学习技术已被探索用于在较少监督的情况下将目标探测器扩展到更多类别,但它们并不像监督模型那样成功和广泛采用。在本文中,我们提出了一个新的对象检测问题的公式,即开放词汇对象检测,它比弱监督和零样本方法更通用、更实用、更有效。我们提出了一种新方法,使用边界框注释对有限的一组对象类别以及以显著较低的成本覆盖更多种类对象的图像字幕对来训练对象检测器。我们表明,所提出的方法可以检测和定位在训练过程中没有提供边界框注释的对象,其精度明显高于零样本方法。同时,具有边界框注释的对象几乎可以像监督方法一样准确地检测到,这明显优于弱监督基线。因此,我们为可扩展对象检测建立了一种新的技术水平。
1.介绍
目标检测是人工智能最突出的应用之一,也是深度神经网络最成功的任务之一。然而,尽管在深度目标检测方面取得了巨大进展,如Faster R-CNN[32]及其令人印象深刻的准确性,但训练此类模型需要昂贵而耗时的人工监督。特别是,需要为每个感兴趣的对象类别手动注释至少数千个边界框。尽管已经做出了这样的努力,并且公开了有价值的数据集,如Open Images[21]和MSCOCO[25],尽管需要大量资源,但这些数据集涵盖了对象类别的有限集合(例如600)。将对象检测从600个类别扩展到60000个类别需要100倍的资源,这使得多功能对象检测变得遥不可及。
然而,人类通过自然监督学会毫不费力地识别和定位物体,即探索视觉世界并倾听他人描述情况。他们终身学习视觉模式并将其与口语联系起来,从而形成了丰富的视觉和语义词汇,不仅可以用于检测物体,还可以用于其他任务,例如描述物体以及推理其属性和启示。虽然在对象周围绘制边界框不是人类自然学习的任务,但他们可以使用很少的示例快速学习,并将其很好地推广到所有类型的对象,而不需要为每个对象类提供示例。
在本文中,我们模仿人类的这种能力,设计了一个两阶段的框架,称为开放词汇对象检测(OVD)。我们建议首先使用图像标题对的语料库来获得的无界词汇概念,模拟人类如何通过自然监督学习,然后使用该知识来学习对象检测(或任何其他下游任务),仅对某些对象类别使用注释。这样,只需要对某些类别进行昂贵的注释,其余的可以使用标题来学习,标题更容易收集,并且在许多情况下可以在网络上免费获得[33]。图1说明了提出的OVD框架,它新颖而高效,支持多种实际应用程序,并且可以推广到其他计算机视觉任务。
图1:开放词汇对象检测概述。我们提出了一种两阶段训练框架,其中我们首先(1)使用低成本的图像字幕对构建视觉语义空间,然后(2)使用一组基类的对象注释学习对象检测。在测试(3)中,目标是通过利用语义空间来检测基类之外的对象类别。
更具体地说,我们训练一个模型,该模型获取图像并检测给定目标词汇VT内的任何对象。为了训练这样的模型,我们使用了一个图像标题数据集,该数据集涵盖了大量VC表示的单词,以及一个更小的数据集,其中包含来自一组基类VB的本地化对象注释。请注意,在此任务中,目标类在训练期间是未知的,并且可以是整个语言词汇VΩ的任何子集。这与大多数现有的目标检测设置形成对比,包括弱监督迁移学习方法,其中VT应该事先知道[37]。与OVD最相似的任务是零射击目标检测,它也可以推广到任何给定的目标集,但不能使用字幕。图2展示了与零射击和弱监督检测相比,我们提出的任务的直观抽象。尽管与这些众所周知的观点有着密切的联系,但正如我们在第2节中所阐述的那样,OVD在文献中是新颖和独特的。
图2:我们提出的OVD与现有的ZSD和WSD范式的比较。当零样本检测方法学习有限的一组基类VB并努力推广到目标类VT时,我们通过从低成本的图像-适应对学习来获得更大的词汇VC。尽管有弱监督方法可以从字幕中学习,但它们不能使用基类的边界框监督,并且需要在训练前了解VT。因此,我们的OVD公式是ZSD和WSD的推广,它可以使用这两个数据源在预先未知的目标类上达到出色的性能。
为了解决OVD的任务,我们提出了一种基于Faster R-CNN的新方法[32],该方法首先在图像标题数据集上进行预训练,然后在边界框数据集上进行微调,以一种特殊的方式保持预训练期间学习的丰富词汇表,从而实现对对象类别的泛化,而无需注释。通过大量的实验,我们评估了我们的方法,开放词汇RCNN (OVR-CNN),并表明它在zero-shot学习中取得了比目前状态更高的性能(27% mAP比10%)。我们还表明,在广义zero-shot设置中,它的性能明显优于弱监督对象检测器(mAP为40%,mAP为26%)。我们用全面的开源代码来补充论文以重现结果。
2 相关工作
Zero-shot对象检测(ZSD)旨在从注释(可见)对象类推广到其他(不可见)类别。关键思想是使用zero-shot学习技术(例如词嵌入投影[13])来学习对象提议分类。Bansal等人[3]认为ZSD的主要挑战是对背景类建模,背景类很难与不可见的类分开。他们将背景定义为混合模型,后来通过极性损耗的引入[30]提高。另一方面,Zhu等人[45,46]认为,ZSD的关键是提高对象建议模型的泛化能力。他们在训练提出的模型时,使用生成模型来产生看不见的类的幻觉,并增强看到的示例。然而,由于ZSD方法不必要的苛刻约束,即没有任何看不见的对象的例子,并且必须仅根据它们的单词嵌入[3,30,46]或文本描述[24]来猜测它们的样子,因此ZSD方法仍然远未达到实际性能。这促使最近的论文通过做出不切实际的假设来简化任务,例如训练期间测试数据的可用性[29],或者使用看不见的类注释来过滤具有看不见对象实例的图像[15]。考虑到具有自然、弱监督的数据集是丰富且廉价的,我们提出了一个更现实的替代问题:除了“seed”类的注释数据外,我们假设有一个图像标题数据集可以覆盖更多种类的对象,并具有开放的词汇表。这使我们能够在看不见的类上实现27%的mAP,而现有技术为10%,无需额外的注释工作。为此,我们解决了从图像字幕预训练到对象检测的知识传递的开放问题。
弱监督对象检测(WSD)是最广泛使用的方法,通过使用图像级标签来训练没有边界框注释的对象检测器。WSD的主要挑战是定位,因为每个标签都可能指向图像中的任何对象。这个问题通常使用多实例学习来解决,这是一个研究得很好的主题[4,39,8]。尽管图像级标签比边界框更容易收集,但它们仍然需要手动操作,并且通常仅限于预定义的分类。相比之下,我们使用字幕,这更容易注释,而且通常可以在网上免费获得,同时还具有丰富、开放的概念词汇。从字幕中检测学习对象在有限的范围内进行。Cap2Det[43]将字幕解析为多标签分类目标,可用于训练WSD模型。然而,这需要图像级标签来训练字幕解析器,并且仅限于封闭的词汇表。Amrani等人[2]基于字幕中预定义的一组单词(类似于封闭词汇)的存在来训练WSD模型,并丢弃字幕的丰富语义内容,我们通过转换器利用这些内容。相比之下,Sun等人[35]和Ye等人[44]的目标是从图像字幕语料库中发现一组开放的对象类,并为每个发现的类学习检测器。所有这些WSD方法的一个关键限制是它们较差的目标定位精度。相比之下,我们将对象识别和定位分解为两个独立的问题。我们使用开放式词汇标题学习识别,同时使用来自一小部分类的完全注释数据集学习本地化。
为了同时利用弱监督和全监督,研究了使用混合监督的对象检测。然而,大多数现有方法需要为所有类添加边界框注释,并且只将弱监督用作辅助数据[14,31,40]。与我们的工作更相似的是将在监督基类上训练的检测器转移到弱监督目标类[18,36,37]。如第4节所示,这些方法在基类上通常会失去性能。相比之下,我们将这个问题视为一个相反的知识转移过程:我们不是首先在基类上进行训练,然后使用弱监督学习转移到目标类,而是首先使用标题来学习一个包含目标类的开放词汇语义空间,并通过监督学习将其转移到对象检测任务中。所有弱监督和混合监督方法的另一个局限性是,它们需要在预定义的分类中进行图像级注释,并且只学习这些预定义的类。相比之下,我们使用开放词汇的标题,在网络上也更流行,我们学习根据需要概括到任何一组目标类,而不必事先知道它们。VirTex[11]是唯一一种使用标题和对象注释来训练检测器的方法,但它需要对所有对象类进行注释,而我们可以从注释类别的子集进行泛化。
引用表达式的视觉基础可以被视为一个开放的词汇对象定位问题:给定一个图像和一个引用对象的名词短语,通常在完整标题的上下文中,目标是使用边界框在图像中定位引用的对象。我们受到弱监督视觉接地方法[42,9,5,1]的丰富文献的启发,设计了我们的图像字幕预训练技术。更具体地说,我们通过学习视觉语义公共空间来学习将字幕词映射到图像区域。然而,当没有提供字幕时,仅凭这样的映射不能用于在推理过程中检测对象。因此,我们建议通过另一个训练阶段将视觉基础知识转移到目标检测任务中。
视觉语言转换器 我们的图像字幕预训练框架以及将学习到的知识转移到下游任务的框架受到了多模态转换器最近成功的启发[26,22,23,7,34]。这些方法以自我监督的方式训练变换器,以图像字幕对作为输入,并提取可以在各种下游视觉语言任务上进行微调的多功能特征。然而,它们尚未应用于对象检测,因为它们需要图像和字幕作为输入,也因为它们依赖于预训练的对象检测器在馈送到变换器之前清晰地表达图像。最近,PixelBERT[19]通过直接在特征图上应用变换器,取消了后一项要求。我们通过在将视觉特征输入到转换器之前设计一个视觉到语言投影模块,并在预训练过程中加入视觉基础成本函数,来利用和扩展PixelBERT。此外,我们建议将通过多模态变换器预训练的权重转移到单模态下游的目标检测任务中。
3 方法
图3说明了我们提出的方法的架构,该方法基于以零样本方式训练的更快R-CNN[32]。更具体地说,它在一组基类VB上进行训练,并在另一组目标类VT上进行测试。为此,预训练的单词嵌入(例如GloVE[28])经常被用来代替传统的可训练分类器,这样目标类嵌入就可以在测试过程中取代基类嵌入,而不会改变模型的输出语义空间。然而,由于基类样本较少,这种做法往往会导致严重的过拟合,以至于目标类上最先进的mAP比基类低9倍[30]。
图3:我们的OVR-CNN在预训练(顶部)和下游训练(底部)期间的架构。我们首先通过基础、掩码语言建模(MLM)和图像文本匹配(ITM)在图像字幕对上训练ResNet和V2L层。然后,我们使用训练好的ResNet和V2L来初始化Faster R-CNN,以学习开放词汇对象检测。
为了缓解这个问题,我们的关键思想是在更大的词汇VC上预训练视觉骨干,以学习更完整的语义空间,而不是少量的基类。由于字幕是自然编写的,对词汇没有太大限制,因此它们是学习丰富而完整的视觉语义空间的完美来源。我们将这个框架命名为开放词汇对象检测(OVD),因为通过字幕可以学习的对象词汇没有明确的限制。在实践中,我们的词汇并不是字面上的“开放”,因为它仅限于预训练的单词嵌入。然而,单词嵌入通常是在非常大的文本语料库上训练的,比如维基百科,它几乎覆盖了每个单词。
在本节的其余部分,我们将详细介绍如何进行预训练我们的Open Vocabulary faster R-CNN(OVR-CNN)在图像字幕对上的应用,以及我们如何将预训练知识传递给下游任务。在第4节中,我们证明了我们的方法将基本目标性能差距从9比2缩小。
3.1 学习视觉语义空间
目标检测器通常使用CNN骨干网,该骨干网通常经过ImageNet分类预训练[10,32]。预训练产生一个骨干,可以提取针对对象识别优化的特征,然后用于为固定的一组带注释的类训练一个新的分类头。这在零样本设置中是有问题的,因为在基类上训练的分类器无法识别目标类。因此,零样本方法通过用固定嵌入矩阵替换分类器权重来学习从视觉特征到预训练的基类嵌入的线性投影[13]。这样,通过假设嵌入空间的连续性,网络有望推广到目标类。然而,这种方法很容易过拟合,因为投影到少量的嵌入空间(基类嵌入)是一个不确定的问题[3]。
为了防止过拟合,我们建议在预训练期间学习上述视觉到语言(V2L)投影层以及CNN骨干网,其中数据不限于一小部分基类。为此,我们使用图像字幕数据集,因为字幕包含丰富的词汇和语义结构,可用于学习单词的含义,包括对象名称。为了有效地从字幕提供的丰富监督中学习,我们利用了视觉基础和视觉语言转换器的最新进展。我们使用一个主要的(接地)任务以及一组辅助的自我监督任务来学习一个强大的CNN骨干网和V2L层。在下一小节中,我们将详细介绍如何转移预训练模块来学习开放词汇对象检测。
我们的预训练架构类似于PixelBERT[19]:它将图像-字幕对作为输入,将图像馈送到视觉骨干网,将字幕馈送到语言骨干网,从而为图像和字幕生成一组令牌嵌入,然后将这些令牌嵌入馈送到多模态变换器中以提取多模态嵌入。我们的视觉骨干是ResNet-50[17],它以w×h图像I为输入,提取w/32×h/32个区域的网格,其中每个区域I由dv维特征向量表示。对于语言主干,我们使用预训练的BERT[12],它以标记化字幕C为输入,为每个标记j提取一个dl维单词嵌入,用位置嵌入对其进行扩展,并应用多层多头自我注意来提取的dl维上下文化标记嵌入。
此外,我们设计了一个线性V2L层,将每个视觉区域表示映射到语言嵌入空间中。然后,图像区域和字幕标记的最终嵌入被聚合并馈送到多模态变换器中,该变换器在架构上类似于BERT,但不仅在每种模态内而且在两种模态之间执行注意力。多模态变换器的输出分别为和,用于区域和单词,可用于各种预训练任务,正如我们在本节稍后讨论的那样。
一旦我们从一批图像字幕对中提取出上述单峰和多峰嵌入阶段,我们就定义了一个主要目标函数以及各种辅助目标,以确保对ResNet参数和V2L层进行有效的训练。我们的主要目标是视觉基础,即每个字幕的单词嵌入应该接近其相应的图像区域。由于没有给出单词和区域的对应关系,我们采用弱监督接地技术来学习它。具体来说,我们为每个图像字幕对定义一个全局接地得分,即单词-区域对的局部接地得分的加权平均值:
其中,是两个向量的点积,是图像和字幕标记的数量,并且,
匹配的图像字幕对的全局基础分数应最大化,而非匹配的字幕对的全球基础分数应最小化。因此,我们使用批中的其他图像作为每个字幕的反例,并使用批中其他字幕作为每个图像的反例。
因此,我们定义了两个接地目标函数:
其中是图像和字幕批。我们通过完成各种其他替代方案的广泛实验来验证所描述的公式,例如其他相似性度量(例如余弦而不是点积)、其他损失函数(例如三重损失而不是负对数似然)和其他字到区域对齐机制(例如硬对齐而不是softmax)。
优化接地目标可以产生一个学习的视觉骨干和V2L层,可以将图像中的区域映射成最能描述它们的单词,而不限于封闭的词汇表。然而,由于我们引入了弱的间接监督,因此可以实现局部最优,其中模型只学习选择正确图像/字幕所需的最小概念。为了更直接地学习每个单词,我们按照PixelBERT[19]采用了掩码语言建模。具体来说,我们用[MASK]标记随机替换每个字幕C中的一些单词j,并尝试使用掩码标记mC j的多模式嵌入来猜测被掩码的单词。为此,视觉骨干和V2L层应该学会提取字幕中可能描述的所有对象,多模式转换器应该学会使用这些对象以及BERT的语言理解能力来确定哪个单词最能完成字幕。
因此,我们在上应用一个全连接层,使用点积将其输出与所有单词嵌入进行比较,并应用softmax来计算每个单词的概率得分。我们将掩码语言建模LMLM定义为将预测分布与被掩码的实际单词进行比较的交叉熵损失。PixelBERT还采用了图像文本匹配损失LITM,但不使用视觉语言转换器中常见的蒙版视觉建模[26]。我们遵循他们的选择来实现我们的辅助目标,尽管其他组合也是可能的。我们通过最小化每个图像字幕对的总损失来联合训练视觉骨干、V2L层和多媒体转换器:
请注意,我们的语言主干(BERT)及其单词嵌入在我们的实验中是固定的。
3.2 学习开放式词汇检测
一旦ResNet视觉骨干和V2L层经过训练,我们就将它们转移到目标检测任务中,通过初始化Faster R-CNN。根据[32],我们使用预训练ResNet的词干和前3个块从给定图像中提取特征图。接下来,区域建议网络在特征图上滑动锚框以预测对象性得分和边界框坐标,然后进行非最大值抑制和感兴趣区域池化,以获得每个潜在对象的特征图。最后,在[32]之后,我们的预训练ResNet的第四个块被应用于每个提案,然后进行池化,以获得每个提案框的最终特征向量,该向量通常被输入到监督设置中的分类器中。
然而,在我们的零样本设置中,在视觉特征上应用线性层,以将每个提议映射到单词嵌入空间上,因此可以将它们分别与训练或测试阶段的基本或目标类嵌入进行比较。在所有ZSD方法中,上述线性层都是在基类上从头开始训练的,基类很难泛化。相比之下,我们已经在预训练阶段在更广泛的语义空间上训练了V2L层。该阶段与预训练的主要区别在于,表示任意形状的边界框,而不是网格结构的特征图。然而,由于RoI Align[16]的线性特性,与预训练中的空间相同,通过微调ResNet骨干网可以消除最小的域偏移。
在训练过程中,我们将与每个基类k进行比较,以计算分类分数:
其中是单词k的预训练嵌入,VB是基类集。表示点积。分母中加1是因为我们将背景类设置为具有固定的全零嵌入,这使得任何点积为零,并且指数为1。我们发现,固定的全零背景嵌入比可训练的嵌入表现更好,因为它不会将可能包含目标类的非前景边界框推送到嵌入空间的任意区域。
除了上述分类头的变化外,我们网络的其余部分完全遵循Faster R-CNN,并以完全相同的方式用相同的目标函数进行训练。根据经验,我们发现将比率α乘以背景提案的分类损失(即与任何地面真实边界框都不匹配的提案框)可以显著提高目标类的性能,同时略微降低基类性能。因此,我们使用交叉验证来为每个模型找到最佳α。ResNet参数经过微调,而区域建议网络和回归头则从头开始训练。分类器头是完全固定的,因为它由预训练的V2L层和词嵌入组成,这些嵌入特别容易过拟合。在测试期间,我们使用该模型就像使用Faster R-CNN一样,除了我们可以用任何一组目标类VT替换方程(6)中的词嵌入。虽然我们在一个固定的、带注释的目标集上进行评估,但该模型并没有针对这些类进行特别调整,因此可以部署在整个词汇表VΩ上。
4 实验
在本节中,我们将展示我们的方法准确检测目标类对象的能力,同时与监督方法相比,在基类上不会失去准确性。特别是,与零样本和弱监督对象检测方法相比,我们在数量上有了显著的改进,随后进行了包括消融和可视化在内的全面分析。
4.1 数据和指标
我们的实验基于具有挑战性且广泛使用的COCO Objects数据集[25]。我们分别使用他们2017年的培训和验证拆分进行培训和评估。为了选择基类和目标类,我们采用了[3]提出的拆分,并被所有其他ZSD方法使用。它们的拆分包括48个基类和17个目标类,这两个类都是COCO对象类的子集。我们从训练数据中删除任何未标记基类的边界框,并删除没有边界框的图像。这给我们留下了107761个训练图像,其中包含665387个基类实例,以及4836个测试图像,其中包括28538个基类实例和4614个目标类实例。
除非另有说明,对于预训练,我们使用COCO Captions[6],它基于与COCO对象相同的图像和相同的训练/测试分割。由于域与下游任务匹配,因此首选此数据集。然而,为了研究更现实的环境,我们还通过对概念性字幕(CC)进行预训练来报告结果[33],这些字幕是从网络上自动收集的。CC更大,有2749293个训练图像字幕对,而COCO有118287个图像和5倍字幕。COCO和CC都涵盖了非常广泛的词汇,包括我们实验中的所有基础类和目标类。尽管我们的模型在预测字幕词汇VC之外的单词方面没有理论限制(图2),但本文没有研究这些异常情况。
遵循大多数ZSD和WSD方法,我们使用IoU为0.5的平均精度(mAP)进行评估。我们通过将模型直接应用于COCO验证图像并使用基类注释进行评估来计算基类上的mAP。然后,我们用目标类嵌入替换分类器头,并应用于同一数据集,但这次是与目标类注释进行比较。这导致了基础和目标mAP,分别类似于监督和零样本设置。我们还将分类器头替换为基类和目标类嵌入的并集,以模拟通用零样本设置[30]。在这种情况下,我们报告总mAP,并分别计算基础类和目标类的AP平均值。
4.2 实施细节
我们使用maskrcnn基准代码库[27],特别是R50C4配置来实现我们的系统。我们还使用预训练和冻结的BERT Base[41]作为我们的语言支柱。对于多模态变换器,我们使用与BERT-Base相同的架构,除了我们只使用6层和每层8个注意头,并且我们从头开始训练它。我们训练前的基础学习率为0.01,在充分训练后降至0.001和0.0001。我们使用64个批量,在8个V-100 GPU上训练,大约需要10个小时。我们在训练前使用[19]之后的空间落差对视觉区域进行子采样。对于掩码语言建模,我们以0.135的可能性对每个单词进行掩码。我们使用5.0的梯度剪裁进行预训练。
在下游训练过程中,我们使用基类的BERT嵌入(即预训练的输入嵌入,而不是BERT变换器的输出)来初始化和固定分类器权重。我们发现,对于大多数实验,最佳背景权重为α=0.2,除了没有固定的预训练V2L层的烧蚀,其中α=0.0效果最佳。我们只微调ResNet的第三和第四块,并保持主干和前两块固定。我们使用0.005的学习率进行训练,并在适当的时候降至0.0005和0.00005。我们在8个V100 GPU上以8个批量进行训练,大约需要18个小时才能收敛。
4.3 基准线
由于我们提出的OVD任务利用了以前从未研究过的训练数据和监督的独特组合,因此没有具有完全公平比较的相同训练设置的基线。因此,我们使用来自各种类似但不完全相同的任务的基线。首先,我们与零样本检测方法进行了比较,因为ZSD是最接近我们工作的领域。特别是,我们与SB[3]进行了比较。SB[3]是第一种也是最简单的ZSD方法,将EdgeBox提案[47]的CNN特征投射到单词嵌入中。然后我们将其与LAB[3]进行比较,LAB[3]试图使用混合模型更好地对背景类进行建模。我们还与DSES[3]进行了比较,DSES使用视觉基因组[20]中的额外类来增强基类。然后,我们比较了PL[30]和DELO[46],前者提出了极性损失来解决对象背景不平衡的问题,后者采用生成方法通过特征幻觉为某些目标类别准备模型。请注意,DELO需要事先知道目标类,这使得它不是真正的开放词汇表。
值得注意的是,我们的方法利用了额外的数据(COCO字幕或概念字幕),对ZSD基线不可用,并且可能包括目标类别的示例。因此,我们还比较了弱监督检测(WSD)方法,通过使用精确匹配或分类器将字幕转换为图像级标签[43]。我们与WSDDN[4]以及Cap2Det[43]进行了比较,后者更好地利用了字幕。WSD方法不使用基类的边界框,这在没有此类注释的情况下可能是一个优势,但与我们能够使用边界框的方法相比,它导致了较差的定位性能。因此,我们还比较了利用弱监督和完全监督(表示为MSD)混合的迁移学习方法。特别是,我们比较了LSDA[18],它学习从分类器权重到检测器权重的转换,它的扩展[36]利用语义类关系(LSDA+),以及最近的一项工作[37],它使用多实例学习和基于基类训练的区域建议网络(MIL+RPN)。
请注意,由于WSD和MSD方法需要图像级标签,因此在预训练期间应提前知道目标类,并且模型特别适合这些类。相比之下,我们的方法和大多数ZSD方法无法访问这些信息,并且可以在不进行再训练的情况下应用于任何新类。
4.4 结果
表1:MSCOCO数据集的结果。数字为mAP(%)。*对于某些基线,目标类在训练过程中是已知的。
表1显示了与基线相比的主要结果。特别是,与所有ZSD基线相比,我们观察到目标类性能和广义目标性能有了显著提高。这主要是因为我们能够利用额外的低成本培训数据。尽管WSD和MSD基线在训练期间可以访问目标类的信息,但我们在目标类上的表现也优于它们,而且我们在基类上的表现明显优于它们,因此总体而言,这是由于我们有效地利用了基类的边界框监督。请注意,WSD和MSD模型不能仅基于基类或仅基于目标类进行评估,因为它们具有在所有65个类别上训练了固定分类器。此外,我们有一个FSD(完全监督检测)基线来衡量基类的性能下降。
此外,我们在表2中展示了消融实验,以证明每种设计选择的有效性。特别是,我们观察到,如果不在图像字幕数据集上预训练我们的模型,该模型的性能就会很差。这证实了多模态预训练对开放词汇泛化的显著效果。我们还观察到,接地是预训练的主要组成部分,其影响比通过多媒体变压器模块优化的辅助目标大得多。此外,我们表明,仅转移ResNet权重(从预训练到下游任务)不足以实现有效的知识转移,我们还必须转移V2L层。此外,如果V2L层在下游训练期间没有冻结,它将失去泛化到目标类的能力,从而在基类上略有改进。
表2:在MSCOCO数据集上的消融。
我们还尝试在预训练期间随机初始化模型,而不是使用广泛使用的Imagenet权重,尽管性能下降,但我们仍然比使用Imagenet的大多数ZSD基线表现更好。我们还观察到,如果我们使用自动收集的概念字幕而不是仔细注释的COCO字幕,性能会下降,但仍然明显优于所有ZSD基线,这证明即使是低质量、廉价的数据也可以被OVR-CNN用来实现更好的性能。
4.5 可视化和讨论
为了更深入地了解OVR-CNN所学习的内容,我们在图4中描述了我们的模型所学习的视觉语义嵌入空间。更具体地说,我们将训练好的模型(在下游训练后)应用于所有COCO验证图像,得到V2L层e I I之后所有输出边界框的嵌入,并使用t-SNE将其维数降低到2[38]。我们根据它们的地面真实标签对它们进行颜色编码,并在同一空间上覆盖类嵌入e V k。我们只显示目标类及其实例以减少混乱。理想情况下,每个目标类的实例应该形成不同的集群,每个类嵌入(原型)应该落在由其实例形成的集群内。由于缺乏直接监督,这对于目标班级来说尤其难以实现。我们将我们的方法与ZSD基线进行比较,ZSD基线与我们的模型相同,除了没有对图像字幕对进行预训练。
图4:OVR-CNN学习的嵌入空间(右)与没有预训练的基线(左)进行比较。每种颜色代表一个目标类,每一个点代表一个边界框的嵌入,每一颗星代表一个类原型。
我们观察到,在基线中,目标类形成了复杂的集群,它们的原型是随机分布或折叠的。另一方面,我们的完整模型创建了定义良好的集群,在大多数情况下包含它们的原型。这与我们的直觉和定量结果一致,这些结果表明零样本学习不足以学习从视觉特征到语义嵌入的平滑和可推广的映射,通过多模式数据学习更大的词汇对于更连贯的空间和超越基类的推广至关重要。
5 总结
我们提请注意开放词汇对象检测(OVD)的新任务,试图将对象检测分解为识别和定位,并使用两种不同的监督源分别学习它们,这两种监督源非常适合每项相应的任务。在OVD中,识别是从通用和开放词汇表的标题中学习的,而本地化是从边界框注释中学习的。边界框注释是准确的,直接为下游任务设计的。我们提出了OVR-CNN,它在图像字幕数据集上预训练了一个更快的R-CNN,并仔细地将从字幕中学到的开放词汇视觉语义知识转移到下游的目标检测任务中。与零样本和弱监督基线相比,我们展示了记录性能,建立了可扩展对象检测的新技术。然而,OVR-CNN只是我们总体想法的一种可能实现,它也可以扩展到其他下游任务,实现更人性化、开放词汇的计算机视觉技术。
个人学习笔记
基础概念
1. 少样本学习(Few-Shot Learning,FSL)是机器学习领域中的一种重要技术,其目标是在仅使用少量样本(例如50个或更少)的情况下,设计出能够高效学习和准确预测的机器学习模型。
2. Zero-shot学习( Zero-shot Learning, ZSL)是机器学习领域的一种先进方法,它旨在使模型能够识别、分类或理解在训练过程中未见过的类别或概念。这种学习方法对于解决现实世界中常见的长尾分布问题至关重要,即对于一些罕见或未知类别的样本,传统的监督学习方法可能难以处理。
3. OVD(Open-Vocabulary Detection,OVD),开放世界目标检测。利用few-shot和zero-shot技术,实现面向开放世界未知物体的目标检测。
OVD技术涉及的关键问题:
(1)模型泛化能力
- 零样本学习(Zero-shot learning):模型需要具备在未见过类别的情况下,通过学习相关知识进行检测的能力。
- 少样本学习(Few-shot learning):即使在新类别样本非常少的情况下,模型也应具备快速适应和泛化的能力。
- 词汇扩展性:开放词汇意味着类别数量不是固定的,模型需要应对动态扩展的类别集合。
(2)区域(Region)信息与跨模态大模型之间的适配
- 视觉特征和文本特征的统一表示:如何将图像的视觉特征与开放词汇(文本描述或标签)的语义特征进行对齐。当前的主流技术如 CLIP、ALIGN 等模型,基于对比学习的方式,试图将图像和文本映射到同一特征空间中,使得模型可以通过文本描述来理解和检测图像中的新类别。
- 语义信息的利用:语言中包含丰富的语义关系,例如词汇间的上下位关系、同义词关系等。如何充分利用这些语义信息提升模型在开放词汇下的检测性能是一个关键挑战。
OVD框架概述
一共包括三个步骤
Learning Visual Semantic Space→Learning Open Vocabulary Detection→Detection Beyond Base Classes
① 学习视觉语义空间(Learning Visual Semantic Space)
步骤概述:
- 在第一阶段,模型通过自然监督(Natural Supervision)来构建一个视觉语义空间
- 这种监督使用低成本的图像-字幕对(image-caption pairs)
框架图理解:如图①所示,模型通过这些图像和字幕对来学习如何将视觉信息映射到语义空间中
② 学习开放词汇检测(Learning Open Vocabulary Detection)
步骤概述:
- 在第二阶段,模型使用一组基础类(base classes)的对象注释(object annotations)来学习对象检测。
- 这些注释提供了对象的边界框(bounding boxes)和标签
框架图理解:
- 图②展示了带有边界框和标签的图像,这些标签属于基础类
- 模型通过这些注释来学习检测这些基础类中的对象
③ 基础类之外的检测(Detection Beyond Base Classes)
步骤概述:
- 在测试阶段,模型的目标是通过利用前面学习到的语义空间来检测基础类之外的对象类别
框架图理解:
- 图③展示了一张测试图像,模型成功地检测到了“person”和“cat”两个类别,这些可能不在基础类中。
- 这表明模型能够通过语义空间的知识扩展其检测能力到未见过的类别。
总结
方法概述:
- 该方法提出了一个两阶段的训练框架。
- 在第一阶段,模型通过图像-字幕对学习视觉语义空间。
- 在第二阶段,模型使用对象注释学习基础类的对象检测。
- 在测试阶段,模型利用语义空间来检测基础类之外的对象类别。
优点:
- 这种方法利用了低成本的图像-字幕对作为自然监督,减少了对大量标注数据的依赖。
- 通过学习一个通用的视觉语义空间,模型能够扩展其检测能力到未见过的类别,实现开放词汇表对象检测。
这个方法的核心在于构建一个强大的视觉语义空间,并利用这一空间来实现开放词汇表的对象检测,从而提高模型的泛化能力和检测性能。
开放词汇对象检测(Open-Vocabulary Object Detection, OVR-CNN)的训练架构
两阶段训练:预训练(pretraining)和下游训练(downstream training)
① 预训练阶段(图的上半部分)
学习视觉语义空间(Learning Visual Semantic Space)
-
输入图像:输入图像 ( I ) 通过 ResNet-50 提取特征 ( r_i^1 )
-
特征嵌入:这些特征通过一个视觉到语言(V2L)层转换为嵌入 ( e_i^1 )
-
BERT 嵌入:并行地,文本输入 ( C ) 通过 BERT 嵌入为 ( e_j^C )
-
多模态变换器:这些视觉和文本嵌入通过一个多模态变换器进行融合,生成联合嵌入 ( f_j^C ) 和 ( m_i^C )
-
任务:
-
图像-文本匹配(ITM):判断图像和文本是否匹配
-
掩码语言建模(MLM):预测被掩码的词(例如 "person")
-
-
目标:通过这些任务,模型学习到一个视觉语义空间
② 下游训练阶段(图的下半部分)
学习开放词汇检测(Learning Open-Vocabulary Detection)
-
输入图像:输入图像 ( I ) 通过 ResNet-50 提取特征,但这次仅使用前3个块(blocks 1-3)
-
区域提议网络(RPN):这些特征通过一个区域提议网络(RPN)生成候选区域
-
特征融合:候选区域的特征通过 ResNet的更深层(blocks 4+)提取,并通过 V2L 层转换为嵌入
-
基类训练:模型通过基类的对象注释进行训练,学习到对象性和定位(Objectness & Localization)
-
目标类评估:在测试阶段,模型利用之前学习到的视觉语义空间来检测超出基类的目标类
-
所有名词部署:模型能够检测所有名词类别
③ 检测超出基类(Detection Beyond Base Classes)
-
测试图像:在测试阶段,输入图像通过相同的网络流程,检测并标注出超出基类的对象类别(例如 "person" 和 "cat")
-
目标和定位:模型生成对象的边界框和类别标签
关键组件
-
可训练参数(Trainable Parameters):用白色方框表示,指示哪些部分的参数在训练中会被更新
-
固定参数(Fixed Parameters):用灰色方框表示,指示哪些部分的参数在训练中保持不变
-
转移参数(Transferred):用黄色方框表示,指示哪些部分的参数从预训练中转移到下游任务中
-
对象分类(Object Taxonomy):用橙色方框表示,指示对象类别的层级结构
-
成本函数(Cost Functions):用蓝色问号表示,指示不同的训练目标和损失函数