YOLO算法改进Backbone系列之:PVTv2

摘要:最近,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变体的具体参数配置如下表所示:

在这里插入图片描述

在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

在这里插入图片描述

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值