Open-Vocabulary Object Detection Using Captions论文讲解

news2024/11/18 1:48:11

文章目录

  • 一、论文前言
  • 二、提出原因
  • 三、论文的核心
  • 四、论文讲解
    • 4.1 论文流程
    • 4.2 OVD与之前相关的setting
    • 4.3 结果对比

一、论文前言

目标检测是人工智能最突出的应用之一,也是深度学习最成功的任务之一。

然而,尽管深度对象检测取得了巨大进步,例如 Faster R-CNN ,已经能取得非常不错的准确性,但训练此类模型需要昂贵且耗时的监督信号,他们都要靠人工标注获得。 特别是,需要为每个ROI的对象类别手动标注至少数千个边界框。 尽管之前很多机构已经完成了object detectionbenchmark的建立,并且公开了这些有价值的数据集,例如 Open Images和 MSCOCO,这些数据集描述了一些有限的对象类别。但如果我们想吧将目标检测从 600 个类别扩展到 60000 个类别,那么我们需要 100 倍数据资源的标注,这使得把目标检测拓展到开放世界里变得遥不可及。

然而,人类通过自然监督学会毫不费力地识别和定位物体,即探索视觉世界和倾听他人描述情况。我们人类具有终生学习的能力,我们捕捉到视觉信息后,会将它们与口语联系起来,从而产生了丰富的视觉和语义词汇,这些词汇不仅可以用于检测物体,而且可以用来拓展模型的表达能力。 尽管在对象周围绘制边界框不是人类自然学习的任务,但他们可以使用少量例子快速学习它,并将其很好地泛化到所有类型的对象,而不需要每个对象类的示例。这就是open vocabulary object detection这一问题的motivation所在。

在这里插入图片描述

二、提出原因

人类通过自然监督,即探索视觉世界和倾听他人描述情况,学会了毫不费力地识别和定位物体。

我们人类对视觉模式的终身学习,并将其与口语词汇联系起来,从而形成了丰富的视觉和语义词汇,不仅可以用于检测物体,还可以用于其他任务,如描述物体和推理其属性和可见性。

人类的这种学习模式为我们实现开放世界的目标检测提供了一个可以学习的角度。

open-vocabulary object detection的初衷就是利用大规模的image-caption数据来改善对未知类的检测能力。基于此,OVR-CNN是该领域的第一篇工作。

三、论文的核心

Open-Vocabulary Object Detection (OVD)可以翻译为面向开放词汇下的目标检测,该任务和zero-shot object detection非常类似,核心思想都是在可见类(base class)的数据上进行训练,然后完成对不可见类(unseen/ target)数据的识别和检测,除了核心思想类似外,很多论文其实对二者也没有进行很好的区分。

然而,在本文中,并不涉及对与zero-shot、OVD、以及semi-supervised目标检测之间的区别,主要是对现阶段OVD发展的工作进行串讲和总结。

该工作的核心主要是利用image-caption数据来对视觉编码器进行pre-training

由于caption中存在着丰富的对于图像区域等细粒度特征的描述单词和短语,能够覆盖更多的物体类别,因此经过大规模image-caption的预训练,Vision encoder便能够学习到更加泛化的视觉-语义对应空间。

因此训练好的vision encoder便可以用于替换faster-rcnn中encoder,提告检测模型的zero-shot检测能力。

四、论文讲解

4.1 论文流程

在这里插入图片描述

展开讨论预训练流程,整体的预训练流程有些类似于PixelBert,可参考如下:

  • 分别输入image和对应的caption,视觉编码器和文本编码器将分别提取特征
  • 在vision embedding和text embedding的基础上,利用V2L层对视觉embedding映射到文本embedding空间,构建grounding任务,计算对应图文对的grounding分数,然后利用对比学习拉近匹配对图文,推远非匹配对图文。这样利用word-region级别的grounding任务,实现丰富语义信息的学习
  • 后续利用Transformer模型进行多模态融合,同时构建下游MLM、ITM代理任务进行预训练

即总结如下:

第一步:学习的视觉与文本的联系。通过训练一个现象变换层来把视觉空间的特征转换到文本空间,来充当一个V2L(Vision to Language)的模块,负责把视觉特征变换到文本空间去。输入的image-captioning对首先经过各自模态的encoder,图像则是细分得到每个区域的特征,然后进一步经过V2L变换。之后,两个模态的特征concat起来之后送入多模态的Transformer,得到的输出是视觉区域特征以及文本特征。损失函数则是惩罚不匹配的但是相似度高的图像-文本对。如上图文本encoder是一个预训练好的BERT,这样模型具有泛化能力,而图像encoder是常用的resnet50。

第二步:利用常规的目标检测框架:Faster R-CNN,进行模型训练。为了保证延续性,backbone采用上一阶段中训练好的resnet50,每个proposal的特征经过V2L变换之后与类别标签的文本特征计算相似度来进行分类。事实上就是把回归问题转换成了分类问题。

第三步:把要检测的新类别加入文本的特征向量中做匹配。

一旦预训练结束后,trained vision encoder和trained V2L层,便可以替换至Faster RCNN框架中,通过在base数据集上进行finetune vision encoder,使其适配ROI区域特征,固定V2L层,保持其学习到的泛化的视觉-语义空间,即可进行target类别数据的检测。

整个模型的架构跟faster-rcnn几乎完全一样,只是将最后的cls head换成了v2l(也就是换成了一个将visual feature投影到word embedding space的投影矩阵),所以其实文章的核心就是在训练这个投影矩阵

4.2 OVD与之前相关的setting

在这里插入图片描述
作者还特地比了一下三种setting, OVD跟ZSD的区别应该就是在训练时,OVD可能会用到target类的embedding信息,当然可能只说这些embedding信息可能包含在一堆caption中, 谁也不知道里面有没有target信息,肯定不能给target类的bbox信息。而zero-shot完全没利用到,weakly supervised就更直接了,直接利用子集来训练,从而强化泛化能力。

4.3 结果对比

在这里插入图片描述

可以发现。相较于原有的zero-shot的detection,模型的泛化性能显然是更强的。

根据上表,其实我们可以发现,ZSD的检测效果差(map不高),主要原因,我认为就是对于没有任何未知类的例子经过训练,OVD 应该是会有部分未知类通过image-caption dataset 训练课得知,因此从现有基类的特征其实很难推出新类。WSD 定位效果不好, 我个人分析认为,他从没有注释的图片很难学习到特征,就很难像OVD那样通过image-caption那样,至少有图像和文本方向的特征,再通过基类的相关有注释框的图片学习,就能很好的定位。mixed supervision,其实同样存在上面的缺陷,在基类上进行训练,然后使用弱监督学习转移到目标类,这些方法通常会在基类上降低性能相反,Visual grounding和Vision-language transformers 就是来帮助解决作者的设想,通过 Vision-language transformers 可以提取 文本和图像的特征,Visual grounding 则就是根据这些特征进行定位。

同时我们也发现,利用这种用image-captioning pair模式训练出来的特征,其中每个类别的特征更加显著,如下图和zero-shot obejct detection的baseline的对比:
在这里插入图片描述

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

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

相关文章

MongoDB在银行海量历史订单交易数据查询中的应用(Spring boot + Bee)

MongoDB在银行海量历史订单交易数据查询中的应用(Spring boot Bee) 近年来,随着各种便捷支付方式的普及,银行账户交易数据呈现爆炸式增长,同时数据模型也在不断变化,传统关系型数据库已难以满足这种海量的、模式灵活、高可用、高性能的数据存储和查询需求。通过对银行历史交易…

【编程入门】应用市场(php版)

背景 前面已输出多个系列: 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目,使…

【MySQL】索引常见面试题

文章目录索引常见面试题什么是索引索引的分类什么时候需要 / 不需要创建索引?有什么优化索引的方法?从数据页的角度看B 树InnoDB是如何存储数据的?B 树是如何进行查询的?为什么MySQL采用B 树作为索引?怎样的索引的数…

033_SS_Inversion-Based Creativity Transfer with Diffusion Models

下载地址:Arxiv 2022.11.23 Code地址:https://github.com/zyxElsa/creativity-transfer 1. Introduction Motivations 以前的任意示例引导的艺术图像生成方法(比如风格迁移)通常无法控制形状变化或传达语义元素。而预训练的text…

【Linux | ELK 8.2】搭建ELKB集群Ⅰ—— 实验环境说明和搭建Elasticsearch集群

目录1. 实验环境1.1 实验工具1.2 操作系统1.3 架构版本、IP地址规划与虚拟机配置要求1.4 拓扑图1.5 其他要求2. 实验步骤2.1 安装Elasticsearch(单节点)(1)检查系统jdk版本(2)下载elasticsearch&#xff08…

格式化串漏洞

格式化字符串漏洞本身并不算缓冲区溢出漏洞,这里作为比较典型的一类漏洞进行简单介绍。为了能够将字符串、变量、地址等数据按照指定格式输出,通常使用包含格式化控制符的常量字符串作为格式化串,然后指定用相应变量来代替格式化串中的格式化…

进程管理之基本概念

目录 关于进程的基本概念 进程描述符 查看进程 进程标识 进程的生命周期 僵尸进程、孤儿进程 写时拷贝技术 fork()函数 vfork()函数 终止进程 进程优先级和权重 进程地址空间 关于进程的基本概念 进程和程序是操作系统领域的两个重要的概念,进程是执行…

LeetCode 145. 二叉树的中序遍历

LeetCode 145. 二叉树的中序遍历 难度:easy\color{Green}{easy}easy 题目描述 给你一棵二叉树的根节点 rootrootroot ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1]示例 2&#xff1a…

mitmproxy使用总结

mitmproxy is a free and open source interactive HTTPS proxy. 这官网上的一句话说明mitmproxy的身份,MITM 即中间人攻击(Man-in-the-middle attack),与charles、fidder之类的抓包工具不同的是可以增加一些自定义处理的扩展脚本…

aws appmesh 在ec2上部署和使用appmesh

参考资料 Getting started with AWS App Mesh and Amazon EC2 之前的文章中我们已经介绍了aws的服务网格场频appmesh,并且在eks环境中进行了部署和简单功能的测试。由于eks环境较为复杂,本文在ec2环境下手动配置appmesh网格环境 需求: 两个…

【Spring 基础】

【Spring 基础】 一、 Spring 介绍 1. 简述 Spring 技术是 JavaEE 开发必备技能,企业开发技术选型专业角度 简化开发,降低企业级开发的复杂性 IoCAOP 事务处理 框架整合,高效整合其他技术,提高企业级应用开发与运行效率 MyBat…

Linux内核中的软中断、tasklet和工作队列

软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,…

5M240ZT144C5N【CPLD】5M240ZT144I5N,5M570ZT100I5N满足低功耗设计

MAX V设备系列的特点:低成本、低功耗、非易失性CPLD架构即时启动(0.5 ms或更短)配置时间待机电流低至25A,快速下电/复位操作快速传播延迟和时钟到输出时间内部振荡器模拟RSDS输出支持,数据速率高达200 Mbps模拟LVDS输出支持,数据速…

手把手教你做微信公众号

手把手教你做微信公众号 微信公众号可以通过注册的方式来建立。 1.进入微信公众平台 首先,在浏览器中搜索微信公众号,网页第一个就是,如下图所示,我们点进去。 2.注册微信平台账号 进入官网之后,如下图所示&#…

day53【代码随想录】单调栈之每日温度、下一个更大元素 I、下一个更大元素 II

文章目录前言一、每日温度(力扣739)二、下一个更大元素 I(力扣496)三、下一个更大元素 II(力扣503)【环形数组】思路一思路二前言 单调栈:栈内元素保证递增或递减的 1、每日温度 2、下一个更大…

“AI板块凉了”说法有失公允?AI板块CNTM其发展的关键!

今年区块链所有的建设都围绕着以太坊,存储板块开年也是火爆了一把,龙头FIL更是一路前行,短期虽有回落但热度依然在,后期市场热度还是会给到存储,未来可期。目前市场上新出一个区块链覆盖多个赛道的项目——Filswan和AI…

Hive的视图与索引

Hive的视图其实是一个虚表,视图可以允许保存一个查询,并像对待表一样对这个查询进行操作,视图是一个逻辑结构,并不会存储数据。 Hive中的索引只有有限的功能,Hive中没有主键和外键的概念,可以通过对一些字段…

【CS224W】(task6)Google的PageRank算法

note 求解pagerank:用power iteration(幂迭代)方法求解 rM⋅r\mathbf{r}\mathbf{M} \cdot \mathbf{r}rM⋅r ( MMM 是重要度矩阵)用random uniform teleporation解决dead-ends(自己指向自己)和spider-traps&#xff08…

Linear()全连接层+矩阵原理

Linear()全连接层矩阵原理) Linear()全连接层矩阵原理 Linear()参数 原文地址:https://blog.csdn.net/horizonwys/article/details/125933921 。 矩阵原理 在 NLP中 x 一般为一行 故 *linear()中输出为 x W x的维度为 (tok…

二叉树—— 二叉搜索树中的搜索

二叉搜索树中的搜索 链接 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3], val…