真是太强大了!YOLO-World检测一切的任务框架使用指南,支持开放词汇检测任务

本文介绍了YOLO-World模型,一种基于YOLOv8的先进实时开放词汇检测技术,具有文本输入、多模态融合和低计算需求的特点。文章详细讲解了模型结构、创新点,如实时预测、自定义类别检测以及如何保存模型以适应特定任务。
摘要由CSDN通过智能技术生成

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发2.【车牌识别与自动收费管理系统开发
3.【手势识别系统开发4.【人脸面部活体检测系统开发
5.【图片风格快速迁移软件开发6.【人脸表表情识别系统
7.【YOLOv8多目标识别与自动标注软件开发8.【基于YOLOv8深度学习的行人跌倒检测系统
9.【基于YOLOv8深度学习的PCB板缺陷检测系统10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统
11.【基于YOLOv8深度学习的安全帽目标检测系统12.【基于YOLOv8深度学习的120种犬类检测与识别系统
13.【基于YOLOv8深度学习的路面坑洞检测系统14.【基于YOLOv8深度学习的火焰烟雾检测系统
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统16.【基于YOLOv8深度学习的舰船目标分类检测系统
17.【基于YOLOv8深度学习的西红柿成熟度检测系统18.【基于YOLOv8深度学习的血细胞检测与计数系统
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统20.【基于YOLOv8深度学习的水稻害虫检测与识别系统
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统22.【基于YOLOv8深度学习的路面标志线检测与识别系统
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统
27.【基于YOLOv8深度学习的人脸面部表情识别系统28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统
29.【基于YOLOv8深度学习的智能肺炎诊断系统30.【基于YOLOv8深度学习的葡萄簇目标检测系统
31.【基于YOLOv8深度学习的100种中草药智能识别系统32.【基于YOLOv8深度学习的102种花卉智能识别系统
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统42.【基于YOLOv8深度学习的无人机视角地面物体检测系统
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统44.【基于YOLOv8深度学习的野外火焰烟雾检测系统
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

1.模型简介

在这里插入图片描述

源码地址:https://github.com/AILab-CVC/YOLO-World

YOLO-World模型引入了基于开放词汇检测任务的先进实时方法,同时采用了视觉语言建模和在大量数据集上进行预训练的方法,能够以无与伦比的效率在零样本场景中出色地识别大量物体。这项创新可根据描述性文本检测图像中的任何物体。YOLO-World 可大幅降低计算要求,同时保持极具竞争力的性能,是众多视觉应用的多功能工具。

2.模型结构与创新点

在这里插入图片描述
与传统的YOLO检测器相比,YOLO-World作为一个开放词汇表检测器,可采用文本作为输入,文本编码器首先编码输入的文本。然后将输入图像编码成多尺度图像特征,RepVL-PAN算法利用图像和文本特征的多级交叉模态融合。最后,YOLO-World预测了回归边界框和对象编码,以匹配输入文本中出现的类别或名词。

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

2.使用方法

2.1 使用模型推理预测

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

from ultralytics import YOLOWorld

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

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

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

在这里插入图片描述

2.2 自定义词汇推理

YOLO-World 框架允许通过自定义提示指定类别,使用户能够根据自己的特定需求定制模型,而无需重新训练。这一功能对于调整模型以适应新领域或特定任务(这些任务最初并不属于训练数据的一部分)尤其有用。通过设置自定义提示词汇,用户基本上可以引导模型关注感兴趣的对象,从而提高检测结果的相关性和准确性。
在这里插入图片描述

通过使用model.set_classes(["fish"])方法在列表中填入需要进行检测的目标名称,即可对指定目标进行检测。此处自定义了一个鱼的类别["fish"],进行检测演示。

from ultralytics import YOLO

# 加载模型
model = YOLO('PreModels/yolov8s-worldv2.pt')  

# 定义检测类别
model.set_classes(["fish"])

# 推理
results = model.predict('TestFiles/121.png')

# Show results
results[0].show()

在这里插入图片描述
如果只需要检测 "人 "和 "公共汽车 "对象,可以直接指定这些类model.set_classes(["person", "bus"])

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", "bus"])

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

# Show results
results[0].show()

在这里插入图片描述
可以看到,对比2.1节中不设置检测对象的检测结果,这里并没有将交通标志检测并且标记出来,只对人与公交车进行了检测。

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

可以在设置自定义类后保存模型。这样就可以创建一个YOLO-World 模型版本,专门用于特定目标检测。
首先加载YOLO-World 模型,为其设置自定义类并保存:

from ultralytics import YOLO

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

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

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

保存后custom_yolov8s.pt 模型的行为与其他预训练的YOLOv8 模型无异,但有一个关键区别:它现在经过优化,只能检测您定义的类别。针对您的特定应用场景,这种定制可以大大提高检测性能和效率。

使用保存后的模型进行推理预测:

from ultralytics import YOLO

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

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

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

使用自定义词汇保存的优点
效率高:通过关注相关对象、减少计算开销和加快推理速度,简化检测过程。
灵活性更好:可使模型轻松适应新的或特殊的检测任务,而无需进行大量的再培训或数据收集。
简单便捷:无需在运行时重复指定自定义类,从而简化了部署,使模型可直接使用其嵌入式词汇。
性能更高:通过将模型的注意力和资源集中在识别定义的对象上,提高指定类别的检测精度。

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

The error message you're encountering suggests that there's an issue with importing the `YOLO_WORLD_EfficientSAM` module from a Python package. The `ImportError: attempted relative import with no known parent package` typically indicates that the code is trying to use a relative import (`from . import ...`) but the current directory structure does not have a proper package structure or the parent package has not been imported correctly. Here's what you can do to resolve this: 1. **Check package structure**: Ensure that you have a `__init__.py` file in the root directory of your package, as this is required for Python to recognize it as a package. If the module you're trying to import is in a subdirectory, move it up to the same level or create the necessary levels of directories (e.g., `your_package/your_subpackage`). 2. **Use absolute imports**: Instead of using relative imports, try importing the module using an absolute path, like `from yoloworld import YOLO_WORLD_EfficientSAM`. 3. **Ensure correct import statement**: If you are within a package, make sure you're importing the package correctly before attempting to import the submodule. For example, if the package is called `yoloworld`, you might need to do `import yoloworld` first and then use `from yoloworld.YOLO_WORLD_EfficientSAM import *`. 4. **Update PYTHONPATH**: If you're working in a development environment, ensure your PYTHONPATH environment variable includes the correct path to the package location. If you provide more details about your project setup and the exact context where you're encountering this error, I could give a more tailored solution. Here are some related questions for further clarification:
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值