YOLO算法改进Backbone系列之:RepViT

摘要:近年来,与轻量级卷积神经网络(cnn)相比,轻量级视觉变压器(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。这种改进通常归功于多头自注意模块,它使模型能够学习全局表示。然而,轻量级vit和轻量级cnn之间的架构差异还没有得到充分的研究。在这项研究中,本文重新审视了轻量级cnn的高效设计,并强调了它们在移动设备上的潜力。通过集成轻量级vit的高效架构选择,本文逐步增强了标准轻量级CNN的移动友好性,特别是MobileNetV3。这就产生了一个新的纯轻量级cnn家族,即RepViT。大量的实验表明,RepViT优于现有的轻型vit,并在各种视觉任务中表现出良好的延迟。在ImageNet上,RepViT在iPhone 12上以近1ms的延迟实现了超过80%的top-1精度。
在这里插入图片描述

在这里插入图片描述

Separate token mixer and channel mixer. RepViT 将深度卷积提前,使得Channel Mixel和Token Mixel能够被分开。为了提高性能,还引入了结构重参数化来在训练时为深度滤波器引入多分支拓扑
Reducing expansion ratio and increasing width. 在通道混合器中,原本的扩张比例是4,这意味着MLP块的隐藏维度是输入维度的四倍,这对计算资源造成了很大的负担,对推理时间产生了显著影响。为了解决这个问题,本文可以将扩张比例降低到2,从而减少了参数冗余和延迟,使得MobileNetV3-L的延迟降低到0.65毫秒。随后,通过增加网络的宽度,即增加各阶段的通道数量
Early convolutions for stem. 复杂的起始模块会引入显著的延迟瓶颈,因此用早期卷积替换了原始的起始模块,同时增大通道数到24。
Deeper downsampling layers. 首先使用一个1x1卷积来调整通道维度,然后将两个1x1卷积的输入和输出通过残差连接,形成一个前馈网络。此外,他们还在前面增加了一个 RepViT 块以进一步加深下采样层,增加网络深度并减少由于分辨率降低带来的信息损失。
Simple classifier. 将原来复杂的分类器替换为一个简单的分类器,即一个全局平均池化层和一个线性层。
Kernel size selection. CNNs 的性能和延迟通常受到卷积核大小的影响。为了建模像 MHSA 这样的远距离上下文依赖,ConvNeXt 使用了大卷积核,从而实现了显著的性能提升。然而,大卷积核对于移动设备并不友好,因为它的计算复杂性和内存访问成本。MobileNetV3-L 主要使用 3x3 的卷积,有一部分块中使用 5x5 的卷积。本文将它们替换为3x3的卷积。
Squeeze-and-excitation layer placement. 作为一个通道注意力模块,SE层可以弥补卷积在缺乏数据驱动属性上的限制,从而带来更好的性能。本文设计了一种策略,在所有阶段以交叉块的方式使用SE层,从而在最小的延迟增量下最大化准确率的提升。

RepViT变体结构配置如下
在这里插入图片描述

在YOLOv5项目中添加RepViT模型作为Backbone使用的教程:
(1)将YOLOv5项目的models/yolo.py修改parse_model函数以及BaseModel的_forward_once函数
在这里插入图片描述
在这里插入图片描述

(2)在models/backbone(新建)文件下新建repvit.py,添加如下的代码:
在这里插入图片描述

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

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

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

在这里插入图片描述

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值