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

在这里插入图片描述

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

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

相关文章

《操作系统真相还原》读书笔记四:安装nasm

下载链接:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/ 下载-解压-安装 tar zxvf nasm-2.13.03.tar.gz ./configure --prefix/home/truthos/nasm/toolchain/make && makeinstall执行make install export PATH/home/truthos/nasm/toolchain/bin:…

微信小程序云开发教程——墨刀原型工具入门(编辑页面)

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

硬件工程师面经整理20_阻抗匹配

文章目录 阻抗匹配_微波电路/低噪放/差分信号线1 微波电路的匹配电阻2 低噪声运放阻抗匹配3 差分信号线阻抗匹配一般是多少 互连链路阻抗特性 阻抗匹配_微波电路/低噪放/差分信号线 1 微波电路的匹配电阻 微波电路的匹配电阻指的是在微波频段内,由于电路阻抗的不匹…

html标签之表格标签,资料分享

二.准备工作 与中国大部分在校生一样,从不考虑多多参加社会活动为自己铺路,直到找工作时才发现自己一无所有。 是的,一无所有。对于求职来说,如果不找对口工作,那么你的专业知识已经无用武之地。能证明你能力的实践活…

Windows上websocket客户端连接定时存储消息到文件并加载文件定时发送服务端工具实现

场景 在业务开发中,需要对接三方websocket协议数据或者连接并存储线上websocket协议数据,需要使用websocket客户端 连接线上的websocket服务端获取并存储数据,然后将数据存储成文件格式可移植,并将数据复制 到本地,…

MATLAB知识点:while循环的注意事项

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自​第4章:MATLAB程序流程控制 在使用while循…

Linux中basename作用

在Shell脚本中,basename 是一个用于提取文件名或路径的基本名称(basename)的工具。它通常用于处理文件路径,以获取文件的名称部分或去除路径信息。 basename 命令的语法如下: basename STRING [SUFFIX] 其中&#x…

docker 安装rabbitmq并配置hyperf使用

这里我想完成的是 制作消息(多个协程制造)——》推送到rabbitmq——》订阅消息队列——》消费消息(ws协程客户端【一次消费多条】/ws前端) 利用 WebSocket 协议让客户端和服务器端保持有状态的长链接,保存链接上来的客…

Grind 75 | 1. Two Sum | 2. valid parentheses

来刷刷Grind 75, Blind 75作者更新版. Leetcode1 两数之和 经典题 link 思路: 很明显用hash table,一开始思考遍历2遍数组,第一遍加入hash table中, 第二遍对每个元素看能不能找到sum target,但思考如果有重复元素…

阿里云2核4G服务器支持多少人同时在线?

2核4G服务器支持多少人在线?阿里云服务器网账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素: 2核4G:2核CPU和4G内存对…

学习笔记-cmake

cmake的版本号说明: CMAKE_MINIMUM_REQUIRED(VERSION 3.10) # 指定编译 C 版本 set(CMAKE_CXX_STANDARD 17) 创建一个工程: project(preprocess) 工程下创建一个项目: SET(PROGRAM WorkStation) include路径: set (INCLUD…

Nginx原理以及基础知识详解

Nginx是一个高性能的HTTP和反向代理服务器,具有高并发性、高可靠性、低内存消耗等特点。其工作原理和基础知识如下: 一、Nginx的工作原理 Nginx采用多进程模型,主进程负责接收客户端的连接请求,然后将连接请求分发给工作进程来处…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记02_大数据

1. 大数据分析 1.1. 随着“大数据军备竞赛”与定价算法的广泛应用,线上购物平台与实体商铺的界限也变得越来越模糊 1.2. 在沃尔玛疯狂扩张的时代,它给地区性商业带来的伤害不亚于一场地震 1.2.1. 当地的小型商铺往往…

浏览器工作原理与Javascript高级(异步)

总体介绍 浏览器运行是多进程的,包括主进程、渲染进行、网络进程和GPU进程等等 解析HTML时(渲染进程)用到两大引擎,一个是渲染引擎(用于渲染页面)、一个是JS引擎用于解析JS代码。又JS引擎运行是单线程的,所以渲染和 …

Dubbo基础入门一

1、什么是Dubbo3 Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架,同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。 “Dubbo3 已在阿里巴巴内部微服务集群全面落地,成功取代运行多年的 HSF 框架。” 2、…

【Linux】Linux原生异步IO(二):libaio相关结构体、函数详解

1、结构体 1.1 iocb struct iocb成员变量详解: struct iocb {PADDEDptr(void *data, __pad1); /1、在io完成事件中返回,与io_getevents方法返回的io_event结构体data成员一致一般存放用户自定义数据、用户数据、回调函数*/PADDED(unsigned key, aio_rw_flags

5G 网络切片VLAN ID配置错误导致业务不可用

【摘要】随着电联5G共建共享工作的开展,无法及时有效观测到单逻辑站点的相关指标,导致单运营商用户业务出现异常。本案例中着重对单运营商用户无法使用网络进行相关参数排查,从KPI性能指标结合故障告警发生时间,从而分析由于网络切…

稀碎从零算法笔记Day6-LeetCode:长度最小的子数组

前言:做JD的网安笔试题,结果查找子串(单词)这个操作不会。痛定思痛,决定学习滑动数组 题型:数组、双指针、滑动窗口 链接:209. 长度最小的子数组 - 力扣(LeetCode) 来…

(学习日记)2024.03.06:UCOSIII第八节:空闲任务+阻塞延时+main函数修改

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

CSS字体样式值,前端开发基础学习

元素特点: 块状元素: 在页面中以矩形区域显示。自上而下排列,独占一行可以直接添加宽高一般情况下,作为其他元素或内容的容器 行内元素: 在页面中最小单位也是矩形。在一行内逐个排列。不可以直接添加宽高&#xf…