【多模态】23、RO-ViT | 基于 Transformer 的开发词汇目标检测(CVPR2023)

news2024/11/18 14:51:23

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 基础内容
      • 2.2 Region-aware Image-text Pretraining
      • 2.3 Open-vocabulary Detector Finetuning
    • 三、效果
      • 3.1 细节
      • 3.2 开放词汇目标检测效果
      • 3.3 Image-text retrieval
      • 3.4 Transfer object detection
      • 3.5 消融实验

论文:Region-Aware Pretraining for Open-Vocabulary Object Detection with Vision Transformers

代码:暂无

出处:CVPR2023

贡献:

  • 本文提出的 RO-ViT 解决了 image-text pretraining 到 open-vocabulary object finetuning 之间的 positional embedding 问题
  • 证明了 image-text pretraining 使用 focal loss 比 CE loss 更好
  • 使用 novel object proposals 提高了开放词汇目标检测 fine-tuning 效果
  • 在 LVIS 上得到 SOTA 32.4 APr,超越了当前最好的方法 6.1 APr

一、背景

近期,open-vocabulary detection task (OVD) 得到了很多关注,其被提出是为了解决传统目标检测的限制性,开放词汇目标检测最大的特点是将类别看做 text embedding,而不是离散的 id,所以,开放词汇目标检测能够更灵活的预测在训练过程中没见过的类别。

现有的很多方法是使用大量的 image-text pairs 来进行预训练,为模型引入丰富的语义信息,很多方法用的是 CNN,但随着对图像理解的更强的需求和多模态任务的出现,使用 vision transformer 来实现也很重要

我们已知现有的方法很多都是使用预训练好的 vision-language model,然后再微调一下来解决 image-level 预训练和 object-level fine-tuning 之间的 gap

本文提出了 RO-ViT,将预训练好的 vision transformer 迁移到 region-aware 上来实现开放词汇的目标检测

本文和前面的方法最大的不同在于,本文作者探索了如何更好的使用 vision transformer 来预训练 VLMs,更好的适用于开放词汇检测

然后使用预训练的权重来初始化检测器的 backbone,将 backbone 冻住后训练检测器的 neck 和 head 等特殊部件

二、方法

在这里插入图片描述

2.1 基础内容

1、contrastive image-text pretraining

一般的对比学习都是 two-tower 的结构,由 image encoder 和 text encoder 构成

  • image encoder:可以是 CNN 或者 ViT 的
  • text encoer:一般是 transformer 的

对比学习的目标是在 embedding space 中,将一对儿的 image-text 距离拉近,非一对儿的 image-text 距离拉远

一般使用的 loss 是 softmax CE loss

2、开放词汇目标检测

使用基础类别训练,但是测试的时候需要同时能够检测基础类别和新类别

一般的方法就是将原本的固定尺寸的全连接分类器使用 text embedding 来替换,因为 text embedding 来自于预训练的 text encoder 中,所以预训练中的开放语义知识能很好的保留

作者对于 background 类别使用 “background” 词汇来作为类别词汇

训练过程中,作者会给每个 region r r r 计算对应的 detection score p i p_i pi,计算方法是计算 RoI-Align feature(region embedding)和基础类别的 text embedding 的 cosine similarity,然后使用 softmax 规范化

在测试过程中,text embedding 扩展到了基础类别和新类别的 embedding,并且加上了 background,在 ViT backbone的输出 feature map 上使用 RoI-Align 来获得region i i i 的 VLM embedding,并且计算这个区域 embedding 和 text embedding 的 cosine similarity,得到 region score z i z_i zi,detection score 计算如下, α , β ∈ [ 0 , 1 ] \alpha, \beta \in [0,1] α,β[0,1] 用了控制基础类别和新类别的 weights

作者使用预训练好的 ViT 模型来初始化 detector 的 backbone

2.2 Region-aware Image-text Pretraining

现有的 vision-language model 基本上都是使用整张图和 text 来进行匹配

然而,这种预训练没有考虑到 region-level 特征和 text token 之间的关系,而这种关系又对开发词汇目标检测很重要

所以,作者提出了一种新的 Cropped Positional Embedding(CPE)的方法来解决 image 和 region 之间的 gap,并且发现使用 focal loss 从难样本中挖掘很有益处

CPE:

  • transformer 中,positional embedding 是很重要的,能够保留每个元素的相对位置,这种信息对下游的识别和定位任务都很重要
  • 但现有的 contrastive pretraining 和 open-vocabulary detection fine-tuning 的 positional embedding 之间有一定的不对齐,pretraining 方法一般都在训练时对全图位置进行编码,在下游的任务也是使用全图的位置编码。但是 detection fine-tuning 中,需要将全图的位置编码泛化到 region 的编码

为了解决这个 gap,作者提出了 CPE,如图 2 所示:

  • 首先,对于 pretraining,将 positional embedding 从图像大小(224)上采样到检测任务大小(如 1024)
  • 然后,从上采样的 positional embedding 中随机 crop 一个 region 并 resize,来作为预训练时候的 image-level 的 positional embedding
  • 这样一来,就能让模型将图像看做从更大的未知图像中随机 crop 出的 region,而非一个整图,能更好的适应于下游检测任务

在这里插入图片描述

CPE 可视化:

  • 每个小格子是一个 patch 和其他 patches 的余弦相似度
  • 相近的 patches 有着更相似的位置编码

在这里插入图片描述

Focal loss:

作者认为更细致的控制 hard 样本的权重比使用 CE loss 更好

假设:

  • v i v_i vi l i l_i li 是归一化后的 image embedding 和 text embedding

  • Image-to-text(I2T)对比学习 loss 分别设置为 CE loss 和 Focal loss 来对比,公式如下

  • Text-to-image(T2I)对比学习 loss 和 I2T 的是对称的

    在这里插入图片描述

  • 总 loss 是两个 loss 之和

2.3 Open-vocabulary Detector Finetuning

虽然 backbone 可以使用预训练权重来初始化,但检测器的 neck 和 head 还是全新的

现有的方法一般不会对新类或未标注的类进行 proposal generation

但本文提出了一个新的生成 proposal 的方法,使用 localization quality-based objectness(如 centerness 等)来衡量 proposal 的得分,而不是使用 object-or-not 的二分类得分来衡量

OVD score: S i O V D = o i δ . s i O V D S_i^{OVD}=o_i^{\delta} .s_i^{OVD} SiOVD=oiδ.siOVD o i δ o_i^{\delta} oiδ 是预测的 objectness score

三、效果

3.1 细节

预训练:

  • 本文的 pretraining 是作者从头训练的,使用 ViT-B/16 和 ViT-L/16 来作为 image encoder
  • 输入图像大小为 224x224,patch size 为 16x16,共 14x14 个 positional embedding
  • 为了生成 CPE,作者首先将 positional embedding 插值到 64x64,然后随机 crop 一个 region(scale ratio 为 [0.1,1.0],aspect ration 为 [0.5, 2.0]),然后将 region crop resize 为 14x14,驾到 patch embedding 上
  • 在 ViT 最后一层使用 global average pooling 来得到 image embedding
  • text encoder 是 12 层的 transformer,最长的 text encoder 是 64
  • 数据集:LAION-2B [44]

下游检测的细节:

  • LVIS: iters = 46.1k,img size =1024,batch = 256,SGD weight decay 1e-4,lr 0.36,momentum=0.9
  • COCO:iters = 11.3k,img size =1024,batch = 128,SGD weight decay 1e-2,lr 0.02,momentum=0.9
  • 使用 CLIP prompt 模版,对每个类别的 text embedding 求平均
  • 在 RPN 阶段使用 OLN-RPN,使用 centerness 作为 objectness,每个位置上有一个 anchor,使用 IoU loss,RPN NMS 在训练时 threshold=0.7,测试时为 1.0

3.2 开放词汇目标检测效果

LVIS:

  • 使用基础类别训练,rare 类别作为新类来测试,测试了 3 次取了平均
  • APr 取得 32.4

在这里插入图片描述

COCO:

  • 使用 48 个基础类别训练,17 个新类测试

在这里插入图片描述

3.3 Image-text retrieval

zero-shot image-text retrieval on coco and Flickr30k

在这里插入图片描述

3.4 Transfer object detection

在这里插入图片描述

3.5 消融实验

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据课程D4——hadoop的YARN

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解YARN的概念和结构; ⚪ 掌握YARN的资源调度流程; ⚪ 了解Hadoop支持的资源调度器:FIFO、Capacity、Fair; ⚪ 掌握YA…

4090Ti被取消,NVIDIA还要推出新“甜品卡“

不知不觉距离 NVIDIA RTX 40 系显卡发布已快一年,4090 到 4060 从旗舰到甜品也都差不多了。 不过每个男孩子都想要的礼物 - RTX 4090 Ti ,至今仅在春晚发布。 从核心架构上来看,RTX 4090 上的 AD 102-300 也确实不是完全体。 仅拥有144组 S…

模拟一个一维排斥场

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A有6个1,B有4个1,比较迭代次数的顺序。 其中有12组数据 差值结构 迭代次数 全0行 位置 构造平均列 平均列 列排斥能 …

手机照片转换成pdf怎么做?了解这几种方法就可以了

手机照片转换成pdf怎么做?转换照片为PDF的需求在日常生活中很常见。无论是收集有关旅行、家庭或工作的照片,将它们组织成一个PDF文件可以更方便地分享给朋友或同事。那么下面就给大家分享几个手机照片转换成pdf的方法。 虽然有多种软件和工具可以将照片转…

八大排序算法--直接插入排序(动图理解)

目录 直接插入排序 概念 算法思路 动画演示 代码如下 复杂度分析 时间复杂度测试 运行结果 完整代码 创作不易,如果本篇博客对您有一定的帮助,大家记得留言点赞哦。 直接插入排序 概念 直接插入排序是插入排序的一种。把待排序的数字按大小逐个插…

【SpringBoot】笔记2

文章目录 45、web实验-抽取公共页面46、web实验-遍历数据与页面bug修改47、视图解析-【源码分析】-视图解析器与视图[暂时没看]48、拦截器-登录检查与静态资源放行49、拦截器-【源码分析】-拦截器的执行时机和原理50、文件上传-单文件与多文件上传的使用51、文件上传-【源码流程…

jQuery如何获取动态添加的元素

jQuery如何获取动态添加的元素 使用 on()方法 本质上使用了事件委派,将事件委派在父元素身上 自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品,但是由于on()方法必须有事件,没有事件时可选择de…

elasticsearch 官方优化建议

.一般建议 a.不要返回过大的结果集。这个建议对一般数据库都是适用的,如果要获取大量结果,可以使用search_after api,或者scroll (新版本中已经不推荐)。 b.避免大的文档。 2. 如何提高索引速度 a.使用批量请求。为了…

HCIP中期考试实验

考试需求 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中,运行OSPF协议或者BGP…

Java -接口

接口 基本介绍 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。 class 类名 implements 接口{自己属性;自己方法;必须实现的接口的抽象方法; // 只需要重写抽象方法即可 }接口中的方法…

【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,Coding Everywhere

【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,随时随地写代码! 写在最前视频讲解:Cloud Studio活动简介何为腾讯云 Cloud Studio?Cloud Studio简介免费试用,上手无忧Cloud Studio 特点及优势云端开发多种预制环境可选metawo…

C# 定时器改进版

一、概述 前不久写了一篇名为 “C# 定时器封装版” 的帖子,它是用的定时器 事件订阅 的方式完成的,虽然可以实现需求,但是它有个缺点,就是定时器的执行的间隔时间只能用固定的时间,假设你想每个事件有自己的单独间隔…

HEVC 速率控制(码控)介绍

视频编码速率控制 速率控制: 通过选择一系列编码参数,使得视频编码后的比特率满足所有需要的速率限制,并且使得编码失真尽量小。速率控制属于率失真优化的范畴,速率控制算法的重点是确定与速率相关的量化参数(Quantiz…

医学影像PACS系统源码:多功能服务器和阅片系统

PACS系统是以最新的IT技术为基础,遵循医疗卫生行业IHE/DICOM3.0和HL7标准,开发的多功能服务器和阅片系统。通过简单高性能的阅片功能,支持繁忙时的影像诊断业务,拥有保存影像的院内Web传输及离线影像等功能,同时具有备…

Python中的列表怎么排序

目录 Python中的列表是什么 python怎么给列表排序 给列表排序需要注意什么 总结 Python中的列表是什么 在Python中,列表(List)是一种有序且可变的数据类型。它允许存储多个元素,并且可以根据需要进行修改。 列表使用方括号&…

自定义类型讲解

💕痛苦难道是白忍受的吗?💕 作者:Mylvzi 文章主要内容:自定义类型讲解 一.结构体 定义: 数组:多组相同类型元素的集合 结构体:多组不同类型元素的集合-->管理多组不同类型数据…

大家做性能测试都用什么工具

在进行测试时,选择适合的测试工具至关重要,因为优秀的测试工具能够显著提高工作效率。对于性能测试和自动化测试而言,大多数人会选择传统的JMeter等工具,然而这些工具存在学习成本高、使用门槛高的问题。 因此,我在这…

微信小程序开发学习之--地图绘制行政区域图

不知道大家有没有感觉就是在做微信小程序地图功能时刚刚接触时候真的感觉好迷茫呀,文档看不懂,资料找不到,就很难受呀,比如我现在的功能就想想绘制出一个区域的轮廓图,主要是为了显眼,效果图如下&#xff1…

官方Office 技巧免费学习平台-WPS学堂

WPS学堂是WPS官方Office 技巧免费学习平台,目前网站累计上线 3000个免费教学视频图文,包含WPS表格(Excel)、WPS文字(Word)、WPS演示(PPT)的操作技巧及新手入门系列课视频,而且教学视频都可以直接在线学习,不…

14.2 【Linux】软件磁盘阵列(Software RAID)

14.2.1 什么是 RAID 磁盘阵列全名是“ Redundant Arrays of Inexpensive Disks, RAID ”,英翻中的意思是:容错式廉价磁盘阵列。 RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备&…