【多模态】22、UniDetector | 检测开放世界中的一切!(CVPR2023)

news2024/11/18 2:56:06

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 UniDetector 框架结构
      • 2.2 Heterogeneous Label Space Training
      • 2.3 open-world inference
    • 三、效果
      • 3.1 数据集
      • 3.2 Object Detection in the Open World
      • 3.3 Object Detection in the Closed World
      • 3.4 Object Detection in the Wild
      • 3.5 Comparison with Open-vocabulary Methods
      • 3.6 消融实验

论文:Detecting Everything in the Open World: Towards Universal Object Detection

代码:https://github.com/zhenyuw16/UniDetector

出处:CVPR2023

贡献:

  • 提出了一个任意场景任意类别的目标检测器 UniDetector,使用来自不同源和多样标注空间的数据来训练,将 image 和 text space 进行对齐,也是目前首个实现通用目标检测的结构,即使用了 500 类别训练,实现了 7000 个类别的识别
  • 能够很方便的泛化到开放世界和新类别上,提出了解耦 proposal 生成和 RoI 分类的过程,能更好的实现与类别无关的特性
  • 提出了解耦的训练方式和概率矫正,能够平衡预测类别的分布,且能促进其扩展到新类别上

效果:

  • 能检测大概 7k 类别,是目前为例最大的可衡量类别数量,而训练类别只有大概 500 类
  • 有很强的 zero-shot 能力,超过当前的最强结果 4%
  • 在 COCO 上实现 49.3%AP,是目前使用 CNN 模型最高的
  • 在 13 个公开检测数据集上达到了 SOTA 的效果

一、背景

Universal object detection(通用目标检测器)的目标就是检测任意场景中的所有目标,需要有如下两个特点:

  • 要使用多种数据源和不同的标注标签空间来进行训练
  • 要能够泛化到开放世界,即无需训练也可以识别新类别

但众所周知,只使用视觉信息无法实现这样的效果

本文提出了 UniDetector,一个通用的目标检测框架,来克服上述两个问题

  • 首先,从语言空间来入手,作者发现多阶段训练的方式能够促进特征共享,且避免特征冲突
  • 接着,为了探索 region proposal 阶段泛化到新类上的能力,作者将 proposal generation 阶段和 RoI classification 阶段进行了解耦
  • 然后,基于解耦的方式,作者进一步提出了 class-agnostic localization network(CLN)来生成更有泛化性的 region proposals
  • 最后,作者还提出了 probability calibration 来消除预测结果对新类别和基础类别的偏见
    在这里插入图片描述

二、方法

  • 给定输入图像 I,目标检测的目标是输出其类别和位置,传统目标检测只能适应于 closed world,训练和测试的类别是一致的,都是预定义好的类别空间
  • 本文中,作者提出的通用目标检测,聚焦于检测通用的物体,训练时,使用从多种源头拿来的数据,其标注空间都是不同的,推理时,预测使用者给定的类别空间中的类别
  • 一般来说,传统的目标检测难以直接适用于通用目标检测任务,主要因为推理的时候有新的类别,是训练的时候没见过的类别,模型无法识别
  • 所以,通用目标检测的关键就在于如何使用多个类别空间的数据,和如何扩展到新类别上

2.1 UniDetector 框架结构

在这里插入图片描述

UniDetector 框架结构如图 2 所示:

  • 第一步:多尺度 image-text aligned pre-training:传统全监督的学习方式是基于人工标注的,这就会限制通用性。而要扩展泛化性,就需要借用语言特征的泛化性,所以,作者引入了语言编码来辅助检测。和之前的很多工作一样,作者使用预训练的 image-text model 来实现。而且,作者是使用了 RegionCLIP 的预训练参数来用于实验。
  • 第二步:多样性 label space training:传统的目标检测的标签是收缩在一个固定的范围内的,本文作者从不同的数据源中收集了多样的标注空间来训练检测器,标注的多样性和图像的多样性决定了检测器的通用性。注意,这里作者也使用的是解耦的训练方法,来分别训练 RPN 和 RoI(见2.2)
  • 第三步:Open-world inference:完成训练后,就可以在开放时间直接推理了,且不需要 fine-tuning。因为新类别没有出现在训练中,检测器容易产生低置信的预测,所以作者提出了 probability calibration 来实现在推理过程中新类和基础类的平衡

2.2 Heterogeneous Label Space Training

使用多样的标注空间的标注有助于提升模型的信息多样性

在这里插入图片描述

作者在图 3 中展示了 3 种可能的模型结构:

  • 第一种:使用隔离的标注空间来训练,如图 3a 所示,作者在每个数据集中训练模型,在推理时,将每个独立的推理结果结合起来来得到最终的检测框
  • 第二种:将所有标签放到同一个标签空间中训练,如图 3b 所示,由于所有的图像都被当做来源于同一个标签空间,故就可以使用 Mosaic 或 Mixup 等数据增强的方法来提升信息丰富程度
  • 第三种:所有数据源都共享特征抽取器,然后又有各自的分类层,在推理时,可以直接使用 test label 的 class embedding 来避免标签冲突

数据采样和 loss 函数:

  • 当数据量变大时,不可避免的问题就是数据长尾分布,class-aware sampler (CAS) [38]、 repeat factor sampler (RFS) [17] 在 closed world 中都是较为好用的方法,但是在 open world 中不太有用,主要原因就是有新类。而且,在有了 language embedding 辅助的情况下,长尾问题可以忽略不计,使用随机采样即可
  • loss 函数:sigmoid-based loss 更适合,因为基础类别的分类和新类别的分类在 sigmoid 函数的作用下不会互相影响。且为了避免类别增加导致 sigmoid-based classification loss 产生极值,作者会随机采样特定数量的类别作为负的

解耦 proposal generation 和 RoI classification:

双阶段的目标检测器包括:

  • visual backbone
  • RPN:RPN 是与类别无关的,所以可以扩展到新类上,本文中使用 Image-Net 预训练参数来初始化,并且是以 class-agnostic 的方式来训练的,训练完成后,其能够生成一系列的 region proposals
  • RoI classification:与类别有关的,所以不能很好的作用于新类。所以在本文 RPN 生成 RoI 后,使用 Fast RCNN 的方式来训练该分类器,这里使用预训练的 image-text 参数来初始化。

由于 RPN 和 RoI 分类器的不同性质,导致它们不能联合训练,因为灵敏的分类能力会影响 RPN 对新类别的提取,所以,作者将这两个阶段进行了解耦,避免其互相影响。

在这里插入图片描述

Class-agnostic 定位网络:与类别无关的定位网络 CLN

为了处理前面生成的 proposals,作者提出了一个 classagnostic localization network (CLN),如图 4 所示,CLN 包含 RPN 和 RoI head,来为通用目标检测器生成 proposals

对于第 i 个 proposal,从 RPN 得到的定位置信度为 s i r 1 s_i^{r_1} sir1,从 RoI 得到的定位置信度为 s i r 2 s_i^{r_2} sir2,分类得分为 s i c s_i^c sic

则 CLN 的最终得分为 :

在这里插入图片描述

2.3 open-world inference

由于基础类别会在训练时候出现,所以难以避免训练得到的 detector 会更偏向于基础类别,基础类别的检测结果和得分都比新类别更高,会主导推理过程

所以,作者提出了一种后处理的方法:probability calibration(校准)

  • 校准的目标是降低基础类别的置信得分,提高新类别的置信得分,用于平衡最终的预测结果

  • 校准方式如下:

    在这里插入图片描述

  • 主要思想是使用先验概率 π j \pi_j πj 来花粉类别 j j j 的初始概率

  • π j \pi_j πj 记录了网络对类别 j j j 的倾向程度,大的值表示模型更倾向于该类,在校准之后,模型原本倾向的类别的概率就会减小

  • γ \gamma γ 是预定义的超参数

  • π j \pi_j πj 如何获得:可以首先在 test 数据集上进行推理,然后使用结果中出现的类别来获得 π j \pi_j πj ,如果测试图像很少,难以获得准确了概率,则可以使用训练图像来计算 π j \pi_j πj

  • p i j p_{ij} pij :反映了第 i 个 region proposal 的 class-specific prediction。会将 p i j p_{ij} pij 乘到 objectness score η i \eta_i ηi 上来作为最终的检测得分

  • 最终的检测得分为

    在这里插入图片描述

三、效果

3.1 数据集

作者使用了 3 个不同的数据来模拟不同的数据源和标注空间:

  • COCO:包含 80 个类别,是密集场景的高质量人工标注结果
  • Object365:包含 365 个类别
  • OpenImages:包含 500 个类别,很多标注都是稀疏的且不准确的
  • 作者从这 3 个数据集中分别随机采样了 35k、60k、78k 的图像来训练

测试数据:

  • LVIS
  • ImageNetBoxes:包含 3000 个类别,作者随机采样了 20000 图像作为测试,
  • VisualGenoe:包含 7605 个类别,但由于很多标注都是来自于机器,标注结果不太准确且有很多噪声,作者选择了 5000 个没有出现在训练数据中的图像来测试

测评:

  • 基本上都是使用 AP 来测评
  • LVIS:使用 APr、APc、APf 分别测评 rare、common、frequent 类别
  • ImageNetBoxes:使用 AP、AP50、top-1 localization accuracy 来测评
  • VisualGenome:考虑到噪声和不准确的标注,使用 Average Recall(AR) 来测评

细节:

  • 基于 mmdetection 实现
  • 框架:Faster RCNN 、ResNet50-C4、使用 RegionCLIP 参数来初始化
  • 训练 12 个 epochs

3.2 Object Detection in the Open World

在这里插入图片描述

3.3 Object Detection in the Closed World

在这里插入图片描述

3.4 Object Detection in the Wild

在这里插入图片描述

3.5 Comparison with Open-vocabulary Methods

在这里插入图片描述

在这里插入图片描述

3.6 消融实验

Decoupling proposal generation and RoI classification:

在这里插入图片描述

Probability calibration:

在这里插入图片描述

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

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

相关文章

msf 渗透基础篇(基本命令)

一 Metasploit 目录结构 以 kali 为例,几个关键路径,熟悉一下,为了更方便的查找。 1、msf 的安装路径: ┌──(root㉿kali)-[/usr/share/metasploit-framework] └─# ls app documentation metasploit-framework.gemspec…

力扣 746. 使用最小花费爬楼梯

题目来源&#xff1a;https://leetcode.cn/problems/min-cost-climbing-stairs/description/ C题解1&#xff1a;动态规划。虽然我的本意是跳到第i个台阶的花费&#xff0c;但代码写着写着就歪了。。 class Solution { public:int minCostClimbingStairs(vector<int>&am…

李群李代数

0.知识回顾 描述旋转本身的矩阵叫做旋转矩阵&#xff0c;旋转矩阵是一个行列式为1的正交矩阵 &#xff0c;反之&#xff0c;行列式为1的正交矩阵也是一个旋转矩阵。将n维旋转矩阵的集合定义如下&#xff1a; S O ( n ) { R ∈ R n ∗ n ∣ R R T I &#xff0c; d e t ( R …

事件标志组

Q: 什么是事件标志组&#xff1f; A: 事件标志位&#xff1a;表明某个事件是否发生&#xff0c;联想&#xff1a;全局变量 flag。通常按位表示&#xff0c;每一个位表示一个事件&#xff08;高8位不算&#xff09; 事件标志组是一组事件标志位的集合&#xff0c; 可以简单的理…

Android应用开发(24)启用广色域(wideColorGamut)

Android应用开发学习笔记——目录索引 参考android官网&#xff1a; 使用广色域内容增强图形效果 | Android 开发者 | Android Developers ColorSpace | Android Developers Wide Color Photos Are Coming to Android: Things You Need to Know to be Prepared 广色域…

redis主从复制 哨兵模式

目录 1.主从 1.主从概念 2.作用 3.主从流程 2.哨兵 1.哨兵核心 2.原理 3.作用 4.结构 3.案例 主从搭建 哨兵搭建 1.主从 1.主从概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者…

Psim 2022电力仿真--锁相环控制程序

目录 目录 1.原理 2.代码实现 3.仿真实现 4.仿真结果 5.讨论 1.原理 三相锁相环是一种用于控制交流&#xff08;AC&#xff09;信号的相位、频率和波形的电路&#xff0c;其原理和应用也广泛用于电源领域。使用三相锁相环可以使交流电源输出的电压稳定、精准地与输入信号…

Kotlin基础(九):对象和委托

前言 本文主要讲解kotlin对象和委托。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 对象 在Kotlin中&#xff0c;对象&#xff08;Object&#xff09;是一个具有特殊用途的单例实例。它是一种创建单个实例的方式&#xff0c;确保在整个应用程序中只存在一个特…

C语言:扫雷(递归+清屏)详细讲解

目录 一.前言 二.功能功能实现 1.游戏菜单/雷盘定义 menu: 雷盘定义&#xff1a; 2.定义布局(数组)/初始化雷盘 数组&#xff1a; 初始化雷盘: 3.打印棋盘 4.布置雷&#xff08;利用随机数&#xff09; 5.排查雷(判断周围雷) 1.判断周围雷数&#xff1a; 2.递归排查…

卡特兰数 公式及其应用

卡特兰数可用于两种场景&#xff08;编程&#xff09; n个元素入栈&#xff0c;共有几种出栈方法n个不同的元素可以组成多少种不同形态的二叉树 卡特兰数的公式是 比如说&#xff1a; 5个元素入栈 那么一共有 种出栈方法 再比如说&#xff08;干咳一声&#xff09; 有4个不…

【雕爷学编程】MicroPython动手做(20)——掌控板之三轴加速度3

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

读发布!设计与部署稳定的分布式系统(第2版)笔记27_安全性下

1. 安全配置出现失误 1.1. 攻击者已经通过使用开箱默认的admin登录名和密码&#xff0c;进入了不少应用程序、网络设备和数据库 1.2. 出现配置的遗漏 1.2.1. 服务器默认启用不需要的特性 1.2.1.1. 我们忘记&#xff08;或不知道&#xff09;禁用它们&#xff0c;从而开放了…

C++ 多线程编程导论(下)

文章目录 参考资料线程安全&#xff08;续&#xff09;门闩与屏障——latch 对象与 barrier 对象门闩&#xff08;latch&#xff09;屏障&#xff08;barrier&#xff09; 一次性调用——once_flag 对象与 call_once 函数 异步任务未来与承诺——future 对象与 promise 对象fut…

Ubuntu网络设置之固定IP详解

尊敬的家人们&#xff0c;欢迎观看我的文章&#xff01;今天&#xff0c;我们将为您介绍Ubuntu22.04操作系统中固定IP的设置方法&#xff0c;帮助您更好地管理网络连接并提高网络稳定性。 什么是固定IP&#xff1f; 在网络中&#xff0c;IP地址是设备在网络上的唯一标识。通常…

用html+javascript打造公文一键排版系统9:主送机关排版

一、主送机关的规定 公文一般在标题和正文之间还有主送机关&#xff0c;相关规定为&#xff1a; 主送机关 编排于标题下空一行位置&#xff0c;居左顶格&#xff0c;回行时仍顶格&#xff0c;最后一个机关名称后标全角冒号。如主送机关名称过多导致公文首页不能显示正文时&…

哨兵模式原理

哨兵模式原理 一、定义二、作用三、故障转移机制主节点的选举: 哨兵的模式一、哨兵对主从复制集群进行监控二、哨兵与哨兵之间互相进行监控三、监控的目的 故障切换的原理?cluster模式cluster模式同步两种方式 一、定义 哨兵(sentinel):是一个分布式系统&#xff0c;用于对主…

pytest 入门

1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…

MATLAB | 如何绘制这样的描边散点图?

part.-1 前前言 最近略忙可能更新的内容会比较简单&#xff0c;见谅哇&#xff0c;今日更新内容&#xff1a; part.0 前言 看到gzhBYtools科研笔记(推荐大家可以去瞅瞅&#xff0c;有很多有意思的图形的R语言复现&#xff01;&#xff01;)做了这样一张图&#xff1a; 感觉很…

RK3588平台开发系列讲解(LCD篇)FrameBuffer 操作步骤

文章目录 一、FrameBuffer 介绍二、屏幕参数信息的获取三、刷新 FrameBuffer四、FrameBuffer 例程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在应用程序中,操作/dev/fbX 的一般步骤进行介绍。 打开 FrameBuffer 设备;获取 FrameBuffer 设备的固定信息和可变信息;…

生成对抗网络DCGAN学习实践

在AI内容生成领域&#xff0c;有三种常见的AI模型技术&#xff1a;GAN、VAE、Diffusion。其中&#xff0c;Diffusion是较新的技术&#xff0c;相关资料较为稀缺。VAE通常更多用于压缩任务&#xff0c;而GAN由于其问世较早&#xff0c;相关的开源项目和科普文章也更加全面&#…