目标检测是人工智能最突出的应用之一,也是深度学习最成功的任务之一。然而,尽管深度对象检测取得了巨大进步,例如 Faster R-CNN ,已经能取得非常不错的准确性,但训练此类模型需要昂贵且耗时的监督信号,他们都要靠人工标注获得。特别是,需要为每个ROI的对象类别手动标注至少数千个边界框。尽管之前很多机构已经完成了object detection上benchmark的建立,并且公开了这些有价值的数据集,例如 Open Images和 MSCOCO,这些数据集描述了一些有限的对象类别。但如果我们想吧将目标检测从 600 个类别扩展到 60000 个类别,那么我们需要 100 倍数据资源的标注,这使得把目标检测拓展到开放世界里变得遥不可及。然而,人类通过自然监督学会毫不费力地识别和定位物体,即探索视觉世界和倾听他人描述情况。我们人类具有终生学习的能力,我们捕捉到视觉信息后,会将它们与口语联系起来,从而产生了丰富的视觉和语义词汇,这些词汇不仅可以用于检测物体,而且可以用来拓展模型的表达能力。尽管在对象周围绘制边界框不是人类自然学习的任务,但他们可以使用少量例子快速学习它,并将其很好地泛化到所有类型的对象,而不需要每个对象类的示例。这就是open vocabulary object detection这一问题的motivation所在。
1. 基于captioning的信息抽取
Open-Vocabulary Object Detection Using Captions (CVPR 2021)
提出原因:人类通过自然监督,即探索视觉世界和倾听他人描述情况,学会了毫不费力地识别和定位物体。我们人类对视觉模式的终身学习,并将其与口语词汇联系起来,从而形成了丰富的视觉和语义词汇,不仅可以用于检测物体,还可以用于其他任务,如描述物体和推理其属性和可见性。人类的这种学习模式为我们实现开放世界的目标检测提供了一个可以学习的角度。
第一步:学习的视觉与文本的联系。通过训练一个现象变换层来把视觉空间的特征转换到文本空间,来充当一个V2L(Vision to Language)的模块,负责把视觉特征变换到文本空间去。输入的image-captioning对首先经过各自模态的encoder,图像则是细分得到每个区域的特征,然后进一步经过V2L变换。之后,两个模态的特征concat起来之后送入多模态的Transformer,得到的输出是视觉区域特征以及文本特征。损失函数则是惩罚不匹配的但是相似度高的图像-文本对。如上图文本encoder是一个预训练好的BERT,这样模型具有泛化能力,而图像encoder是常用的resnet50。
第二步:利用常规的目标检测框架:Faster R-CNN,进行模型训练。为了保证延续性,backbone采用上一阶段中训练好的resnet50,每个proposal的特征经过V2L变换之后与类别标签的文本特征计算相似度来进行分类。事实上就是把回归问题转换成了分类问题。
第三步:把要检测的新类别加入文本的特征向量中做匹配。
作者还比较了一下提出的OVD与之前相关的setting有什么不同:
作者还特地比了一下三种setting, OVD跟ZSD的区别应该就是在训练时,OVD可能会用到target类的embedding信息,当然可能只说这些embedding信息可能包含在一堆caption中, 谁也不知道里面有没有target信息,肯定不能给target类的bbox信息。而zero-shot完全没利用到,weakly supervised就更直接了,直接利用子集来训练,从而强化泛化能力。
可以发现。相较于原有的zero-shot的detection,模型的泛化性能显然是更强的。根据上表,其实我们可以发现,ZSD的检测效果差(map不高),主要原因,我认为就是对于没有任何未知类的例子经过训练,OVD 应该是会有部分未知类通过image-caption dataset 训练课得知,因此从现有基类的特征其实很难推出新类。WSD 定位效果不好, 我个人分析认为,他从没有注释的图片很难学习到特征,就很难像OVD那样通过image-caption那样,至少有图像和文本方向的特征,再通过基类的相关有注释框的图片学习,就能很好的定位。mixed supervision,其实同样存在上面的缺陷,在基类上进行训练,然后使用弱监督学习转移到目标类,这些方法通常会在基类上降低性能相反,Visual grounding和Vision-language transformers 就是来帮助解决作者的设想,通过 Vision-language transformers 可以提取 文本和图像的特征,Visual grounding 则就是根据这些特征进行定位。
同时我们也发现,利用这种用image-captioning pair模式训练出来的特征,其中每个类别的特征更加显著,如下图和zero-shot obejct detection的baseline的对比:
2. 基于CLIP的蒸馏
CLIP是一种在大量图像和文本对上训练的神经网络。作为这种多模态训练的结果,CLIP可用于查找最能代表图像的文本片段,或查找给定文本查询的最合适图像。CLIP在image-level的分类上已经取得了非常令人印象深刻的效果。基于其巨大潜力,在目标检测上应用也显得理所当然了。
Open-vocabulary Object Detection via Vision and Language Knowledge Distillation (ICLR 2022)
提出原因:现有的对象检测算法通常只学习检测检测数据集中存在的类别。增加检测词汇量的常用方法是收集带有更多标记类别的图像。有了如此丰富的词汇,为所有类别收集足够的训练示例变得相当具有挑战性。而对象类别自然地遵循长尾分布。为了为稀有类别找到足够的训练示例,需要大量的数据,这使得扩大检测词汇量的成本很高。另一方面,互联网上有丰富的成对图像-文本数据,尽管在学习图像级表示法方面取得了巨大的成功,但学习用于开放词汇表检测的对象级表示法仍然具有挑战性。
在这项工作中,我们考虑借用预训练的开放词汇分类模型中的知识来实现open vocabulary检测。整体的思路是把检测问题转换为proposal分类问题。看上图的中间,把每个类别的文本标签通过预训练的CLIP投影到多模态空间中得到类别文本向量,然后Inference的时候每个proposal的特征也投影到多模态空间中,再把proposal的特征和类别文本特征进行比对,就可以对proposal进行分类了。
在训练阶段,论文提出首先进行图像的ROI裁剪。先将标注区域的图片裁剪出来,冉通过Pre-trained Image Encoder编码得到标注区域的image embeddings。第二阶段就是通过Mask R-CNN产生类别无关的region embeddings。那么怎么获得这些image embeddings和region embeddings呢?论文给出的答案是进行知识蒸馏。由于CLIP的模型太大,直接使用进来计算开销显然过大,所以本文选择映入蒸馏来获得一个相对较小的模型。基本类别转化成文本送入Pre-trained Text Encoder产生text embeddings,将region embeddings和text embeddings进行点积然后softmax归一化,监督信号是对应类别位置1,其余位置为0。
在推理阶段,首先将基本类别和新增类别转化成文本送入Pre-trained Text Encoder产生text embeddings(分别为绿色和蓝色部分),同时通过Mask R-CNN产生类别无关的region embeddings,然后将region embeddings和text embeddings进行点积然后softmax归一化,新增类别(蓝色部分)取最大值的类别为该区域的预测结果。
其中proposal特征的提取是通过用CLIP的模型进行蒸馏学习到的,如下图最右侧所示:
proposal经过head来得到proposal在多模态空间中的特征,其中ViLD-text是在文本模态上,使得proposal的特征逼近文本类别标签的多模态空间特征;而ViLD-image是在视觉模态上,使得proposal的特征逼近用proposal裁剪下的图片送入CLIP之后得到的多模态空间特征。
文本嵌入作为分类器(ViLD-文本):我们使用 CLIP 生成的文本嵌入评估 ViLD-文本,并将其与 (大型纯文本语料库)GloVe 文本embedding中对比。表 3 显示 ViLD-text 达到 10.1 APr,这显着使用 GloVe 优于 3.0 APr。这证明了使用文本嵌入的重要性 与图像联合训练。与 CLIP 相比,ViLD 文本实现了更高的 APc 和 APf裁剪区域,因为 ViLD 文本使用 CB 中的注释来对齐区域嵌入带有文本嵌入。APr 更糟,表明在 LVIS 中仅使用 866 个碱基类别确实不像 CLIP 那样泛化到新类别。
蒸馏图像embedding(ViLD-image):我们评估 ViLD-image,它从裁剪区域提案的图像嵌入,由 CLIP 的图像编码器推断,蒸馏权重为 1.0。实验表明,结合客观性的表现对其他方面没有帮助ViLD 的变体提高性能,所以我们只将它应用于 ViLD-image。在没有使用任何对象类别标签进行训练的情况下,ViLD-image的APr达到了11.2 APr ,而整体 AP的达到了11.5。这表明视觉蒸馏有效用于开放词汇检测,但在裁剪区域上的性能不如CLIP。
文本+视觉embedding (ViLD):ViLD 显示了使用文本嵌入 (ViLD-text) 将蒸馏损失 (ViLDimage) 与分类损失相结合的好处。我们在附录表 7 中探索了不同的超参数设置,并观察到两个AP之前存在trade-off,这表明 ViLD-text 和 ViLD-image 之间存在竞争。在上表中,我们比较ViLD 与其他方法。它的 APr 比 ViLD-text 高 6.0,比 ViLD-image 高 4.9,这一实验结果表明结合这两个学习目标可以提高新类别的表现。ViLD优于 Supervised-RFS 3.8 APr,表明我们的开放式词汇检测方法在尾部较少的类别,优于其他的全监督模型。
个人觉得这是open vocabulary object detection迈出的非常重要的一步。因为基于CLIP这样强大的预训练模型,才能使得object detection能够真正的面向open world。同时就结构来看,novel AP达到了27.6,相较于之前Zareian的方法,提高了将近五个点,也将这个领域的性能带到了新高度。
RegionCLIP: Region-based Language-Image Pretraining (CVPR 2022)
提出原因:CLIP在包括图像细粒度分类,OCR等分类下游任务表现优异,但在object detection这类recognize image region上表现比较差。这是存在domain shift:CLIP建立的是image-text pair,并不能准确定位图片上的region。而本文就是为了解决这个问题。本文提出了regionCLIP 通过建立region-text pair,并且在特征空间上对齐,来使模型在nlp的监督下,学习到region-level visual representation.
第一步:完成图像文本的预训练。利用CLIP预训练一个image-text level的 visual encoder和 language encoder。这里获得的visual encoder是作为teacher model的,作用是初始化和完成知识蒸馏;而由于模型的语言特征往往不会发生过大变换,所以language encoder在两个阶段中共享参数。
第二步,完成region-text pairs的构造。首先利用现成的从语言的预训练模型,从image-level的text中提取object性质的语料,把传统的label的pool转换成prompt 范式(cat→a photo of cat)。然后利用第一步中训练好的language encoder提取Semantic region representation。
训练的loss为:
就是文本图像对的对比学习加上image特征自己的对比学习,然后还有特征之间的distance这样更有注意分类。
实验结果来看:
相较于前文提到的OVR,从16.7提升到了35.2,相较于直接利用CLIP。也从22.5提升到了35.2。同时可以发现,如果采用RN50x4这种backbone,性能就可以提升到43.3,可见良好的特征提取还是对目标检测非常关键的。
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)