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

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 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 消融实验

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何解决电脑无声问题:排除故障的几种常见方法

大家好,今天我们来讨论一下处理电脑没有声音的故障。当你突然发现电脑静音无声时,需要逐步排除可能的问题,但总体而言,声音故障是相对容易解决的。接下来,我们将介绍一些排除电脑无声问题的方法。 第一步:…

使用 FastGPT 构建高质量 AI 知识库

作者:余金隆。FastGPT 项目作者,Sealos 项目前端负责人,前 Shopee 前端开发工程师 FastGPT 项目地址:https://github.com/labring/FastGPT/ 引言 自从去年 12 月 ChatGPT 发布以来,带动了一轮新的交互应用革命。尤其在…

安卓:BottomNavigationBar——底部导航栏控件

目录 一、BottomNavigationBar介绍 二、BottomNavigationBar的常用方法及其常用类 (一)、常用方法 1. 添加菜单项 2. 移除菜单项 3. 设置选中监听器 4. 设置当前选中项 5. 设置徽章 6. 样式和颜色定制 7. 动画效果 8. 隐藏底部导航栏。 9、设…

windows物理机 上安装centos ,ubuntu,等多个操作系统的要点

一、摘要 一般情况下,我们的笔记本或工作电脑都默认安装windows 分几个区,当下是win7 win8 win 10 win11 等,突然我们有需求需要安装个centos ,后面我们应当怎么做,要点是什么?一定要根据网上的贴子一步步来…

【Golang 接口自动化00】为什么要用Golang做自动化?

目录 为什么使用Golang做自动化 最终想实现的效果 怎么做? 写在后面 资料获取方法 为什么使用Golang做自动化 顺应公司的趋势学习了Golang之后,因为没有太多时间和项目来实践,怕止步于此、步Java缺少练习遗忘殆尽的后尘,决定…

【iOS】json数据解析以及简单的网络数据请求

文章目录 前言一、json数据解析二、简单的网络数据请求三、实现访问API得到网络数据总结 前言 近期写完了暑假最后一个任务——天气预报,在里面用到了简单的网络数据请求以及json数据的解析,特此记录博客总结 一、json数据解析 JSON是一种轻量级的数据…

vulnhub靶机Empire_LupinOne

下载地址:https://www.vulnhub.com/entry/empire-lupinone,750/ 主机发现 arp-scan -l nmap --min-rate 10000 -p- 192.168.21.137 nmap -sV -sT -O -p22,80 192.168.21.137 nmap --scriptvuln -p22,80 192.168.21.137 先看一下网页 啥也没有 先看一下nmap扫出来的…

10.物联网操作系统之低功耗管理

一。低功耗管理概念及其应用 1.STM32低功耗设计详解 STM32的电源管理系统主要分为: 备份域 调压器供电电路 ADC电源电路 2.低功耗模式 1.运行模式 2.睡眠模式 3.停机模式 4.待机模式 (1)睡眠模式 在睡眠模式中,仅关闭了内核时钟&…

带你简单认识淘宝 API 接口,API接口适用场景和业务类型

淘宝 API 接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范。通过开放接口,开发者可以不改变现有系统,直接在原有系统上实现新功能。该规范于 2007 年发布,是目前业界唯一完整覆盖电商系统各相关业务领域的接口标准…

Flutter运行app时向logcat输出当前打开的界面路径且点击可跳转

当一个项目大了目录文件多了,我们往往会为了找到一个文件花费大量的时间和精力,为了快捷方便的调试我们的项目,我们往往需要在打开app运行的时候需要知道当前打开的界面的文件在哪儿,我们这个代码就能快捷的知道我们app正在打开的…

iTOP-RK3568开发板Windows 安装 RKTool 驱动

在烧写镜像之前首先需要安装 RKTool 驱动。 RKTool 驱动在网盘资料“iTOP-3568 开发板\01_【iTOP-RK3568 开发板】基础资料 \02_iTOP-RK3568 开发板烧写工具及驱动”路径下。 驱动如下图所示: 解压缩后,进入文件夹,如下图所示:…

电缆故障综合测试仪

一、电缆故障查找仪产品简介 本产品用于地埋电缆故障点的快速、企业产品免费信息发布平台定位、电缆埋设路径及埋设深度的电子商务测(在故障点处获取深度)。 主要特点 1、用特殊结构的声波振动传感器及低噪声专用器件作前置放大,提高了仪器定…

性价比高的学生用台灯 盘点性价比高的学生护眼台灯

护眼台灯在这些年来已经逐渐淘汰掉了传统的灯泡台灯,和大部分普通台灯,成为现在许多孩子学习桌上的一员。但仍然有不少人对护眼台灯提出质疑,也有不少人仍在观望。原因当然不是被价格劝退,而是听闻了市面上的护眼台灯伤眼的案例&a…

SAN共享存储架构

SAN共享存储架构 概述 近年在高性能专用存储网络需求的驱使下,许多SAN存储系统应用于高性能计算网络系统、大型网站系统、非线性编辑系统等网络系统中,存储设备与计算机主机系统之间一对一的关系,被可供多个计算机主机共享读写同一个存储设…

Nacos 抽取公共配置

文章目录 创建一个公共配置文件其他配置文件引用springboot配置文件 创建一个公共配置文件 其他配置文件引用 ${变量} springboot配置文件 spring:cloud:nacos:discovery:server-addr: current.ip:8848namespace: word_register_proconfig:server-addr: current.ip:8848auto-r…

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 Python代码实现

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 1 题目 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护, 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况,如抑郁、焦虑、压力等…

算法通过村第二关-链表白银笔记|指定区间反转

文章目录 前言链表反转|指定区间内头插法:穿针引线法: 总结 前言 提示:人啊,果然跟花一样,开花前的等待无比漫长,绽放的魅力却转瞬即逝。 链表反转|指定区间内 参考题目:92. 反转链表 II - 力…

【Apollo学习笔记】—— 相机仿真

文章目录 前言相关代码整理 测试实践文件目录包管理BUILD文件以及cyberfile.xml文件源程序BUILD运行结果其他参考CameraOutput channels启动camera驱动启动camera video compression驱动 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0…

Redis 6.0的新特性:多线程、客户端缓存与安全

2020年5月份,6.0版本。 面向网络处理的多IO线程可以提高网络请求处理的速度,而客户端缓存可以让应用直接在客户端本地读取数据,这两个特性可以提升Redis的性能。 细粒度权限控制让Redis可以按照命令粒度控制不同用户的访问权限,…

云服务器SVN仓库搭建(以阿里云为例)

远程连接阿里云服务器 安装svn(注意需要root权限使用命令sudo su) yum install subversion 安装成功后查看svn版本 svnserve --version 创建版本库的根目录 mkdir /var/svn 创建代码仓库 svnadmin create /var/svn/test 当前生成的目录结构 此处为svn的配置文件 创建用户名…