【CNN轻量化】RepViT: Revisiting Mobile CNN From ViT Perspective

RepViT: Revisiting Mobile CNN From ViT Perspective

论文链接:https://arxiv.org/abs/2307.09283

代码链接:https://github.com/THU-MIG/RepViT

一、摘要

  探究了许多轻量级ViTs和轻量级CNNs之间的结构联系。文中从ViT的视角重新审视轻量级CNNs的高效设计,并强调它们在移动设备上的前景。具体而言,通过整合轻量级ViTs的高效架构设计,逐步增强了标准轻量级CNN,最终形成了一系列全新的纯轻量级CNNs,即RepViT。大量实验证明,RepViT优于现有的轻量级ViTs,并在各种视觉任务中表现出有利的延迟。值得注意的是,在ImageNet上,RepViT在iPhone 12上以1.0毫秒的延迟实现了超过80%的top-1准确率,这是轻量级模型首次实现。最大的模型RepViT-M2.3,在只有2.3毫秒的延迟下获得了83.7%的准确率。此外,当RepViT遇到SAM时,RepViT-SAM比先进的MobileSAM实现了近10倍更快的推断速度。

请添加图片描述

二、原理

  论文分别从分离token混合器和通道混合器、减小扩展比并增加宽度、起始卷积、更深的下采样层、分类器设计、整体比例、卷积核大小选择、SE层的放置等几个方面对MobileNetv3网络进行改进。

1、分离token混合器和通道混合器(DW卷积)

  ViTs的有效性主要源于它们的通用令牌混合器和通道混合器架构,即MetaFormer架构,而不是配备的特定令牌混合器。在MobileNetV3块中分离了令牌混合器和通道混合器。我们进一步采用了一种广泛使用的结构重参数化技术来增强模型在训练期间的学习。由于结构重参数化技术,我们可以消除推断期间与跳过连接相关的计算和内存成本,这对移动设备尤为有利。我们将这样的块命名为RepViT块(图3.(b)),将MobileNetV3-L的延迟降低到0.81毫秒,同时将性能暂时降低到68.3%。

请添加图片描述

2、减小扩展比并增加宽度

  在RepViT块中,将通道混合器中的扩展比设置为2,增加网络宽度以弥补大量参数减少,适用于所有阶段,这导致延迟降低到0.65毫秒。在每个阶段之后将通道加倍,最终得到48、96、192和384个通道。这些修改可以将top-1准确率提高到73.5%,延迟为0.89毫秒。

通过直接调整原始MobileNetV3块上的扩展比和网络宽度,我们在类似的延迟0.91毫秒下获得了73.0%的top-1准确率,性能较差。因此,在块设计中,默认情况下,我们采用RepViT块的新扩展比和网络宽度。

3、起始卷积

 MobileNetV3-L将初始的滤波器数量减少到16,这限制了起始卷积的表示能力。简单地将两个步幅为2的3×3卷积作为起始卷积。如图4.(b)所示,第一个卷积中的滤波器数量设置为24,第二个卷积中的滤波器数量设置为48。整体延迟降低到0.86毫秒。同时,top-1准确率提高到73.9%。

4、更深的下采样层

 MobileNetV3-L仅通过一个带有DW卷积的反向瓶颈块实现下采样,步幅为2,如图4.©所示。这种设计可能缺乏足够的网络深度,导致信息丢失并对模型性能产生负面影响。因此,为了实现一个单独且更深的下采样层,我们首先使用步幅为2的DW卷积和一个点卷积1×1卷积来执行空间下采样并调节通道维度,如图4.(d)所示。此外,我们在1×1卷积后面添加了一个RepViT块,进一步加深了下采样层在1×1卷积之后放置了一个FFN模块,以记忆更多的潜在信息。因此,这样更深的下采样层将top-1准确率提高到75.4%,延迟为0.96毫秒。

5、分类器设计

  MobileNetV3-L采用了一个复杂的分类器,其中包括一个额外的1×1卷积层和一个额外的线性层,将特征扩展到更高维空间。考虑到最终阶段的输出通道较小。然而,这反过来会给移动设备的延迟带来沉重负担。将其替换为一个简单的分类器,即一个全局平均池化层和一个线性层,如图4.(f)所示。这一步导致准确率下降了0.6%,但使延迟降低到0.77毫秒。

请添加图片描述

6、整体比例

  EfficientFormer-L2采用了一个阶段比例为1:1:3:1.5。同时,Conv2Former表明,更激进的阶段比例和更深的布局对于小型模型效果更好。因此,它们分别为Conv2Former-T和Conv2Former-S采用了1:1:4:1和1:1:8:1的阶段比例。在这里,我们为网络采用了一个阶段比例为1:1:7:1。然后我们增加网络深度为2:2:14:2,实现更深的布局。这一步将top-1准确率提高到76.9%,延迟为0.91毫秒。

7、卷积核大小选择

  CNN的性能和延迟通常受卷积核大小的影响。例如,为了捕获类似MHSA的远程依赖关系,ConvNeXt采用了大尺寸的卷积核,表现出性能提升。类似地,Re-pLKNet [15]展示了一种利用超大卷积核在CNN中的强大范例。然而,大尺寸卷积核对于移动设备来说并不友好,因为它的计算复杂性和内存访问成本。此外,与3×3卷积相比,更大的卷积核通常不太受编译器和计算库的高度优化。MobileNetV3-L主要采用3×3卷积,在某些块中使用少量的5×5卷积。为了确保在移动设备上的推理效率,在所有模块中优先考虑简单的3×3卷积。这种替换可以保持76.9%的top-1准确率,同时将延迟降低到0.89毫秒。

8、SE层的放置

 与卷积相比,自注意力模块的一个优势是根据输入调整权重的能力,即数据驱动属性。作为一个通道注意力模块,SE层可以弥补卷积在缺乏数据驱动属性方面的局限性,带来更好的性能。MobileNetV3-L在某些块中整合了SE层,主要集中在后两个阶段。然而,低分辨率特征图的阶段与高分辨率特征图的阶段相比,准确性收益较小。与性能提升同时,SE层也引入了不可忽略的计算成本。因此,我们设计了一种策略,以跨块的方式利用SE层,即在每个阶段的第1、3、5…个块中采用SE层,以最大化准确性收益并最小化延迟增量。这一步将将top-1准确率提高到77.4%,延迟为0.87毫秒。

 多个RepViT变体,包括RepViT-M0.9/M1.0/M1.1/M1.5/M2.3。后缀“-MX”表示相应模型在移动设备上(即iOS 16上的iPhone 12)的延迟为X毫秒。这些变体通过每个阶段中的通道数和块数来区分。

三、实验部分

1、图像分类

  为了公平比较,RegNetY-16GF模型的top-1准确率为82.9%,被用作蒸馏的教师模型。按照[34,35,58]的方法,在iPhone 12上使用Core ML Tools编译的模型,在批量大小为1的情况下测量延迟。需要注意的是,RepViT-M0.9是与MobileNetV3-L对等的模型。

在这里插入图片描述
在这里插入图片描述

2、SAM和零样本边缘检测

  将SAM中的沉重图像编码器替换为我们的RepViT模型,最终得到RepViT-SAM模型。具体而言,RepViT-SAM采用RepViT-M2.3作为图像编码器,并在与[67]相同的设置下进行了为期8个时期的训练。与MobileSAM [67]一样,我们仅使用SAM-1B数据集中的1%数据进行训练。

  在iPhone 12上,我们的RepViT-SAM可以顺利执行模型推断,而两个竞争对手均无法运行。在Macbook M1 Pro上,RepViT-SAM几乎比最先进的MobileSAM快10倍

  使用BSDS500进行零样本边缘检测,使用COCO进行零样本实例分割,以及使用SegInW进行野外分割基准测试。如表4所示,我们的RepViT-SAM在所有基准测试中均优于MobileSAM和ViT-B-SAM。与ViT-H-SAM相比,后者是具有超过615M参数的最大SAM模型,我们的小型RepViT-SAM在零样本边缘检测的ODS和OIS方面可以获得可比的性能。

在这里插入图片描述

3、下游任务(目标检测和实例分割)

  RepViT-M1.1在延迟更小的情况下,显著优于EfficientFormer-L1骨干网络1.9个AP框和1.8个AP掩码。对于更大的模型尺寸,RepViT-M1.5在享有可比性能的同时,比EfficientFormer-L3快近2倍。与EfficientFormerV2-L相比,RepViT-M2.3在几乎50%的延迟下实现了可比的AP框和更高的AP掩码,突显了轻量级CNN在高分辨率视觉任务中的重大优势。

  将RepViT作为Semantic FPN框架中的骨干网络。如表5所示,RepViT在不同模型尺寸下始终展现出有利的mIoU-延迟权衡。例如,RepViT-M1.1在更快的速度下,比EfficientFormer-L1高出1.7个mIoU。RepViT-M1.5在几乎50%的延迟减少的同时,比EfficientFormerV2-S2高出1.2个mIoU。与EfficientFormerV2-L相比,RepViT-M2.3在几乎2倍的速度下呈现出0.9个mIoU的增加。

在这里插入图片描述

4、模型分析

结构重参数化(SR)。为了验证在RepViT块中SR的有效性,我们通过在ImageNet-1K上去除训练时SR的多分支拓扑结构进行消融研究。如表6所示,没有SR时,所提出的RepViT的不同变体都表现出持续的性能下降。结果充分证明了SR的积极影响。

SE层的放置。为了验证在所有阶段交叉块方式利用SE层的优势,我们通过在ImageNet-1K上进行消除所有SE层(即“无SE”)和在每个块中采用SE层(即“每个块”)的消融研究。如表7所示,交替在块中采用SE层显示出更有利的精度和延迟权衡。

在这里插入图片描述

四、总结

 作者从ViT的角度出发重新设计了MobileNetv3,得到了一系列全新的纯轻量级CNN,即RepViT。在ImageNet数据集分类任务上,RepViT在iPhone 12上实现了超过80%的top-1准确率,延迟为1.0毫秒。文中也在SAM、零样本边缘检测、目标检测和实例分割任务上进行了实验,效果相比轻量级的ViT更具有竞争力。

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

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

相关文章

Java 中的泛型(两万字超全详解)

文章目录 前言一、泛型概述1. 什么是泛型?为什么要使用泛型?2. 泛型使用场景3. 泛型概述小结 二、泛型类1. 泛型类的定义2. 泛型类的使用 三、泛型接口四、泛型方法1. 泛型方法的定义2. 泛型方法的使用3. 泛型方法中的类型推断 五、类型擦除1. 什么是类型…

本地虚拟机平台Proxmox VE结合Cpolar内网穿透实现公网远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

扇区架次数动态展示

打开前端Vue项目:kongguan_web,完成前端src/components/echart/SectorFlightChart.vue页面设计,使用ECharts插件实现柱状图和饼状图 在src/components目录下创建echart目录,完成src/components/echart/SectorFlightChart.vue 的页…

C++开发基础——类对象与构造析构

一、基础概念 类:用户自定义的数据类型。 对象:类类型的变量,类的实例。 类的成员:成员变量和成员函数。 成员变量:类中定义的变量。 成员函数:类中定义的函数。 定义类的代码样例: class…

嵌入式学习第二十九天!(数据结构的概念、单向链表)

数据结构: 1. 定义: 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 1. 程序设计: 将现实中大量而复杂的问题以特定的数据类型和特定的数据结构存储在内存中,并在此基础上实现某个特定的功…

【排序】快速排序

原理 对于一个数组x&#xff0c;快速排序流程如下&#xff1a; 确定分界点a&#xff0c;可以取x[l]、x[r]、x[l r / 2]、随机&#xff08;四种都可以&#xff09;调整区间&#xff0c;使得&#xff1a;区间被分成 < a 和 > a的两部分&#xff0c;左边 < a&#xff…

Jenkins-pipeline流水线构建完钉钉通知

添加钉钉机器人 在钉钉群设置里添加机器人拿出Webhook地址&#xff0c;设置关键词 Jenkins安装钉钉插件 Dashboard > 系统管理 > 插件管理&#xff0c;搜索构建通知&#xff0c;直接搜索Ding Talk也行 安装DingTalk插件&#xff0c;重启Jenkins 来到Dashboard > 系…

【物联网应用】基于云计算的智能化温室种植一体化平台

目录 第一章 作品概述 1.1. 作品名称 1.2. 应用领域 1.3.主要功能 1.4.创新性说明 第二章 需求分析 2.1 现实背景 2.2 用户群体及系统功能 2.3 竞品分析 第三章 技术方案 3.1. 硬件组成与来源 3.2. 硬件设计合理性 3.3. 硬件系统设计图 3.4. 接口的通用性与可扩展性 3.5. 代码规…

【ARM】DSTREAM上面的各个指示灯代表什么意思?

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 对于DStream仿真器上面的指示灯亮灭代表的意义进行分析。 2、 问题场景 主要对于DStream仿真器的使用过程中&#xff0c;不同的情况下面仿真器的指示灯会进行相应的亮灭。了解一下不同指示灯的亮灭所提示的信息…

注册个人小程序

访问地址 https://mp.weixin.qq.com/ 立即注册 选择小程序 注册 填写信息 登录邮箱 访问邮箱的链接激活账号 选择个人&#xff0c;填写信息 注册完成&#xff0c;即可登录进入填写信息

idea 开发serlvet班级通讯录管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 班级通讯录管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 servlet 班…

【iOS】——Blocks

文章目录 前言一、Blocks概要1.什么是Blocks 二、Block模式1.block语法2.block类型变量3.截获自动变量值4._Block修饰符5.截获的自动变量 三、Blocks的实现1.Block的实质2.截获自动变量值3._Block说明符4.Block存储域 前言 一、Blocks概要 1.什么是Blocks Blocks是C语言的扩…

使用jenkins-pipeline进行利用项目文件自动化部署到k8s上

Discard old builds:丢弃旧的构建,目的是管理存储空间、提升性能以及保持环境整洁 Do not allow concurrent builds: 禁止并发构建是指同一时间内只允许一个构建任务执行,避免多个构建同时运行可能带来的问题 Do not allow the pipeline to resume if the controller resta…

DockerHub搜索并拉取一个Redis镜像

1&#xff09;去DockerHub搜索Redis镜像 2&#xff09;查看Redis镜像的名称和版本 3&#xff09;利用docker pull命令拉取镜像 4&#xff09;利用docker save命令将 redis:latest打包为一个redis.tar包 5&#xff09;利用docker rmi 删除本地的redis:latest 6&#xff09;利用…

Flutter-自定义图片3D画廊

效果 需求 3D画廊效果 设计内容 StackGestureDetectorTransformPositioned数学三角函数 代码实现 具体代码大概300行 import dart:math;import package:flutter/material.dart; import package:flutter_xy/widgets/xy_app_bar.dart;import ../../r.dart;class ImageSwitc…

zookeeper集群安装部署和集群异常处理

准备jdk和zookeeper安装包【官网即可下载】 zookeeper-3.5.1-alpha.tar.gz jdk1.7.0_8020200612.tar 准备三台linux虚拟机【具体以项目实际需要为准】&#xff0c;并安装jdk和zookeeper 虚拟机地址如下&#xff1a;194.1.1.86&#xff08;server.1&#xff09;、194.1.1.74…

Lyricsx让歌词悬浮于最顶层

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Lyricsx让歌词悬浮于最顶层 前言Lyricsx的特色功能&#xff1a;歌词展现的新高度安装在 macOS 上安装 Lyricsx&#xff1a; 前言 在音符的世界里&#xff0c;歌词是一把打开心扉的钥匙&#xff0c;而…

全国各省市县统计年鉴/中国环境统计年鉴/中国工业企业数据库/中国专利数据库/污染排放数据库

统计年鉴是指以统计图表和分析说明为主&#xff0c;通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年鉴&#xff0c;则是研究者常用的途径。目前国…

蓝桥之手撕排序算法——冒泡、选择、插入、快排、归并(Python版)

目录 1. 排序引言 2. 冒泡排序 2.1 算法思想 2.2 代码实现 2.3 时空复杂度分析 3. 选择排序 3.1 算法思想 3.2 代码实现 3.3 时空复杂度分析 4. 插入排序 4.1 算法思想 4.3 代码实现 4.4 时空复杂度分析 5. 快速排序 5.1 算法思想 5.2 代码实现 5.3 时空复杂度分…

考研C语言复习进阶(5)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数&#xff1a; ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…