YOLO-World——S(cvpr2024)


文章目录

  • Abstract
    • 成果
  • Method
    • Pre-training Formulation: Region-Text Pairs
    • Model Architecture
      • YOLO Detector
      • Text Encoder
      • Text Contrastive Head
      • Training with Online Vocabulary
      • Inference with Offline Vocabulary
    • Re-parameterizable Vision-Language PAN
      • Text-guided CSPLayer
      • Image-Pooling Attention
    • Pre-training Schemes
      • Learning from Region-Text Contrastive Loss
      • Pseudo Labeling with Image-Text Data
  • Experiment

原文
代码

Abstract

YOLO系列检测器对预定义和训练对象类别的依赖限制了它们在开放场景中的适用性。(简单来说就是一旦对象类别被定义和标记,经过训练的检测器只能检测到那些特定的类别)为了解决这个限制,作者提出了YOLO-World——通过视觉语言建模和大规模数据集的预训练,增强了YOLO的开放词汇检测能力
具体来说,作者提出了一种新的可重参数化视觉-语言路径聚合网络(RepVL-PAN)和区域-文本对比损失,以促进视觉和语言信息之间的交互。

成果

在具有挑战性的LVIS数据集上,YOLO-World在V100上实现了35.4 AP和52.0 FPS,在精度和速度方面都优于许多最先进的方法。此外,微调YOLO-World在目标检测和开放词汇实例分割等几个下游任务上取得了显著的性能

Method

Pre-training Formulation: Region-Text Pairs

以往的目标检测方法实例注释是Ω={Bi,ci},由边界框{Bi}和类别标签{ci}组成。本文中,作者将实例注释重新表述为区域-文本对Ω= {Bi,ti},ti是区域Bi的对应文本,可以是类别名称、名词短语或对象描述。此外,YOLO-World同时采用图像I和文本T作为输入,输出预测框{bk}和对应的目标嵌入{ek} (ek∈RD)

Model Architecture


它由一个YOLO检测器、一个文本编码器和一个可重新参数化的视觉语言路径聚合网络(RepVL-PAN)组成。
文本编码器将输入文本转换为文本嵌入,图像编码器(也就是YOLO Backbone)从输入图像中提取多尺度特征,然后利用RepVL-PAN通过利用图像特征和文本嵌入之间的跨模态融合来增强文本和图像的表示,最后YOLO-World预测回归的边界框和目标嵌入,以匹配输入文本中出现的类别或名词

YOLO Detector

主要是基于YOLOv8开发的,它包含了一个Darknet骨架作为图像编码器,一个用于多尺度特征金字塔的路径聚合网络(PAN),以及一个用于边界盒回归和对象嵌入的头部

Text Encoder

给定文本T,采用CLIP预训练的Trans- former文本编码器提取相应的文本嵌入W = TextEncoder(T)∈RC×D,其中C是名词的数量,D是嵌入维度。
当输入文本为标题或引用表达式时,采用简单的n-gram算法提取名词短语,然后将其输入文本编码器。

Text Contrastive Head

作者采用解耦头部和两个3×3卷积来回归边界框{bk}Kk=1和对象嵌入{ek}K k =1,其中K表示对象的数量,提出了一个文本对比头来获得对象-文本相似度sk,j
将文本嵌入ek与分类器权重wj之间的相似度定义为它们的L2范数的乘积,并加入了具有可学习缩放因子α和移位因子β的仿射变换
(L2范数和仿射变换对于稳定区域文本训练都很重要)

Training with Online Vocabulary

在训练过程中,作者为每个包含4张图像的Mosaic样本构建一个在线词汇T。具体来说,对拼接图像中涉及的所有正面名词进行抽样,并从相应的数据集中随机抽样一些负面名词,每个Mosaic样本的词汇表最多包含M个名词,M被默认设置为80

Inference with Offline Vocabulary

在推理阶段,作者提出了一种基于离线词汇的“提示-然后检测”策略,以提高推理效率。如图3所示,用户可以定义一系列自定义提示,其中可能包括标题或类别。然后,利用文本编码器对这些提示进行编码,并获得离线词汇嵌入。离线词汇表允许避免对每个输入进行计算,并提供根据需要调整词汇表的灵活性。

Re-parameterizable Vision-Language PAN

提出的RepVL-PAN采用文本引导CSPLayer(T-CSPLayer)将语言信息注入图像特征,并采用图像池化注意力(I-Pooling Attention)增强图像感知文本嵌入

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

Text-guided CSPLayer

扩展了CSPLayer,将文本引导纳入多尺度图像特征,形成文本引导CSPLayer
具体来说,给定文本嵌入W和图像特征Xl∈RH×W×D (l∈{3,4,5}),作者采用最后一个黑瓶颈块后的max-sigmoid关注将文本特征聚合为图像特征:
Xl '与跨阶段特征连接作为输出, δ表示sigmoid函数

Image-Pooling Attention

为了利用图像感知信息增强文本嵌入,作者通过提出图像池关注聚合图像特征来更新文本嵌入
作者不是直接在图像特征上使用交叉关注,而是利用多尺度特征上的最大池化来获得3 × 3区域,从而得到总共27个tokenX ~ ∈R27×D

Pre-training Schemes

Learning from Region-Text Contrastive Loss

给定马赛克样本I和文本T,YOLO-World输出K个对象预测{ Bk,sk} Kk=1,以及注释Ω= { Bi,ti} Ni=1。遵循YOLOv8,并利用任务对齐标签分配将预测与地面真实性注释匹配,并为每个正预测分配一个文本索引作为分类标签基于这个词汇表,我们通过对象-文本(区域-文本)相似性和对象-文本分配之间的交叉熵,构建了区域-文本对的区域-文本对比损失Lcon。此外,我们采用IoU损失和分布式焦点损失进行边界盒回归,并将总训练损失定义为

λI为指示因子,当输入图像I来自检测或接地数据时设为1,当输入图像I来自图像-文本数据时设为0

Pseudo Labeling with Image-Text Data

作者提出了一种自动标记方法来生成区域文本对,而不是直接使用图像文本对进行预训练
包含三个步骤:
(1)名词短语提取:首先利用n-gram算法从文本中提取名词短语
(2)伪标注:采用预训练的开放词汇检测器,为每张图像的给定名词短语生成伪框,从而提供粗糙的区域-文本对
(3)过滤:使用预训练的CLIP来评估图像-文本对和区域-文本对的相关性,并过滤低相关性的伪注释和图像

Experiment

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

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

相关文章

面试算法-174-二叉树的层序遍历

题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 解 class Solut…

消息队列中间件,RabbitMQ的使用,死信队列,延迟队列,利用枚举实现队列,交换机,RountKey的声明

目录 0.交换机种类和区别 1.声明队列和交换机以及RountKey 2.初始化循环绑定 3.声明交换机 4.监听队列 4.1 监听普通队列 4.2监听死信队列 5.削峰填谷的实现 0.交换机种类和区别 Direct Exchange(直连交换机): 直连交换机将消息发送到…

武汉星起航:亚马逊跨境引领全球贸易新趋势,展现积极影响力

随着全球化浪潮的持续推进,跨境电商行业正迎来前所未有的发展机遇。亚马逊作为全球领先的电商平台,其在跨境电商领域的发展趋势备受瞩目。亚马逊跨境电商不仅扩大了跨境市场的规模,优化了供应链管理,还积极应用科技创新&#xff0…

【讲解下如何从零基础学习Java】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

pyqt实战-软件通用界面设计模板样例

软件界面 技术点 无边框设计自定义右上角最大化,最小化,关闭按钮界面布局能够自适应界面的放大缩小按住鼠标左键能够拖动整个界面treewidget整体风格设计 代码 import sysfrom PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.Qt import * impor…

c# 服务创建

服务 创建服务 编写服务 可以对server1.cs重新命名,点击你的server按F7进入代码编辑模式,编写脚本 双击你的server.cs右击空白位置,添加安装程序,此时会生成“serviceInstaller1”及“serviceProcessInstaller1” 后续可以点击P…

开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition

开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition 简介源码函数说明arv_camera_newarv_camera_acquisitionarv_camera_get_model_namearv_buffer_get_image_widtharv_buffer_get_image_height 简介 本文针对官方例程中的第一个例程&…

CSS特效---跳动的文字

1、演示 2、一切尽在代码中 <!--* Author: your name* Date: 2023-10-03 14:42:44* LastEditTime: 2023-10-03 14:56:26* LastEditors: DESKTOP-536UVPC* Description: In User Settings Edit* FilePath: \css-special-effects\跳动的文字.html --> <!DOCTYPE html>…

【Linux】进程的优先级环境变量

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 进程的优先级2.1 什么是优先级2.2 为什么要有优先级2.3 优先级的查看方式2.4 对优先级调整 3. 命令行参数4. 环境变量4.1 环境变量与配置文件4.1.1 环境变量初步介绍4.1.2 配置文件 4.2 更多环境变量4.3 整…

Shiro整合EhCache缓存(二)

Shiro整合EhCache缓存 1、授权、角色认证1.1、后端接口服务注解1.2、授权-获取角色1.3、授权-获取权限1.4、授权-异常处理1.5、前端页面授权 2、EhCache2.1、Shiro整合EhCache 1、授权、角色认证 用户登录后&#xff0c;需要验证是否具有指定角色指定权限。Shiro也提供了方便的…

企业网络日益突出的难题与SD-WAN解决方案

随着企业规模的迅速扩张和数字化转型的深入推进&#xff0c;企业在全球范围内需要实现总部、分支机构、门店、数据中心、云等地点的网络互联、数据传输和应用加速。SD-WAN作为当今主流解决方案&#xff0c;在网络效率、传输质量、灵活性和成本等方面远远超越传统的互联网、专线…

归并排序详解(附代码)

归并排序 数据科学家每天都在处理算法。 然而&#xff0c;数据科学学科作为一个整体已经发展成为一个不涉及复杂算法实现的角色。 尽管如此&#xff0c;从业者仍然可以从建立对算法的理解和知识库中受益。 在本文中&#xff0c;对排序算法归并排序进行了介绍、解释、评估和实…

高温超导量子干涉仪更具实用价值 政策推动行业研制能力提升

高温超导量子干涉仪更具实用价值 政策推动行业研制能力提升 高温超导量子干涉仪&#xff0c;一种采用临界温度在77K以上高温超导材料制造而成的可对磁场微小变化进行测量的仪器&#xff0c;需要工作在液氮环境中。 超导量子干涉仪&#xff08;SQUID&#xff09;&#xff0c;一种…

面试官:为什么忘记密码要重置而不是告诉你原密码?

这是一个挺有意思的面试题,挺简单的,不知道大家平时在重置密码的时候有没有想过这个问题。回答这个问题其实就一句话:因为服务端也不知道你的原密码是什么。如果知道的话,那就是严重的安全风险问题了。 我们这里来简单分析一下。 做过开发的应该都知道,服务端在保存密码到…

CPLD可运行的最高频率是多少

CPLD可运行的最高频率是多少 AG32 内置CPLD的可运行最高频率 AG32 内置CPLD的可运行最高频率 AG32 MCU 的运行最高频率是248M。而CPLD中没有标准的最高频率。 最大能跑多少MHz&#xff0c;取决于cpld 里的设计。 如果是逻辑电路&#xff0c;则不存在时钟的概念。 如果是时序电路…

在vue和 js 、ts 数据中使用 vue-i18n,切换语言环境时,标签文本实时变化

我的项目需要显示两种语言(中文和英文)&#xff0c;并且我想要切换语言时&#xff0c;页面语言环境会随之改变&#xff0c;目前发现&#xff0c;只能在vue中使用$t(‘’)的方式使用&#xff0c;但是这种方式只能在vue中使用&#xff0c;而我的菜单文件是定义在js中&#xff0c;…

直流充电桩与交流充电桩有哪些区别,如何选最靠谱?

在当今快速发展的电动汽车市场&#xff0c;正确选择充电桩成为了车主们面临的重要问题之一。直流充电桩与交流充电桩区到底有什么区别&#xff1f;哪些方面不同&#xff1f;分别适用场景是什么&#xff1f;不同场景应该怎么选&#xff1f;本文一文为您详解。 一、直流充电桩与交…

ObjectMapper的具体介绍与使用

文章目录 声明一、前言二、ObjectMapper与JSONObject比较1、核心主要有三个部分&#xff1a;依赖包不同 2、ObjectMapper使用概述2.1、工程的pom.xml导包信息2.2、创建案例中的测试对象2.3、对象和JSON相互转化2.3.1、测试代码2.3.2、测试结果展示 2.4、集合和JSON像话转化2.4.…

【让自己的U盘变得与众不同】

文章目录 今日座右铭&#xff1a;在心里种花&#xff0c;人生才不会荒芜。 文章目录 文章目录前言一、准备ICO图标二、插入U盘1.点击新建文本文档-输入代码-点击保存2.将代码文本文档名称修改为autorun.inf在这里插入图片描述3.将图标及代码文本文档放入U盘中在这里插入图片描述…

深度残差收缩网络中,使用 Sigmoid 函数的用意在哪?

在深度残差收缩网络中&#xff0c;使用 Sigmoid 函数将输出归一化到 0 和 1 之间的目的是为了限制输出值的范围&#xff0c;并且使得输出可以被解释为概率。这个 Sigmoid 函数的输出可以被看作是一个置信度或者概率的度量&#xff0c;表示某个事件发生的可能性。 在设置阈值时…