YOLO-World:实时开放词汇目标检测

paper:https://arxiv.org/pdf/2401.17270.pdf

Github:GitHub - AILab-CVC/YOLO-World: Real-Time Open-Vocabulary Object Detection

online demo:https://huggingface.co/spaces/stevengrove/YOLO-World 


目录

0. 摘要

1. 引言

2. 相关工作

2.1. 传统目标检测

2.2. 开放词汇目标检测

3. 方法

 3.1. 预训练范式:区域-文本对

3.2. 模型架构

3.3. 重参数化视觉-语言 PAN

3.4. 预训练方案

4. 实验

5. 结论


0. 摘要

        YOLO系列检测器以其高效、实用而著称。不过,其需要预定义目标类别,这大大限制了其在开放场景的适用性。为了解决这个问题,我们提出了YOLO-World——一个创新的、通过视觉-语言建模和大规模数据预训练的方法,其强化了YOLO的开放词汇检测能力。具体的,提出了一个新的可重参数化的视觉-语言路径聚合网络(RepVL-PAN),以及一个能够促进视觉和语言信息之间交互的区域-文本对比损失。提出的方法能够以零样本方式,在宽范围目标检测方面表现优异,且十分高效。在LVIS挑战赛数据集上,YOLO-World使用V100可达到35.4 AP、52FPS的效果,这在速度和精度上都超过了很多SOTA。此外,微调后的YOLO-World在很多下游任务(如:目标检测、开放词汇实例分割)上也能达到不错的效果。

1. 引言

        目标检测是一个长期研究的基础CV任务,在诸多领域,如图像理解、机器人、自动驾驶,都有涉及。已有大量相关研究[15, 26, 40, 42]使用深度神经网络在该领域取得了突破。尽管他们都取得了成功,但都是在有限的类别(如coco里面是80个类)上进行的,一旦类别定义好且标注完毕,训练的检测器就只能检测指定的类别,这大大限制了他们在开放场景中的能力和应用。

        最近的工作 [7, 12, 49, 54]。 ] 探索了流行的视觉语言模型 [18, 36],通过从语言编码器(例如 BERT [5])中提取词汇知识来解决开放词汇检测 [54]。然而,由于训练数据缺乏、词汇多样性有限,基于蒸馏的方法的使用大大受限了。部分方法[23,29,52,53,55]将目标检测训练重新定义为区域级视觉语言预训练,并大规模训练开放词汇对象检测器。然而,这些方法在现实场景中仍然难以应用,有两个方面的原因:(1)较高的计算负担;(2)边缘设备部署的复杂性。先前的一些工作[23,29,52,53,55]已经证实了预训练大检测器的性能,而为预训练小检测器赋予开发词汇检测能力方面尚未被证实。

        本文提出了YOLO-World来进行高效开放词汇对象检测,并探索大规模预训练方案,将传统的 YOLO 检测器升级为开放词汇检测方法。与以前的方法相比,所提出的 YOLO-World 推理速度高且易于部署到下游应用程序中,非常的有效。具体来说,YOLO-World 遵循标准的 YOLO 架构 [19],并利用预训练的 CLIP [36] 文本编码器对输入文本进行编码。我们进一步提出了可重新参数化的视觉语言路径聚合网络(RepVL-PAN)来连接文本特征和图像特征以获得更好的视觉语义表示。在推理过程中,可以去掉文本编码器,并将文本嵌入重新参数化为 RepVL-PAN 的权重以实现高效部署。我们通过大规模数据集上的区域-文本对比学习进一步研究了YOLO检测器的开放词汇预训练方案,将检测数据、标注数据和图像-文本数据统一为区域-文本对。具有丰富区域-文本对的预训练 YOLO-World 在大规模词汇检测和训练更多数据方面表现出强大的能力,可以显着提高开放词汇能力。

        此外,我们探索了一种“提示然后检测”(prompt-then-detect)的范式,以进一步提高现实场景中开放词汇对象检测的效率。如图 2 所示,传统的目标检测器 [15, 19, 22, 38-40, 48] 专注于具有预定义和训练类别的固定词汇表(闭集)检测。而以前的开放词汇检测器[23,29,52,55]则使用文本编码器对用户的提示进行编码,并检测对象进行在线词汇表。不过,这些方法倾向于使用大主干的大型检测器,例如 Swin-L [31],以增加开放词汇容量。相比之下,prompt-then-detect 范式(图 2 (c))首先对用户的提示进行编码以构建离线词汇表,词汇表因不同需求而异。然后,高效的检测器可以动态推断离线词汇表,而无需重新编码提示。对于实际应用,一旦我们训练好了检测器,就可以预先编码提示或类别以构建离线词汇表,然后将其无缝集成到检测器中。

        主要贡献有以下几点:

  • 介绍了YOLO-World,其属于一种高端的开放词汇目标检测器,在实际使用中比较高效;
  • 提出了可重参数化的视觉-语言PAN,将视觉和语言特征与YOLO-World的开放词汇区域-文本对比预训练方案结合了起来;
  • 所提出的在大规模数据集上训练的 YOLO-World 表现出强大的零样本性能,并在 LVIS 上以 52.0 FPS 实现了 35.4 AP。预训练的 YOLO-World 可以轻松适应下游任务,例如开放词汇实例分割和参考对象检测。

2. 相关工作

2.1. 传统目标检测

        流行的对象检测研究集中于固定词汇表(闭集)检测,其中对象检测器在具有预定义类别的数据集上进行训练,例如COCO数据集[25]和Objects365数据集[43],然后检测固定类别集合中的对象。在过去的几十年里,传统的目标检测方法可以简单地分为三组,即基于区域的方法、基于像素的方法和基于查询的方法。基于区域的方法 [10, 11, 15, 26, 41],例如 Faster R-CNN [41],采用两阶段框架进行提案生成 [41] 和 RoI-wise(感兴趣区域)分类和回归。基于像素的方法[27,30,39,45,57]往往是一级检测器,它对预定义的锚点或像素进行分类和回归。DETR[1]首先通过transformer[46]探索目标检测,并启发了广泛的基于查询的方法[60]。在推理速度方面,Redmon等人提出了YOLOs[37-39],它利用简单的卷积架构进行实时目标检测。一些工作[9,22,32,48,51]提出了YOLO的各种架构或设计,包括路径聚合网络[28]、跨阶段部分网络[47]和重新参数化[6],进一步提高了速度和准确性。与之前的 YOLO 相比,本文中的 YOLOWorld 旨在以强大的泛化能力检测固定词汇表之外的对象。

2.2. 开放词汇目标检测

        开放词汇对象检测 (OVD) [54] 已成为现代目标检测的新趋势,旨在检测预定义类别之外的对象。早期的工作[12]通过在基类上训练检测器并评估新的(未知)类,遵循标准的OVD设置[54]。然而,这种开放词汇设置可以评估检测器检测和识别新对象的能力,对于开放场景仍然受到限制,并且由于在有限的数据集和词汇上进行训练,缺乏对其他领域的泛化能力。

        受视觉语言预训练[18,36]的启发,最近的研究[7,21,49,58,59]将开放词汇对象检测表述为图像-文本匹配,并利用大规模图像-文本数据大规模增加训练词汇。GLIP [23] 提出了一种基于短语接地的开放词汇检测预训练框架,并在零样本设置中进行评估。接地DINO[29]将接地的预训练[23]合并到具有跨模态融合的检测transformer[56]中。

        几种方法[24,52,53,55]通过区域-文本匹配和大规模图像-文本对的预训练检测器统一检测数据集和图像-文本数据集,取得了良好的性能和泛化能力。然而,这些方法通常使用 ATSS [57] 或 DINO [56] 等重检测器和 Swin-L [31] 作为主干,导致高计算需求和部署挑战。相比之下,我们提出了 YOLO-World,旨在通过实时推理和更容易的下游应用程序部署进行有效的开放词汇对象检测。我们的方法与 ZSD-YOLO [50] 不同,ZSD-YOLO [50] 还通过语言模型对齐探索了 YOLO 的开放词汇检测 [54],而YOLO-World 引入了一种新颖的 YOLO 框架,具有有效的预训练策略,提高了开放词汇性能和泛化能力。

3. 方法

 3.1. 预训练范式:区域-文本对

        传统的目标检测方法,包括YOLO系列[19],使用实例注释\Omega = \{B_i, c_i \}^{N}_{i=1},由边界框{Bi}和类别标签{ci}组成。在本文中,我们将实例注释重新表述为区域-文本对\Omega = \{B_i, t_i \}^{N}_{i=1},其中 ti 是区域 Bi 的相应文本。具体来说,文本 ti 可以是类别名称、名词短语或对象描述。此外,YOLO-World 采用图像 I 和文本 T(一组名词)作为输入并输出预测框 \{​{\widehat{B}_k}\}和对应的目标嵌入 \{e_k\}(e_k \in \mathbb{R}^D)

3.2. 模型架构

        所提出的 YOLO-World 的整体架构如图 3 所示,它由一个 YOLO 检测器、一个文本编码器和一个可重新参数化的视觉语言路径聚合网络 (RepVL-PAN) 组成。给定输入文本,YOLO-World 中的文本编码器将文本编码为文本嵌入。YOLO检测器中的图像编码器从输入图像中提取多尺度特征。然后我们使用 RepVL-PAN 通过利用图像特征和文本嵌入之间的跨模态融合来增强文本和图像表示。

        YOLO Detector:YOLO-World主要基于YOLOv8[19]开发,YOLOv8[19]包含一个Darknet骨干[19,40]作为图像编码器,一个用于多尺度特征金字塔的路径聚合网络(PAN),一个用于边界框回归和对象嵌入的head。

        Text Encoder:给定文本 T,我们采用 CLIP [36] 预训练的 Transformer 文本编码器来提取相应的文本嵌入W = TextEncoder(T ) \in \mathbb{R}^{C\times D},其中 C 是名词的数量,D 是嵌入维度。与纯文本语言编码器 [5] 相比,CLIP 文本编码器为将视觉对象与文本连接起来提供了更好的视觉语义能力。当输入文本是一个标题或引用表达式时,我们采用简单的 n-gram 算法来提取名词短语,然后将它们输入文本编码器。

        Text Contrastive Head:继之前的工作 [19] 之后,我们采用具有两个 3×3 convs 的解耦头来回归边界框 \{b_k \}^{K}_{k=1}和对象嵌入\{e_k \}^{K}_{k=1},其中 K 表示对象的数量。我们提出了一个文本对比头来获得对象-文本相似度s_{k,j}:

 其中 L2-Norm(·) 是 L2 归一化,w_j \in W是第 j 个文本嵌入。此外,我们添加了具有可学习比例因子α和移位因子β的仿射变换。L2 范数和仿射变换对于稳定区域文本训练都很重要。

        Training with Online Vocabulary:在训练期间,我们为每个包含 4 张图像的马赛克样本构建了一个在线词汇表 T。具体来说,我们对马赛克图像中涉及的所有正名词进行采样,并从相应的数据集中随机采样一些负名词。每个马赛克样本的词汇表最多包含 M个,M 默认设置为 80。

        Inference with Offline Vocabulary:在推理阶段,我们提出了一种带有离线词汇表的prompt-then-detect 策略,以提高效率。如图3所示,用户可以定义一系列自定义提示,可能包括标题或类别。然后,我们利用文本编码器对这些提示进行编码并获得离线词汇嵌入。离线词汇表避免了每个输入都计算一遍,并能根据需要灵活调整词汇表。

3.3. 重参数化视觉-语言 PAN

        图 4 显示了所提出的 RepVL-PAN 的结构,它遵循 [19, 28] 中的自上而下和自下而上的路径,以使用多尺度图像特征 {C3, C4, C5} 建立特征金字塔 {P3, P4, P5}。此外,我们提出了文本引导的CSPLayer (T-CSPLayer)和图像池注意(I-Pooling Attention),进一步增强了图像特征和文本特征之间的交互,提高了开放词汇能力的视觉语义表示。在推理过程中,离线词汇嵌入可以重新参数化为卷积或线性层的权重以进行部署。

        Text-guided CSPLayer:如图4所示,自顶向下或自底向上融合后利用跨阶段部分层(CSPLayer)。我们通过将文本引导合并到多尺度图像特征中来扩展[19]的CSPLayer(也称为C2f),以形成文本引导的CSPLayer。具体来说,给定文本嵌入 W 和图像特征X_l \in \mathbb{R} ^{H\times W \times D }(l\in \{3, 4, 5\}),我们在最后一个dark bottleneck块之后采用 max-sigmoid attention 将文本特征聚合为图像特征:

其中更新后的 X^{'}_{l}与跨阶段特征连接作为输出。δ 表示 sigmoid 函数。 

        Image-Pooling Attention:为了用图像感知信息增强文本嵌入,我们提出 Image-Pooling Attention来聚合图像特征以更新文本嵌入。我们没有直接在图像特征上使用交叉注意,而是利用多尺度特征上的最大池化来获得3 × 3区域,总共有27个patch tokensX\in \mathbb{R}^{24\times D}。然后文本嵌入通过以下方式更新:

3.4. 预训练方案

        在本节中,我们将介绍在大规模检测、grounding和图像文本数据集上进行YOLO-World 预训练的方案。

        Learning from Region-Text Contrastive Loss:给定马赛克样本 I 和文本 T,YOLO-World 输出 K 个对象预测 \{B_k, s_k\}^{K}_{k=1}以及注释\Omega = \{B_i, t_i \}^{N}_{i=1}。我们遵循 [19] 并利用任务对齐的标签分配 [8] 将预测与基本事实注释进行匹配,并将每个正预测与文本索引分配为分类标签。基于这个词汇表,我们通过对象-文本(区域-文本)相似性和对象-文本分配之间的交叉熵构建区域-文本对比损失 Lcon。此外,我们采用 IoU 损失和分布式焦点损失进行边界框回归,总训练损失定义为:,其中 λI 是一个指标因子,当输入图像 I 来自检测或grounding数据时设置为 1,当它来自图像文本数据时设置为 0。考虑到图像-文本数据集有噪声框,我们只计算具有精确边界框的样本的回归损失。

        Pseudo Labeling with Image-Text Data:我们提出了一种自动标记方法来生成区域-文本对,而不是直接使用图像-文本对进行预训练。具体来说,标记方法包括三个步骤:(1)提取名词短语:我们首先利用 n-gram 算法从文本中提取名词短语; (2) 伪标记:我们采用预训练的开放词汇检测器,例如 GLIP [23],为每个图像生成给定名词短语的伪框,从而提供粗略的区域-文本对。(3)过滤:我们使用预训练的 CLIP [36] 来评估图像-文本对和区域-文本对的相关性,并过滤低相关性的伪注释和图像。我们通过结合非最大抑制 (NMS) 等方法进一步过滤冗余边界框。我们建议读者参阅附录以获得详细的方法。通过上述方法,我们使用 821k 伪注释从 CC3M [44] 中采样和标记 246k 图像。

4. 实验

5. 结论

        我们提出了 YOLO-World,这是一种尖端的实时开放词汇检测器,旨在提高实际应用中的效率和开放词汇能力。在本文中,我们将流行的 YOLO 重塑为视觉语言 YOLO 架构,用于开放词汇预训练和检测,并提出了 RepVL-PAN,它将视觉和语言信息与网络连接起来,并且可以重新参数化以实现高效的部署。我们进一步提出了检测、接地和图像文本数据的有效预训练方案,使YOLOWorld具有较强的开放词汇检测能力。实验证明了 YOLO-World 在速度和开放词汇性能方面的优越性,并表明视觉语言预训练在小模型的有效性,这对未来的研究有见地。我们希望 YOLO-World 可以作为解决现实世界开放词汇检测的新基准。

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

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

相关文章

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-WatchDog

目录 一、 WATCHDOG 概述功能简介基本概念 二、WATCHDOG 模块相关API三、WATCHDOG HDF驱动开发3.1、开发步骤(待续...) 坚持就有收获 一、 WATCHDOG 概述 功能简介 看门狗(Watchdog),又称看门狗计时器(Watchdog timer&#xff0…

C++ 之LeetCode刷题记录(三十二)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 7. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后…

阿赵UE学习笔记——16、渲染性能相关

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。上一篇说了灯光的移动性问题,这一篇来看看怎样去辨别灯光性能的好坏。   虚幻引擎里面有一组显示模式是专门用来看场景当前的灯光和网格渲染的,叫做优化试图模式&#x…

【Vue】fabricjs 实现局部截图及el-image-viewer大图预览

<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>使用fabric.js裁剪和显示图片</title> <script src"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.5.0/fabric.min.js"…

adb-环境安装

1. 下载解压包&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1TDu2fzGbqCyug3wCSmV9oQ?pwd…

UI美化stylesheet

一、网上找到自己喜欢的图标 大家可以每个图标类型找出三种不同的颜色&#xff0c;方便后续美化效果&#xff0c;这里我每种只找了一个。&#xff08;随便找的&#xff0c;最后效果不好看&#xff09; 将这个文件夹复制到项目的文件夹中。 然后右键Add New…选择QT&#xff0c…

list链表

1. list基本概念 功能&#xff1a;将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据…

阿里云OSS和SEC服务器,免费ssl证书申请和安装

一&#xff1a;阿里云OSS证书申请和安装 1创建免费证书等待签发 2验证&#xff0c;复制DNS解析配置 3在主体域名中解析DNS&#xff08;记录复制上面的证书申请配置&#xff09; 4验证域名DNS配置 5下载证书 6安装OSS证书 7上传证书&#xff08;下载的证书解压&#xff09…

Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

一 安装paddlepaddle和paddledection&#xff08;略&#xff09; 笔者使用的是自己的数据集 二 在dataset目录下新建自己的数据集文件&#xff0c;如下&#xff1a; 其中 xml文件内容如下&#xff1a; 另外新建一个createList.py文件&#xff1a; # -- coding: UTF-8 -- imp…

探索水下低光照图像检测性能,基于DETR(DEtection TRansformer)模型开发构建海底生物检测识别分析系统

海底这类特殊数据场景下的检测模型开发相对来说比较少&#xff0c;在前面的博文中也有一些涉及&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《尝试探索水下目标检测&#xff0c;基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBA…

app逆向-平头哥框架ratel使用

文章目录 一、前言二、实现逻辑1、安装ratel手机端app2、使⽤电脑端进⾏感染目标app3、开发⼀个平头哥插件 一、前言 平头哥&#xff08;ratel&#xff09;是⼀个Android逆向分析⼯具套件&#xff0c;他提供⼀系列渐进式app逆向分析⼯具。同时平头哥也是⼀个app⼆次开发的沙箱…

【运维】站点可靠性工程介绍:研发,运维,SRE,Devops的关系

文章目录 1、什么是SRE2、SRE与研发、运维的区别 1、什么是SRE 站点可靠性工程&#xff08;SRE&#xff09; 是 IT 运维的软件工程方案。 SRE 团队使用软件作为工具&#xff0c;来管理系统、解决问题并实现运维任务自动化。 SRE 执行的任务以前通常由运维团队手动执行&#x…

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者&#xff1a;Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么&#xff1f;它的用途是什么&#xff1f; ES Rally 是一个用于在 Elasticsearch 上测试性能的工具&#xff0c;允许你运行和记录比较测试。 做出决策可能很困难&#x…

OpenCV统计函数之minMaxLoc和meanStdDev

在OpenCV中&#xff0c;minMaxLoc和meanStdDev是两个用于统计图像或数组中元素的基本特性的函数。这些统计函数对于图像处理、特征提取和数据分析非常有用。 minMaxLoc minMaxLoc函数用于查找数组或图像中的最小值和最大值&#xff0c;并可选地返回这些值的位置。这在处理图像…

Vue模版语法之属性绑定v-bind

双大括号不能在 HTML 属性中使用。想要响应式地绑定一个属性&#xff0c;应该使用 v-bind 指令 1. 使用v-bind绑定属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>新建页面</title><sc…

一个PDF处理利器的.Net开源项目

在项目开发中&#xff0c;处理PDF文件是一个非常常见的需求&#xff0c;之前也推荐几个&#xff0c;今天继续给大家推荐一个强大且易于使用的开源库&#xff0c;专门用于处理PDF文件&#xff0c;它提供了一系列功能强大的工具&#xff0c;帮助开发人员轻松地解析、修改和创建PD…

基于物联网智慧公厕的多功能城市智慧驿站

在现代城市发展中&#xff0c;智慧化已经成为了一个不可或缺的趋势。而多功能城市智慧驿站&#xff0c;作为智慧城市建设的一部分&#xff0c;以物联网智慧公厕为基础&#xff0c;集合了诸多功能于一身&#xff0c;成为了城市中不容忽视的存在。多功能城市智慧驿站也称为轻松的…

Spring Cloud部署篇1——Jar包部署至CentOS云服务器

一、项目介绍 系统模块 com.mingink |--mingink-api // 接口模块 | └──mingink-api-system // 系统接口 |--mingink-common // 通用模块 | └──mingink-common-core // 系统接口 |--mingink-gateway…

[word] word定时自动保存功能的作用是什么 #知识分享#学习方法#媒体

word定时自动保存功能的作用是什么 word定时自动保存功能的作用是什么 这是word提供的一个保护用户文档的功能&#xff0c;一般情况下是为了预防在未知原因的情况下&#xff0c;用户电脑关闭&#xff0c;或者不小关掉Word&#xff0c;导致正在使用的文档丢失&#xff0c;给用户…

nginx的功能以及运用

nginx与apache的对比 nginx优点 nginx使用场景 编译安装nginx过程 1.先清空opt文件夹 2.关闭防火墙&#xff0c;关闭防护 3 安装依赖包&#xff0c;可以通过本地yum去安装 首先就是挂载&#xff0c;随后切换到配置文件中修改 4本地配置文件配置内容 5 随后安装环境包 yum -y …