Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测
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 YOLOWorlddef train():# Load a pretrained YOLOv8s-worldv2 modelmodel = YOLOWorld("yolov8s-world.pt")# Train the model on the COCO8 example dataset for 100 epochsresults = model.train(data="coco8.yaml", epochs=10, imgsz=640, batch=1, workers=1)# Run inference with the YOLOv8n model on the 'bus.jpg' imageresults = 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 YOLOdef val():# Create a YOLO-World modelmodel = YOLO("yolov8s-world.pt") # or select yolov8m/l-world.pt for different sizes# Conduct model validation on the COCO8 example datasetmetrics = 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 模型:
- 首先加载 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")
- 保存后,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开源项目
相关文章:
Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测
Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行YOLO-World目标检测进行训练进行预测进行验证 扩展目标跟踪设置提示 参考文献 前言 由…...
区块链用什么编程语言实现?
. 主流区块链的开发语言主要有:C、Go、Java、Rust、C#。 C使用率最高,其次是Go,很少有人用python开发区块链。...
【网络编程】UDP通信基础模型实现
udpSer.c #include<myhead.h> #define SER_IP "192.168.119.143" #define SER_PORT 7777 int main(int argc, const char *argv[]) {//1.创建int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("socket error");return -1;}//2.连接struct…...
Docker Compose 常用命令详解
Docker Compose 常用命令详解 Docker Compose 是 Docker 官方编排工具之一,用于定义和运行多容器 Docker 应用程序。通过 docker-compose.yml 文件,开发者可以轻松管理服务、网络、卷以及各服务之间的依赖关系。以下将介绍一些常用的 Docker Compose 命…...
超级外链工具,可发9600条优质外链
超级外链工具,是一款在线全自动化发外链的推广工具。使用本工具可免费为网站在线批量增加外链,大大提高外链发布工作效率,是广大草根站长们必备的站长工具。 外链工具只是网站推广的辅助工具,一般适用于短时间内无法建设大量外链…...
VisionPro二次开发学习笔记13-使用CogToolBlock进行图像交互
该程序演示了如何使用CogToolBlock进行图像交互. 从vpp文件中加载一个ToolBlock。 用户可以通过应用程序窗体上的数字增减控件修改ToolBlock输入端子的值。 用户还可以从coins.idb或采集FIFO中选择图像。 “运行一次”按钮执行以下操作: 获取下一个图像或读取下一…...
比特币价格分析:市场重置完成,下一个目标:70,000 美元
比特币再次处于关键支撑位,面临可能影响其短期前景的关键考验。分析师们正密切关注比特币是否重复熟悉的模式,暗示可能出现重大走势。 OKNews分析师Josh表示,比特币一直处于看跌趋势,正如 4 日图上的超级趋势指标所示。这种趋势的…...
大模型笔记5 Extractive QA任务评估
目录 Extractive QA任务评估 Extractive QA评测指标 precision, recall, f1 ROUGE 划分训练与评估数据集 token位置评估 单个token位置评估 输入label的token位置 预测token位置 评估 Wandb 共享机器同时登录 样本类别平衡 标记token label时对窗口进行筛选 训练…...
RCE绕过方式
目录 小于8个字符突破限制 无字母数字执行 php7的做法 php5的思考 PHP5shell 深入理解glob通配符 构造POC,执行任意命令 无参数读文件和RCE总结 代码解读 构造. 另一种构造方法 小于8个字符突破限制 但也只能执行一些非常短的命令,没有什么意义…...
Flutter 电视投屏模块
前言 村里的老人说:“珍爱生命,远离低头族。“ 之前开发的一个 DIM 项目 Tarsier,里面有一个分享视频的功能,同时包含在线视频播放、电视直播等。 考虑到用户在手机上看视频的体验问题,需要增加一个投屏功能,以便用户可以电影、电视直播等投到电视上用大屏幕观看。 用…...
【机器学习】卷积神经网络简介
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 卷积神经网络简介1. 引言2. CNN的基本概念2.1 什么是卷积神经网络2.2 CNN与传统…...
时间函数链接函数等
1. 2.top相当于windows任务管理器 3.命令模式下不加冒号20G直接跳转行数 4. 相当于strcat 5.:13,15y 13行到15行复制 6. Ctrl 右 】是追踪命令 7. vi off_t -t看类型 8. qa关闭所有 9.gg 移动最前面 GG移动到最后面 10.终端中的全选命令1. 使用快捷键&…...
Android控件(示例)
在Android应用程序中,界面由布局和组件组成。布局相当于框架,而控件则是框架里面的内容。了解过Android布局后,如果要设计ui界面,还需要了解和掌握各个控件的应用。 一个界面的设计,先从创建容器开始,再向…...
图论------贝尔曼-福德(Bellman-Ford)算法
算法概述: Bellman-Ford算法核心代码如下 for(int i 1;i<n-1;i) for(int j 1;j<m;j) if(dic[v[j]]> dic[u[j]] w[j]] dic[v[j]] dic[u[j]] w[j]; 首先我们要了解一个点就是我们这次不再使用邻接矩阵来存储图的信息,而是定义三个一维数组来…...
带你彻底搞懂useLayoutEffect的使用场景
开篇第一句: useLayoutEffect 可能会影响性能。尽可能使用 useEffect。 useLayoutEffect 是 useEffect 的一个版本,在浏览器重新绘制屏幕之前触发。 使用方法 useLayoutEffect(setup, dependencies?)调用 useLayoutEffect 在浏览器重新绘制屏幕之前进行布局测量&…...
大厂进阶之二:React高级用法HOC、Hooks对比、异步组件
本文分文三部分: HOC高阶组件 higher order componentHooks 16.8版本后新增的钩子API异步组件使用lazy和suspense两个api实现组件代码打包分割和异步加载 一、HOC高阶组件 1、定义 高阶组件不是组件而是函数,是react中用于复用组件逻辑的高级技巧&am…...
【扒代码】ope.py
文件目录: 引用方式 if not self.zero_shot: # 非零样本情况下,计算边界框的宽度和高度 box_hw torch.zeros(bboxes.size(0), bboxes.size(1), 2).to(bboxes.device) box_hw[:, :, 0] bboxes[:, :, 2] - bboxes[:, :, 0] # 宽度 box_hw[:, :, 1] bbox…...
【Rust光年纪】探索Rust终端编程:从跨平台操作到用户界面设计
构建跨平台终端应用的完美选择:Rust 库综述 前言 随着终端应用程序的发展,越来越多的开发者开始寻找跨平台的、易于使用的库来构建终端用户界面和执行终端操作。本文将介绍几个流行的 Rust 库,它们提供了丰富的功能和灵活的 API 来满足不同…...
67、ceph
一、ceph 1.1、ceph概念 ceph是一个开源的,用c语言写的分布式的存储系统。存储文件数据。 /dev/sdb fdisk /dev/sdb gdisk /dev/sdb lvm 逻辑卷 可以扩容 raid 磁盘阵列 高可用 基于物理意义上的单机的存储系统。 分布式有多台物理磁盘组成一个集群&…...
最大正方形[中等]
优质博文:IT-BLOG-CN 一、题目 在一个由0和1组成的二维矩阵内,找到只包含1的最大正方形,并返回其面积。 示例 1: 输入:matrix [["1","0","1","0","0"],[&quo…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...


