Yolo-World中的“推理阶段的优化”等问题记录


前言

  在了解完yolo-world网络模型的基本架构之后,针对论文中存在的几个疑问在本篇文章中进行随笔记录。


一、推理阶段的优化

  在模型推理阶段,即模型被部署用于实际检测任务时,可以移除文本编码器,离线词汇嵌入(offline vocabulary embeddings)可以被重新参数化,转换为卷积层或线性层的权重(RepVL-PAN的权重)。这样做可以提高模型的运行效率,简化部署过程。下面通过推理过程进行详细说明:
  在推理阶段不指定检测类别的情况下,推理过程是这样的:
(1) 输入处理
  图像输入:将待检测的图像输入到模型中。
  预处理:对图像进行标准化处理(如缩放、归一化等)以适应模型的输入要求。

(2)特征提取
  卷积网络:图像经过卷积神经网络(CNN)提取特征,得到图像的特征图。
  RepVL-PAN:在RepVL-PAN架构中,进一步处理特征图,将文本嵌入的信息融合到图像特征中。由于文本嵌入已经在训练阶段重新参数化为卷积层或线性层的权重,这一步骤变得高效。
  也就是在这一步移除了CLIP文本编码器,将文本编码器的输出转换为模型权重的一部分,使得推理过程中不再需要单独的文本编码器。此时的RepVL-PAN网络中已经含有了训练过程中所有的文本嵌入信息,也就是说已经将文本嵌入信息转化为了模型中某些层的权重。
  这意味着模型不再需要实时生成文本嵌入,而是使用训练阶段已经生成并保存好的文本嵌入。

(3)区域提议
  区域建议网络(RPN):生成潜在的目标区域。这个步骤产生大量的候选区域,每个区域都有可能包含一个目标。

(4)类别和位置预测
  区域分类和定位:对每个候选区域进行分类(识别类别)和边界框回归(定位)。这里,模型直接使用重新参数化后的权重来处理特征,不需要额外的文本编码器来计算文本嵌入。

(5)重新评分和过滤
  CLIP-based重新评分:计算每个区域的图像-文本相似度分数和区域-文本相似度分数。 重新评分区域置信度。
  过滤:使用非极大值抑制(NMS)和置信度阈值来过滤掉重复和低置信度的预测。基于图像级区域-文本分数进一步过滤预测结果。

(6)输出处理
目标框输出:经过过滤的最终目标框以及它们的类别和置信度被输出。
后处理:可能包含对目标框的进一步处理(如边界框调整等)以提高检测精度。

  在推理阶段指定检测类别的情况下,推理过程是这样的:
  前3步保持不变,主要区别在第(4)步和第(5)步:
(4)类别和位置预测
  在进行类别预测时,模型只需要检测“车”这个类别。这意味着只会使用与“车”相关的嵌入权重。
  对每个候选区域进行类别预测时,只计算“车”的分类分数,忽略其他类别。
  使用重新参数化后的与“车”相关的权重进行边界框回归,确定每个候选区域的具体位置。

(5)重新评分和过滤
  CLIP-based重新评分:计算每个候选区域的图像-文本相似度分数和区域-文本相似度分数,仅针对“车”这一类别。重新评分区域置信度,只针对“车”类别的区域进行评分。
  过滤:使用非极大值抑制(NMS)和置信度阈值来过滤掉重复和低置信度的预测,只保留“车”类别的预测。基于图像级区域-文本分数进一步过滤预测结果,仍然只针对“车”类别。

二、prompt-then-detect范式

  prompt-then-detect范式: 论文还探索了一种prompt-then-detect(先提示后检测)范式,以进一步提高现实世界场景中开放词汇对象检测的效率。 其实就是在实际的检测过程中指定检测要检测的物体,让检测结果只包含目标物体。
  YOLO-World论文中描述的“prompt-then-detect”范式通过改变推理阶段用户定义的提示词(文本输入)的处理方式,提高了开放词汇目标检测的效率。

  1. 传统方法
      固定词汇检测器:传统的目标检测器局限于特定数据集上训练的预定义类别集。
      先前的开放词汇检测器:这些检测器使用大型、复杂的模型,在每次推理时实时编码用户提示词。由于需要在每次推理中处理文本输入,这种方法速度较慢且计算开销大。
  2. Prompt-then-Detect范式
      离线词汇创建:在这种方法中,用户定义的提示词(例如特定类别或描述)在实际检测过程之前,通过文本编码器预先编码为嵌入。这些嵌入形成“离线词汇”。
      高效推理:在推理阶段,检测器使用预先编码的离线词汇,消除了实时重新编码提示词的需求。这显著减少了计算开销,提高了检测速度。
      重新参数化:预编码的文本嵌入可以重新参数化为检测模型的权重,进一步简化部署并提高系统效率。

  所以prompt-then-detect范式的也就是我们在第一部分提到的在指定检测类别的情况下进行推理的过程。

三、 在线词汇表训练

  在线词汇表训练: 在训练阶段,为每个包含4张图片的马赛克样本构建一个在线词汇表T,包括所有涉及的正面名词和从对应数据集中随机抽取的一些负面名词。 每个马赛克样本的词汇表最多包含M个名词,默认设置为80。

1.在线词汇表训练的过程

(1)构建马赛克样本

  • 在训练阶段,每个马赛克样本由4张图片拼接而成。
  • 这4张图片可能包含不同的目标对象。

(2)构建在线词汇表T

  • 正面名词:从这4张图片中提取所有正面名词(即这些图片中实际存在的目标对象类别)。
  • 负面名词:从对应的数据集中随机抽取一些负面名词(即这些图片中不存在的目标对象类别),以增加词汇表的多样性。
  • 组合词汇表:在线词汇表T包括所有正面名词和选取的负面名词。

(3)词汇表限制

  • 为了控制词汇表的规模,每个马赛克样本的词汇表最多包含M个名词,默认设置为80个。

2.在线词汇表训练的目的

  • 提高模型的泛化能力:通过包括正面和负面名词,模型不仅学习到图像中存在的目标对象,还能够区分这些对象与其他可能的干扰项。
  • 增强开放词汇检测的能力:在每次训练时构建不同的词汇表,模型能够适应更多样化的对象检测需求,从而更好地处理开放词汇的目标检测任务。

3.实际应用

  在实际应用中,通过为每个马赛克样本构建包含多样名词的在线词汇表,YOLO-World模型能够在训练阶段接触到更多样的语义信息,提高模型对不同对象的识别能力,并在推理阶段高效地应用这些知识。

4.例子

  假设我们有一个包含“车”、“行人”和“自行车”这三种正面目标对象的马赛克样本,同时从数据集中随机选择一些负面名词如“猫”、“狗”和“树”。构建的在线词汇表可能如下:

  • 正面名词:车、行人、自行车
  • 负面名词:猫、狗、树

  词汇表T = {车, 行人, 自行车, 猫, 狗, 树}。这个词汇表用于指导模型在该马赛克样本的训练过程中,学习识别正面目标对象,并区分这些目标与负面干扰项。通过这种方式,YOLO-World模型在训练阶段利用在线词汇表,提高了对多种对象的检测能力,增强了在实际应用中的泛化性能。

四、 离线词汇表推理

  在推理阶段,使用“提示后检测”策略和离线词汇表以提高效率。 用户可以定义一系列自定义提示,包括标题或类别。 使用文本编码器对这些提示进行编码,得到离线词汇表嵌入。 离线词汇表避免了对每个输入进行计算,并提供了根据需要调整词汇表的灵活性。
  离线词汇表的构建主要是在推理阶段进行,而不是在训练阶段。

1.离线词汇表的构建过程

(这个过程在推理的预处理阶段,并不是真正的推理过程中)

(1)推理阶段构建

  • 用户定义提示:用户在推理阶段定义一系列自定义提示,这些提示可以是目标对象的类别、描述或标题。
  • 文本编码:将这些用户定义的提示通过文本编码器(例如CLIP的文本编码器)进行编码,得到对应的文本嵌入。
  • 离线词汇表生成:将所有编码后的文本嵌入集合起来,形成一个离线词汇表。这一步是在推理阶段完成的。

(2)使用离线词汇表进行推理

  • 高效推理:在推理阶段,当输入图像时,模型直接使用预先计算好的离线词汇表嵌入进行检测,而不需要每次重新编码提示词。
  • 目标检测:模型利用离线词汇表中的嵌入与图像特征结合,生成潜在目标区域,并对这些区域进行分类和定位。

2.训练阶段的工作

  • 在训练阶段,模型主要学习如何从图像中提取特征、生成区域提议并进行目标检测。这一过程涉及使用在线词汇表来增加训练数据的多样性和泛化能力,但不涉及生成离线词汇表
  • 训练阶段的目标是让模型能够处理不同的提示词,并在推理阶段利用离线词汇表高效地检测目标

3.关于预处理阶段和推理阶段的解释

3.1 预处理阶段

  预处理阶段指的是在模型正式投入使用之前的一系列准备工作。在这个阶段,主要任务是将用户定义的提示词通过CLIP编码器进行编码,生成文本嵌入。这些嵌入将被存储为离线词汇表,供后续推理阶段使用。这个阶段不涉及实际的目标检测任务。也就是说这里只是单纯用文本编码器将自定义词汇转为文本嵌入,形成离线词汇表,这个过程是在正式推理之前完成的。

(1)用户定义提示词

用户根据需要定义一系列提示词,如“红色汽车”、“行人”等。

(2)文本编码

将这些提示词输入到CLIP编码器,生成对应的文本嵌入。这一步是计算密集型的,需要消耗一定的计算资源和时间。

(3)生成离线词汇表

将所有编码后的文本嵌入集合起来,形成一个离线词汇表。这个离线词汇表可以在模型实际投入使用之前准备好。

(4)总结:预处理阶段主要是进行文本编码,生成离线词汇表。这一步是在模型正式使用之前完成的,确保在实际推理时无需再进行文本编码。

3.2 推理阶段

  推理阶段是指模型在实际应用中进行目标检测的阶段。在这个阶段,模型接收输入图像并使用离线词汇表进行目标检测。这一阶段的关键是利用预处理阶段生成的离线词汇表,避免实时编码,提高推理效率。这个阶段是没有文本编码器clip工作的,只是利用预处理阶段生成的离线词汇表做推理。

(1)输入图像
  模型接收实际需要检测的图像。

(2)使用离线词汇表
  模型直接使用预处理阶段生成的离线词汇表嵌入,而不需要重新调用CLIP编码器对提示词进行编码。

(3)目标检测
   图像特征通过卷积神经网络(CNN)提取。 将图像特征与离线词汇表中的文本嵌入结合,通过RepVL-PAN架构处理,实现目标检测。

(4)总结
  推理阶段主要是进行实际的目标检测,利用预处理阶段生成的离线词汇表,提高检测效率和速度。

3.3 实际应用中的区别

假设你要检测“红色汽车”和“行人”:

(1)预处理阶段
  提示词“红色汽车”和“行人”通过CLIP编码器生成文本嵌入,形成离线词汇表。这个过程在模型实际使用之前完成,不影响实时检测。

(2)推理阶段
  当输入图像需要检测时,模型直接使用预处理阶段生成的离线词汇表嵌入进行检测。这一步不再调用CLIP编码器,提高了实时检测的效率。

五、零样本评估

  零样本评估是指在没有针对特定类别进行训练的情况下,测试模型对未知类别的识别能力。 这种评估方式对于开放词汇检测特别重要,因为它模拟了真实世界中模型可能遇到的未知对象的检测情况。
  实现零样本评估的关键在于利用模型在训练过程中学到的语义信息,使其能够在未见过的类别上进行有效的目标检测

1 零样本评估的实现

(1)训练阶段输入语义信息

  • 在训练阶段,模型不仅学习图像特征,还学习与这些特征相关的语义信息。
  • 这种语义信息通常来自预训练的文本编码器(如CLIP),通过文本-图像对的形式,将类别标签的语义嵌入与图像特征关联起来。
  • 在YOLO-World中,使用提示词(prompts)来提供这些语义信息,例如“红色汽车”、“行人”等,这些提示词在训练阶段被编码为文本嵌入,成为模型学习的一部分。

(2)构建离线词汇表

  • 在推理阶段,用户可以定义一系列自定义提示词,生成离线词汇表。
  • 这些提示词通过CLIP编码器生成文本嵌入,形成离线词汇表。
  • 离线词汇表包含了未见过类别的语义信息,但这些类别的图像数据未在训练过程中出现

(3)利用预训练的语义嵌入

  • 在训练过程中,模型通过预训练的CLIP文本编码器获取了丰富的语义信息。这些语义嵌入帮助模型理解不同类别之间的语义关系,即使这些类别的图像数据未在训练集中出现。
  • 例如,模型可能没有见过“斑马”的图像,但通过学习“马”的语义信息,模型能够推测“斑马”与“马”在某些特征上的相似性。

2 零样本评估的推理阶段

(1)定义提示词

  • 用户在推理阶段定义需要检测的提示词,包括已知类别和未见类别。

(2)生成离线词汇表

  • 将这些提示词通过CLIP编码器生成文本嵌入,形成离线词汇表。

(3)目标检测

  • 输入图像后,模型利用离线词汇表中的文本嵌入进行目标检测。
  • 模型通过将图像特征与离线词汇表中的语义嵌入进行匹配,检测并识别图像中的目标对象。

3 零样本评估的示例

  假设在训练阶段,模型学习了“狗”、“猫”、“车”等类别的图像特征和语义信息。在推理阶段,用户希望检测“斑马”,但“斑马”类别的图像数据未在训练集中出现。通过以下步骤实现零样本评估:

(1)训练阶段

  • 模型学习“狗”、“猫”、“车”等类别的图像特征和语义嵌入。
  • 使用CLIP编码器生成这些类别的文本嵌入,并与图像特征关联。

(2)推理阶段

  • 用户定义“斑马”提示词。
  • 通过CLIP编码器生成“斑马”提示词的文本嵌入,添加到离线词汇表。
  • 模型输入图像,利用离线词汇表中的“斑马”嵌入,结合图像特征进行目标检测,识别出图像中的“斑马”。

4 结论

  通过在训练阶段输入语义信息(文本嵌入),并在推理阶段利用离线词汇表,YOLO-World模型能够在没有见过图像数据的类别上进行有效的目标检测,实现零样本评估。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值