论文阅读笔记:YOLO-World: Real-Time Open-Vocabulary Object Detection

论文阅读笔记:YOLO-World: Real-Time Open-Vocabulary Object Detection

  • [1 背景](#1 背景)
    • [1.1 问题](#1.1 问题)
    • [1.2 提出的方法](#1.2 提出的方法)
    • [1.3 贡献](#1.3 贡献)
  • [2 方法](#2 方法)
    • [2.1 预训练公式:区域文本对](#2.1 预训练公式:区域文本对)
    • [2.2 网络结构](#2.2 网络结构)
      • [2.2.1 YOLO检测器](#2.2.1 YOLO检测器)
      • [2.2.2 文本编码器](#2.2.2 文本编码器)
      • [2.2.3 文本对比头](#2.2.3 文本对比头)
      • [2.2.4 使用在线词汇训练](#2.2.4 使用在线词汇训练)
      • [2.2.5 使用离线词汇推理](#2.2.5 使用离线词汇推理)
    • [2.3 可重参化的视觉语言PAN](#2.3 可重参化的视觉语言PAN)
      • [2.3.1 文本引导的CSPLayer](#2.3.1 文本引导的CSPLayer)
      • [2.3.2 图像池化注意力](#2.3.2 图像池化注意力)
    • [2.4 预训练策略](#2.4 预训练策略)
      • [2.4.1 区域文本对比损失](#2.4.1 区域文本对比损失)
      • [2.4.2 使用图像文本数据进行伪标记](#2.4.2 使用图像文本数据进行伪标记)
  • [3 实验](#3 实验)
    • [3.1 和SOTA方法对比](#3.1 和SOTA方法对比)
    • [3.2 消融实验](#3.2 消融实验)

1 背景

1.1 问题

尽管目标检测方法取得了成功,但因为这些方法只能使用固定词汇表来表示待检测对象,例如COCO数据集中的80个类别,定义并标记对象类别后,经过训练的检测器只能检测这些特定类别,从而限制了开放场景的能力和适用性。

最近的研究尝试利用流行的视觉-语言模型,通过从语言编码器(比如BERT)中提取词汇知识,来实现开放词汇检测。但是,这类基于知识提取的方法效果有限,主要是因为训练数据不足,词汇多样性不够------比如OV-COCO数据集只包含48个基础类别。一些改进方法将目标检测训练重新设计为区域级的视觉-语言预训练,从而大规模训练开放词汇检测器。不过,这些方法在实际应用中仍然面临两大难题:(1)计算负担重和(2)边缘设备部署复杂。先前工作证明了预训练大型检测器良好的性能,而预训练小型检测器以赋予他们开放识别能力扔有待探索。

1.2 提出的方法

在本文中,作者提出了YOLO-World,旨在实现高效的开放词汇目标检测,并探索了大规模的预训练方案,将传统的YOLO检测器推向一个新的开放词汇世界。与之前的方法相比,所提出的YOLOWorld非常高效,推理速度快,并且在下游应用程序易于部署。

具体来说,YOLO-World 遵循标准的 YOLO 架构 ,并利用预先训练的 CLIP 文本编码器对输入文本进行编码。作者进一步提出了可重新参数化的视觉语言路径聚合网络 RepVL-PAN 来连接文本特征和图像特征,以实现更好的视觉语义表示。在推理过程中,可以删除文本编码器,并将文本嵌入重新参数化为 RepVL-PAN 的权重,以实现高效部署。作者通过在大规模数据集上进行区域-文本对比学习,进一步研究了 YOLO 检测器的开放词汇预训练方案,该方案将检测数据、GT数据和图像-文本数据统一为区域-文本对。具有丰富区域文本对的预训练 YOLO-World 展示了强大的大词汇检测能力,训练更多的数据会导致开放词汇能力的更大改进。

此外,作者还探索了一种先提示后检测范式,以进一步提高实际场景中开放词汇目标检测的效率。如图2所示,传统的目标检测器专注于具有预定义和训练类别的固定词汇(闭集)检测。而以前的开放词汇检测器使用文本编码器对用户的在线词汇提示进行编码并检测对象。值得注意的是,这些方法倾向于使用具有重主干的大型检测器,例如Swin-L,以增加开放词汇表的容量。相比之下,先提示再检测(prompt-then-detect)范式(图2©)首先对用户构建离线词汇的提示进行编码,词汇表根据不同的需求而变化。然后高效的检测器可以动态推断离线词汇表,而无需重新编码提示。

1.3 贡献

  1. 本文介绍了 YOLO-World,这是一款顶尖的开放词汇目标检测器,适用于实际应用。

  2. 作者提出了一种可重参化的视觉语言PAN将视觉和语言特征与YOLO-World的开放词汇区域本文对比预训练方案连接起来。

  3. 在大规模数据集上预训练的 YOLO-World 表现出强大的零样本性能,并在 LVIS 上以 52.0 FPS 实现了 35.4 AP。预先训练的 YOLO-World 可以轻松适应下游任务,例如开放词汇表实例分割和引用对象检测。此外,YOLO-World 的预训练权重和代码将开源,以促进更多实际应用。

2 方法

2.1 预训练公式:区域文本对

传统的目标检测方法,包括YOLO系列,是使用实例标注 Ω = { B i , c i } i = 1 N \Omega=\{B_i,c_i\}^N_{i=1} Ω={Bi,ci}i=1N 进行训练的,该标注有边界框 { B i } \{B_i\} {Bi} 和类别标签 { c i } \{c_i\} {ci} 组成。在本文中,作者将实例标签重新表述为区域文本对 Ω = { B i , t i } i = 1 N \Omega=\{B_i,t_i\}^N_{i=1} Ω={Bi,ti}i=1N,其中 t i t_i ti 是区域 B i B_i Bi 的相应文本。具体来说,文本 t i t_i ti 可以是类别名称,名词短语和对象描述。此外,YOLO-World采用图像 I I I 和文本 T T T (一组名词)作为输入,并输出预测框 B k ^ \hat{B_k} Bk^ 和相应的对象嵌入 { e k } ( e k ∈ R D ) \{e_k\}(e_k∈R^D) {ek}(ek∈RD)。

2.2 网络结构

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

2.2.1 YOLO检测器

YOLO-World主要基于YOLOv8开发,其中包含作为图像编码器 DarkNet 主干,用于多尺度特征金字塔的路径聚合网络(PAN)以及用于边界框回归和对象嵌入的头部。

2.2.2 文本编码器

给定文本 T T T,采用 CLIP 预先训练的 Transformer 本文编码器来提取相应的文本嵌入 W = T e x t E n c o d e r ( T ) ∈ R C × D W=TextEncoder(T)∈R^{C×D} W=TextEncoder(T)∈RC×D,其中 C C C 是名词的数量, D D D 是嵌入数量。与纯文本语言编码器相比,CLIP 文本编码器为将视觉对象与文本连接起来提供了更好的视觉语义功能。当输入文本是标题或者引用表达式时,本文采用简单的 n − g r a m n-gram n−gram 算法来提取名词短语,然后将它们馈送到本文编码器中。

2.2.3 文本对比头

遵循以前的工作,作者采用带有两个3×3卷积的解耦头来回归边界框 { b k } k = 1 K \{b_k\}^K_{k=1} {bk}k=1K 和对象嵌入 { e k } k = 1 K \{e_k\}^K_{k=1} {ek}k=1K,其中 K K K 表示对象的数量,同时提出一个文本对比头来获取对象-文本相似度 s k , j s_{k,j} sk,j :

其中 L 2 − N o r m ( ⋅ ) L2-Norm(·) L2−Norm(⋅) 表示 L2 归一化, w j ∈ W w_j∈W wj∈W 是第 j j j 个文本的嵌入。此外,作者还添加缩放因子 α \alpha α 和偏移因子 β \beta β 的仿射变换。L2范数和仿射变换对于稳定区域文本训练都很重要。

2.2.4 使用在线词汇训练

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

2.2.5 使用离线词汇推理

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

2.3 可重参化的视觉语言PAN

图4展示了所提出的RepVL-PAN的结构,他遵循自上而下和自下而上的路径,以及减了具有多尺度图像特征 { C 3 . C 4 , C 5 } \{C_3.C_4,C_5\} {C3.C4,C5} 的特征金字塔 { P 3 , P 4 , P 5 } \{P_3,P_4,P_5\} {P3,P4,P5}。此外,作者提出了文本引导的 CSPLayer(T-CSPLayer)和图像池化注意力(I-Pooling Attention),以进一步增强图像特征和文本特征之间的交互,从而可以提高开放词汇能力的视觉语义表示。在推理过程中,离线词汇嵌入可以重参化为卷积层和线性层的权重以进行部署。

2.3.1 文本引导的CSPLayer

如图 4 所示,跨级部分层 (CSPLayer) 在自上而下或自下而上的融合后使用。通过将文本指导合并到多尺度图像特征中来扩展 CSPLayer(也称为 C2f)以形成文本引导的 CSPLayer。具体来说,给定文本嵌入 W 和图像特征 X l ∈ R H × W × D ( l ∈ { 3 , 4 , 5 } ) X_l ∈ R^{H×W×D}(l ∈\{3,4,5\}) Xl∈RH×W×D(l∈{3,4,5}),在最后一个dark bottleneck之后采用 max-sigmoid 注意力,通过以下方式将文本特征聚合到图像特征中:

其中,更新的 X l ' X_l^' Xl' 与跨级特征拼接作为输出(如图4中C2FBlock所示), δ \delta δ 表示 sigmoid 函数。

X i W j T ∈ R H × W × C X_iW_j^T∈R^{H×W×C} XiWjT∈RH×W×C,是每个像素点和每个词汇的相似度,取max后就是每个像素点和最相似词汇的相似度,通过sigmoid归一化到(0,1)再乘到原像素特征上,最后并拼接到原像素特征上,相当于将与词汇相似度高的前景特征进行放大。

个人觉得只区分开了前景和背景,但无法区分前景和前景。

2.3.2 图像池化注意力

为了用图像感知信息增强文本嵌入,作者通过提出 Image-Pooling Attention 来聚合图像特征以更新文本嵌入。作者没有直接在图像特征上使用交叉注意力,而是利用多尺度特征的最大池化来获得 3 × 3 个区域,从而产生总共 27 个patch token X ˜ ∈ R 27 × D \~X∈R^{27×D} X˜∈R27×D。然后,文本嵌入内容将通过以下方式进行更新:

用原来的词汇特征 W W W 作为query,用patch token的特征作为key 和 value,用patch token的特征按与 W W W 相似度更新到 W W W 上。

2.4 预训练策略

2.4.1 区域文本对比损失

给定马赛克样本 I I I 和文本 T T T,标签 Ω = { B i . t i } i = 1 N \Omega=\{B_i.t_i\}^N_{i=1} Ω={Bi.ti}i=1N 以及 YOLO-World 输出的 K K K 个目标检测结果 { B k , s k } k = 1 K \{B_k,s_k\}^K_{k=1} {Bk,sk}k=1K。作者利用任务对齐的标签分配将预测与 GT注释匹配,并为每个正样本预测分配一个文本索引作为分类标签。基于词汇表,我们通过对象-文本(region-text)相似性和对象-文本分配之间的交叉熵,构建了具有区域-文本对的区域-文本对比损失 L c o n L_{con} Lcon。此外,作者采用IoU损失和DFL进行边界框回归,总训练损失为: L ( I ) = L c o n + λ I ( L i o u + L d f l ) L(I)=L_{con}+\lambda_I(L_{iou}+L_{dfl}) L(I)=Lcon+λI(Liou+Ldfl)。

这里有个问题,作者说"用任务对齐的方式进行标签分配,并未每个正样本分配一个文本索引作为分类标签",这里标签分配显然只将词汇表里的目标作为前景进行标签分配,那么词汇表以外的目标都会被当做背景。如果推理时,给定训练词汇表以外的提示词时,检测效果可能会受到影响。

2.4.2 使用图像文本数据进行伪标记

作者提出了一种自动标记方法来生成区域-文本对,而不是直接使用图像-文本对进行预训练。具体来说,标注方法包括三个步骤:(1) 提取名词短语:首先利用 n-gram 算法从文本中提取名词短语;(2) 伪标注:采用预先训练的开放词汇检测器,例如 GLIP,为每张图像的给定名词短语生成伪框,从而提供粗略的区域-文本对。(3) 过滤:采用预先训练的 CLIP 来评估图像-文本对和区域-文本对的相关性,并过滤低相关性的伪注释和图像。通过结合非极大值抑制 (NMS) 等方法进一步过滤冗余边界框。

3 实验

3.1 和SOTA方法对比

零样本在LVIS上的效果。

3.2 消融实验

预训练数据消融实验。

可重参化视觉语言PAN消融实验。

不同文本编码器的消融实验。

相关推荐
NULL指向我3 小时前
STM32F407VET6学习笔记5:STM32CubeMX配置串口工程_HAL库
笔记·stm32·学习
朗迹 - 张伟5 小时前
Unity数字人开发笔记
笔记·unity·游戏引擎
TechTorch5 小时前
数据库大学实验二
数据库·经验分享·笔记·mysql
xx24066 小时前
vite学习笔记
笔记·学习
林晓lx7 小时前
[学习笔记] 从零开始虚拟化搭建数据库服务器
数据库·redis·笔记·centos
进取星辰7 小时前
1、初识YOLO:目标检测的闪电战
人工智能·yolo·目标检测
FL162386312910 小时前
[yolov11改进系列]基于yolov11引入可改变核卷积AKConv的python源码+训练源码
python·深度学习·yolo
Bullet34310 小时前
包管理工具npm与pnpm
前端·笔记·学习·npm·node.js
Allen_LVyingbo11 小时前
医疗AI项目文档编写核心要素硬核解析:从技术落地到合规实践
论文阅读·人工智能·健康医疗
凌佚11 小时前
训练自己的yolo模型,并部署到rk3588上
yolo·rk3588