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

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

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

相关文章

SpringBoot---------Lombook

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法,也就是简化咱们之前pojo,实体类里面臃肿的get/set有参无参。 首先查看一…

前端入门:HTML(CSS边框综合案例)

案例&#xff1a; 源代码&#xff1a; css-borders.html: <body> <div id"square"> </div> <br> <div id"triangle"> </div> <br> <div id"trapezium"> </div> <br> <div id…

Java- Object根父类

在java中&#xff0c;所有的类都有一个公共的父类&#xff0c;这个java.lang.Object类 * * * Object所有类的根&#xff0c;成为超类。 1.证明Object是根 public class A_Object01 {public static void main(String[] args) {//证明Object是根//基本数据类型int a 0;Object…

去除图像周围的0像素,调整大小

在做分割任务时&#xff0c;经常需要处理图像&#xff0c;如果图像周围有一圈0像素&#xff0c;需要去除掉&#xff0c;重新调整大小 数组的处理 如果图像的最外一圈为0&#xff0c;我们将图像最外圈的图像0去除掉。 import numpy as npdef remove_outer_zeros(arr):# 获取数…

TPG原理以及verilog实现

文章目录 一、前言二、verilog代码实现三、仿真以及结果分析 一、前言 TPG(video_test_pattern generator) 视频测试模式发生器用于产生测试数据&#xff0c;对视频数据通路测试。根据视频输出时序产生相应的图像数据 二、verilog代码实现 timescale 1ns / 1nsmodule tpg ( i…

冒泡排序c++

题目描述 编程输入n(1≤n≤20)个小于1000非负整数&#xff0c;然后自动按从大到小的顺序输出。&#xff08;冒泡排序&#xff09; 输入 第一行&#xff0c;数的个数n; 第二行&#xff0c;n个非负整数。 输出 由大到小的n个非负整数&#xff0c;每个数占一行。 样例输入 …

.net core webapi 高颜值的接口管理系统界面取代swagger,更好调试和查看

.net core webapi 高颜值的接口管理系统界面取代swagger&#xff0c;更好调试和查看 安装 dotnet add package IGeekFan.AspNetCore.Knife4jUI --version 0.0.16配置文档&#xff1a; 配置起始页 builder.Services.AddSwaggerGen(c > {// 配置 Swagger 文档相关信息c.Swa…

天梯赛 L2-052 吉利矩阵

//r[n]:当前第几列的值。 //l[n]:当前第几行的值。 暴力减止 #include<bits/stdc.h> using namespace std; #define int long long const int n1e3; int a,b,c,l[n],r[n],an; void dfs(int x,int y) {if(xb1){an;return ;}for(int i0;i<a;i){l[x]i;r[y]i;if(l[x]&l…

TCP传输的粘包问题和各种异常情况

文章目录 粘包问题用分隔符用数字代表长度 TCP传输可能遇到的异常情况进程终止电脑关机正常情况下关机非正常情况关机&#xff08;停电&#xff09;电脑断网 粘包问题 粘包问题其实并不是TCP独有的的问题而是每一个面向字节流都会出现的问题&#xff0c;那么什么是粘包问题呢&…

走进敦煌说谷雨 | 谷雨万物新,推开那扇门

谷雨&#xff0c;是春季的最后一个节气&#xff0c; 也铺垫着“热烈”夏天的到来。 让我们来到敦煌&#xff0c;遍寻上下五千年&#xff0c; 了解谷雨在文物里的故事和习俗。 雨生百谷 且把春留驻 谷雨取自“雨生百谷”之意。谷雨&#xff0c;意味着寒潮天气基本结束。这时…

分析和比较深度学习框架 PyTorch 和 Tensorflow

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 深度学习作为人工智能的一个重要分支&#xff0c;在过去十年中取得了显著的进展。PyTorch 和 TensorFlow 是目前最受欢迎、最强大的两个深度学习框架&#xff0c;它们各自拥有独特的特点和优势。 1. Py…

6.MMD ray渲染 材质的添加及打光方法

材质 前置准备 先准备好模型和场景 将ray控制器拖入进去 添加完默认的材质以后的效果 打开插入材质页面 打开MaterialMap栏 将流萤的模型展开 自发光 现在给领带添加一个自发光效果 在自发光Emissive里&#xff0c;打开x1&#xff0c;选择albedo&#xff0c;白光 现在…