使用描述进行开集目标检测.

现有的开集大型数据如 Open ImagesMSCOCO 数据集大约包含 600 个数据类别。如果想要识别现实世界中的任何物体,则需要更多的人工数据标注。但人类学习显示视觉世界中的物体很大程度上是基于语言的监督信号,可以使用几个简单的例子来泛化到其他目标上,而不需要预先见过所有的目标实例。

本文作者模仿人类的能力,设计了一个两阶段开集目标检测 Open-Vocabulary object Detection(OVD),首次提出了使用 image-caption pairs 来获得无限的词汇,类似于人类从自然语言中学习一样;然后使用部分标注样本来学习目标检测任务。该方法的大致流程如下:

  1. 通过较低成本获取大量图像-文本描述样本对,学习视觉-语义空间;
  2. 对一些基础类别(如COCO中的$80$类)通过类别标注学习目标检测任务;
  3. 通过探索语义空间检测基础类别之外的新类别。

本文提出了一个 Vision to Language(V2L)映射层,和 CNN 一起在预训练grounding任务和一些辅助自监督任务中进行学习。V2L layer负责将视觉特征变换到文本空间,好让两个不同模态的特征能在同一空间来衡量相似性。整个模型框架和 Faster RCNN 一样,只是将最后的 cls head 替换成了 V2L,也就是换成了一个将 visual feature 投影到 text embedding space 的投影矩阵。

⚪ 预训练阶段

为了避免在基础类别上过拟合,作者在大量词汇量$V_C$下进行了预训练,让模型能够学习到更全面的语义信息,而不是只有基础类别的语义信息。即在 image-caption pairs 上通过 groundingmasked language modeling (MLM)image-text matching (ITM) 来训练 ResNetV2L

模型接收图像输入 visual backboneResNet50),接收文本输入 language backboneBERT),分别提取对应的特征。对于grounding任务,模型让每个 captionword embedding 和其对应的图像区域特征嵌入更加接近,设定一个 global grounding score 来度量其关系:

\[\langle I,\mathrm{C}\rangle_{G}=\frac{1}{n_{C}}\sum_{j=1}^{n_C}\sum_{i=1}^{n_I}a_{i,j}\,\langle e_i^I,e_j^C\rangle_L \\ a_{i,j}=\frac{\exp\langle e_i^I,e_j^C\rangle_L}{\sum_{i^{\prime}=1}^{n_I}\exp\langle e_{i^{\prime}}^I,e_j^C\rangle_L}\]

成对的 image-caption 得分要大,不成对的 image-caption 得分要小,采用对比损失实现。使用同一个 batch 中的其他图像作为每个 captionnegative examples,也使用同一 batch 中的其他 caption 作为每个 imagenegative examples

\[\mathcal{L}_{G}(I)=-\log\frac{\exp\langle I,C\rangle_{G}}{\sum_{C^{\prime}\in B_{C}}\exp\langle I,C\rangle_{G}} \\ \mathcal{L}_{G}(G)=-\log\frac{\exp\langle I,G^{\prime}\rangle_{G}}{\sum_{I^{\prime}\in B_{I}}\exp\langle I^{\prime},G\rangle_{G}}\]

将两种特征输入多模态特征融合器中,来抽取多模态的 embedding。在此基础上执行MLMITM预训练。MLM是一种自回归任务,而ITM是一种分类任务。

⚪ 训练与测试

训练阶段:预训练后使用得到的 ResNetV2L layer 来初始化 Faster R-CNN ,以此来实现开放词汇目标检测,ResNet 50 用于 backboneV2L layer 是会用于对每个 proposal 特征进行变换,变换之后会与类别标签的文本特征计算相似度来进行分类,训练的时候会固定 V2L layer,使其学习到的广泛的信息能够泛化到新类。

测试阶段:在完成 Faster R-CNN 的训练后采用如下测试流程:

  1. 使用经过预训练的 ResNet50stem 和前 3block 来抽取图像特征
  2. 使用 region proposal network 来预测目标可能出现的位置和 objectness score,并且使用 NMSRoI pooling 来得到每个目标框
  3. 给每个 proposal 使用 ResNet50 的第 4block (和一个 pooling)来提取每个 proposal 的最终特征
  4. 对比每个 proposalV2L layer编码到 word space 中的特征和基础类别 k 的得分
  5. 选择得分最大的类别作为该目标框的预测类别
\[p(i\mathrm{\bf~classified~as~}k)=\frac{\exp\langle e_i^I,e_k^{\mathcal{V}}\rangle}{1+\sum_{k^{\prime}\in\mathcal{V}_B}\exp\langle e_i^I,e_{k^{\prime}}^{\mathcal{V}}\rangle}\]