[OVD]Open-Vocabulary Object Detection Using Captions(CVPR. 2021 oral)

2023-11-02

image-20210721221126495

1. Motivation

  • Despite the remarkable accuracy of deep neural networks in object detection, they are costly to train and scale due to supervision requirements.

  • Weakly supervised and zero-shot learning techniques have been explored to scale object detectors to more categories with less supervision, but they have not been as successful and widely adopted as supervised models.

  • To address the task of OVD, we propose a novel method based on Faster R-CNN [32], which is first pretrained on an image-caption dataset, and then fine-tuned on a bounding box dataset.

  • More specifically, we train a model that takes an image and detects any object within a given target vocabulary VT.

  • To train such a model, we use an image-caption dataset covering a large variety of words denoted as $V_C $as well as a much smaller dataset with localized object annotations from a set of base classes V B V_B VB.

2. Contribution

  • In this paper, we put forth a novel formulation of the object detection problem, namely open- vocabulary object detection, which is more general, more practical, and more effective than weakly supervised and zero-shot approaches.

  • Meanwhile, objects with bounding box annotation can be detected almost as accurately as supervised methods, which is significantly better than weakly supervised baselines.

  • Accordingly, we establish a new state ofthe art for scalable object detection.

  • We name this framework Open Vocabulary Object Detection(OVD).

3. Method

图3为OVR-CNN的framework,基于Faster R-CNN,但是是在zero-shot的形式上训练得到的目标检测器。

确切来说,用base classes V B V_B VB训练,用target classes V T V_T VT测试。

为了提升精度,本文的核心思想是通过一个更大的词汇库 V C V_C VC来预训练一个visual backbone,从而学习丰富的语义空间信息。

在第二个阶段中,使用训练好的ResNet以及V2L 2个模型来初始化Faster R-CNN,从而实现开放词汇的目标检测。

3.1. Learning a visual-semantic space Object

为了解决使用固定的embedding matrix替代classifier weights来训练pretrain base classes embedding而产生overfitting的问题,本文提出了V2L layer。使用的数据不只是base classes。

  • To prevent overfitting, we propose to learn the aforementioned Vision to Language (V2L) projection layer along with the CNN backbone during pretraining, where the data is not limited to a small set of base classes.

  • We use a main (grounding) task as well as a set of auxiliary self-supervision tasks to learn a robust CNN backbone and V2L layer.

作者使用PixelBERT,input为了image-caption,将image输入viusal backbone(ResNet-50),将caption输入language backbone(pretrained BERT),联合产生token embedding,然后将token embedding 输入到multi-model transformer中来提取multi-model embedding。

对于visual backbone,利用ResNet-50,提取输入I的特征,得到 W / 32 × H / 32 W/32 \times H/32 W/32×H/32的feature map,本文定义为 W / 32 × H / 32 W/32 \times H/32 W/32×H/32 regions,将每一个regions i用一个dv-dimension feature vector r i I r_i^I riI来表示。

利用lauguage backbone,利用BERT,将tokenized caption C作为input,为每一个token j 提取一个dl-dimension word embedding e J C e^C_J eJC,同时使用position embedding,self-attention等产生dl-dimensional contextualized token embedding f j C f_j^C fjC

同时,进一步利用V2L将 r i I r^I_i riI映射为 e i I e^I_i eiI,与 f j C f_j^C fjC 合并,送入transformer中,输入 { m i I } \{m_i^I\} {miI}以及 { m j C } \{m_j^C \} {mjC},分别对应着regions以及words。

对于每一个image-caption pair,本文定义了一个全局grounding score,如公式1所示:

其中 < . . , . . > L <..,..>_L <..,..>L表示两个vector的dot product, n c n_c nc以及 n I n_I nI表示image以及caption token的数量。

two grounding objective functions:

two grounding objective functions:

有几个细节,注意这里的 B C B_C BC以及 B I B_I BI表示的是image 和 caption的batch,而公式3中的 C ′ C' C对应公式1中的 C C C,公式3中的 I ′ I' I对应公式1中的 I I I。也就是说公式3中的 I ′ I' I指的是每一张图片,而公式1中的 e i I e^I_i eiI则是每一个image中的每一块region(类似于VIT中的patch)。

因此不同image和不同的caption就会存在一个max-min的操作,要最小化non-matching的 pair的得分,最大化match pair的得分。

与PxielBERT类似,引入masked language modeling。

  • Specifically, we randomly replace some words j in each caption C with a [MASK] token, and try to use the multimodal embedding of the masked token m j C m^C_j mjC to guess the word that was masked

  • We define masked language modeling L M L M L_{MLM} LMLM as a cross-entropy loss comparing the predicted distribution with the actual word that was masked

  • PixelBERT also em- ploys an image-text matching loss L I T M L_{ITM} LITM

总结,对于每一对image-caption pair,通过最小化公式5的loss,训练visual backbone, V2L backbone,multi-media transformer:

3.2 Learning open-vocabulary detection

如果ResNet以及V2L layer训练好后,第二阶段就可以将它们迁移到目标检测的任务中。接下来是使用ResNet的ste以及前三个block提取特征,使用RPN网络预测objectness以及bbox coordinate,最后使用ResNet的第四个block来对每一个proposal使用pooling操作,得到vector r i I r^I_i riI,在监督setting中送入分类器。

  • We use the stem and the first 3 blocks of our pretrained ResNet to extract a feature map from a given image.

  • Next, a region proposal network slides anchor boxes on the feature map to predict objectness scores and bounding box coordinates, followed by non-max suppression and region-of-interest pooling to get a feature map for each potential object.

  • Finally, following [32], the 4th block of our pretrained ResNet is applied on each proposal followed by pooling to get a final feature vector rI
    i for each proposal box, which is typically fed into a classifier in supervised settings.

如果是zero-shot setting中,在 visual feature r i I r_i^I riI应用一个线性层来将每一个proposal映射到每一个word space e i I e^I_i eiI,这样做的作用在于可以比较base以及targetr class embedding。在这里,作者使用之前pretrained V2L,由于使用了RoI-Align,因此vector 可以认为是和pretraining中一样,具有相同的space。

  • they can be compared to base or target class embeddings in the training or testing phase respectively

在训练中,将 e i I e^I_i eiI和base class k进行比较,得到分类得分p,如公式6所示:

其中 e k V e^V_k ekV是work k的pretrained embedding 。

  • We found that a fixed all-zero background embed- ding performs better than a trainable one as it does not push non-foreground bounding boxes, which may contain target classes, to an arbitrary region of the embedding space.
  • The ResNet parameters are finetuned, while the region proposal network and the regression head are trained from scratch.
  • The classifier head is fully fixed, as it consists of a pretrained V2L layer and word embeddings

4. Experiment

4.1 Compared with other methods

4.2 Ablation

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[OVD]Open-Vocabulary Object Detection Using Captions(CVPR. 2021 oral) 的相关文章

  • 运算放大器使用的六个经验

    文章目录 1 注意输入电压是否超限 2 不要在运放输出直接并接电容 3 不要在放大电路反馈回路并接电容 4 注意运放的输出摆幅 5 注意反馈回路的Layout 6 要重视电源滤波 2016 2017 小威 家 豫ICP备17018141号
  • Java web期末

    一 简答题 1 Servlet的体系结构 1 Servlet接口 规定了必须由Servlet类实现并且由Servlet引擎识别和管理的方法集 2 GenericServlet抽象类 提供了除service 方法之外其他有关Servlet生命
  • cpu的MMU

    MMU 内存管理单元 用于完成虚拟内存和物理内存的映射 位于CPU内部 我们知道 程序文件一般放在硬盘上 当把程序运行起来时 程序被放入内存中 通过内存放入cache 通过cache进入cpu 下图中预取器就是负责从cache取出指令 然后
  • H5 移动端 时间选择器

    本选择器 自己填充内容 li的文本 只是做了一个大概的样式 其它的有需要者自己去改
  • Ubuntu22.04密码忘记怎么办 Ubuntu重置root密码方法

    在Ubuntu 22 04 或其他更高版本上不小心忘记root或其他账户的密码怎么办 首先uname r查看当前系统正在使用的内核版本 记下来 前提 是你的本地电脑 有物理访问权限 其他如远程登录的不适用这套改密方法 通过以下步骤 无需输入
  • response.text和 response.content的区别:

    1 response content这个是直接从网络上面抓取的数据 没有经过任何解码 所以是一个 bytes类型 其实在硬盘上和在网络上传输的字符串都是 bytes类型 2 response text 这个是 requests 将 resp
  • 【数据结构】JavaScript栈实现

    栈是一种常见的数据结构 常用于app页面堆栈 括号匹配校验 中缀表达式转换 图的深度优先遍历等场景 本文参考java jdk源码 在JavaScript中实现这种数据结构 一 栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表 允许插入和

随机推荐

  • 浅谈招标投标活动中质疑及投诉问题

    http www docin com p 608989637 html
  • 【研一小白的白话理解】pytorch-CycleGAN-and-pix2pix

    pytorch CycleGAN and pix2pix 博客简述 项目整体理解 GAN Cycle GAN CGAN DCGAN Pix2pix Pix2pix简介 Auto encoder U net Pix2pix结构 项目结构 文件
  • 贪心—To Fill or Not to fill

    0x00 题目地址 To Fill or Not to Fill 牛客网 nowcoder com 0x01 分析 符合最优子结构 无后效性 重复子问题三个条件 因此可以使用贪心求解 先按照距离排序 将加油站排成一条线 算法每一步的思路 1
  • vue全局组件注册、局部组件注册、全局方法注册

    一 全局组件注册有两种方法 1 在main js文件中引入组件 import UserData from components UserData vue vue component UserData UserData 就可以直接在vue文件
  • STM32F103学习笔记(六

    实验六 七 独立和窗口看门狗实验 看门狗 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环 看门狗电路就是为了避免这种情况的发生 看门狗的作用就是在一定时间内 通过定时计数器实现 没有接收喂狗信号 表示 MCU 已经挂了 便实现处
  • js基础篇

    JavaScript语法 字面量 也叫直接量 就是程序中直接使用的 是变量后面的值 变量就是声明一个未知可变的量 变量声明符合unicode编码所有变量符合utf 8的编码都可以 标识符命名标准 1 必须是字母 数字 开头 2 以驼峰命名规
  • 手把手教你实操部署FISCO BCOS联盟链(附每一步代码)

    感谢FISCO BCOS社区贡献者 刘海锋 贡献此文 贡献无大小 分享永留传 谢谢你们的每一次贡献 最后 如果你也想成为Mr FISCO BCOS 一起干出点改变世界 到老了可以跟孙辈们吹吹牛的事 欢迎加入社区 经过尝试 我按以下操作顺序执
  • Spring框架远程命令执行复现(CVE-2022-22965)

    2022年3月30日 Spring框架曝出RCE 0day漏洞 国家信息安全漏洞共享平台 CNVD 已收录了Spring框架远程命令执行漏洞 CNVD 2022 23942 考虑到Spring框架的广泛应用 漏洞被评级为危险 通过该漏洞可写
  • 压测工具:jmeter

    衡量当前系统应对高并发的量 压测工具不能少 1 下载jmeter 进入官网 2 使用jmeter 进入bin目录 或者双击 2 1 添加测试计划 线程组的基本属性 2 2取样器 取样器是我们真正进行测试的内容 比如http ftp jdbc
  • 【项目经验】elementui--table表格自定义表头及bug

    一 思路 首先我们肯定得循环表头 我们原生js封装的表格的实现原理就是这样 其次我们要把自己循环的label显示出来 对应的prop也要和表格数据相对应 用div标签循环都会出现错误 div里面套column 大家不要踩坑 第一项会跑到最后
  • 23个可以免费学习编程的网站

    英文 https medium com javascript in plain english 22 ways to learn coding for free in 2021 87a9c171132c 翻译 web前端开发公众号 ID w
  • Vue2.0选中当前鼠标移入移除加样式

    本人写的小程序 功能还在完善中 欢迎扫一扫提出宝贵意见 效果如gif动态图所示 1 通过v for遍历数组 HTML代码 1
  • 基于亚博K210开发板——串口中断以及开启双核任务

    文章目录 开发板 实验目的 实验准备 硬件原理图 软件对应SDK 对应的头文件 uart h uart h接口函数 高速通用异步收发传输器 UARTHS 对应的头文件 uarths h uarths h接口函数 板级对应的头文件 bsp h
  • C++之xlsx文件操作之写操作

    采用xlsxwriter开源库的实现 声明如下 include xlsxwriter include xmlwriter h include xlsxwriter include workbook h include xlsxwriter
  • 微信小程序 返回上一页面时实现上一页面刷新

    假如从页面B返回页面A时实现页面A刷新 页面B var pages getCurrentPages 当前页面栈 if pages length gt 1 var beforePage pages pages length 2 获取上一个页面
  • vite+electron构建桌面版应用教程超简单

    目录 概述 快速开始 目录结构 Electron Vite Vue 整合模板 结构简单 容易上手 概述 开箱即用 支持 C C 模块 支持在渲染进程中使用 Electron Node js API 结构清晰 可塑性强 很容易实现多窗口 快速
  • Java assert断言

    格式 assert 返回boolean的语句 方法 如果boolean为true 程序继续执行 否则抛出AssertionError 继承于Error而非Exception 表达系统级运行错误 终止程序 因此assert可以定位bug as
  • MySql学习笔记——负载均衡(二十三)

    load balance 当存在多台服务器提供一个任务时 需要从其中选择一台用来完成当前任务 选择的算法就是负载均衡 在mysql中往往会采用一写多读架构 因为一般读操作往往多余写操作 还有就是写操作的同步是个问题 一写多读中 读服务器需要
  • CP343-1 扩展ProfibusCPU 314C-2DP

    1 MPI编程电缆连接PLC 设置接口为PC Adapter MPI 1 如下图所示 2 硬件组态插入组态 建立ethernet 网络 编译后下载 3 CP343 1安装上后 CPU run不起来 组态更新后即可 转载于 https www
  • [OVD]Open-Vocabulary Object Detection Using Captions(CVPR. 2021 oral)

    1 Motivation Despite the remarkable accuracy of deep neural networks in object detection they are costly to train and sc