【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 主要过程
      • 2.2 Forming Bag of Regions
      • 2.3 Representing Bag of Regions
      • 2.4 Aligning bag of regions
    • 三、效果

论文:Aligning Bag of Regions for Open-Vocabulary Object Detection

代码:https://github.com/wusize/ovdet

出处:CVPR2023

一、背景

传统目标检测器只能识别特定的类别,开放词汇目标检测由于不受预训练类别的限制,能够检测任意类别的目标,而受到了很多关注

针对 OVD 问题的一个典型解决方案就是基于蒸馏的方法,也就是从预训练的 vision-language 模型中蒸馏出丰富的特征来识别丰富的类别

VLM 是通过大量的 image-text pairs 来学习将两者对齐,如图 1a 所示

之前也有很多蒸馏的方法通过将每个 region embedding 和对应的从 VLM 中输出的特征进行对齐

本文作者提出【align the embedding of BAg of RegiONs】,来让模型不仅仅理解单个的目标,而是理解场景

在这里插入图片描述

BARON 结构如图 1c 所示:

  • 首先,从 bag 中抽取出和上下文相关的 region,由于 RPN 是需要能够提取出潜在的新类的,所以作者提出了 “neighborhood sampling strategy” 来抽取 region proposal 周围的框来帮助建模出共现的语义 concept
  • 接着,BARON 通过将 region feature 投影到 word embedding space 得到 pseudo words,并且使用预训练好的 text encoder 来对这些 pseudo words 进行编码,得到一系列的 region embedding
  • 投影到 word 空间的 pseudo words,就能够让 Text encoder 很好的抽取出共现的语义概念,并且理解整个场景
  • 在送入 Text encoder 之前,为了保留 region box 的空间信息,会将 box shape 和 box center position 也投影到 embedding 中,驾到 pseudo word 上,然后再将 pseudo word 送入 Text encoder
  • 训练 BARON 时,目标是将 bag-of-regions 的 embedding 和从教师 image encoder (IE)那里获得的 image crop 的 embedding 对齐,作者使用对比学习机制来学习 pseudo words 和 bag-of-regions embeddings,对比学习 loss 能够拉近成对儿的 pairs 的 student(detector)和 teacher(IE)embedding ,推远不成对儿的 pairs

二、方法

在这里插入图片描述

本文方法首次提出了对齐 bag of regions 的 embedding,之前的方法都是对齐单个 region 的 embedding

2.1 主要过程

本文方法主要基于 Faster R-CNN,为了让 Faster RNN 能够检测出任意词汇概念的目标,作者使用了一个线下映射层将原本的分类器代替了

线性映射层能够将 region features 映射到 word embedding space(即 pseudo words,如图 2a),这些 pseudo words 包含了每个目标更丰富的语义信息,类似于每个类别的名字包含了更多的单词(如 horse-driven trolley)

之后,将这些 pseudo words 输入 text encoder,计算和每个类别编码的相似性,然后得到类别结果

如图 2a 所示,给定 C 个目标类别,通过将类别名称转变为 prompt 模版 ‘a photo of {} in the scene’,并输入到 text encoder T 中来获得 embedding f c f_c fc

假设有 region 和其对应的 pseudo words w w w,该 region 是类别 c 的概率如下, < , > <,> <,> 表示 cosine 相似度, τ \tau τ 是温度系数

在这里插入图片描述
训练期间,只标注了基础类别,且也是使用基础类别来训练 Faster R-CNN 的回归和分类 loss 的

为了学习检测新类别(且没有 box 标注信息),之前的蒸馏方法都是只对齐单个的 region embedding 和其对应的从 VLMs 得到的特征

本文的方法为了捕捉更多的信息,将单个的 region 扩展到了 bag of regions

2.2 Forming Bag of Regions

本文中,也和其他方法一样使用 VLM 中的 image encoder 作者 teacher,来指导检测器的学习

不同的是,作者希望检测器能学习多个 concepts 的共现管辖,尤其是新目标的潜在出现的概率

为了效果和效率共存,作者将有如下两个属性的 regions 归到一个 bag 中去:

  • 不同的 region 需要彼此距离接近
  • 不同的 region 大小要相同

基于上面两个条件,作者使用 simple neighborhood sampling strategy,基于 RPN 预测得到的 region proposal,来构建 bag of regions

对每个 region proposal,作者都选取了其周围的 8 个相邻的 box 来作为候选,如图 2b 所示,此外,作者也会允许这些候选框之间有重叠,即 specific Intersection over Foreground (IOF) 来提高区域表达的连续性

为了平衡 bag 中 region 的 size,作者让着 8 个候选框的形状完全相同,且和该 region proposal 的大小也相同

2.3 Representing Bag of Regions

收集到 bag of regions 后, BARON 会从 student 和 teacher 中分别得到 bag-of-regions embeddings

假设第 i 个 groups 的第 j 个 region 为 b j i b_j^i bji,且 pseudo words 为 w j i w_j^i wji,用 T 表示预训练 VLM 的 文本编码器,V 表示图像编码器

1、student bag-of-regions embedding

由于region features 被投影到 word embedding space 且要和 text embedding 对齐,一个很直接的方法就是将这一系列的 pseudo words 进行 concat,然后输入 text encoder T 中,但是这样的话 region 的空间信息就会丢失,所以,作者将 bag 中的 regions 的中心位置、形状 都被编码了

位置编码会被夹到 pseudo word 上,然后再 concat

最终表达如下:

在这里插入图片描述

2、Teacher bag-of-regions embedding

使用 image encoder V 可以得到教师网络的编码,image feature 如下:

在这里插入图片描述

2.4 Aligning bag of regions

BARON 会将 teacher 的预测和 student 的学习结果进行对齐

给定 G 个 bag-of-regions,alignment InfoNCE loss 如下:

在这里插入图片描述

对齐单个 region:

单个 region 的 student 和 teacher embedding 的对齐对整个 bag-of-regions 的对齐很重要

所以,作者使用 individual-level distillation:

  • teacher embedding:从 image encoder 的最后一个 attention 层使用 RoIAlign 获得
  • 从 text encoder 的最后一个 attention layer 获得,对同一个 region 的所有 pseudo-word embedding 进行平均
  • loss:使用 InfoNCE loss

三、效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

网络安全进阶学习第九课——SQL注入介绍

文章目录 一、什么是注入二、什么是SQL注入三、SQL注入产生的原因四、SQL注入的危害五、SQL注入在渗透中的利用1、绕过登录验证&#xff1a;使用万能密码登录网站后台等。2、获取敏感数据3、文件系统操作4、注册表操作5、执行系统命令 六、如何挖掘SQL注入1、SQL注入漏洞分类按…

LLaMA系列 | LLaMA和LLaMA-2精简总结

文章目录 1、LLaMA1.1、模型结构1.2、训练方式1.3、结论 2、LLaMA-22.1、相比LLaMA1的升级2.3、模型结构2.3.1、MHA, MQA, GQA区别与联系 2.4、训练方式 1、LLaMA &#x1f525; 纯基座语言模型 《LLaMA: Open and Efficient Foundation Language Models》&#xff1a;https:/…

大麦链接源码 大麦一键生成订单截图

8.4最新版源码 更新了大麦链接模版 更新了大麦订单截图一键生成 下载源码&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

Android 自定义按钮(可滑动、点击)

按钮图片素材 https://download.csdn.net/download/Lan_Se_Tian_Ma/88151085 px 和 dp 转换工具类&#xff08;Java&#xff09; // px 和 dp 转换工具类 public class DensityUtil {/*** 根据手机的分辨率从 dip 的单位 转成为 px(像素)*/public static int dip2px(Conte…

Excel技巧 - 管理规则设置一行变色

如何设置某一列单元格的值大于一个值时&#xff0c;该单元格所在的一整行都变色呢&#xff1f; 1、先框选内容区域&#xff0c;点击开始&#xff0c;条件格式&#xff0c;新建规则 2、如果销量大于20&#xff0c;则该行都变为绿色 编辑格式选择&#xff1a;使用公式确定要设置…

springboot第33集:nacos图

./startup.sh -m standalone Nacos是一个内部微服务组件&#xff0c;需要在可信的内部网络中运行&#xff0c;不可暴露在公网环境&#xff0c;防止带来安全风险。Nacos提供简单的鉴权实现&#xff0c;为防止业务错用的弱鉴权体系&#xff0c;不是防止恶意攻击的强鉴权体系。 鉴…

ChatGPT及其工作原理;OpenAI申请注册商标GPT-5,引发关注

&#x1f989; AI新闻 &#x1f680; OpenAI申请注册商标GPT-5&#xff0c;引发关注 摘要&#xff1a;OpenAI已在上月18日申请注册商标GPT-5&#xff0c;显示该模型将提供文本生成、自然语言理解、语音转录、翻译、分析等功能。此前OpenAI曾表示尚未开始训练GPT-4的后继者GPT…

在 React 中渲染大型数据集的 3 种方法

随着 Web 应用程序变得越来越复杂&#xff0c;我们需要找到有效的方法来优化性能和渲染大型数据集。在 React 应用程序中处理大型数据集时&#xff0c;一次呈现所有数据可能会导致性能不佳和加载时间变慢。 虚拟化是一种通过一次仅呈现数据集的一部分来解决此问题的技术&#…

I.MX6ULL_Linux_驱动篇(41)platform设备驱动框架

我们在前面几章编写的设备驱动都非常的简单&#xff0c;都是对IO进行最简单的读写操作。像I2C、SPI、 LCD 等这些复杂外设的驱动就不能这么去写了&#xff0c; Linux 系统要考虑到驱动的可重用性&#xff0c;因此提出了驱动的分离与分层这样的软件思路&#xff0c;在这个思路下…

原型链污染,nodejs逃逸例子

文章目录 原型链污染原型链污染原理原型链污染小例子 原型链污染题目解析第一题第二题 Nodejs沙箱逃逸方法一方法二 原型链污染 原型链污染原理 原型链 function test(){this.a test; } b new test;可以看到b在实例化为test对象以后&#xff0c;就可以输出test类中的属性a…

用python做一个小项目,python做简单小项目

大家好&#xff0c;本文将围绕用python做一个小项目展开说明&#xff0c;python做简单小项目是一个很多人都想弄明白的事情&#xff0c;想搞清楚python入门小项目需要先了解以下几个事情。 来源丨网络 经常听到有朋友说&#xff0c;学习编程是一件非常枯燥无味的事情。其实&…

gitlab配置webhook

一.前言 当需要做jenkins的自动化触发构建时&#xff0c;就需要配置gitlab的webhook功能&#xff0c;以下来展示以下如何配置gitlab的webhook&#xff0c;jenkins的配置就不在这里展示了&#xff0c;可以去看我devops文章的完整配置 二.配置 在新版本的gitlab中&#xff0c…

JavaScript 手撕大厂面试题数组扁平化以及增加版本 plus

前言 现在的前端面试手撕题是一个必要环节&#xff0c;有点时候八股回答的不错但是手撕题没写出来就会让面试官印象分大减&#xff0c;很可能就挂了… 概念 数组的扁平化其实就是将一个多层嵌套的数组转换为只有一层的数组 比如&#xff1a; [1, [2, [3, [4, 5]]]] > [1…

高速公路巡检无人机,为何成为公路巡检的主流工具

随着无人机技术的不断发展&#xff0c;无人机越来越多地应用于各个领域。其中&#xff0c;在高速公路领域&#xff0c;高速公路巡检无人机已成为公路巡检的得力助手。高速公路巡检无人机之所以能够成为公路巡检中的主流工具&#xff0c;主要是因为其具备以下三大特性。 一、高速…

Android 之 MediaPlayer 播放音频与视频

本节引言&#xff1a; 本节带来的是Android多媒体中的——MediaPlayer&#xff0c;我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件&#xff0c;通过该类&#xff0c;我们可以以最小的步骤来获取&#xff0c;解码 和播放音视频。它支持三种不同的…

PHP8的运算符-PHP8知识详解

运算符是可以通过给出的一或多个值&#xff08;用编程行话来说&#xff0c;表达式&#xff09;来产生另一个值&#xff08;因而整个结构成为一个表达式&#xff09;的东西。 PHP8的运算符有很多&#xff0c;按类型分有一元运算符、二元运算符、三元运算符。 一元运算符只对一…

第四讲:利用ADO方式连接Access数据库

【分享成果&#xff0c;随喜正能量】最值得信赖的&#xff0c;其实是自己从孤独中得来的东西&#xff0c;而不是别人给予自己的东西。每个人都是一座孤岛&#xff0c;有些人一生都在想要逃离这座岛&#xff0c;有些人一生都在创造并丰富自己这座岛。。 《VBA数据库解决方案》教…

解释器模式——自定义语言的实现

1、简介 1.1、文法规则和抽象语法树 解释器模式描述了如何为简单的语言定义一个文法&#xff0c;如何在该语言中表示一个句子&#xff0c;以及如何解释这些句子。在正式分析解释器模式结构之前&#xff0c;先来学习如何表示一个语言的文法规则以及如何构造一棵抽象语法树。 …

安全文件传输:如何避免数据泄露和黑客攻击

网络安全问题日益严重&#xff0c;导致许多数据被泄露和黑客袭击的事件频发。为了保证文件传输的安全&#xff0c;需要实施一系列安全文件传输策略来防止数据被泄露和黑客袭击。 第一、选择适合的加密方法是非常关键的 加密是一种将明文转换成密文的过程&#xff0c;这样只有授…