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

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

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

相关文章

业务架构设计之汽配供应链与实现的实践总结

随着汽车行业的不断发展,汽配供应链的规模和复杂度也在不断增加。为了满足市场需求,建立一个高效、可靠的汽配供应链业务系统至关重要。本文将总结一些关键的实践经验,帮助读者了解如何设计和实现一个稳定且高效的汽配供应链业务系统。 1. 业…

从零开始手写mmo游戏从框架到爆炸(七)— 消息封装

上一篇,我们初步把消息handler 注册到了服务中,在进行后续工作之前我们需要再做一些准备工作。 第一:把之前自己管理的bean放到spring中去管理,后面大部分的bean都通过spring来管理。 第二:为了方便路由消费&#xff0…

C语言:内存函数

创作不易,友友们给个三连吧!! C语言标准库中有这样一些内存函数,让我们一起学习吧!! 一、memcpy函数的使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 1.1 使…

分享65个节日PPT,总有一款适合您

分享65个节日PPT,总有一款适合您 65个节日PPT下载链接:https://pan.baidu.com/s/1hc1M5gfYK8eDxQVsK8O9xQ?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知…

编译原理与技术(二)——词法分析(一)正则表达式

一、词法分析的概貌 一个程序,在我们看来往往是像下图这样的。 实际上,上面的程序本质上就是一个字符串,所以,它等价于下面这样的。 上面的字符串(字符流) ,就是编译器接收到的程序的形式。 所…

centos安装inpanel

前置条件 安装python yum -y install python 安装 cd /usr/local git clone https://gitee.com/WangZhe168_admin/inpanel.git cd inpanel python install.py 安装过程需要设置账户 密码 端口号 我设置的是admin:admin 10050 使用 打开浏览器,输入 http://192.168.168.…

【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)

什么是嵌入? OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于: Search 搜索(结果按与查询字符串的相关性排序)Clustering 聚类(文本字符串按相似性分组)Recommendations 推荐(推荐具有…

02.05

1.单链表 main #include "1list_head.h" int main(int argc, const char *argv[]) { //创建链表之前链表为空Linklist headNULL;int n;datatype element;printf("please enter n:");scanf("%d",&n);for(int i0;i<n;i){printf("ple…

22.仿简道云公式函数实战-数学函数-COT

1. COT函数 COT 函数可用于计算角度的余切值。 2. 函数用法 COT(弧度) 使用该函数时&#xff0c;需要将角度转化为弧度参与计算&#xff0c;可通过 RADIANS 函数 将角度转化为弧度。 3. 函数示例 如计算 COT(45) 的值&#xff0c;可设置公式为COT(RADIANS(45))&#xff0…

算法——二分查找算法

1. 二分算法是什么&#xff1f; 简单来说&#xff0c;"二分"指的是将查找的区间一分为二&#xff0c;通过比较目标值与中间元素的大小关系&#xff0c;确定目标值可能在哪一半区间内&#xff0c;从而缩小查找范围。这个过程不断重复&#xff0c;每次都将当前区间二分…

算法练习-四数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

配置git环境与项目创建

项目设计 名称&#xff1a;KOB 项目包含的模块 PK模块&#xff1a;匹配界面&#xff08;微服务&#xff09;、实况直播界面&#xff08;WebSocket协议&#xff09; 对局列表模块&#xff1a;对局列表界面、对局录像界面 排行榜模块&#xff1a;Bot排行榜界面 用户中心模块&…

【Qt】常见问题

1.存在未解析的标识符 将build文件夹删掉重新编译。 2.左侧项目目录栏无法删除已添加项目 打开目标项目上一级的pro文件&#xff0c;将目标文件名字注释或者删除掉&#xff0c;最后保存&#xff0c;qt就会自动更新&#xff0c;将该项目隐藏掉。 3.在qt creator下添加槽函数…

大型装备制造企业案例分享——通过CRM系统管理全球业务

本期&#xff0c;小Z为大家带来的CRM管理系统客户案例是某大型装备制造企业运用Zoho CRM管理全球业务的过程分享。该企业是创业板上市公司&#xff0c;业务遍及100多个国家和地区&#xff0c;合作伙伴超百位&#xff0c;拥有覆盖全球的销售和服务网络。截止目前&#xff0c;相继…

油猴js 获取替换网页链接并重定向

场景 适用一些镜像网站进行重定向&#xff0c;比如Github。 代码 // UserScript // name New Userscript // namespace http://tampermonkey.net/ // version 2024-02-06 // description try to take over the world! // author You // match …

❤ React18 环境搭建项目与运行(地址已经放Gitee开源)

❤ React项目搭建与运行 环境介绍 node v20.11.0 react 18.2 react-dom 18.2.0一、React环境搭建 第一种普通cra搭建 1、检查本地环境 node版本 18.17.0 检查node和npm环境 node -v npm -v 2、安装yarn npm install -g yarn yarn --version 3、创建一个新的React项目…

OpenCV 图像处理六(傅里叶变换、模板匹配与霍夫变换)

文章目录 一、傅里叶变换1.1 NumPy实现和逆实现1.1.1 NumPy实现傅里叶变换Demo 1.1.2 NumPy实现逆傅里叶变换Demo 1.2 OpenCV实现和逆实现1.2.1 OpenCV实现傅里叶变换Demo 1.2.2 OpenCV实现逆傅里叶变换Demo 1.3 频域滤波1.3.1低频、高频1.3.2 高通滤波器构造高通滤波器Demo 1.…

jquery写表格,通过后端传值,并合并单元格

<!DOCTYPE html> <html> <head><title>Table Using jQuery</title><style>#tableWrapper {width: 100%;height: 200px; /* 设置表格容器的高度 */overflow: auto; /* 添加滚动条 */margin-top: -10px; /* 负的外边距值&#xff0c;根据实际…

Mac OS中创建适合网络备份的加密镜像文件:详细步骤与参数选择

这篇文章提供了在Mac OS中创建适合网络备份的加密镜像文件的详细步骤&#xff0c;同时探讨了在选择相关参数时的关键考虑因素&#xff0c;以确保用户能够安全、高效地存储和保护重要数据。 创建步骤 在Mac OS Monterey中&#xff0c;你可以使用“磁盘工具”&#xff08;Disk …

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏12(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言斧头动画控制配置拿出 待机和攻击动画代码控制攻击动画 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中&#xff0…