Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测

news2024/12/24 8:54:55

Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测

  • 前言
  • 相关介绍
  • 前提条件
  • 实验环境
  • 安装环境
  • 项目地址
    • Linux
    • Windows
  • 使用Ultralytics框架进行YOLO-World目标检测
    • 进行训练
    • 进行预测
    • 进行验证
  • 扩展
    • 目标跟踪
    • 设置提示
  • 参考文献

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv10训练自己的数据集(交通标志检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

相关介绍

  • Ultralytics 官方文档:https://docs.ultralytics.com/
  • Ultralytics 源代码地址:https://github.com/ultralytics/ultralytics.git.
  • YOLO-World 源代码地址:https://github.com/AILab-CVC/YOLO-World.git.
  • YOLO-World 论文地址:https://arxiv.org/abs/2401.17270
  • YOLO-World 模型引入了一种基于 Ultralytics YOLOv8 的先进实时方法,用于开放词汇检测任务。这项创新可以根据描述性文本检测图像中的任何对象。通过显着降低计算需求,同时保持竞争性能,YOLO-World 成为众多基于视觉的应用程序的多功能工具。
    在这里插入图片描述
  • 概述
    YOLO-World 解决了传统开放词汇检测模型所面临的挑战,这些模型通常依赖于需要大量计算资源的繁琐 Transformer 模型。这些模型对预定义对象类别的依赖也限制了它们在动态场景中的实用性。 YOLO-World 通过开放词汇检测功能重振了 YOLOv8 框架,采用视觉语言建模和对广泛数据集的预训练,能够以无与伦比的效率擅长在零样本场景中识别各种对象。
  • 主要特点
    • 实时解决方案:利用 CNN 的计算速度,YOLO-World 提供快速的开放词汇检测解决方案,满足需要立即结果的行业。
    • 效率和性能:YOLO-World 在不牺牲性能的情况下大幅削减了计算和资源需求,为 SAM 等模型提供了强大的替代方案,但计算成本仅为其一小部分,从而支持实时应用程序。
    • 使用离线词汇进行推理:YOLO-World 引入了“先提示后检测”策略,采用离线词汇进一步提高效率。这种方法允许使用先验计算的自定义提示(包括标题或类别)进行编码并存储为离线词汇嵌入,从而简化检测过程。
    • 由 YOLOv8 提供支持:YOLO-World 基于 Ultralytics YOLOv8 构建,利用实时目标检测领域的最新进展,以无与伦比的准确性和速度促进开放词汇检测。
    • 卓越基准测试:YOLO-World 在标准基准测试的速度和效率方面优于现有的开放词汇检测器(包括 MDETR 和 GLIP 系列),展示了 YOLOv8 在单个 NVIDIA V100 GPU 上的卓越功能。
    • 多功能应用:YOLO-World 的创新方法为多种视觉任务带来了新的可能性,与现有方法相比,速度提高了几个数量级。
  • 可用型号、支持的任务和操作模式
    可用的模型及其特定的预训练权重、它们支持的任务以及它们与各种操作模式(例如推理、验证、训练和导出)的兼容性,用 ✅ 表示支持的模式,用 ❌ 表示不支持的模式。
    在这里插入图片描述

前提条件

  • 熟悉Python

实验环境

matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.6.0
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.64.0
tensorboard>=2.4.1
pandas>=1.1.4
seaborn>=0.11.0

安装环境

pip install ultralytics
# 或者
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple # 国内清华源,下载速度更快

在这里插入图片描述

在这里插入图片描述

项目地址

  • Ultralytics 源代码地址:https://github.com/ultralytics/ultralytics.git

Linux

git clone https://github.com/ultralytics/ultralytics.git
Cloning into 'ultralytics'...
remote: Enumerating objects: 4583, done.
remote: Counting objects: 100% (4583/4583), done.
remote: Compressing objects: 100% (1270/1270), done.
remote: Total 4583 (delta 2981), reused 4576 (delta 2979), pack-reused 0
Receiving objects: 100% (4583/4583), 23.95 MiB | 1.55 MiB/s, done.
Resolving deltas: 100% (2981/2981), done.

Windows

请到https://github.com/ultralytics/ultralytics.git网站下载源代码zip压缩包。

使用Ultralytics框架进行YOLO-World目标检测

进行训练

yolo train model=yolov8s-world.yaml data=coco8.yaml epochs=10 imgsz=640 batch=8 workers=1
from ultralytics import YOLOWorld


def train():
    # Load a pretrained YOLOv8s-worldv2 model
    model = YOLOWorld("yolov8s-world.pt")

    # Train the model on the COCO8 example dataset for 100 epochs
    results = model.train(data="coco8.yaml", epochs=10, imgsz=640, batch=1,  workers=1)

    # Run inference with the YOLOv8n model on the 'bus.jpg' image
    results = model("imgs/test.png", save=True)

if __name__=="__main__":
    train()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

进行预测

yolo predict model=yolov8s-world.pt source=imgs/test.png imgsz=640
from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-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("imgs/test.png")

# Show results
results[0].show()

在这里插入图片描述
在这里插入图片描述

进行验证

yolo val model=yolov8s-world.pt data=coco8.yaml imgsz=640 batch=1 workers=1
from ultralytics import YOLO

def val():

    # Create a YOLO-World model
    model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

    # Conduct model validation on the COCO8 example dataset
    metrics = model.val(data="coco8.yaml", batch=1, imgsz=640, device=0,workers=1)

if __name__=="__main__":
    val()

在这里插入图片描述

扩展

目标跟踪

使用 YOLO-World 模型对视频/图像进行对象跟踪简化如下:

yolo track model=yolov8s-world.pt imgsz=640 source="video/test.mp4"
from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Track with a YOLO-World model on a video
results = model.track(source="video/test.mp4",save=True)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置提示

在这里插入图片描述
YOLO-World 框架允许通过自定义提示动态指定类,使用户能够根据自己的特定需求定制模型,而无需重新训练。此功能对于使模型适应新领域或最初不属于训练数据的特定任务特别有用。通过设置自定义提示,用户基本上可以引导模型将注意力集中在感兴趣的对象上,从而增强检测结果的相关性和准确性。
例如,如果您的应用程序只需要检测“人”和“巴士”对象,则可以直接指定这些类:

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("imgs/test.png")

# Show results
results[0].show()

在这里插入图片描述
还可以在设置自定义类后保存模型。通过这样做,可以创建专门针对您的特定用例的 YOLO-World 模型版本。此过程将您的自定义类定义直接嵌入到模型文件中,使模型可以与您指定的类一起使用,而无需进一步调整。请按照以下步骤保存和加载自定义 YOLOv8 模型:

  1. 首先加载 YOLO-World 模型,为其设置自定义类并保存:
# 首先加载 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(["teddy bears", "bus"])

# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")
  1. 保存后,custom_yolov8s.pt 模型的行为与任何其他预训练的 YOLOv8 模型类似,但有一个关键区别:它现在经过优化,仅检测您定义的类。这种定制可以显着提高您特定应用场景的检测性能和效率。
# 保存后,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("imgs/test.png")

# Show results
results[0].show()

在这里插入图片描述

  • 使用自定义词汇表进行保存的好处:
    • 效率:通过关注相关对象来简化检测过程,减少计算开销并加快推理速度。
    • 灵活性:允许模型轻松适应新的或利基检测任务,无需进行大量的再训练或数据收集。
    • 简单性:无需在运行时重复指定自定义类,从而简化部署,使模型可以直接使用其嵌入的词汇表。
    • 性能:通过将模型的注意力和资源集中在识别定义的对象上,提高指定类别的检测准确性。
  • 这种方法提供了一种强大的方法,可以为特定任务定制最先进的对象检测模型,使高级人工智能更容易访问并适用于更广泛的实际应用。

参考文献

[1] Ultralytics 源代码地址:https://github.com/ultralytics/ultralytics.git.
[2] Ultralytics Docs:https://docs.ultralytics.com/

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv10训练自己的数据集(交通标志检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows核心编程 第14章,虚拟内存:获取系统信息

windows核心编程 第14章,虚拟内存:获取系统信息 14,获取系统消息 文章目录 windows核心编程 第14章,虚拟内存:获取系统信息14.1 系统信息 14.1 系统信息 许多操作系统的值是根据主机而定的,比如页面的大小&#xff0…

无人机挂载垂直抛投灭火弹技术详解

随着城市化进程的加快,高层建筑、森林、化工园区等区域火灾防控难度日益增大。传统消防手段在面对复杂地形或高层火灾时,往往存在响应速度慢、作业难度大、人员安全风险高等问题。无人机挂载垂直抛投灭火弹技术的出现,为高效、安全、精准的火…

conda install vs pip install

1背景 最近使用pyinstaller打包python程序,启动程序的时候,发现了以下的报错信息 Failed to execute script "pyi_rth_pkgres" due to unhandled dll load failed while importing pyexpat后面查阅了相关文档,比如根据stackoverf…

Vue3+Ts封装下拉懒加载自定义指令

文件夹目录如下: 使用方式: <template><divclass="time-line"v-infinite-scroll="{loadMore: loadMoreItems,threshold: 100 // 当滚动到距离底部 100 像素时触发加载}"> </div> </template><script lang="ts" se…

7次多项式对若干个点进行拟合,并生成图像|MATLAB实现

文章目录 拟合运行结果完整代码拟合 MATLAB对数据进行拟合的意义是通过数学模型和统计方法对实际数据进行分析和预测。拟合可以帮助我们理解数据背后的规律和趋势,从而做出科学决策。 拟合的意义 揭示数据的规律 预测未来趋势 数据修正和异常检测 数据分析和模型验证 总之,…

Prometheus+Grafana保姆笔记(2)——监控Spring Boot微服务程序

Prometheus Grafana 的组合在微服务项目中可以完成许多DevOps任务&#xff0c;它们共同提供了强大的监控和可视化功能。 我们陆续介绍Prometheus Grafana 的相关用法。 上一期&#xff0c;我们介绍了PrometheusGrafana的安装&#xff0c; PrometheusGrafana保姆笔记&#…

javaFx桌面程序开发代码示例

程序效果&#xff1a; 弹窗内容&#xff1a; 1.启动类 HelloJavaFX&#xff1a; import javafx.application.Application; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene…

赵本山:你把这玩意借我带上,黄晓娟:驴蒙脸你要带这个?--小品《麻将豆腐》(中3)的台词与解说

赵本山&#xff1a;你把这玩意借我带上&#xff0c;黄晓娟&#xff1a;驴蒙脸你要带这个&#xff1f; --小品《麻将豆腐》&#xff08;中3&#xff09;的台词与解说 &#xff08;接上&#xff09; 黄晓娟&#xff08;饰演小姨子&#xff09;&#xff1a;忘了麻将 赵本山&…

车载客流计数器在公交系统中的应用

车载客流计数器在公交系统中的应用&#xff0c;已成为提升运营效率与服务质量的关键工具。随着大数据概念的深入人心&#xff0c;人们愈发认识到数据在决策中的核心地位。公交车客流统计的引入&#xff0c;正是基于这一认识&#xff0c;旨在为公交车辆的运营组织提供详实、精准…

MySQL:表的设计原则和聚合函数

所属专栏&#xff1a;MySQL学习 &#x1f48e;1. 表的设计原则 1. 从需求中找到类&#xff0c;类对应到数据库中的实体&#xff0c;实体在数据库中表现为一张一张的表&#xff0c;类中的属性对应着表中的字段 2. 确定类与类的对应关系 3. 使用SQL去创建具体的表 范式&#xff1…

【Linux多线程】线程同步 与 生产者消费者模型(无锁化模型)

文章目录 1. Linux线程同步1.1 条件变量1.2 同步概念与竞态条件1.3 条件变量函数示例代码1:示例代码2 1.4 为什么 pthread_ cond_ wait 需要互斥量1.5 条件变量使用规范 2. 生产者消费者模型3. 读者 写者 问题3.1 读写锁3.2 读写锁的相关接口 4. 扩展&#xff1a;无锁化模型4.1…

Python 如何创建和解析 XML 文件

XML&#xff08;可扩展标记语言&#xff09;是一种广泛使用的标记语言&#xff0c;主要用于存储和传输数据。它具有结构化、层次化的特点&#xff0c;常被用作数据交换格式。Python 提供了多种工具和库来处理 XML 文件&#xff0c;包括创建、解析和操作 XML 文档。 一、XML 简…

免费webp转jpeg或gif工具

1、”“添加webp文件&#xff1b;”-“移除webp文件&#xff1b;”>>“开始转换&#xff1b;”X“清空内容。 也可以把想要转换的文件全选&#xff0c;拖进窗口里。 2、默认将webp文件转换成同名的png文件放在原来的文件夹里。如果不是静态图片&#xff0c;则自动尝试转…

案例:ZooKeeper + Kafka消息队列集群部署

目录 消息队列 概念 使用场景 不适宜 适宜 消息队列的特征 存储 异步 异步的优点 同步 为什么需要消息队列 解耦 作用 冗余 扩展性 灵活性 峰值处理能力 可恢复性 顺序保证 Kafka 概念 Kafka技术名词 &#xff08;1&#xff09;Broker &#xff08;2&a…

基于Orangepi全志H616智能视觉垃圾分类系统

目录 一、功能需求 二、Python的安装和环境搭建 三、Python基础 3.1 Python的特点&#xff1a; 3.2 Python的基础学习&#xff1a; 3.3 字典的多层嵌套&#xff1a; 四、C语言调用Python 4.1 搭建编译环境&#xff1a; 4.2 C语言执行Python语句&#xff1a; 4.3 C语言…

22 注意力机制—Transformer

目录 TransformerTransformer 架构对比 seq2seq多头注意力(Multi-head attention)带掩码的多头注意力(Masked Multi-head attention)基于位置的前馈网络(Positionwise FFN)残差连接和归一化(Add & norm)(加 & 规范化)1、加入归一化能够更好地训练比较深的网络…

UE基础 —— 项目与模板

虚幻引擎 项目 包含游戏和应用程序的所有内容&#xff0c;并将所有内容联系在一起&#xff1b;包含磁盘上的许多文件夹和资产&#xff0c;如蓝图、材质、3D资产、动画等&#xff1b;内容浏览器与磁盘上的文件夹和文件夹结构相同&#xff1b; 每个项目都有与之关联的.uproject文…

性能优化理论篇 | 彻底弄懂系统平均负载

Linux 上的进程状态 要讨论系统平均负载&#xff0c;首先要了解Linux 上的进程状态。 标志名称内核名称及解释R运行中或可运行TASK_RUNNING。进程正在执行或等待执行。可以在用户空间&#xff08;用户代码&#xff09;或内核空间&#xff08;内核代码&#xff09;中运行。S可…

【项目】基于Vue3.2+ElementUI Plus+Vite 通用后台管理系统

构建项目 环境配置 全局安装vue脚手架 npm install -g vue/cli-init打开脚手架图形化界面 vue ui创建项目 在图形化界面创建项目根据要求填写项目相关信息选择手动配置勾选配置项目选择配置项目然后我们就搭建完成啦&#x1f973;&#xff0c;构建可能需要一点时间&#xff0…

Navicat Premium Lite For Linux,一款免费的专业可视化 SQL 数据库设计工具,支持各种数据库并行连接,在业界可是大名鼎鼎!

Navicat Premium Lite For Linux&#xff0c;一款免费的专业可视化 SQL 数据库设计工具&#xff0c;支持各种数据库并行连接&#xff0c;在业界可是大名鼎鼎&#xff01; Navicat 是一个可视化数据库、数据表设计软件&#xff0c;支持MySQL、MariaDB、SQLite、MongoDB、Redshi…