Yolo-World网络模型结构及原理分析(三)——RepVL-PAN

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

文章目录

  • 前言
    • 1. 网络结构
    • 2. 特征融合
    • 3. 文本引导(Text-guided)
    • 4. 图像池化注意力(Image-Pooling Attention)
    • 5. 区域文本匹配(Region-Text Matching)
  • 总结


前言

通过前边的YOLO检测器和文本编码器分别得到了特征图像和词向量,那么如何实现二者的融合,以达到目标检测的目的呢?就是通过yolo-world中提出的新的网络架构RepVL-PAN,下边我们来研究一下他是如何工作的。


RepVL-PAN(Re-parameterizable Vision-Language Path Aggregation Network)是YOLO-World中的一个核心网络结构,它通过融合视觉信息和语言信息来提升目标检测的性能。

1. 网络结构

  • RepVL-PAN基于YOLO架构,并采用特征金字塔网络(FPN)来提取多尺度图像特征,提取图像特征的部分已经在前文讲过,详情参考:Yolo-World网络模型结构及原理分析(一)——YOLO检测器。
  • 它利用Transformer文本编码器(例如CLIP模型)来处理输入文本,生成文本嵌入。这部分也在前文讲过,详情参考:Yolo-World网络模型结构及原理分析(二)——文本编码器

2. 特征融合

通过Top-Down和Bottom-Up的路径来建立特征金字塔,这有助于在不同尺度上融合图像特征。

  • (1)Top-Down Path:从高层特征图向低层特征图传递信息。这种路径通过上采样操作(如反卷积或插值)将高层的抽象特征图扩展到低层的空间分辨率上。这样可以将高层特征与低层特征结合,使得模型在检测较小目标时具有更好的精度。
  • (2)Bottom-Up Path:从低层特征图向高层特征图传递信息。这种路径通过卷积操作将低层的细节特征图逐步融合到高层特征图中,从而保留更多的细节信息。这样可以帮助模型在检测较大目标时更好地保留细节信息。
  • (3)引入Text-guided Cross Stage Partial Layers(T-CSPLayer),这是一种扩展的CSPLayer,它将文本嵌入整合到多尺度图像特征中。图示中的C3,C4,C5就是从YOLO检测器之后获取到的三种不同尺度的特征图,尺寸分别为80x80,40x40,20x20三种尺寸。
    融合过程

3. 文本引导(Text-guided)

  • T-CSPLayer使用文本嵌入来引导图像特征的更新,通过在CSPLayer后应用max-sigmoid注意力机制来聚合文本特征。
    T-CSPLayer结构如图所示:T-CSPLayer
  • (1)首先将传进来的特征图进行Split切分,比如一开始传入的特征图为40x40x512,那么切分之后一份是40x40x256,另一份也是40x40x256。
  • (2)其中一份进入Dark Bottleneck,进行一次普通卷积:使用较小的卷积核(如 1x1 卷积)来减少通道数和计算复杂度。可以有效地压缩特征图中的信息,同时保留重要的特征。然后进行深度可分离卷积:这种卷积方式将标准卷积拆分为深度卷积和逐点卷积两个步骤,从而进一步减少计算量和参数数量。深度卷积在每个通道上独立进行卷积操作,而逐点卷积则在通道间进行卷积。最后进行残差连接来增强模型的训练能力和稳定性。
  • (3)从Dark Bottleneck输出特征图之后进入Max-Sigmoid,同时text文本向量也进入Max-Sigmoid,在Max-Sigmoid中的处理过程是这样的:比如传进来的特征图是40x40x256,文本向量是3x256(3个词汇:“男”“女”“狗”),在特征图中有40x40=1600个像素点,每个像素点与3个文本提示词逐一计算,看哪个像素点与文本提示词的相关性最大,就给哪个像素点更多的权重(sigmoid)。也就是通过这个操作找到特征图中与文本提示词相关性更大的区域。这样就可以实现文本对图像的更新
  • (4)从Max-Sigmoid出来的融合图再与最开始切分之后的特征图拼接,做一个残差连接,生成含有更丰富信息的特征图(注意这里还是特征图,只是有些像素点的权重更大)。

4. 图像池化注意力(Image-Pooling Attention)

  • 为了增强文本嵌入的图像意识,RepVL-PAN使用图像池化操作来更新文本嵌入。
  • 通过在多尺度特征上应用最大池化,生成小区域的patch tokens,然后使用多头注意力机制来更新文本嵌入。

Image-Pooling Attention结构如图所示:
Image-Pooling Attention

  • (1)多尺度特征聚合:在I-Pooling Attention中,首先对图像进行多尺度特征提取。这意味着模型会从不同分辨率的图像中提取特征,以捕捉图像的不同层次的信息。
  • (2)最大池化操作:在提取多尺度特征后,使用最大池化(max pooling)操作来聚合这些特征。最大池化是一种常用的池化技术,它选择每个池化窗口内的最大值作为输出,这有助于保留图像中最重要的信息。
  • (3)生成Patch Tokens:通过最大池化操作,将每个特征图(80x80,40x40,20x20三种尺寸)聚合成3x3的区域,每个区域生成一个patch token。这样,对于一个给定的图像,总共会生成27个patch tokens(3x3),每个token都是一个特征向量,其维度为D。
  • (4) 更新文本嵌入:生成的patch tokens随后用于更新文本嵌入。这是通过多头注意力机制实现的。具体来说,原始的文本嵌入w与patch tokens (含有文本信息w和图像信息token的向量)进行多头注意力计算,然后将结果加到原始文本嵌入上,得到更新后的文本嵌入w’,实现用图像更新文本嵌入,模型可以在更新文本嵌入时同时考虑来自图像的多个不同区域的特征。

5. 区域文本匹配(Region-Text Matching)

区域-文本匹配的目的是将检测到的图像区域(bounding boxes)与文本中提到的对象类别或名词进行匹配的过程。
区域文本匹配图示:
区域文本匹配

  • (1) 通过RepVL-PAN网络之后,输出的P3 P4 P5是含有语义信息的特征图,将特征图输入到不同的Head中,首先通过BoxHead预测图像中每个对象的位置,这些位置以边界框(bounding boxes)的形式表示,每个边界框包含了对象的位置和大小信息。
  • (2)除了边界框,检测器还会为每个检测到的对象生成一个对象嵌入向量(object embeddings)。这个嵌入向量是一个高维空间中的点,它编码了对象的特征信息(每个对象含有语义信息“男”“女”“狗”),使得不同对象之间可以进行比较和区分
  • (3)文本对比头(Text Contrastive Head)
    通过RepVL-PAN网络之后得到的Image-aware Embeddings也含有了图像信息,object embeddings中含有了语义信息。利用文本对比头计算的相似度分数来匹配文本中提到的类别或名词与图像中的对象。找到对象嵌入与哪个文本嵌入之间的相似性最大。这样,模型不仅能够识别图像中的对象,还能够理解这些对象与用户输入的文本之间的关系。
    也就是说YOLO-World 为每个边界框分配一个最匹配的类别或名词。这是基于相似度计算结果,模型会选择与对象嵌入最相似的文本嵌入所对应的类别或名词。
  • (4)零样本学习能力
    YOLO-World 的一个关键特点是其零样本学习能力。这意味着即使在训练数据中没有见过某些类别或名词,模型也能够通过其语言和视觉的联合表示来识别和匹配这些新对象。

总结

通过RepVL-PAN网络,YOLO-World 展示了如何有效地结合视觉信息和语言描述,以实现对图像内容的深入理解和准确的自动标注,为开放词汇表对象检测领域提供了一种新的解决方案。

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

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

相关文章

Invalid bound statement (not found)

Invalid bound statement (not found) 首先申明的是这个错误一般是使用mybatis方法没有找到或者参数不匹配等原因造成的! 原本项目是使用eclipse运行,导入到idea之后,项目启动就报错 …Invalid bound statement (not found)… 解决办法&#…

下载最新版Anaconda、安装、更换源、配置虚拟环境并在vscode中使用

文章目录 进入官网进入下载页安装更换源配置虚拟环境env安装包requests在vscode中使用虚拟环境 进入官网 https://repo.anaconda.com/ 或进入清华大学下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 进入下载页 安装 更换源 查看已经存在的镜像源 bash cond…

【机器学习】Jupyter Notebook如何使用之基本步骤和进阶操作

引言 Jupyter Notebook 是一个交互式计算环境,它允许创建包含代码、文本和可视化内容的文档 文章目录 引言一、基本步骤1.1 启动 Jupyter Notebook1.2 使用 Jupyter Notebook 仪表板1.3 在笔记本中工作1.4 常用快捷键1.5 导出和分享笔记本 二、进阶用法2.1 组织笔…

天工Godwork AT 5.2.6 GodWork2D 2.1.5 GodWork EOS 2.1实景三维建模软件

天工Godwork AT 5.2.6/GodWork2D 2.1.5/GodWork EOS 2.1实景三维建模软件 获取安装包联系邮箱:2895356150qq.com 本介绍用于学习使用,如有侵权请您联系删除! 1.自主研发的平差技术,平差模块不依赖PATB、Bingo等国外技术 2.采用特征匹配&…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十七章 字符设备和杂项设备总结回顾

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【es】elasticsearch 自定义排序-按关键字位置排序

一 背景 要求es查询的结果按关键字位置排序,位置越靠前优先级越高。 es版本7.14.0,项目是thrift,也可以平替springboot,使用easyes连接es。 二 easyes使用 配easyes按官方文档就差不多了 排序 | Easy-Es 主要的一个问题是easy…

HTTPServer改进思路2(mudou库核心思想融入)

mudou网络库思想理解 Reactor与多线程 服务器构建过程中,不仅仅使用一个Reactor,而是使用多个Reactor,每个Reactor执行自己专属的任务,从而提高响应效率。 首先Reactor是一种事件驱动处理模式,其主要通过IO多路复用…

ST Stellar-E SR5E1 22KW OBC combo 3KW DC-DC汽车充电器解决方案

对于全球的环境保护意识抬头,全球的汽车产业慢慢步入电动化的时代,以减少碳排放。整车系统主要是由电池、电驱、电控的三电所构成,其中电池系统是整车的动力来源,而对电池充电的OBC系统更甚重要。一具高度安全性且高效的OBC系统&a…

7.23 字符串简单中等 520 125 14 34

520 Detect Capital 思路: 题目:判定word :if the usage of capitals in it is right.遍历所有的string: 两种情况: 首字母capitals–>判定第二个字母是否大写–>所有字母大写 otherwise 除第一个以外全部小写&a…

使用xxl-job执行定时任务

文章目录 使用xxl-job执行定时任务xxl-job原理我们自己的项目里面需要怎么写定时任务呢?如果想要使用xxl-job我们需要在服务器上部署两个项目 使用xxl-job执行定时任务 xxl-job原理 首先xxl-job的全拼是“XiaoXiaoLiang Job”或者“Xu Xue Li”作者的名字&#xf…

华清数据结构day4 24-7-19

链表的相关操作 linklist.h #ifndef LINKLIST_H #define LINKLIST_H #include <myhead.h> typedef int datatype; typedef struct Node {union{int len;datatype data;};struct Node *next; } Node, *NodePtr;NodePtr list_create(); NodePtr apply_node(datatype e); …

从零开始学Java(超详细韩顺平老师笔记梳理)06——面向对象编程基础(上):类与对象、成员方法、传参机制、对象克隆、递归(斐波那契、迷宫、汉诺塔、八皇后)

文章目录 前言一、类与对象1. 类与对象的概述2. 快速入门&#xff08;用面向对象的方式解决问题&#xff09;3. 对象在内存中的存在形式&#xff08;重要&#xff09;4. 属性5. 类与对象的内存分配机制 二、成员方法1. 基本介绍2. 快速入门3. 方法调用机制原理&#xff08;重点…

【HarmonyOS学习】用户文件访问

概述 文件所有者为登录到该终端设备的用户&#xff0c;包括用户私有的图片、视频、音频、文档等。 应用对用户文件的创建、访问、删除等行为&#xff0c;需要提前获取用户授权&#xff0c;或由用户操作完成。 用户文件访问框架 是一套提供给开发者访问和管理用户文件的基础框…

【JavaEE初阶】线程的概念及创建

目录 &#x1f4d5; 前言 &#x1f4d5; 认识线程&#xff08;Thread&#xff09; &#x1f6a9; 概念 &#x1f60a;线程是什么 &#x1f642; 为啥要有线程 &#x1f62d; 进程和线程的区别&#xff08;面试题重点&#xff09; &#x1f92d; Java的线程和操作系统线程…

MyBatis-Plus的基本使用(一)

目录 前言 特性 MyBatis-Plus入门案例 常用注解 小结 前言 这篇文章主要来学习MyBatis-Plus这个非常强大的框架. 在学习MyBatis-Plus之前,需要有MyBatis的学习基础.因为MyBatis -Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#x…

Leetcode3216. 交换后字典序最小的字符串

Every day a Leetcode 题目来源&#xff1a;3216. 交换后字典序最小的字符串 解法1&#xff1a;模拟 找到第一个 s[i] > s[i 1]&#xff0c;且它们奇偶性相同&#xff0c;交换它们。 代码&#xff1a; /** lc appleetcode.cn id3216 langcpp** [3216] 交换后字典序最小…

Efficient and Effective Weakly-Supervised Action Segmentation via ATBA

**基于动作转移感知边界对齐的高效弱监督动作分割**介绍 动作分割的目的是将一个长的未裁剪的视频分割成几个片段&#xff0c;并将每个片段分类为一个动作类别&#xff0c;如下图所示&#xff1a; 弱监督动作分割 现有的训练方法大多需要通过对所有帧和文本进行序列比对来…

JavaScript构造函数小挑战

// 编码挑战 #1 /* 使用构造函数实现一辆汽车。一辆汽车有一个品牌和一个速度属性。speed 属性是汽车当前的速度&#xff0c;单位为 km/h&#xff1b; a. 执行一个 “accelerate ”方法&#xff0c;将汽车的速度提高 10&#xff0c;并将新速度记录到控制台&#xff1b; 3. a.…

笔记小结:现代卷积神经网络之批量归一化

本文为李沐老师《动手学深度学习》笔记小结&#xff0c;用于个人复习并记录学习历程&#xff0c;适用于初学者 训练深层神经网络是十分困难的&#xff0c;特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化&#xff08;batch normalization&#xff09;&#xf…

Dav_笔记10:Using SQL Plan Management之3

将SQL计划基准与SQL Tuning Advisor一起使用 使用SQL Tuning Advisor调整SQL语句时&#xff0c;如果顾问程序找到调优计划并验证其性能优于从相应SQL计划基准中选择的计划&#xff0c;则建议接受SQL配置文件。 接受SQL配置文件后&#xff0c;数据库会将调整后的计划添加到相应…