【论文阅读】YOLO-World | 开集目标检测

在这里插入图片描述

论文解决的问题: 通过视觉语言建模和大规模数据集上的预训练来增强YOLO的开发词汇检测能力。

YOLO-world提出了一种prompt-then-detect范式:先提示,再检测。即将单词先转化成一系列离线的embedding,再将其重参数为模型的参数,参与到目标检测任务中来。相当于在部署的时候可以直接砍掉CLIP部分,直接把想要检测的类别的text embedding放到YOLO-World中进行推理,所以前向速度非常快。

1 文章贡献

  • 推出了一个可部署的开放词汇目标检测器YOLO-World,可用于部署。具有较强的零样本能力,在LVIS数据集上的map指标为35.4,fps为52(V100);
  • 提出了一个可重参数化的网络的结构RepVL-PAN来连接视觉和文本特征;

2 网络结构

在这里插入图片描述

  • text encoder使用的预训练的CLIP的text encoder,当文本是描述时,使用n-gram算法提取名词
  • 文本的特征于图像的特征(multi-scale)在RepVL-PAN结构中进行融合
  • RepVL-PAN输出Image-aware的text embedding,检测段输出bbox和text-aware的image embedding
  • 最后再通过计算text embedding和image embedding之间距离来判断目标框中的类别
  • YOLO backbone使用的是YOLOv8

2.1 RepVL-PAN(Reparameterizable Vision-Language PAN)

在这里插入图片描述

  • Text-guide CSPLayer: 采用max-sigmoid attention来实现文本和图像的融合其中 X l X_l Xl是来自不同层的图像特征,W是text embedding,计算特征图与text embedding的相似度矩阵,取最大值在sigmoid后作为权重加权原特征图
    X l ′ = X l ⋅ δ ( max ⁡ j ∈ { 1.. C } ( X l W j ⊤ ) ) ⊤ X_l^{\prime}=X_l \cdot \delta\left(\max _{j \in\{1 . . C\}}\left(X_l W_j^{\top}\right)\right)^{\top} Xl=Xlδ(j{1..C}max(XlWj))
    不过在代码实现的时候,其实concat了每一个block的输出:
    在这里插入图片描述

    # yolo_world/models/layers/yolo_bricks.py:145行
    def forward(self, x: Tensor, guide: Tensor) -> Tensor:
        """Forward process."""
        x_main = self.main_conv(x)
        x_main = list(x_main.split((self.mid_channels, self.mid_channels), 1))
        x_main.extend(blocks(x_main[-1]) for blocks in self.blocks)
        x_main.append(self.attn_block(x_main[-1], guide))
        return self.final_conv(torch.cat(x_main, 1))
    
  • Image-Pooling Attention: 利用图像感知信息增强text embedding,文本嵌入的更新方式如下:
    W ′ = W + MultiHead-Attention ( W , X ^ , X ^ ) W^{\prime}=W+\text{MultiHead-Attention}(W,\hat X, \hat X) W=W+MultiHead-Attention(W,X^,X^)
    X是来自于3个不同尺度的图像特征,对每个尺度进行最大池化max-pooling,得到3x3大小的特征图,3组就是27个patch-token。

2.2 Text Contrastive Head

在这里插入图片描述
YOLO-World的检测头还是复用了YOLOv8的解耦头,只不过将分类分支修改成了object embedding。object embedding与text embedding需要先进行L2范数归一化,再进行距离计算,其计算公式如下:
s k , j = α ∣ ∣ e k ∣ ∣ 2 ∗ ∣ ∣ w j ∣ ∣ 2 + β s_{k,j} = \alpha ||e_k||^2*||w_j||^2 + \beta sk,j=α∣∣ek2∣∣wj2+β
其中 s k , j s_{k,j} sk,j表示文本 w j w_j wj与目标嵌入 e k e_k ek之间的距离, α \alpha α β \beta β是可学习的比例因子和位移因子。

3 训练过程

3.1 损失函数

  • 输出K个预测结果和其对应的gt:{box,text},使用TaskAlignAssigner进行匹配。匹配后通过计算object-text之间的交叉熵,也就是所谓的Region-text constrastive loss(没错,就是CLIP中Image-text constrastive loss,只不过这里不是使用全图的embedding,而是使用检测区域的embedding)。
  • 使用IoU loss和DFL(Distribute Focal Loss)来计算box的回归损失,这就意味着yolo-world使用的也是解耦头,并将回归任务转化成了分类任务。最后的总loss为:
    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)
    其中 λ i \lambda_i λi是indicator factor(指标因子),当图像来自于detection或者grounding data时设置为1,来自于image-text时设置为0。

3.2 训练策略

训练使用在线词汇表,推理使用离线词汇表。

  • 训练时:

    • 输入图片:4张组成的mosaic图片
    • 在线词汇表:T
    • 每次训练的时候需要从词汇表中抽取图片中含有的N个名词,再随机抽选80-N个不存在于该图中的目标名称,因此每次送入网络中的名词数量默认为80个
  • 测试时: 设置需要的词,并直接获取词向量参与到目标检测中,而不再用CLIP进行编码。

  • 其他细节:

    • 训练框架:MMYOLO
    • Text encoder:预训练的CLIP
    • GPU:32个V100
    • Batch:512
    • 数据增强:随机色彩、翻转、仿射、4张mosaic

4 训练数据的生成

文章中设计了一个数据生产流程,对CC3M中的246K图片生成了821K的伪标注。
在这里插入图片描述
其生成流程如下:

  1. 提取名词短语: n-gram
  2. 伪标签(pseudo label): 使用预训练的开放词汇检测器(GLIP),给每个图像给定的名词短语生成检测框,从而提供粗略的region-text pairs
  3. 过滤(filter): 使用预训练的CLIP来评估region-text pairs的相关性,过滤掉相关性低的注释和图像。给定图像I,图像描述T和粗略的region-text对 ( B i , t i , c i ) (B_i,t_i,c_i) (Bitici)
    3.1. 计算Image-text score得到S(img)
    3.2. 裁出region区域,计算region-text的相似度S(region)
    3.3. [可选] Re-labeling:裁剪后的图片与所有名词计算相似度,选择最高的名词作为该区域的text,用于纠正GLIP错标的文本
    3.4. Rescoring:用region-text的相似度S(region)对置信度重新评分 c i = ( c i ∗ s i r e g i o n ) c_i = \sqrt{(c_i * s^{region}_i)} ci=(cisiregion)
    3.5. 区域级过滤(Region-level filtering):根据文本分成不同的组,同类别使用NMS(0.5),过滤置信度低的(0.3)
    3.6. 图像级过滤(Image-level filtering):计算保留的所有region的平均分数,得到图像级置信度分数 S = ( S ( i m g ) ∗ S ( r e g i o n ) ) S = \sqrt{(S(img) * S(region))} S=(S(img)S(region)) ,保留分数大于0.3的图像。
  4. 使用NMS过滤冗余的检测框。
  • 训练集数据情况
    在这里插入图片描述
  • 测试集数据情况: 在LVIS进行zero-shot evaluation
    • 包含1203个类别,远超训练集的类别
    • 主要在LVIS minival上测试固定AP
    • 最大预测数量设置为1000
      在这里插入图片描述
      总结:可以看出检测效果非常Amazing,而且更关键的是速度非常快! 其速度快的原因在于测试的时候,可以直接将text embeding先算出来,让后作为YOLO-World的参数来进行前向推理。直接砍掉了CLIP在推理阶段的耗时。这个思路非常nice!

5 消融实验上的一些结论

结论一:增加高质量数据效果提升显著。
在这里插入图片描述
验证Text-guided CSPLayers和Image-Pooling Attention的作用分别可以提升0.8和0.3个点,但是只加入GQA数据集可以直接提升7.2个点,还是证明了加入数据的有效性。

*注:GQA是斯坦福大学教授 Christopher Manning 及其学生 Drew Hudson 一同打造的全新图像场景图问答数据集,旨在推动场景理解与视觉问答研究领域的进步,详细数据链接:https://cs.stanford.edu/people/dorarad/gqa * 。

结论二:在YOLO-Wolrd里面,CLIP优于BERT。
在这里插入图片描述

<think>嗯,用户想了解或使用与YOLO相关的世界模型或项目。首先,我需要明确YOLO本身是一个目标检测模型,而“世界模型”可能指的是更广泛的计算机视觉应用或生态系统。我需要先回忆YOLO相关的扩展项目和生态系统。 首先,YOLOv5和YOLOv8是Ultralytics维护的版本,他们有自己的生态系统,可能包括与其他工具成,比如导出到ONNX或TensorRT,或者与ROS成用于机器人。这些可能属于项目或应用场景。 然后,YOLO-World是最近的一个工作,结合了放词汇检测,可能允许用户用文本提示检测对象,类似CLIP但用于检测。这应该是一个重要的点,特别是用户提到“world model”,可能指放词汇或更通用的检测能力。 另外,YOLO-NAS是由Deci.ai发的,专注于神经网络架构搜索,可能提升性能,这也是一个相关项目。还有YOLO结合SAM(Segment Anything Model)的分割应用,可能属于扩展项目。 用户可能还需要实际的应用案例,比如智能监控、自动驾驶、工业检测等,这些都是YOLO的应用场景,可以结合引用中的内容,比如连接到网络摄像头的实时检测[^1][^3]。 需要确保提到的项目或模型确实存在,并且提供资源链接。例如,YOLO的官方网站,YOLOv8的GitHub,以及YOLO-World的论文或代码库。同时,可能用户对如何始使用这些项目感兴趣,需要给出具体的步骤,比如安装命令或代码示例。 另外,用户可能混淆了“世界模型”与具体项目,需要解释清楚YOLO相关的生态系统和扩展,而不仅仅是单一模型。比如,结合到机器人、自动驾驶中的实际项目,或者与其他模型(如SAM)成的案例。 还需要检查是否有遗漏的重要项目,比如YOLOv4的Scaled版本,或者与其他框架的整合,比如TensorFlow Lite或OpenCV的部署。这些都可能属于用户想了解的“项目”。 最后,生成相关问题时要覆盖用户可能的后续疑问,比如性能优化、应用场景比较、自定义训练等。</think>### YOLO相关世界模型与项目解析 在计算机视觉领域,YOLO(You Only Look Once)系列模型以其实时性和高效性著称。以下是与其相关的扩展模型、生态系统和应用项目的详细说明: --- #### 1. **YOLO-World放词汇目标检测)** YOLO-WorldYOLO系列的最新扩展,支持**放词汇检测**,允许用户通过自然语言描述定义检测目标。例如,输入“红色书包”或“带条纹的雨伞”,模型可直接定位目标[^2]。 - **核心功能**: - 动态文本-视觉特征融合 - 零样本(zero-shot)推理能力 - 支持自定义词汇库 - **代码示例**(安装与推理): ```bash pip install ultralytics ``` ```python from ultralytics import YOLOWorld model = YOLOWorld('yolov8s-world.pt') model.set_classes(["backpack", "umbrella"]) # 自定义检测类别 results = model.predict("image.jpg") ``` --- #### 2. **YOLOv8生态系统** 由Ultralytics维护的YOLOv8提供**端到端发支持**,覆盖训练、验证、部署全流程: - **关键工具链**: - 模型导出:支持ONNX、TensorRT、CoreML等格式 - 部署:与OpenCV、TensorFlow Lite成,适配边缘设备 - 任务扩展:支持分类、分割、姿态估计(如YOLO-Pose) - **应用案例**: - 实时视频分析(结合FFmpeg流处理) - 工业质检(缺陷定位与分类) --- #### 3. **YOLO-NAS(神经架构搜索优化)** 由Deci.ai发布的YOLO-NAS通过自动化架构搜索优化精度-速度平衡: $$ \text{优化目标} = \arg\max_{\theta} (mAP(\theta) - \lambda \cdot \text{Latency}(\theta)) $$ - **优势**: -YOLOv8提升15% mAP(COCO数据- 支持INT8量化,推理速度提升3倍 --- #### 4. **YOLO+Segment Anything Model(SAM)** 结合Meta的SAM模型,实现**检测-分割一体化**: 1. YOLO定位目标边界框 2. SAM生成像素级掩膜 - **典型场景**: - 医学影像分析(肿瘤区域分割) - 自动驾驶(道路障碍物精细轮廓提取) --- #### 5. **YOLO与机器人系统成** - **ROS-YOLO**:将YOLO嵌入机器人操作系统(ROS),用于SLAM中的动态障碍物检测 - **无人机巡检**:基于YOLOv5的输电线路缺陷检测系统(参见GitHub项目`Drone-YOLO-Inspection`) --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值