目录

一、YOLO-World摘要以及主要贡献

1.1摘要       

1.2主要贡献

二、YOLO-World模型创新点总结

2.1YOLO Detector

2.2Text Encoder

2.3Re-parameterizable Vision-Language PAN

2.4核心创新点总结

三、如何应用

3.1推理预测

3.2自定义词汇推理

3.3自定义词汇类别保存模型

3.4使用自定义模型进行推理

四、总结

论文链接:yolo-world论文

代码链接:yolo-world代码

一、YOLO-World摘要以及主要贡献

1.1摘要       

                You Only Look Once (YOLO) 系列探测器已成为高效实用的工具。但是,它们对预定义和训练对象类别的依赖限制了它们在开放场景中的适用性。为了解决这一局限性,我们引入了 YOLO-World,这是一种创新方法,通过视觉语言建模和大规模数据集的预训练,增强了 YOLO 的开放词汇检测功能。具体而言,我们提出了一种新的可重新参数化的视觉-语言路径聚合网络(RepVL-PAN)和区域-文本对比损失,以促进视觉和语言信息之间的交互。我们的方法擅长以零射程、高效率检测各种物体。在具有挑战性的 LVIS 数据集上,YOLO-World 在 V100 上以 52.0 FPS 实现了 35.4 AP,在准确性和速度方面都优于许多最先进的方法。此外,经过微调的 YOLO-World 在多个下游任务上取得了出色的性能,包括对象检测和开放词汇实例分割。 

1.2主要贡献

        主要贡献可以概括为三个方面:

        1.介绍了YOLO-World,这是一种先进的开放词汇表对象检测器,具有高效的现实应用。

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

        3.在大规模数据集上预训练的YOLO-World显示出强大的零射击性能,在LVIS上达到35.4 AP和52.0 FPS。预训练的YOLO-World可以很容易地适应下游任务,例如开放词汇实例分割和引用对象检测。此外,YOLO-World的预训练权值和代码将被开源,以方便更多的实际应用。

二、YOLO-World模型创新点总结

 

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

2.1YOLO Detector

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

2.2Text Encoder

        给定文本,采用CLIP预训练的Transformer文本编码器提取相应的文本嵌入,与纯文本语言编码器相比,CLIP文本编码器提供了更好的视觉语义能力,可以将视觉对象与文本连接起来。当输入文本为标题或引用表达式时,我们采用简单的n-gram算法提取名词短语,然后将其输入文本编码器。

2.3Re-parameterizable Vision-Language PAN

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

2.4核心创新点总结

        实时解决方案:利用 CNN 的计算速度,YOLO-World 可提供快速的开放词汇检测解决方案,满足各行业对即时结果的需求。
        效率和性能:YOLO-World 可在不牺牲性能的前提下降低计算和资源需求,提供了一种可替代SAM 等模型的强大功能,但计算成本仅为它们的一小部分,从而支持实时应用。
        利用离线词汇进行推理:YOLO-World 引入了 "先提示后检测 "的策略,利用离线词汇进一步提高效率。这种方法可以使用预先计算的自定义提示,包括标题或类别,并将其编码和存储为离线词汇嵌入,从而简化检测过程。
        由YOLOv8 支持:基于 Ultralytics YOLOv8的YOLO-World 利用实时对象检测方面的最新进展,以无与伦比的准确性和速度促进开放词汇检测。
        卓越的基准测试:YOLO在标准基准测试中,World 的速度和效率超过了现有的开放词汇检测器,包括 MDETR 和 GLIP 系列,展示了YOLOv8 在单个 NVIDIA V100 GPU 上的卓越性能。
        应用广泛:YOLO-World 的创新方法为众多视觉任务带来了新的可能性,与现有方法相比,速度提高了几个数量级。

三、如何应用

        下载好工程文件后,先构建环境,构建环境可参考我之前yolov8的博文:yolov8

3.1推理预测

使用预训练模型进行推理预测,默认检测所有类别。

from ultralytics import YOLOWorld

# 加载模型
model = YOLOWorld('yolov8s-world.pt')

# 推理预测
results = model.predict('data/images/bus.jpg')

# 显示结果
results[0].show()

3.2自定义词汇推理

        YOLO-World 框架允许通过自定义提示指定类别,通过设置自定义提示词汇,用户基本上可以引导模型关注感兴趣的对象,从而提高检测结果的相关性和准确性。       

         (a)传统的对象检测器:这些对象检测器只能检测训练数据集预定义的固定词汇表内的对象,例如COCO数据集的80个类别。固定的词汇限制了开放场景的扩展。

        (b)以前的开放词汇检测器:以前的方法倾向于开发大而重的检测器用于开放词汇检测,直观上具有很强的能力。此外,这些检测器同时编码图像和文本作为预测的输入,这在实际应用中是耗时的。

        (c) YOLO- world:我们展示了轻量级检测器的强大开放词汇性能,例如YOLO检测器,这对于实际应用具有重要意义。与使用在线词汇表不同,我们提出了一种高效推理的提示-检测范式,用户根据需要生成一系列提示,这些提示将被编码到离线词汇表中。然后可以将其重新参数化为模型权重,用于部署和进一步加速。

        例如,如果在之前的图片中只检测人的话,那么自定义person即可,如下:

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO('yolov8s-world.pt')  # or choose yolov8m/l-world.pt

# Define custom classes
model.set_classes(["person"])

# Execute prediction for specified categories on an image
results = model.predict('data/images/bus.jpg')

# Show results
results[0].show()

3.3自定义词汇类别保存模型

        用于专门特定的目标检测。先加载YOLO-World 模型,然后设置自定义类并保存:

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov8s-world.pt')

# 定义检测类别
model.set_classes(["person", "bus"])

# 保存模型
model.save("custom_yolov8s.pt")

3.4使用自定义模型进行推理

from ultralytics import YOLO

# 加载保存的模型
model = YOLO('custom_yolov8s.pt')

# 使用模型进行推理
results = model.predict('data/images/bus.jpg')

# 显示结果
results[0].show()

        因为我们刚刚自定义的词汇是bus和person,所以检测出来的结果只能检测定义的类别,也就是bus和person。

使用自定义词汇保存的优点包括:

        专业性:通过使用领域特定的术语或者行业内的常用词汇,可以增强系统对于特定领域的理解和表达能力。这样可以提高系统的专业性和准确性。
        精确性:自定义词汇可以帮助系统更精确地理解用户的意图或者内容。相比于通用词汇,自定义词汇更能够准确地表达特定概念或者领域内的内容。
        定制化:根据用户需求和特定场景,可以定制化地添加、修改或者删除自定义词汇,以满足不同的需求。这样可以使系统更好地适应特定的应用场景。
        避免歧义:某些术语在特定领域中可能有不同的含义,在这种情况下,使用自定义词汇可以帮助避免歧义,确保系统对用户意图的理解正确。
        提高效率:使用自定义词汇可以减少系统对于处理文本时的不必要计算和分析,从而提高处理效率。

四、总结

        提出了一个前沿的实时开放词汇检测器YOLO-World,旨在提高实际应用中的效率和开放词汇能力。将流行的YOLO重新塑造为一种用于开放词汇预训练和检测的视觉语言YOLO架构,并提出了RepVL-PAN,它将视觉和语言信息与网络连接起来,并且可以重新参数化以实现高效部署。我们进一步提出了基于检测、基础和图像-文本数据的有效预训练方案,使YOLOWorld具有强大的开放词汇检测能力。实验证明了YOLO-World在速度和开放词汇性能方面的优势,也表明了在小模型上进行视觉语言预训练的有效性,对未来的研究具有一定的指导意义。我们希望YOLO-World可以作为解决现实世界开放词汇检测的新基准。

参考:大佬

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐