YOLO-World:基于YOLOv8的开放词汇目标检测

文章目录

  • 前言
  • 1、出发点
  • 2、方法
    • 2.1.TextEncoder
    • 2.2.ReparmVLPAN
    • 2.3.输出头
  • 3、实验
    • 3.1.数据集
    • 3.2.LVIS测试集
  • 总结


前言

 本文介绍一篇来自腾讯的开放词汇检测工作,发表自CVPR2024,论文链接,开源地址。

1、出发点

 GroundingDINO在开放词汇检测任务中大放异彩,因此本文希望在轻量化的YOLOv8上也搞一个轻量化的开放词汇检测算法。最终效果吧,是模型又快而且精度基本持平。
在这里插入图片描述

2、方法

 模型总体结构比较简单,主体检测网络采用的是YOLOv8,为了实现开放词汇检测任务,将分类头替换成“特征之间比对头”,具体来说就是将检测网络每个anchor所对应的特征向量和文本嵌入向量做对比,计算相似性,进而实现开放词汇检测目的。
在这里插入图片描述

2.1.TextEncoder

 首先说下TextEncoder,在训练阶段,需要带着庞大的TextEncoder,而在部署阶段,则可以首先离线提取出文本的嵌入向量,这样在部署阶段就能省一个TextEncoder的计算量,使其更加轻量。

在这里插入图片描述

2.2.ReparmVLPAN

 在得到TextEmbedding和图像特征向量C3-C5后,本文设计了一个VLPAN交互模块,简单来说:用图像特征向量更新文本,在用文本更新图像特征向量。当然,在部署阶段,TextEmbedding也是可以被作为权重写入到onnx里面的。
在这里插入图片描述
 本人不想在此过多介绍这个模块,因为在实际应用中,建议还是用PAN比较好,因为这个模块收益不多,而且若检测的文本顺序不同,会导致检测结果不同。原因是Max-Sigmoid算子,读者有兴趣可自己check下。

2.3.输出头

 样本分配策略是SIMOTA,跟v8一样。检测头就是yolov8,每个anchor预测4个上下左右距离,损失用的是DFL Loss;而分类头则是对比损失头,最终输出维度为: n u m _ a n c h o r ∗ 80 num\_anchor * 80 num_anchor80,做二元交叉熵损失,即对应正样本anchor为1,其余为0。

3、实验

3.1.数据集

在这里插入图片描述

  数据集采用O365+GoldG(GQA+Flickr)。

3.2.LVIS测试集

在这里插入图片描述
 没啥可说的,FPS高,而且精度跟一系列开放词汇检测算法持平。但paper中指标跟git开源有出入,后续改进论文均以git为准。

总结

 总之是一篇不错的轻量化OVD算法,算是挖了个新坑。每个模块其实都有值得探索改进的空间,包括后来的YOLOE , YOLOUniOW等,后续会逐个介绍,包括这类算法的一些不足,敬请期待。

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

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

相关文章

华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)

一、路由过滤(filter-policy) 1、用于控制路由更新、接收的一个工具 2、只能过滤路由信息,无法过滤LSA 二、路由过滤(filter-policy)与动态路由协议 1、距离矢量路由协议 RIP动态路由协议 交换的是路由表&#xff0…

美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进

打开 Settings 界面,依次选择 Editor -> Code Style -> Java,选择 Code Generation, 取消 Line comment at first column 和 Block comment at first column 的勾选即可, 1、Line comment at first column (行注释在第一列…

服务器数据恢复—硬盘坏道导致EqualLogic存储不可用的数据恢复

服务器存储数据恢复环境&故障: 一台EqualLogic某型号存储中有一组由16块SAS硬盘组建的RAID5阵列。上层采用VMFS文件系统,存放虚拟机文件,上层一共分了4个卷。 磁盘故障导致存储不可用,且设备已经过保。 服务器存储数据恢复过程…

openharmony系统移植之gpu mesa3d适配

openharmony系统移植之gpu mesa3d适配 文章目录 openharmony系统移植之gpu mesa3d适配1. 环境说明2. gpu内核panfrost驱动2.1 使能panfrost驱动2.2 panfrost dts配置 3. buildroot下测试gpu驱动3.1 buildroot配置编译 4. ohos下mesa3d适配4.1 ohos下mesa3d编译调试4.1.2 编译4.…

Kafka生产者send方法详解

Kafka生产者send方法详解 1. send方法的工作原理 1.1 基本流程 #mermaid-svg-EXvKiyf8oSlenrxK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EXvKiyf8oSlenrxK .error-icon{fill:#552222;}#mermaid-svg-EXvKiyf…

【sdkman】sdk命令使用简介

SDKMAN! 使用指南 SDKMAN! 是一个用于管理多个软件开发工具包版本的命令行工具。 基本命令 安装 SDK # 安装最新稳定版 sdk install java# 安装特定版本 sdk install scala 3.4.2# 安装本地版本 sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT sdk ins…

开源字体设计工具字玩 FontPlayer

开源字体设计工具字玩 FontPlayer 内测版 v0.2.0 于 2025 年 5 月 9 日发布 基础功能:用户可以使用该工具绘制字体并导出 otf 字体文件,设计属于自己的字库。脚本功能:提供了脚本功能,用户可以用程序的方式绘制字形组件&#xff0…

快速入门深度学习系列(3)----神经网络

本文只针对图进行解释重要内容 这就是入门所需要掌握的大部分内容 对于不懂的名词或概念 你可以及时去查 对于层数 标在上面 对于该层的第几个元素 标在下面 输入层算作第0层 对于第一层的w b 参数 维度如下w:4*3 b:4*1 这个叫做神经元 比如对于第一层的神经元 这里说的很…

【Python 算法零基础 2.模拟 ⑤ 基于栈和队列】

目录 基于栈 Ⅰ、1441. 用栈操作构建数组 算法与思路 ① 初始化操作序列 ② 遍历数字范围 ③ 判断并添加操作 ④ 提前结束循环 ⑤ 返回操作序列 基于队列 Ⅰ、1700. 无法吃午餐的学生数量 思路与算法 ① 统计学生对三明治的需求: ② 遍历三明治供应顺序:…

管家婆实用贴-如何在Excel中清除空格

我们在使用管家婆软件时,经常会用到Excel表格导入导出数据,在使用Excel整理数据时,数据中的空格可能会导致计算和分析出现问题。无论是多余的前导空格、尾部空格还是单元格中的不必要空格,清除它们都是确保数据准确性的关键。今天…

uniapp-商城-53-后台 商家信息(更新修改和深浅copy)

1、概述 文章主要讨论了在数据库管理中如何处理用户上传和修改商家信息的问题,特别是通过深浅拷贝技术来确保数据更新的准确性和安全性。 首先,解释了深拷贝和浅拷贝的区别:浅拷贝使得两个变量共享相同的内存地址,而深拷贝则创建新…

numpy模块综合使用

一、numpy模块的综合使用方法 # 使用矩阵的好处,矩阵对于python中列表,字典等数据类型一个一个拿来计算是会方便计算很多的,底层使用的是c语言 # 在数据分析和数据处理的时候也经常常用 import numpy as np array np.array([[1,2,3],[2,3,4…

【github分享】开发者学习路线图

地址:GitHub - kamranahmedse/developer-roadmap: Interactive roadmaps, guides and other educational content to help developers grow in their careers. 介绍:涵盖了所有领域的开发者路线图,前端、后端、运维、全栈、编程语言、AI等。…

《Linux命令行大全(第2版)》PDF下载

内容简介 本书对Linux命令行进行详细的介绍,全书内容包括4个部分,第一部分由Shell的介绍开启命令行基础知识的学习之旅;第二部分讲述配置文件的编辑,如何通过命令行控制计算机;第三部分探讨常见的任务与必备工具&…

[Java实战]Spring Boot 解决跨域问题(十四)

[Java实战]Spring Boot 解决跨域问题(十四) 一、CORS 问题背景 什么是跨域问题? 当浏览器通过 JavaScript 发起跨域请求(不同协议、域名、端口)时,会触发同源策略限制,导致请求被拦截。 示例场…

MyBatis快速入门——实操

默认:电脑搭建好了Maven环境 本次入门实验使用的idea版本:ideaU2022.1 目录 一:前期准备工作 1. 创建一个springboot工程 2. Maven环境配置 3. 在mysql数据库中创建一个user表 4. 编写实体类User 二: 引入MyBatis的相关依赖…

IPLOOK超轻量核心网,助力5G专网和MEC边缘快速落地

随着5G深入千行百业,行业客户对核心网的灵活性、可控性和部署效率提出了更高要求。IPLOOK面向数字化转型需求,推出了超轻量级核心网解决方案,具备体积小、资源占用少、部署灵活、易于维护等特性,广泛适用于专网、实验室、MEC边缘云…

【前端】【HTML】【总复习】一万六千字详解HTML 知识体系

🌐 HTML 知识体系 一、HTML 基础入门 1. HTML 简介与作用 HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础语言。它的核心作用是: 定义网页内容的结构(标题、段落、图片、表格等)提供语义化标签,帮助搜索引擎与辅助设备理解页面内容配合 CSS 实现…

VC++ 获取CPU信息的两种方法

文章目录 方法一:使用 Windows API GetSystemInfo 和 GetNativeSystemInfo (基本信息)编译和运行代码解释 方法二:使用 __cpuid(CPU序列号、特性等)代码解释: 开发过程中需要使用 VC获取电脑CPU信息,先总结…

Docker Compose 的历史和发展

这张图表展示了Docker Compose从V1到V2的演变过程,并解释了不同版本的Compose文件格式及其支持情况。以下是对图表的详细讲解: Compose V1 No longer supported: Compose V1已经不再支持。Compose file format 3.x: 使用了版本3.x的Compose文件格式。 …