当前位置: 首页 > news >正文

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

相关文章:

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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 网络结构2. 特征融合3. 文本引导(Text-guided)4. 图像池化注意力(Image-Pooling Attention)5. 区域文本匹配&…...

代码随想录——一和零(Leetcode474)

题目链接 0-1背包 class Solution {public int findMaxForm(String[] strs, int m, int n) {// 本题m,n为背包两个维度// dp[i][j]:最多右i个0和j个1的strs的最大子集大小int[][] dp new int[m 1][n 1];// 遍历strs中字符串for(String str : strs){int num0 …...

力扣题解(组合总和IV)

377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 思路: 本题实质上是给一些数字,让他们在满足和是targ…...

Postgresql主键自增的方法

Postgresql主键自增的方法 一.方法(一) 使用 serial PRIMARY KEY 插入数据 二.方法(二) 🎈边走、边悟🎈迟早会好 一.方法(一) 使用 serial PRIMARY KEY 建表语句如下&#xf…...

【源码阅读】Sony的go breaker熔断器源码探究

文章目录 背景源码分析总结 背景 在微服务时代,服务和服务之间调用、跨部门调用都是很常见的事,但这些调用都存在很多不确定因素,如核心服务A依赖的部门B服务挂掉了,那么A本身的功能将会受到直接的影响,而这些都会影响…...

LeetCode题(66,69,35,88)--《c++》

66.加一 // // Created by wxj05 on 2024/7/20. // //法一 class Solution { public:vector<int> plusOne(vector<int>& digits) {bool carry true; // 进位标志for (int i digits.size() - 1; i > 0 && carry; --i) {digits[i] 1;carry digit…...

来参与“向日葵杯”全国教育仿真技术大赛~

可点击进行了解&#xff1a;“向日葵杯”全国教育仿真技术大赛 (sunmooc.cn) 本次大赛共分为四个赛道&#xff1a;自主命题赛道、教育知识图谱设计赛道、FPGA硬件扑克牌对抗赛道、EasyAR元宇宙空间设计赛道。 参赛对象 &#xff1a; 具有正式学籍的在校研究生&#xff0c;本科…...

SQL每日一题:删除重复电子邮箱

题干 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id 是该表的主键列(具有唯一值的列)。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 编写解决方案 删除 所有重复…...

3、宠物商店智能合约实战(truffle智能合约项目实战)

3、宠物商店智能合约实战&#xff08;truffle智能合约项目实战&#xff09; 1-宠物商店环境搭建、运行2-webjs与宠物逻辑实现3-领养智能合约初始化4-宠物领养实现5-更新宠物领养状态 1-宠物商店环境搭建、运行 https://www.trufflesuite.com/boxes/pet-shop 这个还是不行 或者…...

数据库系列

目录 一、数据库的概念和作用 1.数据库的特点 2.数据模型 二、数据库系统 1.数据库管理系统 2.数据库的基本操作 一、数据库的概念和作用 数据库是指长期存储在计算机内&#xff0c;有组织的、可共享的数据集合。它可视为一个电子化的文件柜&#xff0c;用来存储电子文件…...

极狐GitLab如何启用和配置PlantUML?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…...

Shell 构建flutter + Android 生成Apk

具体步骤 #shell 具体实现和说明如下: echo "build_start_apk!" echo "编译此脚本的前提条件如下:" #在Android 项目的主工程下,进入主工程文件夹,创建build-android 文件夹,在其文件夹下有build-android.sh文件,此文件就是整个文章的脚本内容(…...

如何用手机压缩视频?手机压缩视频方法来了

高清视频的大文件大小常常成为分享和存储的障碍&#xff0c;尤其是在数据流量有限或存储空间紧张的情况下。幸运的是&#xff0c;无论是智能手机还是个人电脑&#xff0c;都有多种方法可以帮助我们轻松压缩视频文件&#xff0c;以适应不同的需求和情境。本文将介绍如何在手机上…...

Linux下如何安装配置Elastic Stack日志收集系统

安装和配置Elastic Stack日志收集系统&#xff0c;包括Elasticsearch、Logstash和Kibana&#xff0c;是一个相对复杂的过程。本篇文章将逐步引导您完成整个过程。 安装Java Elasticsearch、Logstash和Kibana都需要Java运行环境。首先&#xff0c;您需要在Linux系统上安装Java…...

【深入C++】map和set的使用

文章目录 C 中的容器分类1. 顺序容器2. 关联容器3. 无序容器4. 容器适配器5. 字符串容器6. 特殊容器 set1.构造函数2.迭代器3.容量相关的成员函数4.修改器类的成员函数5.容器相关操作的成员函数 multiset1.equal_range map1.初始化相关的函数2.迭代器3.容量相关的成员函数4.访问…...

跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py

Megatron-LM默认支持GPT、T5、BERT等多个常见模型的预训练&#xff0c;当下大模型流行&#xff0c;故以pretrain_gpt.py为例做源码的走读。 一. 启动pretrain_gpt.py pretrain_gpt.py为GPT类模型的训练入口&#xff0c;它通过命令行形式被调用&#xff0c;其精确执行路径位于M…...

MATLAB练习题——矩阵(2)

逻辑运算 a [5 0.2 0 -8 -0.7 ]&#xff0c;在进行逻辑运算时&#xff0c;a 相当于什么样的逻辑量。 相当于 a[1 1 0 1 1] 角度运算 在 sin(x)运算中&#xff0c;x 是角度还是弧度&#xff1f; 在 sin(x)运算中&#xff0c;x 是弧度&#xff0c;MATLAB 规定所有…...

arm、AArch64、x86、amd64、x86_64 的区别

arm vs AArch64 vs amd64 vs x86_64 vs x86 的区别 当涉及到 CPU 的时候&#xff0c;有许多术语&#xff1a;AArch64、x86_64、amd64、arm 等等。了解它们是什么以及它们之间的区别。 当你查看数据表或软件下载页面时是否被 ARM、AArch64、x86_64、i386 等术语混淆&#xff1f;…...

【SpringBoot】 jasypt配置文件密码加解密

目前我们对yml配置文件中的密码都是明文显示&#xff0c;显然这不安全&#xff0c;有的程序员离职了以后可能会做一些非法骚操作&#xff0c;所以我们最好要做一个加密&#xff0c;只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。 我们可以使用jasypt…...

复杂网络的任意子节点的网络最短距离

复杂网络的任意子节点的网络最短距离 题目要求介绍 本文算法测试用的数据集为空手道俱乐部&#xff0c;其中空手道俱乐部的数据集可通过这个链接进行下载•http://vlado.fmf.uni-lj.si/pub/networks/data/Ucinet/UciData.htm#zachary 摘要 本文旨在解决复杂网络中任意子节点…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用&#xff0c;前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率&#xff0c;还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库&#xff08;Naive UI、Element …...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例

在工业自动化控制系统中&#xff0c;常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中&#xff0c;客户现场采用了 罗克韦尔PLC&#xff0c;但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控&#xff0c;引入了开疆智能Etherne…...

篇章一 论坛系统——前置知识

目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构​编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...