YOLO-World: Real-Time Open-Vocabulary Object Detection 简介+安装+运行+训练(持续更新)

前言

YOLO_WORLD太牛了!!众所周知,传统是视觉目标检测一旦训练好后,如果我们需要增加新的识别目标的话,必须得重新训练模型。在生产中如果经常要新增检测目标,对时效性影响很大,而且随着数据量和种类增多,训练时长不可避免增加。
现在YOLO_WORLD提供了一个新玩法。只需修改目标名称,在不重新训练模型的情况下,可以识别到新的物体。并且其识别速度还是YOLOv8的20倍!!!

在这里插入图片描述
备注:以下为个人见解。如有错误,欢迎指出!!Thanks♪(・ω・)ノ

模型简介

一、该模型思路

主干特征网络使用CNN会比Transform架构轻量化许多。YOLO中yolohead的分类器和方框定位中,对分类器进行非常有意思的修改,参考多模态大模型的实现的图文对齐,使其分类器那块不再是每个框的概率,而是变成每个框的特征向量。即每个检测框都有自己的特征向量,通过比对最接近文本类里距离最近的文本特征向量来判断该检测框的类别。

二、大致流程如下:

不用担心文本embedding和图像embedding的问题,大佬们已经对齐啦~~
1、人输入想要检测目标文本(建议不要太口语化)。
2、Text Encoder 切割文本分好类型。
3、文本Embedding把各个类型转成对应特征向量。
4、传入检测图片。
5、YOLO Backbone:模型图片提取特征。
6、Vison-Language:视觉信息和语言信息进行联合处理和分析。
7.1、检测框内图像信息的特征向量通过和文本类向量比对获取相似度最大的。
7.2、检测框坐标数据
在这里插入图片描述

安装流程

为了方便个人建议直接使用ultralytics版本的yolo-world,超级简单。
官方详细教程地址

https://docs.ultralytics.com/models/yolo-world/#set-prompts

下载ultralytics

pip intstall -i https://pypi.tuna.tsinghua.edu.cn/simple  ultralytics==8.1.44

下载权重文件

https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8l-world.pt

执行以下代码

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('图片地址')# Show results
results[0].show()

怎么样是不是超短实现。

注意第一运行可能会有点卡,因为有些包要自动安装,如果网太卡的话,建议全局~~
在这里插入图片描述

训练

待更新~

个人对该模型的展望(纯属个人臆想,不喜勿喷)

问题:虽然模型通过embedding实现文本和检测框,那就会遇到一个问题。如果想要描述的目标受限于我们个人表述能力不足导致模型无法检测到该目标(也就是还不够便利)。
个人思路:相信不少人玩过stable diffusion这个AI生图的软件吧,我们是否可以借鉴那个图生文的思路,让相关embedding模型识别并生成用户框定目标的名称。理论上,这将进一步降低大家的使用门槛~

接下来就看哪些大佬能实现了O(∩_∩)O~

在这里插入图片描述

问题总结

待更新

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法思想总结:链表

一、链表的常见技巧总结 二、两数相加 . - 力扣(LeetCode) class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//利用t来存进位信息int t0;ListNode*newheadnew ListNode(0);//创建一个哨兵节点,方便尾插List…

pip如何查看Python某个包已发行所有版本号?

以matplotlib包为例子, pip install matplotlib6666 6666只是胡乱输入的一个数,反正输入任意一个不像版本号的数字都可以~ matplotlib所有版本号如下, 0.86, 0.86.1, 0.86.2, 0.91.0, 0.91.1, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 1.2.1…

女上司问我:误删除PG百万条数据,可以闪回吗?

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 擅长主流数据Oracle、MySQL、PG、openGauss运维 备份恢复,安装迁移,性能优化、故障应急处理等可提供技术业务: 1.DB故障处理/疑难杂症远程支援 2.Mysql/PG/Oracl…

在 Vuex 中使用 TypeScript 时,如何有效地处理异步 action 和 mutation?

在 Vuex 中使用 TypeScript 处理异步 action 和 mutation 时,可以利用 TypeScript 的类型系统来确保类型安全和提高代码的可读性。以下是一些有效处理异步操作的方法: 定义异步 action 的类型: 使用 TypeScript 的泛型来定义 action 的 conte…

【RPC】

1. 什么是RPC框架 RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许调用不同进程空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使用时,就像调用本地程序一样,无…

在BIM建筑中你一定用过的功能

AMRT3D数字孪生引擎https://www.amrt3d.com/#/ 为了让用户获得更好的使用体验,引擎需要经过反复的迭代和优化。在这背后,是AMRT3D团队怀揣匠心,扎根市场应用,并不断推出系列“亮点”功能。此次V1.3.1版本,更是针对BIM…

高效可扩展,使用Dask进行大数据分析

大家好,Dask技术作为并行计算领域的创新力量,正在重塑大数据的处理模式。这项开源项目为Python语言带来了强大的并行计算能力,突破了传统数据处理在扩展性和性能上的瓶颈。 本文将介绍Dask的发展历程、架构设计,并分析其在大数据…

分享|temu电商项目能成为2024年的新风口吗?

随着互联网的蓬勃发展,电商行业不断涌现出新的机遇和挑战。抖音上的知名网红阳哥近期推荐的temu电商项目,引发了广泛关注。那么,temu电商项目能否成为2024年的新风口呢?本文将从多个维度进行探讨。 temu电商项目以其独特的社交电商模式&…

【MATLAB源码-第54期】基于白鲸优化算法(WOA)和遗传算法(GA)的栅格地图路径规划最短路径和适应度曲线对比。

操作环境: MATLAB 2022a 1、算法描述 1.白鲸优化算法(WOA): 白鲸优化算法是一种受白鲸捕食行为启发的优化算法。该算法模拟了白鲸群体捕食的策略和行为,用以寻找问题的最优解。其基本思想主要包括以下几点&#xff…

鸿蒙南向开发:【编译和烧录】指导

编译 #进入源码目录 #rm -rf ohos_config.json #hb set #. #如下图所示,按↑↓键,选择需要编译的工程名,然后回车 #hb build -f #然后回车,等待屏幕出现:BUILD SUCCESS字样,说明编译成功。如下图 #编译生成的固件在…

✌粤嵌—2024/4/3—合并K个升序链表

代码实现: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* merge(struct ListNode *l1, struct ListNode *l2) {if (l1 NULL) {return l2;}if (l2 NULL) {return l1;}struct Lis…

【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)

阅读导航 引言一、UDP协议二、UDP网络程序模拟实现1. 预备代码⭕makefile文件⭕打印日志文件⭕打开指定的终端设备文件,并将其作为标准错误输出的目标文件描述符 2. UDP 服务器端实现(UdpServer.hpp)3. UDP 客户端实现(main函数&a…