YOLO算法改进Backbone系列之:PVTv2

news/2024/6/3 19:35:44 标签: YOLO, 算法, 目标检测, 深度学习, pytorch

摘要:最近,Transformer在计算机视觉方面取得了令人鼓舞的进展。在本研究中,本文通过增加(1)线性复杂度注意层、(2)重叠贴片嵌入和(3)卷积前馈网络三种设计,改进了原始的金字塔视觉转换器(PVT v1),提出了新的基线。通过这些改进,PVT v2将PVT v1的计算复杂度降为线性,并在分类、检测和分割等基本视觉任务上实现了显著改进。值得注意的是,PVT v2与Swin Transformer等最近的作品相比,取得了相当或更好的性能。本文希望这项工作将促进最先进的变压器在计算机视觉的研究。

相较于PVT,PVTv2增加了三部分 (1) Linear complexity attention layer, (2) Overlapping patch embedding (3) Convolutional feed-forward network.
PVT存在的三点限制:
(1)与ViT类似,当处理高分辨率输入时,PVT v1的计算复杂度相对较大
(2)PVT v1将图像视为非重叠块序列,这在一定程度上失去图像的局部连续
(3)PVT v1中的位置编码是固定大小,这对于任意大小的处理图像是不灵活的

Linear Spatial Reduction Attention (Linear SRA)

在这里插入图片描述

首先为了降低注意操作引起的高计算成本,本文提出了线性空间注意(Linear SRA)层,与使用卷积进行空间约简的SRA不同,线性SRA使用平均池化将空间维数(即h×w)降低到固定的大小(即P×P)。因此线性SRA就像卷积层一样具有线性计算和内存成本

Overlapping Patch Embedding (OPE)

在这里插入图片描述

其次,为了对局部连续性信息进行建模,本文利用重叠斑块嵌入技术对图像进行标记化。本文扩大了补丁窗口,使相邻的窗口重叠了一半的区域,并用零填充特征图以保持分辨率。在这项工作中,本文使用卷积与零的padding来实现重叠的补丁嵌入。具体来说,给定大小为h×w×c的输入,本文将其与S的stride、2S−1的核kernel、S−1的padding进行卷积

Convolutional Feed-Forward Network

在这里插入图片描述

第三本文删除了固定大小的位置编码,并在PVT中引入零填充位置编码,本文在前馈网络中第一个全连接层和GELU之间添加了3×3的深度可分离卷积。 在PVT V1中,位置编码是使用nn.Parameter生成一组可学习的位置编码,在PVT V2中,直接删除了位置编码(作者直接删除了位置编码,在MLP层中添加了深度卷积,用0进行权重初始化)。

PVTv2变体的具体参数配置如下表所示:

在这里插入图片描述

YOLOv5PVTv2Backbone_27">在YOLOv5项目中添加PVTv2模型作为Backbone使用的教程:

(1)将YOLOv5项目的models/yolo.py修改parse_model函数以及BaseModel的_forward_once函数
在这里插入图片描述
在这里插入图片描述

(2)在models/backbone(新建)文件下新建pvtv2.py,添加如下的代码:

在这里插入图片描述

(3)在models/yolo.py导入模型并在parse_model函数中修改如下:
在这里插入图片描述

(4)在model下面新建配置文件:yolov5_pvtv2.yaml
在这里插入图片描述

(5)运行验证:在models/yolo.py文件指定–cfg参数为新建的yolov5_pvtv2.yaml

在这里插入图片描述


http://www.niftyadmin.cn/n/5401744.html

相关文章

sqllabs第五关floor报错注入

实验环境sqllabs第五关 floor()报错注入的原因是group by在向临时表插入数据时,由于rand()多次计算导致插入临时表时主键重复,从而报错,又因为报错前concat()中的SQL语句或函数被执行,所以该语句报错且被抛出的主键是SQL语句或函…

leetcode-字符串相加

415. 字符串相加 题目中已经说明不能使用库函数直接将输入的字符串转换为整数。这就需要我们自己实现大数加法的逻辑,我们可以从两个字符串的最后一位开始,逐位相加,同时记录进位。如果某一位相加的结果超过10,那么需要向前进位。…

自然语言处理之语言模型(LM):用c++通过自然语言处理技术分析语音信号音高

要通过自然语言处理技术分析语音信号音高,我们可以采用以下步骤: 首先,我们需要获取语音信号的原始音频数据。可以使用C中的音频处理库(例如PortAudio或ALSA)来捕获音频输入并将其转换为数字音频数据。 接下来&#x…

vue基础概念(1)

1. 前言 此项目基于vue2开发 1.1. vue组件 1.2. 文本插值表达式 用于返回data方法中的对象属性 也可以用于数据判断例如{{age >xx ? 老年 :青年}} 1.3. 属性绑定 v-bind :xxx 一般用于input输入框等 1.4. 事件绑定 v-on 1.5. 双向绑定 v-model 表单输入项…

Python3零基础教程之字符串专题进阶

大家好,我是千与编程,上一期我们讲解了Python3编程语言中的数组与列表专题。这一期我们讲解了字符串专题初阶。 在 Python3 的字符串专题进阶教程中,我们将深入探讨更高级的字符串操作技巧,包括字符串切片、替换、去除空白、分割与…

如何在Unity项目中使用Plastic SCM进行版本控制

引言 Plastic SCM是一个版本控制系统,专为处理大型项目而设计,特别适用于游戏开发中的Unity项目。它提供了强大的分支和合并工具,使团队能够高效地协作开发。 安装和设置 安装Plastic SCM 访问Plastic SCM官网下载客户端。根据您的操作系…

idea mac电脑快捷键

mac版idea常用快捷键(亲测中,横线上亲测完毕,后面还没测): commandR 运行当前工程 commandY 查看选中当前源码 commandD 复制一行 commanddelete 删除一行 shiftenter 光标换到下一行 commandR 替换 commandJ 可以生成一些自动代码&am…

如何免费将 PDF 转换为 Word?

将 PDF 转换为 Word 文档有几种不同的方法: 1.使用PDF转换工具。网上有许多免费和付费的 PDF 转换器工具,例如奇客PDF转换器。只需将您的 PDF 文件上传到工具,然后选择您要将其转换为的 Word 格式。然后,将转换后的文件下载到您的…