U版YOLO-World来了,YOLOv8再度升级,三行代码上手YOLO-World!

本文首发:AIWalker
欢迎关注AIWalker,近距离接触底层视觉与基础AI

https://arxiv.org/abs/2401.17270
https://github.com/AILab-CVC/YOLO-World
https://github.com/ultralytics/ultralytics
https://www.yoloworld.cc/

YOLO-World亮点

  • YOLO-World是下一代YOLO检测器,旨在实时开放词汇对象检测。
  • YOLO-World在大规模视觉语言数据集上进行了预训练,包括Objects 365,GQA,Flickr 30 K和CC 3 M,这使得YOLO-World具有强大的zero-shot开集Capbility与Grounding能力
  • YOLO-World实现了快速的推理速度;可以对用户给定词汇,所提重新参数化技术进一步加速推理和部署;

YOLO-World方案

上图为YOLO-World整体架构示意图,它包含一个YOLO检测器、一个文本编码器以及RepVL-PAN。文本编码器首先将输入文本编码为文本嵌入信息;图像编码器对基于输入图像提取多尺度特征信息;RepVL-PAN通过跨模态融合增强文本与图像表征。

  • YOLO Detector:编码器基于YOLOv8演变而来,YOLOv8由DarkNet骨干、PAN多尺度特征融合以及检测头构成;
  • Text Encoder:采用CLIP预训练文本编码器对输入文本T提取对应的文本嵌入 W = TextEncoder ( T ) ∈ R C × D W = \text{TextEncoder}(T) \in \mathbb{R}^{C \times D} W=TextEncoder(T)RC×D,这里C表示名词数目,D表示嵌入维度。相比于Text语言编码器,CLIP文本编码器可以提供更好的视觉-语义能力。当输入文本是句子时,我们采用n-gram算法提取名词短词并送入本文编码器
  • Text Contrastive Head:延续YOLOv8,我们采用解耦头对边框 { b k } k = 1 K \{b_k\}_{k=1}^K {bk}k=1K与目标嵌入 { e k } k = 1 K \{e_k\}_{k=1}^K {ek}k=1K进行回归。作者提出文本对比头(Text Contrastive Head)计算目标-文本相似度 s k , j s_{k,j} sk,j,定义如下:

s k , j = α ⋅ L2-Norm ( e k ) ⋅ L2-Norm ( w j ) T + β s_{k,j} = \alpha \cdot \text{L2-Norm}(e_k) \cdot \text{L2-Norm}(w_j)^{T} + \beta sk,j=αL2-Norm(ek)L2-Norm(wj)T+β

注:这里的L2-Norm与仿生变换参数对于稳定区域-本文训练非常重要。

  • Training with Online Vocabulary:在训练过策划肝囊肿,我们为每个Mosaic图像构建一个在线词汇集合T。具体来说,我们采样所有包含在Mosaic图像中的正名词短语,然后从对应数据集中随机采样一些负名词短语。每个Mosaic图像最多包含M个词汇,默认M=80。
  • Inference with Offline Vocabulary:在推理阶段,我们提出了一种基于离线词汇集合的prompt-then-detect策略以进一步提升效率。用户也可以自定义一些客制化提示信息[可选],然后采用文本编码器对这些提示信息进行编码得到离线嵌入包。离线词汇可以避免对每个输入都进行文本编码计算,为词汇调整提供了更灵活的调控机制。

更详细介绍请参考:YOLO-World | 赋能YOLOv8开集检测能力,构建新一代YOLO新标杆

上手测试

官方YOLO-World是基于mmyolo, mmdetection实现的,但U1S1,mm系列对于入门确实不错,但对于新开源算法上手测试真心难用,毒瘤啊[mmcv的ops这个鬼东西啊]~

好消息来了!ultralytics支持YOLO-World了,可以直接通过ultralytics库来玩YOLO-world了

使用方式简单到了极致,几行命令即可,还不需要安装一大堆的mm包,不需要编译各种无关op,牛逼克拉斯~

from ultralytics import YOLOWorld# Initialize a YOLO-World model
model = YOLOWorld('yolov8s-world.pt')  # Execute inference with the YOLOv8s-world on the specified image
results = model.predict('bus.jpg')# Show results
results[0].show()

就是这么的简单好用,三行代码完成测试!

那么,YOLO-World的Prompts功能该如何测试呢?同样非常简单,新增一行代码即可,代码如下:

from ultralytics import YOLOWorld# Initialize a YOLO-World model
model = YOLOWorld('yolov8s-world.pt')  # Define custom classes
model.set_classes(["person"])# Execute inference with the YOLOv8s-world on the specified image
results = model.predict('bus.jpg')# Show results
results[0].show()

就这么一行代码改动,YOLO-World就变成了行人检测器,

当然,你还可以把它变成bus检测器,效果如下

不得不说,YOLO-World进一步释放了检测器的可玩性,不仅可以搞通用检测,还可以玩限定场景检测,关键速度还贼快,还等什么呢,速速试玩咯

推荐阅读

  • YOLO-World | 赋能YOLOv8开集检测能力,构建新一代YOLO新标杆
  • YOLOv8重磅升级,新增旋转目标检测,又该学习了~
  • YOLO-NAS | YOLO新高度,引入NAS,出于YOLOv8而优于YOLOv8
  • YOLOv6 v3.0 | 重磅升级!性能超越V8!
  • DAMO-YOLO | 超越所有YOLO,魔搭社区开源至强YOLO,5行代码即可体验!
  • 南开大学提出YOLO-MS | 超越YOLOv8与RTMDet,即插即用打破性能瓶颈

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

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

相关文章

安珀警报发挥重要作用

在周二(2月13日)的傍晚时分,美国加州发生了一起令人震惊的绑架事件。一名年仅四岁的男童在其父送外卖时被一名嫌犯带走。在加州公路巡逻队和长滩警察局发布安珀警报后,全城的人们都行动了起来。 安珀警报,全名为Ameri…

MiKTeX安装后,Latex编译后PDF无法预览,是灰色的

解决方式删掉编译器就可以, 即删掉MiKTeX MiKTeX安装后会将编译器默认修改为MiKTeX,这个时候会显示报错,简单粗暴的方式是删掉MiKTeX软件

AI:135-基于卷积神经网络的艺术品瑕疵检测与修复

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

YOLOv9:目标检测的新里程碑

YOLOv9:目标检测的新里程碑 摘要:YOLOv9是目标检测领域的一个重大突破,它在性能、速度和准确性方面都取得了显著的进步。本文详细介绍了YOLOv9的架构创新、优化策略以及在实际应用中的表现,并通过与YOLOv8等先前版本的比较&#…

Github 2024-02-21 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-02-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目8非开发语言项目1TypeScript项目1 gpt4free 语言模型集合改进计划 创建周期:300 天开…

并发编程(4)共享模型之无锁

6 共享模型之无锁 本章内容 CAS 与 volatile原子整数原子引用原子累加器Unsafe 6.1 问题提出 有如下需求,保证 account.withdraw 取款方法的线程安全 import java.util.ArrayList; import java.util.List;interface Account {// 获取余额Integer getBalance();…

复旦大学MBA:AIGC时代,科技与商业迸发更绚烂的火花

ChatGPT问世以来,AI技术及应用进入一个全速推进的通道,快速迈入通用大模型时代。从AGI(人工通用智能)到AIGC(AI多模态内容生成),AI正在飞速重塑各个行业、人类生活乃至人类的未来。在商业领域更是给营销场景和营销工具…

Mac OS 搭建C++开发环境【已解决】

Mac OS 搭建C开发环境 文章目录 Mac OS 搭建C开发环境一、安装命令行工具:二、安装vscode三、安装gcc3.1 安装Homebrew3.2 安装gcc3.3 修改配置 四、更改VSCode默认编译器五、安装gdb六、安装Cmake && git七、编译运行 本地环境: Mac OS Sonoma …

3.openEuler物理存储及逻辑卷管理(一):磁盘存储挂载与使用

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议下载麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 磁盘大类: HDD, (Hard Disk Drive的缩写) : 由一个或者多个铝制或者玻璃制成的磁性碟 片,磁头,…

xtu oj 1248 Alice and Bob 2.0

题目描述 Alice和Bob在玩骰子游戏,他们用三颗六面的骰子,游戏规则如下: 点数的优先级是1点最大,其次是6,5,4,3,2。三个骰子点数相同,称为"豹子",豹子之间按点数优先级比较大小。如果只有两个骰…

Python截取视频帧

方式一 遍历指定目录下所有的视频,按照指定时间间隔截取视频帧 import os import cv2 import sys import timedef save_frame(time_in_sec, file_path):# 打开视频文件cap cv2.VideoCapture(file_path)# 获取视频的帧率fps cap.get(cv2.CAP_PROP_FPS)# 获取视频…

Kafka入门介绍一

介绍 Kafka是一个分布式系统,由服务器和客户端组成,通过高性能TCP网络协议进行通信。它可以部署在本地和云中的裸机硬件、虚拟机和容器上环境。 服务器:Kafka作为一个或多个服务器的群集运行,这些服务器可以跨越多个数据中心或云…

1007: 【C1】【一维数组】【入门】数组元素的查找

题目描述 给你n个整数&#xff0c;并且给你要查找的整数k。 在n个整数中查找整数k是否存在&#xff0c;如果找到则输出k在n个整数中第一次出现的位置&#xff0c;如果找不到则输出-1 输入 第一行&#xff1a;一个整数n&#xff0c;表示有n个数 (1<n<100) 第二行&am…

React18源码: Fiber树中的全局状态与双缓冲

Fiber树构造 在React运行时中&#xff0c;fiber树构造位于 react-reconciler 包在正式解读 fiber 树构造之前&#xff0c;再次回顾一下renconciler的4个阶段 1.输入阶段&#xff1a;衔接react-dom包&#xff0c;承接fiber更新请求2.注册调度任务&#xff1a;与调度中心(schedu…

数据存储-文件存储

一、CSV文件存储 csv是python的标准库 列表数据写入csv文件 import csvheader [班级, 姓名, 性别, 手机号, QQ] # 二维数组 rows [[学习一班, 大娃, 男, a130111111122, 987456123],[学习二班, 二娃, 女, a130111111123, 987456155],[学习三班, 三娃, 男, a130111111124, …

spring aop应用---记录日志

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-la…

SQL 中如何实现多表关联查询?

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; 在SQL中&#xff0c;多表关联查询是通过使用JOIN操作来实现的&#xff0c;它允许你从两个或多个表中根据相关列的值来检索数据。以下是几种常见的JOIN类型&#xff1a; …

【Vue 2】

Vue的组件化 Vue的组件化开发是一种将复杂的业务拆分为一个个独立的、可复用的组件的开发方式。组件化开 发的核心思想是将页面拆分成多个组件&#xff0c;每个组件依赖的CSS、JS、模板、图片等资源放在一起开发和维护 什么是跟组件 在Vue中&#xff0c;根组件&#xff08;…

python+django志愿者社团管理系统36uiu--pycharm

本系统结合计算机系统的结构、概念、模型、原理、方法&#xff0c;在计算机各种优势的情况下&#xff0c;采用python语言&#xff0c;结合django框架与Vue框架以及MYSQL数据库设计并实现的。基于django青年志愿者社团管理主要包括个人中心、学生管理、社团理事管理、社团新闻管…

解决Java Long类型转为Json后,前台Js调用精度丢失问题

问题描述&#xff1a; 当实体类中的字段为Long类型&#xff0c;且值超过前端js显示的长度范围时会导致前端回显错误。 后端JSON字符串{“id”: 1540951455810646018, “name”: “张三”, …}&#xff0c;前端通过data.id获取id时&#xff0c;id的值变成了1540…