Simple Open-Vocabulary Object Detection with Vision Transformers

Paper name

Simple Open-Vocabulary Object Detection with Vision Transformers

Paper Reading Note

URL: https://arxiv.org/abs/2205.06230
DEMO: https://huggingface.co/spaces/adirik/OWL-ViT

TL;DR

  • 2022 谷歌发表的 ECCV 文章,支持 Open-Vocabulary Object Detection 和 one-shot detection,在相关数据集上取得 SOTA 效果。采用大规模图像文本预训练,然后迁移到 open-vocabulary detection 任务中,并基于大量实验分析了模型架构、预训练等因素与最终 open-vocabulary detection 精度的关系

Introduction

背景

  • 检测模型通常仅限于一组小的固定语义类别,因为使用大的或开放的标签空间获取本地化的训练数据既昂贵又耗时。随着强大的语言编码器和对比图像文本训练的发展,这一点发生了变化。通过利用大量的图像文本数据,对比训练在 zero-shot 分类性能和其他基于语言的任务方面取得了重大改进
  • 最近的许多工作旨在将这些模型的语言能力转移到目标检测中。例如,这些方法对图像作物的嵌入使用蒸馏,图像级标签的弱监督,或 self-training。
  • 本文提供了一种简单的结构和端到端的训练方法,即使在训练训练中没有看到的类别上,也可以在没有上述方法的情况下实现强大的开放词汇检测

本文方案

在这里插入图片描述

  • 整体流程如上图所示
    • 使用 ViT,在大的图像文本对数据集上进行对比学习 pre-train。删除了最后的 token pooling layer,而将轻量级分类和 bbox 预测投附加到每个 transformer 的输出 token 上
    • 通过用从文本模型获得的类名 embedding 替换固定的分类层权重来实现开放词汇分类
    • 使用二分匹配损失在标准检测数据集上微调预训练模型
  • 基于该模型结构也能做 one-shot detection,基于 imagederived embeddings 做 querying。image-conditioned one-shot 功能是文本条件检测的一个强大扩展,因为它允许检测难以通过文本描述的对象(但很容易在图像中捕捉),例如专门的技术部件
    • 尽管使用了一种非专门针对该问题的通用体系结构,但本文将对隐形COCO类别(在训练期间进行)的 one-shot 检测的技术水平从 26.0提高到 41.8 AP50,提高了72%
  • 对于开放词汇文本条件检测,本文模型在 LVIS 数据集上实现了 34.6% 的总体 AP 和 31.2% 的未发现类 AP

Dataset/Algorithm/Model/Experiment Detail

实现方式

模型设计
  • 基于之前图片描述的模型结构,基本类似 DETR (通过移除解码器来简化)
    • 预测对象的最大数量等于图像编码器的 token 数量(序列长度),这在实践中不是一个瓶颈,因为模型的序列长度至少为 576(ViT-B/32,输入大小为768×768),这大于当今数据集中的最大实例数(例如,LVIS的294个实例)
    • 通过小 MLP 传递 token 表示来获得框坐标
  • Open-vocabulary object detection
    • 对于检测到的对象的开放词汇分类,我们遵循先前的工作,在分类头的输出层中使用文本嵌入,而不是 Zero-Shot Object Detection 中的学习类嵌入设计
    • text embeddings (这里称为查询) 通过文本编码器传递类别名称或其他文本对象描述获得
    • 每个查询都由一个单独的 token 序列组成,该序列表示单独的对象描述,并由文本编码器单独处理
    • 架构不包括图像和文本编码器之间的融合。尽管早期融合在直觉上似乎是有益的,但它大大降低了推理效率,因为对查询进行编码需要对整个图像模型进行前向传递,并且需要对每个图像/查询组合进行重复
  • 本文的设置中,可以独立于图像来计算查询嵌入,从而允许对每个图像使用数千个查询,这比早期融合所能实现的更多
  • One- or Few-Shot Transfer
    • 由于 image 和 text encoder 没有 fusion 步骤,可以将文本的查询改为图片目标的 embedding
Training
  • Image-Level Contrastive Pre-Training
    • 使用 LiT 的数据集和 loss
    • 优点是模型的大部分参数能收到预训练的好处,检测专用头最多包含1.1%(取决于模型大小)的模型参数
  • Training the Detector
    • 模型的检测训练过程几乎与封闭词汇检测器的相同,只是本文为每个图像提供了一组对象类别名称作为查询。因此,分类头在由查询定义的每个图像标签空间上输出逻辑,而不是在固定的全局标签空间上
    • 基于 DETR 中的二分匹配 loss 进行训练,但将其调整为长尾/开放词汇检测
      • 由于对检测数据集进行详尽标注所需的工作量大,这里将具有大量类的数据集以联合方式进行整合,比如 LVIS/Open Images
      • 这样的数据集具有非连续的标签空间,这意味着每个对象可以有多个标签。因此,使用 focal sigmoid cross-entropy 替换 softmax cross-entropy 作为分类损失
      • 此外,由于并非所有对象类别都在每个图像中进行注释,联合数据集为每个图像提供了正(存在)和负(已知不存在)注释。在训练过程中,对于给定的图像,使用其所有的正负注释作为查询
      • 此外,我们根据数据中的类别频率随机抽样,并将它们作为“伪负样本”添加,以使每张图像至少有50张负片
  • 仍然需要经过仔细调整的正则化和数据扩充才能表现良好

实验结果

Open-Vocabulary Detection Performance
  • LVIS 精度,使用 LVIS v1.0 val 作为评测集。对于评估过程,使用所有类别名称作为每个图像的查询。取得 SOTA 效果
    在这里插入图片描述
Few-Shot Image-Conditioned Detection Performance
  • Unseen 类别涨点幅度很大
    在这里插入图片描述- 可视化效果
    在这里插入图片描述
Scaling of Image-Level Pre-Training
  • 以下左图:讨论图像级预训练通常如何转移到检测,下图展示了图像级性能(zero-shot ImageNet精度)和对象级性能(zero-shot LVIS 精度)之间的关系。虽然最好的对象级模型通常也具有良好的图像级性能,但相反的情况并非如此:许多在图像级任务中表现良好的模型很难转移到检测中。换言之,高图像级性能对于强转移到检测是必要的,但还不够。
  • 以下右图:讨论什么因素能促进更好的迁移。之前的分类工作发现,预训练数据集和模型大小必须一起缩放,以实现最佳迁移,也就是在大数据上过度训练小模型甚至会导致性能降低。在检测任务这种效应更佳显著,随着预训练量的增加,检测性能首先提高,然后达到峰值,而图像级性能继续提高
    在这里插入图片描述
  • 不同模型架构的性能对比:对于小型模型,混合架构比纯 transformer 更有效。随着模型大小的增加(就检测推断FLOP而言),纯 ViTs 在总体和 zero-shot 性能方面都比混合型更好
    在这里插入图片描述
消融实验
  • 数据增广等很重要,数据预处理也很重要,大量数据集很重要
    在这里插入图片描述

Thoughts

  • 需要一定的检测数据集进行 finetune 实现物体定位
  • 文本和图片的 encoder 没有交互,主要是为了省计算资源,作者也认同有交互的话精度更高
### ViLD 方法及其在开放词汇对象检测中的应用 #### 背景介绍 开放词汇对象检测(Open-Vocabulary Object Detection, OVD)旨在通过利用大量未标注的数据和跨模态的知识,扩展传统目标检测器的能力,使其能够识别超出训练集中已知类别的新类别。这种方法的核心在于结合视觉和语言的信息,以增强模型对未知概念的理解能力。 #### ViLD 的核心机制 ViLD 是一种基于视觉与语言知识蒸馏的技术,用于解决开放词汇对象检测问题。它引入了两种主要的学习方式:文本嵌入学习(ViLD-text)和图像嵌入学习(ViLD-image)。这两种方法分别从不同角度优化模型的表现: - **文本嵌入学习(ViLD-text)**:该模块通过预先训练的语言模型提取语义特征,并将其作为指导信号融入到目标检测框架中[^1]。这种方式有助于捕捉更广泛的语义信息,特别是在处理新颖或少见的类别时表现出显著优势。 - **图像嵌入学习(ViLD-image)**:此部分依赖于大规模预训练的视觉表示,专注于提升模型对于具体视觉模式的认知精度。这种策略特别适合强化那些具有明显外观特性的物体检测效果[^2]。 上述两者的有机结合不仅实现了性能上的互补,而且有效缓解了单一路径可能带来的局限性——即当单独采用任一方向进行优化时所面临的 trade-off 问题[^3]。 #### 实验验证与成果展示 通过对多种评估指标下的对比分析发现,在实际应用场景下,融合后的 ViLD 方案相较于仅依靠文字提示或者单纯依赖图片理解的传统手段均展现出更高的准确性(APr)[^4]。尤其值得注意的是,相比完全受控环境下的标准监督学习模型(Supervised-RFS),即使是在面对稀少样本的小众分类项上,依然保持住了至少高出近四个百分点的整体效能增益水平。 此外,为了进一步挖掘潜在的最佳配置选项,研究人员还在附加材料里详尽探讨了一系列有关超参数调整的可能性方案表格(见附录表7)。这些努力最终促成了当前版本能够在多个公开测试集上面取得领先位置的好成绩。 ```python def vild_model(image_embeddings, text_embeddings): """ Simulates the combination process within a simplified version of VILD model. Args: image_embeddings (Tensor): Pre-trained embeddings from images. text_embeddings (Tensor): Pre-trained embeddings from texts. Returns: Tensor: Combined embedding after fusion step. """ combined_embedding = torch.cat((image_embeddings, text_embeddings), dim=1) output = nn.Linear(combined_embedding.size(-1), num_classes)(combined_embedding) return F.softmax(output, dim=-1) ``` 以上代码片段示意了一个简化版VILD架构如何将来自两个域的不同类型的输入结合起来形成最后预测概率分布的过程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值