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 没有交互,主要是为了省计算资源,作者也认同有交互的话精度更高
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 通过下载 youmi-vocabulary 背单词微信小程序的代码和相关资源文件后,我们可以直接进行设定和定制。 首先,我们可以打开代码文件,然后根据自己的需求对页面布局、颜色、字体等进行修改。如果想要增加新的功能或者修改现有功能,可以找到相应的代码文件进行编辑,如卡片的显示、单词的存储和读取等。 在设定过程中,我们可以对小程序的首页进行设置,比如添加背景图片、修改标题、调整按钮位置等。另外,我们还可以设定各个页面间的跳转关系,如单词卡片页面跳转到单词详情页面、单词详情页面跳转到例句页面等。对于每个页面的样式和交互,可以通过修改代码中的CSS样式和JavaScript代码来实现。 如果想要添加新的单词库或者词典,我们可以在资源文件中添加相应的文件,然后在代码中引用这些文件,以便在小程序中使用。同时,我们还可以根据需要对单词库进行编辑,如添加新的单词、修改释义或者例句等。 在完成设定后,我们可以运行小程序进行调试,检查是否有错误或者不符合预期的地方。如果发现问题,可以根据提示进行修改,直到满足我们的需求为止。 最后,将修改后的代码和资源文件上传到微信小程序开发者工具中,进行编译和发布,即可在微信中使用我们自己定制的 youmi-vocabulary 背单词微信小程序了。 ### 回答2: youmi-vocabulary 背单词微信小程序是一个用于帮助用户背单词的工具。用户只需要将代码及相关资源文件下载后,可以直接设定并使用该小程序。 首先,将代码及相关资源文件下载到本地。可以通过下载链接或者将代码拷贝到本地的方式进行下载。下载完成后,可以将代码放置在合适的位置。 接下来,设定该微信小程序。打开微信开发者工具,选择该项目所在的文件夹,即可进行设定。在设定过程中,可以配置小程序的基本信息、界面设计、功能模块等,以及与服务器的连接方式等。 一旦设定完成,就可以使用该小程序了。用户可以通过微信扫描小程序二维码,或者在微信搜索框中搜索小程序名称,进入小程序页面。在小程序页面上,用户可以进行单词背诵、词义理解、例句听写等功能。小程序会根据用户设定的英语水平、背诵计划等提供个性化的背单词内容和学习进度统计。 此外,youmi-vocabulary 还提供了一些其他功能,例如字典查询、记忆曲线、背单词游戏等,以提高用户的学习效果和学习兴趣。 总结来说,youmi-vocabulary 背单词微信小程序是一个方便用户背单词的工具。用户只需要下载代码及相关资源文件,并进行设定,就可以使用该小程序,并享受它提供的个性化背单词功能和其他学习辅助功能。 ### 回答3: youmi-vocabulary 背单词微信小程序是一个帮助用户背诵并记忆单词的工具。用户可以在微信小程序上下载该小程序的代码和相关资源文件,并进行设置,以便使用该小程序。 通过下载 youmi-vocabulary 背单词微信小程序的代码和资源文件,用户可以获得小程序的完整功能并进行自定义设置。这些代码和资源文件可能包括小程序的前端代码、后端代码、配置文件、图片等。用户可以根据自己的需求修改这些文件,例如更改小程序的界面样式、增加新的功能、调整单词库等。 在设定时,用户可以根据自己的需求进行个性化设置。例如,用户可以选择自己所需的单词库,根据自己的学习进度和水平设定背诵计划,并进行记忆方面的设置,如背单词的方式(英译汉、汉译英、听力等),记忆模式(选择题、填空题等),以及复习频率等。 通过设定,youmi-vocabulary 背单词微信小程序可以根据用户的需求和设置,在背诵单词的过程中提供个性化的学习体验。用户可以根据自己的设定,系统自动提供对应的背诵任务和学习资料,帮助用户高效、有序地记忆单词。同时,用户也可以根据自己的学习情况进行实时调整和优化设定,以达到最佳学习效果。 总之,通过下载 youmi-vocabulary 背单词微信小程序的代码和相关资源文件,并进行设定,用户可以个性化地使用这个小程序,高效记忆单词,提升自己的语言能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值