Detecting Everything in the Open World: Towards Universal Object Detection

1. 论文简介

  • 论文题目《Detecting Everything in the Open World: Towards Universal Object Detection》
  • 发表情况,CVPR2023
  • [论文地址][https://arxiv.org/pdf/2303.11749.pdf]
  • [代码地址][https://github.com/zhenyuw16/UniDetector]

2.背景与摘要

本文旨在解决通用目标检测问题,也即检测任意场景、任意类别的目标
Alt

对手工标注的依赖、有限的视觉信息以及开放世界中新的物体类别,限制了传统检测器的通用性。因此,本文提出 UniDetector,一个可以识别开放世界中非常多类别的通用目标检测器,其核心要点包括:

  • 它通过图像和文本空间的对齐,来利用多个来源以及多种标签空间的图像进行训练,保证有足够的信息让模型学习到通用的表示能力;
  • 它很容易泛化到开放世界,同时可以平衡见过和未见过的类别,因为视觉和语言模态提供了丰富的信息;
  • 通过作者提出的解耦训练方式以及概率校正,模型对新类别的泛化能力可以得到进一步提升;

最终,UniDetector 在只有 500 个类别参与训练的情况下,可以检测超过 7000 个类别。模型具有非常强的零样本泛化能力,平均可以超过有监督基线方法性能的 4%。在 13 个不同场景的公开检测数据集上,模型只用 3% 的训练数据就可以达到 SOTA 性能。

3. 方法介绍

基本流程包括三个步骤:

Alt

  • 大规模图像文本对对齐的预训练,文中使用的是 RegionCLIP 预训练的参数
  • 多标签空间的训练,此步骤使用多种来源多种标签空间的数据集来训练模型,并且将候选框生成和 RoI 分类两部分进行解耦
  • 开放世界的推理,此步骤通过概率校正来平衡基础类别和未知类别

3.1 多标签空间训练

为了使用多标签空间的数据来进行训练,作者提出了三种可能的模型结构,如下图所示:

Alt

第一种结构,每一个数据集(也即一个标签空间)训练一个单独的模型,测试的时候,针对新类别的语言嵌入向量,每个模型都进行推理,然后再进行融合得到最终的结果。

第二种结构,将多标签空间统一为一个标签空间,这样图片都可以被看作来自一个数据集,诸如 Mosaic、Mixup 的技术手段则可以被用来提升不同标签空间的信息融合。

第三种称之为分区结构,不同来源的图片共享相同的特征提取器,但是有它们各自的分类层,测试时直接使用测试标签的类别嵌入向量来进行推理。

大规模数据不可避免地都存在长尾分布,针对闭集检测,比如 class-aware sampler (CAS)、 repeat factor sampler (RFS) 之类的采样策略都会有所帮助。但是,在开放世界检测问题中,最核心的问题是未知类别,这可以通过语言嵌入向量来解决,而长尾分布的问题则可以忽略不计,因此本文直接使用随机采样器

同样地,诸如 equalized loss、seesaw loss 之类的损失函数作用也不大,本文直接使用基于 sigmoid 的损失函数,这样已知类别和未知类别之间不存在交互。为了避免随着类别数量的增长损失值过大,会随机采样一定数目的来别作为负例。

3.2 解耦候选框生成和 RoI 分类

两阶段的分类器包含一个视觉 backbone 编码器、一个 RPN 和一个 RoI 分类模块。针对标签空间 L L L 数据集 D D D 中的一张图片 I I I,模型可以总结为:

{ z i j } j = 1 L = Φ R o I ∘ Φ R P N ∘ Φ b a c k b o n e \{z_{ij}\}_{j=1}^L=\Phi_{RoI}\circ\Phi_{RPN}\circ\Phi_{backbone} {zij}j=1L=ΦRoIΦRPNΦbackbone

p i j = 1 / ( 1 + e x p ( − z i j T e j / τ ) ) p_{ij}=1/(1+exp(-z_{ij}^Te_j/\tau)) pij=1/(1+exp(zijTej/τ))

其中, p i j p_{ij} pij 是第 i i i 个区域对应类别 j j j 的概率, e j e_{j} ej 是类别 j j j 的语言嵌入向量。

候选框生成阶段是类别不可知的预测(只预测候选框是前景还是背景),所以,很容易扩展到未知类别。而 RoI 分类阶段是针对特定类别的,尽管有语言嵌入向量的帮助,它还是会偏向于已知类别。因此,若将这两个阶段联合在一起进行训练,分类阶段对新类别的敏感性将不利于候选框生成阶段的通用性,所以作者提出将两个阶段解耦分别训练来避免这种冲突。

作者提出了一个 CLN(class-agnostic localization network),来产生通用的候选框,其包含一个 RPN 和一个 RoI 头,如下图所示:

Alt

这样既可以产生候选框,进而可以通过 RoI 头来对产生的候选框进行微调。其思想来源自文章《Learning Open-World Object Proposals without Learning to Classify》,该篇文章的网络结构如下图所示,但是保留了 RoI 头里面的与类别无关的分类,文中说这样可以提供更强的监督信号。

Alt

针对第 i i i 个候选框,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 模块的最终置信度为它们的加权 η i = ( s i c ) α ⋅ ( s i r 1 s i r 2 ) 1 − α \eta_i = (s_i^c)^\alpha \cdot (s_i^{r_1}s_i^{r_2})^{1-\alpha} ηi=(sic)α(sir1sir2)1α

3.3 推理

因为训练阶段只见过已知类别,所以训练好的检测器还是会偏向于已知类别。为了避免这种偏置问题,作者提出了一个概率校正来对预测结果进行后处理,其目的是降低已知类别的概率增加新的未知类别的概率,公式如下所示:

p i j = 1 1 + e x p ( − z i j T e j / τ ) / π j γ , j ∈ L t e s t p_{ij}=\frac{1}{1+exp(-z_{ij}^Te_j/\tau)}/\pi_j^{\gamma}, j \in L_{test} pij=1+exp(zijTej/τ)1/πjγ,jLtest

先验概率 π j \pi_j πj 记录了网络对类别 j j j 的偏置, π j \pi_j πj 越大,网络更朝着这个类别偏置,校正后其对应的概率变小。可以先在测试数据上推理一遍,通过结果中的类别数量来获得 π j \pi_j πj,如果测试数据数量太少,也可以使用训练数据来获取。

最终,第 i i i 个候选框针对类别 j j j 的得分为 s i j = p i j β η i 1 − β s_{ij} = p_{ij}^{\beta}{\eta}_i^{1-\beta} sij=pijβηi1β

4. 实验与结果

训练数据集从 COCO(80类)、Object365(365类)和 OpenImages(500类)中分别随机选取 35K、60K 和 78K 张图片,测试时在 LVIS、ImageNetBoxes 和 VisualGenome 三个数据集上进行。其中,LVIS v0.5 验证集包含 5000 张图片,1230 个类别;LVIS v1 验证集包含 19,809 张图片,1203 个类别。ImageNetBoxes 包含超过 3,000 个类别,随机选取 20,000 张图片作为验证集,为了和有监督基线方法对比闭集上的检测性能,会抽取 90,000 张图片作为训练集。最新版本的 VisualGenome 包含 7,605 个类别,但是由于大部分是机器标注的,噪声很大,作者选取 5,000 个没出现在训练图片中的类别来进行验证。

Alt

从上表可以看到,在 LVIS v0.5 数据集上,UniDetector 只使用采样的 O365 数据集训练就超越了用三个数据集训练的 Faster RCNN。而且,Faster RCNN 在 rare 类别的表现要远远低于 frequent 类别的表现,而 UniDetector 在二者中的表现则更加均衡。

针对多标签空间训练的三种结构,分区结构明显要优于前两个。另外,由于 OImg 数据集标注噪声较大,单独在 OImg 上训练的模型表现还不如单独在 COCO 上训练的模型,但如果在 COOC+O365 的基础上增加 OImg 数据集,反而可以提高模型的泛化能力,这也体现了多标签空间训练对通用目标检测带来的巨大优势。

一个通用的检测器不仅能非常好地泛化到开放世界检测中,其在闭集检测中也应当保持优越性能。在 COCO 数据集上进行 1 × 1\times 1× schedule 的训练,UniDetector 不仅表现超过基于 CNN 的方法,相比最新基于transformer 的方法也稍有提高。

Alt

在 13 个自然场景(包括无人机、水下等)的检测数据集上,相比 GLIP-T,UniDetector 使用前者大约 3% 的数据集,就可以取得更好的结果(47.3 AP vs 46.5 AP)。

Alt

针对本文提出的 CLN 网络以及概率校正模块,作者分别进行了消融实验,验证了 CLN 比 OLN 效果更好,而且解耦训练的方式可以进一步提升模型性能。

Alt

增加概率校正模块后,模型在新类别上的 AP 均有明显提升。

在这里插入图片描述

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

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

相关文章

Crowd-Robot Interaction 论文阅读

论文信息 题目:Crowd-Robot Interaction:Crowd-aware Robot Navigation with Attention-based Deep Reinforcement Learning 作者:Changan Chen, Y uejiang Liu 代码地址:https://github.com/vita-epfl/CrowdNav 来源:arXiv 时间…

Spring集成Seata

Seata的集成方式有: 1. Seata-All 2. Seata-Spring-Boot-Starter 3. Spring-Cloud-Starter-Seata 本案例使用Seata-All演示: 第一步:下载Seata 第二步:为了更好看到效果,我们将Seata的数据存储改为db 将seata\sc…

【IMX6ULL驱动开发学习】04.应用程序和驱动程序数据传输和交互的4种方式:非阻塞、阻塞、POLL、异步通知

一、数据传输 1.1 APP和驱动 APP和驱动之间的数据访问是不能通过直接访问对方的内存地址来操作的,这里涉及Linux系统中的MMU(内存管理单元)。在驱动程序中通过这两个函数来获得APP和传给APP数据: copy_to_usercopy_from_user …

电脑自动关机是什么原因?1分钟弄懂!

“好奇怪啊,我在使用电脑时,电脑总是莫名其妙就会自动关机,有时候我文件都来不及保存。这是为什么呢?有什么解决方法吗?” 电脑自动关机是一个令人头疼的问题,可能会对我们的工作和生活带来影响。电脑自动关…

数组相关练习

数组练习 将数组转化成字符串数组拷贝求数组元素的平均值查找数组中指定元素(顺序查找)二分查找冒泡排序数组逆序 将数组转化成字符串 import java.util.Arrays;public class Text1 {public static void main(String[] args) {int[] arr {5, 6, 4, 2};System.out.println(Arr…

电商数据获取:网络爬虫还是付费数据接口?

随着电商行业的迅速发展,对电商数据的需求也越来越大。在获取电商数据时,常常面临一个选择:是自己编写网络爬虫进行数据爬取,还是使用现有的付费数据接口呢?本文将从成本、可靠性、数据质量等多个角度进行分析&#xf…

【果树农药喷洒机器人】Part1:研究现状分析以及技术路线介绍

本专栏介绍:付费专栏,持续更新机器人实战项目,欢迎各位订阅关注。 关注我,带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章! 文章目录 一、项目背景二、国内外研究现状2.1 国内研究现状2.2 国外研究现状 三…

C语言内嵌汇编

反编译(二进制文件或者so库) objdump --help objdump -M intel -j .text -ld -C -S out > out.txt #显示源代码同时显示行号, 代码段反汇编-M intel 英特尔语法-M x86-64-C:将C符号名逆向解析-S 反汇编的同时,将反汇编代码和源代码交替显…

Python自动化测试用例:如何优雅的完成Json格式数据断言

目录 前言 直接使用 优化 封装 小结 进阶 总结 资料获取方法 前言 记录Json断言在工作中的应用进阶。 直接使用 很早以前写过一篇博客,记录当时获取一个多级json中指定key的数据: #! /usr/bin/python # coding:utf-8 """ aut…

3分钟创建新生分班查询二维码,无需技术、0成本

作为教师,我们深知分班是一项极其重要的任务,需要综合考虑学生的性格、能力和兴趣等多个方面,以确保每个学生都能够获得最佳的学习环境和成绩。在本文中,我将分享一种便捷的方式来告知家长有关分班录取情况的方法。 通常&#xf…

2. 软件需求 面向对象分析

目录 1. 软件需求 1.1 需求分类 1.2 需求获取 1.3 需求分析 2. 面向对象分析(OOA) 2.1 统一建模语言 UML 2.2 用例模型 2.2.1 用例图的元素 2.2.2 识别参与者 2.2.3 合并需求获得用例 2.2.4 细化用例描述 2.3 分析模型 2.3.1 定义概念类 …

深入JVM - JIT分层编译技术与日志详解

深入JVM - JIT分层编译技术与日志详解 文章目录 深入JVM - JIT分层编译技术与日志详解1. 背景简介2. JIT 编译器2.1. 客户端版本的编译器: C12.2. 服务端版本的编译器: C22.3. Graal JIT 编译器 3. 分层编译技术(Tiered Compilation)3.1. 汇聚两种编译器的优点3.2. 精准优化(Ac…

Redis内网主从节点搭建

Redis内网主从节点搭建 1、文件上传2、服务安装3、服务启动4、配置主从复制 1、文件上传 内网环境手动上传gcc-c、redis.tar文件 2、服务安装 # 解压 unzip gcc-c.zip unzip gcc_rpm.zip tar -zxvf redis-6.2.13.tar.gz# 安装 cd gcc_rpm/ rpm -ivh *.rpm --nodeps --force…

gitlab 503 错误的解决方案

首先使用 sudo gitlab-ctl status 命令查看哪些服务没用启动 sudo gitlab-ctl status 再用 gitlab-rake gitlab:check 命令检查 gitlab。根据发生的错误一步一步纠正。 gitlab-rake gitlab:check 查看日志 tail /var/log/gitlab/gitaly/current删除gitaly.pid rm /var/opt…

Webpack怎么使用?

Webpack 使用 前几篇文章中已经介绍了如何初始化包管理器 package.json 这里不再重复介绍,如有需要请查看 搭建工程化项目。 安装 :::warning 注意 请确保你已经安装了 yarn,如有需要请查看 搭建工程化开发环境。 ::: 通过命令 yarn add webpack web…

三天吃透Java面试八股文(2023最新整理),面试通过率高达90%

什么样的求职者能够获得面试官的青睐?求职者需要准备哪些内容来面对形形色色的面试官?这两份资料是我在几十场面试中被面试官问到的问题,比其他复制粘贴的面试题强一百倍,堪称全网最强(我不太喜欢“全网最强”这样的字…

mybatis打印sql语句出现多余的limit关键字

1、事情起因 在项目中使用了PageHelper分页插件,由于需求特殊,需要自定义分页,代码编写完成后,事故出现了。 前端传参: {pageNum: 1,pageSize: 10, }已知表中数据10条,但是每次分页查询只有10条数据,排查…

【C语言】初识C语言+进阶篇导读

✨个人主页: Anmia.🎉所属专栏: C Language 🎃操作环境: Visual Studio 2019 版本 本篇目的是面向编程新手,没接触过编程的人。以及C进阶的导读。 内容是C语言重要知识点的简单解释,不做详解。给…

uniapp echarts 点击失效

这个问题网上搜了一堆,有的让你降版本,有的让你改源码。。。都不太符合预期,目前我的方法可以用最新的echarts。 这个方法就是由npm安装转为CDN,当然你可能会质疑用CDN这样会不稳定,那如果CDN的地址是本地呢&#xff1…

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值(default)1.3 列描述(comment)1.4 zerofill1.5 主键(primary ke…