【论文解读】YOLO-World: Real-Time Open-Vocabulary Object Detection

YOLO-World: Real-Time Open-Vocabulary Object Detection

[paper-CVPR2024]

一、主要贡献

1. Open-valcabulary object detector

在这里插入图片描述

方法特点优缺点
传统目标检测器固定类别(Fixed Vocabulary)
例如 YOLOv3、Faster R-CNN 只能检测 80 类 COCO
✅ 推理快,轻量
❌ 无法扩展新类
早期开放词汇检测器同时编码图像和用户文本提示(Online Vocabulary)
通常依赖 CLIP + 大模型
✅ 可识别任意类名
❌ 需要文本编码器在线运行,推理慢,模型大
YOLO-World(轻量开放词汇)离线生成“prompt → 向量”词汇(Offline Vocabulary)
推理时不再需要文本编码器
✅ 支持开放类检测
✅ 推理快(文本不参与)
✅ 可重参数化部署
❌ 类别词需要提前给定
  • 以往开放词汇检测器:
    • 每次推理都需要同时编码图像和文本(词汇):输入图像时,还要实时处理大量词汇(比如类别名短语),模型每次都要重新编码词汇、图片一起推理。
  • YOLO-World 推理时:
    改成 Prompt-then-Detect 模式(推理时),“把“词汇”预处理好,不再每次推理都编码词汇!
    • 用户根据需要,先提前生成一批“Prompt” (即一组类别描述,比如“dog, cat, car”)。
    • 这批 Prompt 提前离线编码成“offline vocabulary”(即编码成向量,存在模型里)。
    • 推理时,直接用这些已经编码好的向量,不用再实时编码文本了,可以直接当成模型权重用,大幅加速。
  • YOLO-World 训练时:
    • 在训练过程中,为每个 4 图马赛克样本构建动态词汇表:包含图像中存在的类(正样本)+ 随机采样的类(负样本)
    • 每一张训练用的马赛克图像(包含4张拼图),都会根据它“自己图中包含的类别”,动态构建一个只属于它自己的词汇表,而不是所有样本都用一个固定的通用词汇集合。
    • 早期 OVD 模型,构建一个“全量词汇表”,比如 LVIS 有 1200 多类,每张图都要与这 1200+ 个类别的 embedding 比对一次
    • YOLO-World 的动态词汇表,它显著减少了训练过程的无效负类干扰

2. 开放词汇预训练机制( Pre-training Formulation: Region-Text Pairs) && 可重参数化视觉语言特征聚合网络(Re-parameterizable Vision-Language PAN)

  • 训练机制创新

    • 【标签】Region-Text Pairs——将传统的检测标注 {Bi, ci}(边界框 + 类别标签)改成了 {Bi, ti}(区域-文本对)
      Bi边界框;ti与区域Bi相关的描述
    • 输出
      • 预测框(Predicted Boxes)
      • 对象嵌入(Object Embeddings):指的是对象的高维特征向量表示,它们表示每个检测到的物体在高维空间中的位置和特征信息
  • 网络结构创新
    推理阶段,将离线编码好的词汇嵌入向量,重参数化为卷积层或线性层的权重,进一步减少推理负担,实现轻量高效部署。

3. 提出高效推理与部署策略

  • Prompt-then-Detect:先离线编码词汇,再检测,提高推理速度
  • 将离线词嵌入(text embeddings)重参数化成卷积或线性层的权重,部署更高效

二、Model Architecture

请添加图片描述

1. 文本编码器(Text Encoder)

  • 使用 CLIP 的 Text Encoder 。
  • 将输入的一组词汇或短语(如 “dog”、“bicycle”、“rusty spot”)编码成一组高维嵌入向量。
  • 这些词汇的嵌入(embeddings)作为检测时的匹配目标。

2. 主干网络(Backbone)

  • 使用 YOLOv8 的标准 Backbone
  • 提取多尺度特征:
    • 80×80(小目标)
    • 40×40(中目标)
    • 20×20(大目标)

3. 特征金字塔增强(RepVL-PAN)

请添加图片描述

  • RepVL-PAN = “可重参数化视觉语言特征聚合网络”。
  • 作用是将视觉特征和文本特征融合,让视觉特征受文本语义引导。
  • 具体做法:
    • 对不同尺度特征图(80×80,40×40,20×20)分别做 多尺度Max Pooling,得到局部 patch 特征(3×3 区域 → 27 个 Patch tokens)。
    • 把这 27 个局部 patch tokens 和离线词汇嵌入(text embeddings)做一次 Multi-Head Attention 更新。
    • 把这些融合后的特征重新融入到检测头(Head)中。

Text-guided CSPLayer(文本指导的跨阶段部分层)模块结构与流程

🔹 输入
  • 图像特征图: X ∈ R H × W × C X \in \mathbb{R}^{H \times W \times C} XRH×W×C
  • 文本 embedding: W ∈ R T × D W \in \mathbb{R}^{T \times D} WRT×D T T T 个 token)

🔹 Split 分支

将输入图像特征分为两半:

  • X 1 , X 2 ∈ R H × W × C / 2 X_1, X_2 \in \mathbb{R}^{H \times W \times C/2} X1,X2RH×W×C/2

🔹 Dark bottleneck 编码
  • X 1 X_1 X1 送入若干个 bottleneck 模块,得到:
    • X bottleneck ∈ R H × W × C / 2 X_{\text{bottleneck}} \in \mathbb{R}^{H \times W \times C/2} XbottleneckRH×W×C/2

🔹 Max-Sigmoid 注意力融合

将图像特征与文本嵌入进行融合,通过 Max-Sigmoid 注意力机制,引导图像关注与语言语义相关的区域。
在这里插入图片描述

符号含义维度(假设)
X l X_l Xl l l l 层的图像特征图(来自 FPN 层) H × W × D H \times W \times D H×W×D
W W W文本 embedding 序列,包含多个 token T × D T \times D T×D(T 是 token 数)
W j W_j Wj j j j 个文本 token 的 embedding 向量 1 × D 1 \times D 1×D D D D 向量
X l W j ⊤ X_l W_j^\top XlWj图像每个位置和文本 token j j j 的点积 H × W H \times W H×W
max ⁡ j ( ⋅ ) \max_j(\cdot) maxj()对所有文本 token 取最大点积值 H × W H \times W H×W
δ ( ⋅ ) \delta(\cdot) δ()sigmoid 激活 H × W H \times W H×W
X l ⋅ (上面) X_l \cdot \text{(上面)} Xl(上面)每个空间位置乘以注意力权重 H × W × D H \times W \times D H×W×D
  1. X bottleneck X_{\text{bottleneck}} Xbottleneck 中每个位置 x h , w x_{h,w} xh,w 与所有文本 token w j w_j wj 做点积:

    S h , w , j = x h , w ⋅ w j ⊤ ⇒ S ∈ R H × W × T S_{h,w,j} = x_{h,w} \cdot w_j^\top \quad \Rightarrow \quad S \in \mathbb{R}^{H \times W \times T} Sh,w,j=xh,wwjSRH×W×T

  2. 沿 token 维度取最大值,得到注意力图:

    A h , w = max ⁡ j S h , w , j ⇒ A ∈ R H × W A_{h,w} = \max_j S_{h,w,j} \quad \Rightarrow \quad A \in \mathbb{R}^{H \times W} Ah,w=jmaxSh,w,jARH×W

  3. Sigmoid 激活:

    A ^ h , w = σ ( A h , w ) \hat{A}_{h,w} = \sigma(A_{h,w}) A^h,w=σ(Ah,w)

  4. 与原图像特征逐像素广播相乘,得到融合结果:

    X h , w , : text-guided = X h , w , : bottleneck ⋅ A ^ h , w X^{\text{text-guided}}_{h,w,:} = X^{\text{bottleneck}}_{h,w,:} \cdot \hat{A}_{h,w} Xh,w,:text-guided=Xh,w,:bottleneckA^h,w


🔹 Concat 输出

将文本引导特征与跳连分支拼接:

  • X out = Concat ( X 2 , X text-guided ) ∈ R H × W × C X_{\text{out}} = \text{Concat}(X_2, X^{\text{text-guided}}) \in \mathbb{R}^{H \times W \times C} Xout=Concat(X2,Xtext-guided)RH×W×C

最终恢复原始通道数,作为该模块的输出。

I-Pooling Attention(双向语义增强)

I-Pooling Attention 模块包含两个互补子模块:

  • Text-to-Image Attention:文本引导图像(如图所示)
  • Image-to-Text Attention(Image-Pooling Attention):图像增强文本

🔹 1. Text-to-Image:文本引导图像特征(MHCA)
输入
  • 多个尺度或分支的图像特征图:
    X i ∈ R H × W × C , i = 1 , 2 , 3 X_i \in \mathbb{R}^{H \times W \times C},\quad i = 1, 2, 3 XiRH×W×C,i=1,2,3
拼接特征:
  • 拼接后形成融合图像特征图:
    X concat = Concat ( X 1 , X 2 , X 3 ) ∈ R H × W × ( 3 C ) X_{\text{concat}} = \text{Concat}(X_1, X_2, X_3) \in \mathbb{R}^{H \times W \times (3C)} Xconcat=Concat(X1,X2,X3)RH×W×(3C)
文本输入
  • 文本嵌入:
    T ∈ R L × D T \in \mathbb{R}^{L \times D} TRL×D
多头交叉注意力 MHCA
  • 图像特征作为 Query,文本作为 Key 和 Value:
    X out = MHCA ( X concat , T ) X_{\text{out}} = \text{MHCA}(X_{\text{concat}}, T) Xout=MHCA(Xconcat,T)

🔹 2. Image-to-Text:图像增强文本表示(Image-Pooling Attention)

为使文本理解具备图像上下文感知能力,引入反向路径:Image → Text

在这里插入图片描述

图像聚合步骤:
  • 从多尺度图像特征中,使用 max pooling 提取多个 3 × 3 3 \times 3 3×3 patch:
    X ~ ∈ R 27 × D \tilde{X} \in \mathbb{R}^{27 \times D} X~R27×D
    共 27 个 patch token,构成紧凑图像语义表示
更新文本表示:
  • 文本嵌入为 Query,图像 patch 为 Key 和 Value:
    W ′ = W + MultiHeadAttention ( W , X ~ , X ~ ) W' = W + \text{MultiHeadAttention}(W, \tilde{X}, \tilde{X}) W=W+MultiHeadAttention(W,X~,X~)

其中:

  • W ∈ R L × D W \in \mathbb{R}^{L \times D} WRL×D 为原始文本 embedding
  • W ′ ∈ R L × D W' \in \mathbb{R}^{L \times D} WRL×D 为融合图像信息后的文本 embedding

✅ 总结:双向增强
方向QueryKey/Value输出作用
Text → Image图像特征文本加权图像表示引导视觉关注文本语义区域
Image → Text文本图像 Patch加权文本表示增强文本的视觉感知能力

📌 I-Pooling Attention 实现了图像与文本的双向交互式建模,提升视觉-语言对齐与感知能力。

why?

  • 原始文本向量 W 是 CLIP 离线编码而成的;
  • 可能缺少目标图像中实际存在的上下文信息;

4. 检测头(Text Contrastive Head-文本对比头)

类似于 YOLOv8 的头部,但检测类别不是直接分类,而是通过视觉特征和文本特征的相似度计算。
推理时,可以直接输入任意词汇(不是固定类别数!)。

输出:

输出输出维度解释
边界框分支(Box Branch)(4) 维(x_center, y_center, width, height)
置信度分支(Objectness Branch)(1) 维该位置是否存在物体
区域嵌入分支(Region Embedding Branch)(D) 维区域特征向量,后续与文本特征计算相似度
  • 预测的 bounding box(位置回归)

  • 每个位置的 objectness(目标置信度)

  • 区域特征向量(Region Feature Embedding):不直接分类,而是输出一个高维向量,用来跟文本向量比相似度,做开放词汇匹配

计算 区域特征向量与文本特征计算 相似度:

  • 核心功能是计算目标嵌入 ek​ 和文本嵌入 wj之间的相似度 s k,j
  • 根据以前的工作,作者依然选择解耦头的设计,用俩个3×3卷积作为box head用于回归边框值。因为要计算目标-文本的相似度,所以提出文本对比头。为了稳定区域-文本训练,目标编码e和文本编码w使用L2-Norm。
  • 这部分的计算方式和CLIP的计算相似度的方式相同,都是通过矩阵相乘。
    在这里插入图片描述
    在这里插入图片描述
    为什么“分数高”被认为是“相似”?
  • 余弦相似度越高,表示两个向量夹角越小,方向越接近,代表语义越相似。

5.YOLO-World 损失函数(Loss)

  • 边界框回归损失(Box Loss)
  • 目标性(Objectness)损失(Obj Loss)
  • Region-Text Contrastive Loss
    在这里插入图片描述

Region-Text Contrastive Loss: 就是让图像局部区域特征(Region)和对应的文本描述(Text)在高维语义空间中拉近,不相关的文本特征推远。以往检测任务是用 {边界框, 类别标签}(比如 “这块区域是猫”)。YOLO-World要做开放词汇检测,所以不能再用固定类别标签了

损失形式

  • 真实匹配区域的视觉特征要与正确的文本描述更接近

  • 非匹配区域的特征要与错误文本描述远离

  • 采用类似于 CLIP 的 InfoNCE 对比学习思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值