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

news2024/12/28 5:15:06

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

文章目录

  • 摘要
  • 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结构。下周继续学习!

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

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

相关文章

react09 hooks(useState)

react-09 hooks(useState) hooks组件(函数组件动态化) 其本质就是函数组件,引用一些hooks方法,用来在函数组件中进行例如状态管理,模拟类组件的生命周期等,只能运用到函数组件中 ho…

Linux的UDEV机制

udev 机制引入: 手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具,在终端输入adb安装指令: sudo apt-get install adb c. dmeg能查看到手机接入的信息,但是输入adb devices会出现提醒 dinsufficient permissions for …

酷开会员 | 酷开系统带你足不出户获得同电影院一般的观影体验

在繁忙、混乱的快节奏工作中,人们总是渴望在下班后,逃离工作的桎梏找到一丝慰藉,看电影,则成为了很多人宣泄情感、放松心情的一种方式。但是,电影院的时间和地点总是那么不受控制,要么地点太远、要么场次不…

k8s安装,linux-ubuntu上面kubernetes详细安装过程

官方文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/ 环境配置 该部分每个主机都要执行 如果你确定不需要某个特定设置,则可以跳过它。 设置root登录 sudo passwd root sudo vim /etc/ssh/sshd_config Perm…

密码学 | 数字证书:应用

🥑原文:数字签名和数字证书的原理解读 - 知乎 🥑前文:密码学 | 数字签名 数字证书 - CSDN 🥑提示:把客户端想成 Alice,服务器端想成 Bob 即可。客户端实际上指的是客户端浏览器。 下面&#…

Ubuntu 22最新dockers部署redis哨兵模式,并整合spring boot和配置redisson详细记录(含spring boot项目包)

dockers部署redis哨兵模式,并整合spring boot 环境说明相关学习博客一、在docker中安装redis1、下载dockers镜像包和redis配置文件(主从一样)2、编辑配置文件3、启动redis(主从一样)4、进入容器测试(主从一…

PyTorch与深度学习:探索现代神经网络的魅力

在科技飞速发展的今天,深度学习作为人工智能领域的重要分支,已经在图像识别、自然语言处理、语音识别等多个领域取得了突破性的进展。而PyTorch,作为一款开源的深度学习框架,以其简洁易用、动态计算图等特性,赢得了广大…

react合成事件与原生事件区别备忘

朋友问起在做一个下拉框组件,下拉的点击事件是用react的onClick触发,外部区域点击关闭则用dom的原生点击事件绑定,问题是下拉的点击事件无法阻止冒泡到dom的原生事件。 我说,react的合成事件 和 原生事件是不一样的,尽…

【科学研究】那些考进精英大学的农家子弟们

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

Ollama教程——生成内容API:利用Ollama的原生API进行AI应用开发

相关文章: Ollama教程——入门:开启本地大型语言模型开发之旅 Ollama教程——模型:如何将模型高效导入到ollama框架 Ollama教程——兼容OpenAI API:高效利用兼容OpenAI的API进行AI项目开发 Ollama教程——使用langchain:ollama与…

iTwin Capture Modeler-23中文版下载地址及安装教程

文章目录 一、iTwin Capture Modeler23中文版安装教程二、iTwin Capture Modeler23中文版下载地址一、iTwin Capture Modeler23中文版安装教程 1. 解压安装包。订阅专栏(可获取专栏内所有文章阅读权限与软件安装包)后,从文末获取安装包解压,如下所示: 2. 右击安装包,选择以…

火绒安全的详细用法

1. 引言 本章将介绍火绒安全软件的基本概述和用法。火绒安全是一款功能强大的安全软件,提供了多种保护功能和工具,可以帮助您保护计算机免受恶意软件、网络攻击和其他安全威胁的侵害。 2. 火绒安全的功能 火绒安全具有以下主要功能: 实时防护:火绒安全提供实时监测和防护…

9.Eureka服务发现+Ribbon+RestTemplate服务调用

order-service服务通过服务名称来代替 ip:port的方式访问user-service服务的接口。 原来的请求代码: Service public class OrderServiceImpl implements OrderService {Autowiredprivate OrderMapper orderMapper;Autowiredprivate RestTemplate restTemplate;Ov…

修改Ubuntu22.04系统图标

在Ubuntu 22.04中更改开机时显示的Ubuntu图标需要修改的设置。 主要思路是用自己图片替换系统图片,保持系统图片同名,同格式。 以下是一般的步骤: 修改启动界面的logo: sudo cp 新logo.png /usr/share/plymouth/themes/spinn…

江苏鲁岳轴承制造有限公司:石墨轴承与耐高温轴承的制造翘楚

耐高温轴承的优质生产地:江苏鲁岳轴承制造有限公司。石墨轴承与耐高温轴承的完美生产商:江苏鲁岳轴承制造有限公司的专业承诺。 石墨轴承是一种具有独特耐高温性能的轴承产品,广泛应用于各种高温、高速、高负载的工业环境中。江苏鲁岳轴承制…

C++的初步知识——命名空间,缺省参数,重载函数

C 首先写一段代码&#xff1a; #include <stdio.h>int main() {printf("Hello world\n");return 0; }这段C语言代码在cpp文件中仍可运行。我们了解C是兼容C语言的&#xff0c;C的关键字中就包含了C语言的关键字和自身的关键字。关于关键字&#xff0c;我们简…

排序算法之计数排序

目录 一、简介二、代码实现三、应用场景 一、简介 算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性计数排序O(nk )O(nk)O(nk)O(k)Out-place稳定 稳定&#xff1a;如果A原本在B前面&#xff0c;而AB&#xff0c;排序之后A仍然在B的前面&#xff1b; 不…

Python 实现视频去抖动技术

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 视频去抖动是视频处理中的一项重要技术&#xff0c;它可以有效地减少视频中由于相机震动或手…

Eclipse 配置JDK版本,Eclipse Maven install 时使用的JDK版本

Eclipse配置JDK版本 Eclipse 配置JDK版本的地方&#xff1f; 在Eclipse中配置JDK版本的步骤如下&#xff1a; 打开Eclipse IDE。转到菜单栏并选择 “Window”&#xff08;窗口&#xff09;选项。在下拉菜单中选择 “Preferences”&#xff08;首选项&#xff09;&#xff0c;或…

密钥密码学(三)

原文&#xff1a;annas-archive.org/md5/b5abcf9a07e32fc6f42b907f001224a1 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十六章&#xff1a;三次通行协议 本章内容包括 基于指数的三次通行协议 基于矩阵乘法的三次通行协议 基于双边矩阵乘法的三次通行协议 …