Yolo-World实战应用
摘要
YOLO-World模型确实是一个突破性的创新,它结合了YOLOv8框架的实时性能与开放式词汇检测的能力,为众多视觉应用提供了前所未有的解决方案。以下是对YOLO-World模型的进一步解读:
模型架构与功能
YOLO-World模型充分利用了YOLOv8框架的先进特性,并引入了开放式词汇检测功能。这一创新使得模型能够识别并检测图像中任何由描述性文本指定的物体,无需预先定义对象类别。这一功能使得YOLO-World模型在动态和不确定的场景中具有极高的实用性。
在架构上,YOLO-World模型采用了视觉语言建模和预训练的方法,以优化在大量数据集上的性能。这种方法不仅提高了模型的准确性,还使得模型能够在零拍摄场景中快速识别大量物体。此外,YOLO-World模型还利用了CNN的计算速度,提供了实时的开放词汇检测解决方案,满足了各行业对即时结果的需求。
效率与性能
YOLO-World模型在效率和性能上取得了显著的进步。通过优化算法和降低计算要求,该模型能够在不牺牲性能的前提下,大幅度减少计算和资源需求。这使得YOLO-World模型成为一种可替代其他大型模型(如SAM)的强大工具,但计算成本仅为它们的一小部分。这种优势使得YOLO-World模型在实时应用中具有更高的竞争力。
离线词汇推理
为了进一步提高效率,YOLO-World模型引入了“先提示后检测”的策略。这一策略利用离线词汇嵌入来简化检测过程。具体来说,模型可以使用预先计算的自定义提示(如标题或类别),并将其编码和存储为离线词汇嵌入。在检测时,模型可以直接利用这些嵌入信息,从而避免了实时计算的复杂性,进一步提高了检测速度。
基准测试与应用
在基准测试中,YOLO-World模型展示了出色的速度和效率表现。与现有的开放词汇检测器相比,如MDETR和GLIP系列,YOLO-World模型在速度和效率上都取得了显著的优势。这一优势使得YOLO-World模型在实时应用中具有更高的竞争力。
此外,YOLO-World模型的应用范围非常广泛。它不仅可以用于传统的图像识别和物体检测任务,还可以扩展到更复杂的视觉任务中。与现有方法相比,YOLO-World模型的速度提高了几个数量级,为众多视觉应用带来了新的可能性。
YOLO-World模型是一个具有突破性创新的实时开放词汇检测模型。它通过结合YOLOv8框架的实时性能和开放式词汇检测能力,为众多视觉应用提供了高效、准确的解决方案。
下载安装CLip
执行命令:
pip install --no-cache "git+https://github.com/openai/CLIP.git"
下载yolo-world权重
All the YOLOv8-World weights have been directly migrated from the official YOLO-World repository, highlighting their excellent contributions.
模型 | 预训练权重 | 支持的任务 | 推理 | 验证 | 训练 | 导出 |
---|---|---|---|---|---|---|
YOLOv8s-world | yolov8s-world.pt | Object Detection | ✅ | ✅ | ❌ | ❌ |
YOLOv8s-worldv2 | yolov8s-worldv2.pt | Object Detection | ✅ | ✅ | ❌ | ✅ |
YOLOv8m-world | yolov8m-world.pt | Object Detection | ✅ | ✅ | ❌ | ❌ |
YOLOv8m-worldv2 | yolov8m-worldv2.pt | Object Detection | ✅ | ✅ | ❌ | ✅ |
YOLOv8l-world | yolov8l-world.pt | Object Detection | ✅ | ✅ | ❌ | ❌ |
YOLOv8l-worldv2 | yolov8l-worldv2.pt | Object Detection | ✅ | ✅ | ❌ | ✅ |
YOLOv8x-world | yolov8x-world.pt | Object Detection | ✅ | ✅ | ❌ | ❌ |
YOLOv8x-worldv2 | yolov8x-worldv2.pt | Object Detection | ✅ | ✅ | ❌ | ✅ |
按照自己的需求下载预训练权重!
运行
代码如下:
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld('yolov8x-world.pt') # or select yolov8m/l-world.pt for different sizes
# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict('11.jpg')
# Show results
results[0].show()
初次运行需要下载模型
识别结果:
11.jpg: 448x640 1 cat, 2 dogs, 1 couch, 20.0ms
效果图:
YOLO-World 框架允许通过自定义提示动态指定类别,使用户能够根据自己的特定需求定制模型,而无需重新训练。这一功能对于调整模型以适应新领域或特定任务(这些任务最初并不属于训练数据的一部分)尤其有用。通过设置自定义提示,用户基本上可以引导模型关注感兴趣的对象,从而提高检测结果的相关性和准确性。
例如,如果您的应用程序只需要检测 "人 "和 "公共汽车 "对象,您可以直接指定这些类:
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO('yolov8x-world.pt') # or choose yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction for specified categories on an image
results = model.predict('path/to/image.jpg')
# Show results
results[0].show()
设置自定义类后保存模型。
可以创建一个YOLO-World 模型版本,专门用于您的特定用例。此过程将您的自定义类定义直接嵌入模型文件,使模型无需进一步调整即可与您指定的类一起使用。代码如下:
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO('yolov8s-world.pt') # or select yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")
保存后,custom_yolov8s.pt 模型的行为与其他预训练的YOLOv8 模型无异,但有一个关键区别:它现在经过优化,只能检测您定义的类别。针对您的特定应用场景,这种定制可以大大提高检测性能和效率。
from ultralytics import YOLO
# Load your custom model
model = YOLO('custom_yolov8s.pt')
# Run inference to detect your custom classes
results = model.predict('path/to/image.jpg')
# Show results
results[0].show()
使用自定义词汇保存的好处:
- 效率:通过关注相关对象、减少计算开销和加快推理速度,简化检测过程。
- 灵活性:可使模型轻松适应新的或特殊的检测任务,而无需进行大量的再培训或数据收集。
- 简单:无需在运行时重复指定自定义类,从而简化了部署,使模型可直接使用其嵌入式词汇。
- 性能:通过将模型的注意力和资源集中在识别已定义的对象上,提高指定类别的检测准确性。
这种方法为特定任务定制最先进的物体检测模型提供了强有力的手段,使高级人工智能更容易获得并适用于更广泛的实际应用。
- 点赞
- 收藏
- 关注作者
评论(0)