YOLO-world论文阅读笔记

论文:https://arxiv.org/abs/2401.17270
code: https://github.com/AILab-CVC/YOLO-World
1、为什么要做这个研究(理论走向和目前缺陷) ?
之前的开集检测器大多比较慢,不利于部署。
2、他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
结合CLIP和yolov8,CLIP提取文本特征,yolov8提取图像特征,核心是如何将文本特征和图像特征融合,这个特征融合模块要非常简单,最好融合一次就行,不用多多阶段融合,这样部署的时候就可以直接用CLIP离线编码好的文本特征,而不用再实时推理了,节约了大量的计算量,并且非常简单。
3、发现了什么(总结结果,补充和理论的关系)?
提出YOLO-World, 快且实时在V100上可以打到50+FPS?
实际使用下来发现还是比Grounding DINO效果要差一些。

摘要
YOLO系列的检测器在工业界是非常实用的,但是它们有个非常大的问题就是只能检测预定义的类别。本文提出的方法可以通过视觉语言模型在大规模数据集上训练,实现了检测任意类别的目的。在LVIS数据集上AP35.4, V100上52FPS。
1 引言
现有的做开集检测的视觉语言模型(BERT, OV-COCO)计算量都太大了,而且部署不友好。已经有一些论文证明了预训练的大模型效果非常好,但是用预训练的小模型做开集检测的能力仍有待探索。
Yolo-world 的yolov8的检测架构,结合预训练clip文本编码器来编码输入的文本,并用作者设计的重参数化视觉鱼眼数据聚合网络来融合文本和图像特征。在推理阶段,文本编码器可以直接拿掉,只用文本embeddings来作为输入就行。
之前的开集检测方法都需要在线编码文本,以获取需要检测的类别,而yolo-world只需要离线编码一次就行了,后面推理阶段直接用离线编码的文本就行,对部署非常友好。
2 相关研究
传统目标检测
开集目标检测(OVD)
OWL-ViTs, GLIP, Grounding DINO. ZSD-YOLO
3 方法
3.1 预训练方法:区域文本对
传统检测方法的实例标注是类别区域对(类别对应的是类别ID),本文方法使用的是文本类别对,文本可以类别名、短语或一句话。YOLO-World已图像和一系列文本作为输入输出的是框和对应的目标的嵌入特征。
3.2 模型架构
在这里插入图片描述

检测器:yolov8
文本编码器:CLIP
文本对比头:文本特征和图像框特征计算余弦相似度
在线训练:马赛克增强
离线推理:输入自定义离线文本特征
3.3 文本图像特征融合模块
[图片]

文本引导的 CSPLayer: 类似与fpn结构的图像文本特征融合层, 文本引导。
Image-Pooling Attention:
3.4 预训练方法
图像文本对伪标注:1)先用n-gram方法从文本中提取名词短语。2)将名词短语输入GLIP获取生成标注框,这样就可以提供粗糙的文本检测框对。3)用CLIP来评估名词短语和对应检测框的相关性,剔除相关性比较低的文本检测框对。如此便可以制作出大规模的用于训练的数据集(CC3M 246K帧)了。
4 实验
4.1实现细节
4.2 预训练
实验设置:预训练阶段文本编码器参数冻结
预训练数据:
[图片]

零样本评估:预训练数据中没有LVIS, 在LVIS进行评估
[图片]

4.3 消融实验
预训练数据:数据越多越好
[图片]

文本图像特征融合模块(RepVL-PAN):
[图片]

文本编码器:比较了BERT和CLIP这两种文本编码器,CLIP比bert好很多。且CLIP如果微调的话效果会变差,因为CLIP本来训练用的数据已经就足够丰富了。
[图片]

4.4 在COCO和LVIS上微调YOLO-World
实验建立: CLIP也进行了微调,学习率0.01
COCO目标检测:微调时移除了RepVL-PAN以加速训练。
在这里插入图片描述

LVIS目标检测
[图片]

4.5 开集实例分割
需要有实例集的分割标注
只微调分割头的话会有更好的开集分割能力(泛化能力)。
[图片]

5结论
提出了YOLO-World,开集实时目标检测器,设计了文本和图像特征融合模块,支持离线部署。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++编程(九)异常处理机制、模板、容器库

文章目录 一、异常处理机制(一)概念(二)语法格式(三)使用示例(四)异常处理机制库 二、模板(一)概念(二)函数模板1. 语法格式2. 函数模…

zxing-cpp+OpenCV根据字符串生成条形码

编译构建 需要使用到 CMake、Git、GCC 或 MSVC。 github 链接:https://github.com/zxing-cpp/zxing-cpp 编译之前请确保: 确保安装了 CMake 版本 3.15 或更高版本。 确保安装了与 C17 兼容的编译器(最低VS 2019 16.8 / gcc 7 / clang 5)。 编译构建…

Linear Regression线性回归

目录 前言 Housing Price Prediction Linear Regression Loss/Cost Function Learning Rate 作业 前言 在本专栏中,我们将学习机器学习的知识。 Housing Price Prediction 在开始线性回归的研究之前,我们先来考虑一个实际的问题:房屋…

茗鹤APS高级计划排程系统,在集团多工厂协同生产下的应用

随着业务规模的扩大和市场的全球化,越来越多的企业选择“总部多工厂基地”的模式,此种模式大幅提升企业的产能与产量,有效分散风险。然后,与之而来的是对企业的管理提出更高的管理要求。多个生产基地不仅面临集团下发的周期性计划…

electron教程(一)创建项目

一、方式① 根据官网描述将electron/electron-quick-start项目克隆下来并启动 electron/electron-quick-start地址: GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…

回溯 | Java | LeetCode 39, 40, 131 做题总结

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

JavaSE简易版扫雷小游戏

描述:用户输入二维雷区的高和宽,输入确定地雷数,随机在地雷区生成地雷。用户输入横竖坐标进行挖雷,挖到地雷游戏以失败结束,并让用户选择是否再次游戏;没挖到雷,显示该区域8个方向地雷数。如果8…

去中心化社会的崛起:探索区块链对社会结构的影响

随着区块链技术的发展和应用,我们正逐步迈向一个去中心化的社会结构。本文将深入探讨区块链技术如何影响社会结构,从经济、政治到文化等多个方面进行探索和分析,揭示其可能带来的革命性变革。 1. 区块链技术的基本原理回顾 1.1 分布式账本与…

放大器的输入电容Cin对放大电路的影响

1、OPA859构成的放大电路的设计 图中OPA859的增益G设定为1.16 ,OPA859的增益带宽积GBP 900M , 放大器的带宽BW GBP / Acl 900 / 1.16 775.86M。 图:OPA859放大电路 由于需要在放大电路上加带宽的限制,所以在OPA859放大电路上有个低通限…

Elasticsearch基础(二):阿里云Elasticsearch快速入门

文章目录 阿里云Elasticsearch快速入门 一、资源领取 二、访问实例 三、创建索引 四、插入数据 五、搜索数据 1、全文搜索 2、按查询条件搜索 六、删除数据 阿里云Elasticsearch快速入门 一、资源领取 这里资源领取只针对新用户,如果是老用户按需购买&am…

vue3.0(十六)axios详解以及完整封装方法

文章目录 axios简介1. promise2. axios特性3. 安装4. 请求方法5. 请求方法别名6. 浏览器支持情况7. 并发请求 Axios的config的配置信息1.浏览器控制台相关的请求信息:2.配置方法3.默认配置4.配置的优先级5.axios请求响应结果 Axios的拦截器1.请求拦截2.响应拦截3.移…

太阳辐射系统日光全光谱模拟太阳光模拟器

太阳光模拟器是一种用于评估太阳能电池性能的重要设备。它能够模拟太阳光的特性,通过测试电池的短路电流、开路电压、填充因子和光电转化效率等关键指标,来评估电池的性能优劣。 设备型号:KYF-GC004品牌制造商:科迎法电气太阳光模…

bigNumber的部分使用方法与属性

场景:最近做IoT项目的时候碰到一个问题,涉及到双精度浮点型的数据范围的校验问题。业务上其实有三种类型:int、float和double类型三种。他们的范围分别是: //int int: [-2147483648, 2147483647],//float float: [-3402823466385…

idea xml ctrl+/ 注释格式不对齐

处理前 处理后 解决办法 取消这两个勾选

【C++题解】1456. 淘淘捡西瓜

问题:1456. 淘淘捡西瓜 类型:贪心 题目描述: 地上有一排西瓜,每个西瓜都有自己的重量。淘淘有一个包,包的容量是固定的,淘淘希望尽可能在包里装更多的西瓜(当然要装整个的,不能切开…

Go语言--运算符

算术运算符 关系运算符 不能写0<a<10&#xff0c;要判断必须0<a&&a<10。因为int和bool不兼容 逻辑运算符 位运算符 赋值运算符 其他 运算符的优先级

数字化精益生产系统--RD研发管理系统

R&D研发管理系统是一种用于管理和监督科学研究和技术开发的软件系统&#xff0c;其设计和应用旨在提高企业研发活动的效率、质量和速度。以下是对R&D研发管理系统的功能设计&#xff1a;

Promethuse-监控 Etcd

一、思路 Prometheus监控Etcd集群&#xff0c;是没有对应的exporter&#xff0c;而 由CoreOS公司开发的Operator&#xff0c;用来扩展 Kubernetes API&#xff0c;特定的应用程序控制器&#xff0c;它用来创建、配置和管理复杂的有状态应用&#xff0c;如数据库、缓存和监控系…

PCL 点云最小图割(前景、背景点云提取)

点云最小图割 一、概述1.1 概念1.2 算法原理二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 概念 最小图割算法(pcl::MinCutSegmentation):是一种基于图论的对象分割方法,主要用于点云数据的处理和分析。该算法将点云数据表示为一个图结构,其中点云中的点作为图的节…

每日一题——Python实现PAT乙级1100 校庆(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码结构和逻辑 时间复杂度分析 空间复杂度分析 总结 我要更强 方法一…