YOLO-World——超级轻量级开放词汇目标检测方法

前言

目标检测一直是计算机视觉领域中不可忽视的基础挑战,对图像理解、机器人技术和自主驾驶等领域具有广泛应用。随着深度神经网络的发展,目标检测方面的研究取得了显著进展。尽管这些方法取得了成功,但它们存在一些限制,主要体现在只能处理具有固定词汇表的目标检测问题,例如COCO数据集中的80个类别。一旦目标类别被定义和标记,训练好的目标检测器只能识别这些特定的类别,从而限制了其在开放场景中的适用性。

近期的研究致力于解决开放词汇检测问题,探索了流行的视觉语言模型(如BERT)以从语言编码器中提取词汇知识。然而,这些基于蒸馏的方法受制于训练数据的稀缺性和词汇多样性的限制,比如OV-COCO只包含48个基本类别。有些方法尝试通过重新构建物体检测训练为基于区域的视觉语言预训练,并在大规模上训练具有开放词汇的物体检测器。然而,这些方法在真实世界场景中仍然面临挑战,主要因为计算负担较重且在边缘设备上部署复杂。过去的研究已经验证了大型检测器的预训练在性能上的表现,但对于预训练小型检测器以赋予其开放识别能力的研究尚未深入进行。

YOLO-World

YOLO-World似乎致力于在open vocabulary物体检测领域实现高效的解决方案。通过探索大规模预训练方案,该项目旨在提升传统YOLO检测器的open vocabulary能力。YOLO-World的推理速度高效且易于部署,其推理过程中甚至可以移除文本编码器,通过将文本嵌入重新参数化为RepVL-PAN的权重来实现高效部署。此外,通过区域-文本对比学习在大规模数据集上进行open vocabulary预训练,进一步提升了YOLO-World的性能。预训练结果表明,YOLO-World在大词汇检测方面表现强大,而通过更多数据的训练,预计可以实现更大的改进。
在这里插入图片描述
YOLO-World采用了可重参数化的视觉-语言PAN和开放词汇区域-文本对比预训练方案。该检测器在大规模数据集上进行了预训练,展现出卓越的零样本性能,并能够轻松适应各种下游任务。不仅如此,该检测器的预训练权重和代码将会被开源,以促进更广泛的实际应用。此外,文章还提出了一种提示-检测范式,旨在进一步提高open vocabulary物体检测的效率。

预训练

YOLO-World引入了一种创新的目标检测方法,重新将实例标注定义为区域-文本对,其中文本可以是类别名称、名词短语或对象描述。该方法以图像和文本作为输入,然后输出预测框和相应的对象嵌入。这种方法的独特之处在于将文本信息与图像结合,为目标检测任务提供了更丰富的语义信息,有望提高检测的准确性和鲁棒性。

模型架构

YOLO-World的整体架构包括YOLO检测器、文本编码器和可重新参数化的视觉-语言路径聚合网络(RepVL-PAN)。在给定输入文本的情况下,YOLO-World中的文本编码器将文本编码成文本嵌入。图像编码器在YOLO检测器中提取多尺度特征。RepVL-PAN通过跨模态融合图像特征和文本嵌入来增强文本和图像的表示。

YOLO检测器方面,基于YOLOv8开发,包括Darknet作为图像编码器的骨干,路径聚合网络(PAN)用于多尺度特征金字塔,以及头部用于边界框回归和对象嵌入。

文本编码器方面,给定文本T,采用CLIP预训练的Transformer文本编码器提取文本嵌入W = TextEncoder(T)。相较于纯文本语言编码器,CLIP文本编码器具有更强的视觉-语义能力,有助于连接视觉对象与文本。对于标题或引用表达式的输入文本,使用简单的n-gram算法提取名词短语,并输入文本编码器。

文本对比Head采用具有两个3×3卷积的解耦头,用于回归边界框和对象嵌入。引入了文本对比中心,通过一种方法获取对象-文本相似度。
在这里插入图片描述

在训练过程中,为每个包含4张图像的马赛克样本构建一个在线词汇表T。对涉及的所有积极名词进行采样,并从相应数据集中随机采样一些消极名词。每个马赛克样本的词汇表最多包含M个名词,M默认设置为80。

在推理阶段,引入了基于离线词汇表的先提示后检测策略,用户可以定义自定义提示,通过文本编码器进行编码,获得离线词汇嵌入,以提高效率。
在这里插入图片描述

重新参数化VL-PAN

在这里插入图片描述
RepVL-PAN遵循自上而下和自下而上的路径,以建立多尺度图像特征金字塔。此外,文本引导的CSPLayer和Image-Pooling注意力被引入,进一步增强图像特征和文本特征之间的交互,提高open vocabulary表的视觉语义表示能力。在推理过程中,离线词汇嵌入可以被重新参数化为卷积层或线性层的权重以进行部署。

文本引导的CSPLayer在自顶向下或自底向上融合后使用跨阶段局部层(CSPLayer),通过融合文本引导信息对CSPLayer进行扩展,形成文本引导的CSPLayer。
在这里插入图片描述
Image-Pooling注意力为了用图像感知信息增强文本嵌入,提出了图像池化注意力(Image-Pooling Attention)。不直接在图像特征上使用交叉注意力,而是通过多尺度特征上的最大池化获取3×3区域,总共产生27个patch。然后通过以下方式更新文本嵌入:
在这里插入图片描述

训练方式

在大规模检测、定位和图像文本数据集上,YOLO-World进行了预训练。预训练过程采用了区域-文本对比损失函数,通过交叉熵计算目标-文本相似度和目标-文本分配之间的损失。边界框回归方面则使用了IoU损失和分布式焦点损失。在图像-文本数据集中,考虑到存在噪声框,只对准确边界框的样本计算回归损失。整体的训练损失由区域-文本对比损失和边界框回归损失组成。
此外,为了进行预训练,采用了图像-文本数据的伪标记方法。这个过程包括三个关键步骤:提取名词短语、伪标注和过滤。首先,通过提取名词短语和使用预训练的open vocabulary检测器生成伪框,得到初步的区域-文本对。接着,利用预训练的CLIP模型评估图像-文本对和区域-文本对的相关性,并过滤掉相关性较低的伪标注和图像。最后,通过非极大值抑制等手段,过滤掉冗余的边界框。通过这一方法,从CC3M数据集中采样和标注了246k张图像,生成了821k个伪标注。

实验与结果

通过在大规模数据集上进行预 训练并在LVIS基准和COCO基准上以零 样本的方式评估YOLO-World的有效性。还评估 了YOLO-World在COCO和LVIS上进行目标检测的微调 性能。
实验设置。我们使用预训练的权重来初始化YOLO-World进行微调。所有模型都使用AdamW优化器进行80个epoch的微调。此外,我们使用学习因子0.01对CLIP文本编码器进行微调。对于LVIS数据集,我们遵循之前的工作,并在LVIS-base(常见和频繁)上微调YOLO-World,并在LVIS-novel(罕见)上进行评估。

COCO目标检测。我们将预训练的YOLO-World与之前的YOLO检测器进行了比较。在COCO数据集上微调YOLO-World时,考虑到COCO数据集的词汇量较小,我们移除了提出的RepVL-PAN以进一步加速。从结果可以看出,我们的方法在COCO数据集上可以取得不错的零样本性能,这表明YOLO-World具有很强的泛化能力。此外,经过在COCO train2017上微调后,YOLO-World的性能比之前从头开始训练的方法更高。

在这里插入图片描述
LVIS目标检测。我们评估了YOLO-World在标准LVIS数据集上的微调性能。与在完整LVIS数据集上训练的oracle YOLOv8s相比,YOLO-World取得了显著的改进,特别是对于较大的模型,例如YOLO-World-L的AP提高了7.2,APr提高了10.2。这些改进证明了针对大词汇检测的预训练策略的有效性。此外,作为一种高效的单阶段检测器,YOLO-World在整体性能上优于之前的最先进的两阶段方法,例如可学习提示[7]或基于区域的对齐。
在这里插入图片描述
open vocabulary实例分割

我们进一步对YOLO-World进行微调,以在open vocabulary的情况下进行对象分割,这可以称为open vocabulary实例分割(OVIS)。我们直接在具有掩码注释的数据子集上对YOLO-World进行微调,并在大词汇设置下评估分割性能。我们在两种设置下评估open vocabulary实例分割:

从COCO到LVIS设置,我们在COCO数据集上对YOLO-World进行微调(包括80个类别),模型需要从80个类别转移到1203个类别(80→1203)

从LVIS-base到LVIS设置,我们在LVIS-base上对YOLO-World进行微调(包括866个类别,常见和频繁的类别),模型需要从866个类别转移到1203个类别(866→1203)。

我们在具有1203个类别的标准LVIS val2017上评估微调模型,其中有337个罕见类别是未见过的,可以用来衡量open vocabulary性能。

结果。我们采用了两种微调策略:(1)仅微调分割头部和(2)微调所有模块。在策略(1)下,经过微调的YOLO-World仍保留了从预训练阶段获得的零样本能力,使其能够推广到未见过的类别而无需额外微调。策略(2)使YOLO-World更好地适应LVIS数据集,但可能会导致零样本能力的降低。
在这里插入图片描述
结果表明,在LVIS-base上进行fine-tuning可以获得更好的性能,这可能是因为LVIS数据集提供了更详细和更密集的分割注释。当fine-tuning所有模块时,YOLO-World在LVIS上获得了显著的改进,但可能会降低open vocabulary表现。

可视化

本文介绍了预训练的YOLO-World-L模型在三种不同场景下的可视化结果:零样本推理、用户自定义词汇的检测和指代检测。结果表明,该模型具有强大的零样本迁移能力和指代能力,并且能够进行细粒度的检测和分类。这种能力得益于该模型的大规模训练数据和预训练策略。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

如何让MySQL从部署到稳定运行?

如何让MySQL从部署到稳定运行? 1. 安装MySQL 8保姆级教程 2. 《从菜鸟到大师之路 MySQL 篇》 3. 关于MySQL的66个问题 4. MySQL 的学习资源史上最全 5. 掌握 SQL 这些核心知识点,出去吹牛逼再也不担心了

Spring Web Header 解析常见错误

在上一章,我们梳理了 URL 相关错误。实际上,对于一个 HTTP 请求而言,URL 固然重要,但是为了便于用户使用,URL 的长度有限,所能携带的信息也因此受到了制约。 如果想提供更多的信息,Header 往往…

Redis(三)(实战篇)

查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中,调用另外一个事务方法,比如: Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…

@Valid常用的用法

一、通用用法 除了Null, NotNull, NotBlank,NotEmpty 这四个外,其他所有的注解,传 null 时都会被当作有效处理。 注解验证的数据类型备注Null任意类型参数值必须是 NullNotNull任意类型参数值必须不是 NullNotBlank只…

MySQL:关于存储过程

1、删除已存在存储过程 DROP PROCEDUCRE IF EXISTS P_NAME 2、创建存储过程 CREATE PROCEDUCRE P_NAME(NAME VARCHAR(36) ) 3、存储过程业务逻辑 BEGIN DECLARE NAME INT;BEGINEND; END 4、存储过程给变量赋值 SET 赋固定值, INTO配合查询语句赋值【多个值使用id,name i…

Antd+React+react-resizable实现表格拖拽功能

1、先看效果 2、环境准备 "dependencies": {"antd": "^5.4.0","react-resizable": "^3.0.4",},"devDependencies": {"types/react": "^18.0.33","types/react-resizable": "^…

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共享内存(mmap) 套接字(socket)过时的IPC通信方式 System V IPC 共享内存(sh…

数据结构——A/复杂度

A/基础铺垫 1. 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 2.什么是算法? 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输…

Windows下Node.js下载安装及环境变量配置教程

Windows下Node.js下载安装及环境变量配置教程 安装版本:node-v18.19.0-x64.msi 文章目录 Windows下Node.js下载安装及环境变量配置教程一、Node.js和NPM简介二、下载地址三、安装步骤四、环境配置五、安装淘宝镜像总结 一、Node.js和NPM简介 1、Node.js &#xf…

前端架构: 脚手架在前端研发流程中的意义

关于脚手架 脚手架 command-line interface基于文本界面,通过中断输入命令执行常见的脚手架:npm, webpack-cli, vue-cli拿 npm 这个脚手架来说 在终端当中输入 npm 命令, 系统就会通过文本方式返回 npm 的使用方法它这种通过命令行执行的操作方式效率很…

数据结构|对称矩阵压缩存储的下标公式推导|如何求对称矩阵压缩存储对应的一维数组下标

因为考试的时候可能会给很多情况的变式题,所以要会推导而不是背公式,情况变了,公式就不管用了。 行优先、只存储主对角线下三角区: 矩阵下标 ai,j(i>j)->一维数组下标 B[k] 按照行优先的原则,确定 ai,j 是一维数…

Unity3D实现项目限制功能(使用次数限制和时间限制)

系列文章目录 unity工具 文章目录 系列文章目录前言一、时间限制1-1、代码如下: 二、次数限制2-1、 在Unity项目中需要对注册表进行操作,还需要设置一下API兼容级别设置成 .NET Framework2-2、设置如下图 Player里面2-3、代码如下: 三、同时…

13. Threejs案例-绘制3D文字

13. Threejs案例-绘制3D文字 实现效果 知识点 FontLoader 一个用于加载 JSON 格式的字体的类。 返回 font,返回值是表示字体的 Shape 类型的数组。 其内部使用 FileLoader 来加载文件。 构造器 FontLoader( manager : LoadingManager ) 参数类型描述managerLo…

简单的TcpServer(英译中)

目录 一、TCP socket API 详解1.1 socket()1.2 bind()1.3 listen()1.4 accept()1.5 connect 二、TcpServer(英译中)2.1 TcpServer.hpp2.2 TcpClient.cc2.3 Task.hpp2.4 Thread.hpp2.5 ThreadPool.hpp2.6 makefile2.7 Main.cc2.8 log.hpp2.9 Init.hpp2.10…

matlab | 一些总是忘记多次查的快捷键及符号

1、matlab注释多行快捷键 多行注释:选中要注释的语句,快捷键:ctrlr 取消注释:选中要取消的语句,快捷键:ctrlt 2、改变matlab 横纵坐标大小及名称,以及坐标轴数字大小 xlabel(X/m,FontSize,18) %改坐标名字及大小ylabel(Y/m,FontSize,18) set(gca,fo…

瑞萨RA6M3开发实践指南-UART实践

1.背景说明 本文是参考瑞萨RA6M3开发实践指南文章教程,基于瑞萨HMI-Board BSP :1.1.1 版本 RT-Thread 5.0.1 版本操作步骤进行记录,整理成的文档。 1.1 本章内容 使用RT-Thread Studio创建开发板的程序,编写UART的程序,实现串口…

【go】ent操作之CRUD与联表查询

文章目录 1 CRUD1.1 创建1.1.1 单条创建1.1.2 批量创建 1.2 查找1.2.1 查询单条 / 条件准确查询1.2.2 查询单条 / 条件模糊查询1.2.3 查询单条 / In1.2.4 查询全部 1.3 更新1.4 删除 2 联表查询2.1 O2M(一对多查询)2.1.1 增加Edge2.1.2 查询方法2.1.2.1 …

Springboot+vue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的企业财务管理系统,采用M(model&…

【Java安全】ysoserial-URLDNS链分析

前言 Java安全中经常会提到反序列化,一个将Java对象转换为字节序列传输(或保存)并在接收字节序列后反序列化为Java对象的机制,在传输(或保存)的过程中,恶意攻击者能够将传输的字节序列替换为恶…

第二篇:MySQL安装与配置(基于小皮面板(phpstudy))

在第一篇中介绍了数据库的相关概念,了解到SQL是用来操作数据库管理系统的语言,因此要学习数据库技术,数据库管理系统的配备是必不可少的! 并且出于流行性与实惠性的双考量而选择MySQL这款数据库管理系统软件 一,工具推…