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

news2024/11/23 15:22:06

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.coloradmin.cn/o/1460957.html

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

相关文章

解决docker中运行的jar包连不上数据库

目录 数据库主机地址设置问题: 网络连接问题: 数据库端口映射: 数据库认证问题: 数据库服务是否正常运行: 日志查看: 如果在 Docker 中运行的 JAR 包无法连接到数据库,有几个可能的原因和…

优秀自媒体工作者常用的7款ai写作工具! #AI写作#AI写作

我们做自媒体运营,想要快速的创作内容,提供文章的创作速度是我们的目标,我们别的大佬可以很快地就创作出一篇内容,而自己墨迹半天确出不了一个字呢?其实这关乎到创作技巧,下面小编就跟大家分享如何利用自媒…

Linux的Ubuntu的APT使用

Linux的Ubuntu的APT使用 apt 介绍 apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt 命令进行软件包的安装、删除、清理等,类似于 Windows 中的软件管理工具。 Ubuntu 软件操作的相关命令 su…

SD-WAN专线:助力企业海外社交媒体推广

随着全球化的发展,越来越多的企业将目光投向海外市场,而在海外市场推广中,社交媒体平台成为了一个重要的推广渠道。然而,很多企业在海外社交媒体推广过程中都会遇到网络问题,传统的VPN解决方案往往存在IP被封、网络不稳…

32单片机基础:GPIO输入

1.1按键控制LED 按键介绍: 两种方式,我们一般用下接的方式。 第一个图:注意点。当按键按下,PA0接地,被置为低电平, 但是一旦按键松手,PA0悬空,引脚电压不确定。所以无论怎么读引脚…

MySQL 核心模块揭秘 | 06 期 | 事务提交之前,binlog 写到哪里?

1. 准备工作 参数配置: binlog_format ROW binlog_rows_query_log_events OFF创建测试表: CREATE TABLE t_binlog (id int unsigned NOT NULL AUTO_INCREMENT,i1 int DEFAULT 0,str1 varchar(32) DEFAULT ,PRIMARY KEY (id) USING BTREE ) ENGINEIn…

使用 Nuxt 构建简单后端接口及数据库数据请求

写在前面 本文主要为大家介绍,如何使用 Nuxt 框架实现一个简单的后端接口,并且从数据库中请求数据返回给前端。 实现 创建 serverMiddleware 文件夹 首先我们新建一个名字为 serverMiddleware 文件夹用来存储接口相关信息 目录结构如下:…

探索 JavaScript ES8 中的函数式编程并通过实例加以实践

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 介绍 函数式编程是一种强大的范式&#xff0c…

【buuctf--outguess】

看题目就知道应该要用到 outguess 这个工具了,具体用处和下载方式请参照这篇博客Outguess下载和使用方法_outguess工具-CSDN博客 下载的 tar 压缩包解压,huhuhu.zip是伪加密的,直接用 binwalk -e 提取一下就可以,也可以修改压缩源…

python游戏代码大全可复制,python基础游戏代码

本篇文章给大家谈谈python游戏编程入门游戏代码,以及python游戏代码大全可复制,希望对各位有所帮助,不要忘了收藏本站喔。 仅限技术学习参考 分享13个游戏源码,可以自己复现玩玩,研究下里面的编程逻辑,对学…

PMP考试难度怎么样?

PMP考试整体难度并不大,因为目前的考试题型都是选择题,所以通过率相对较高。然而,新考纲中增加了更多关于敏捷方法的题型,这些题目相对更加变化多样,也有不少考生觉得难以抉择,四个选项都似乎都是正确的。P…

电商数据采集+跨境电商|API电商数据采集接口洞悉数字新零售发展

随着全球经济一体化和电子商务的快速发展,网络购物的需求日益增加。不断涌现的电商企业使得行业的竞争情况愈演愈烈。在这种情况下,企业不仅要加大经营力度,还要在自己的基础设施和技术上持续投入,才能更好的适应市场和消费习惯。…

开源CMS Drupal本地快速部署并实现无公网ip环境远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它的学习…

TP4366 1A 低成本 天源 同步移动电源方案 SOP-8

描述 TP4366是一款专为移动电源设计的同步升压的单芯片解决方案,内部集成了线性充电管理模块、同步放电管理模块、电量检测与LED指示模块、保护模块。TP4366内置充电与放电功率MOS,充电电流固定为0.8A,同步升压支持1A 输出电流。TP4366内部集成了温度补偿、过温保护、过充与过…

MySQL数据库基础(十二):子查询(三步走)

文章目录 子查询(三步走) 一、子查询(嵌套查询)的介绍 二、子查询的使用 三、总结 子查询(三步走) 一、子查询(嵌套查询)的介绍 在一个 select 语句中,嵌入了另外一个 select …

数据结构与算法:栈

朋友们大家好啊,在链表的讲解过后,我们本节内容来介绍一个特殊的线性表:栈,在讲解后也会以例题来加深对本节内容的理解 栈 栈的介绍栈进出栈的变化形式 栈的顺序存储结构的有关操作栈的结构定义与初始化压栈操作出栈操作获取栈顶元…

基于springboot实现的音乐网站

一、系统架构 前端:html | js | css | bootstrap 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven 二、 代码及数据库 三、功能介绍 01. 登录页 02. 用户注册 03. 首页 04. 喜欢 05. 查询

以程序员的视角,看前后端分离的是否必要?

Hello,我是贝格前端工场,本篇分享一个老生常谈的话题,前后端分离是必然趋势,但也是要区分具体的场景,欢迎探讨,关注,有前端开发需求可以私信我,上车了。 一、什么是前后端分离和不分…

【dc-dc】世微AP5125 外置MOS 5-100V 8A平均电流型LED降压恒流驱动器 SOT23-6

产品描述 AP5125 是一款外围电路简单的 Buck 型平均电流检测模式的 LED 恒流驱动器,适用于 8-100V 电压范围的非隔离式大功率恒流 LED 驱动领域。芯片采用固定频率 140kHz 的 PWM 工作模式, 利用平均电流检测模式,因此具有优异的负载调整 率特…

一种简单高效的新算法(2021)|算术优化算法AOA原理及其利用 (Matlab/Python)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进 CEC2005中的测试 本文KAU将介绍一个由Abualigah等人于2021年发表在Comput. Methods Appl. Mech. Eng.上的元启发式算法——算术优化算法(Arithmetic Optimization Al…