《RepViT Revisiting Mobile CNN From ViT Perspective》

news2024/10/3 20:21:56

期刊:CVPR

年份:2024

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

摘要

最近,与轻量级卷积神经网络(CNN)相比,轻量级视觉Transformer(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。研究人员已经发现了轻量级ViT和轻量级CNN之间的许多结构联系。然而,它们之间在块结构、宏观和微观设计上的显著差异并没有得到充分的研究。在本研究中,我们从ViT的角度重新审视轻量级CNN的高效设计,并强调其在移动设备上的广阔前景。具体来说,我们通过集成轻量级vit的高效架构设计,逐步增强了标准轻量级CNN(即MobileNetV3)的移动友好性。这就产生了一个新的纯轻量级CNN家族,即RepViT。大量的实验表明,RepViT优于现有的最先进的轻型ViT,并在各种视觉任务中表现出良好的延迟。值得注意的是,在ImageNet上,RepViT在iPhone 12上以1.0 ms的延迟实现了超过80%的top-1精度,据我们所知,这是轻量级模型的第一次。此外,当RepViT遇到SAM时,我们的RepViT-SAM的推理速度比先进的MobileSAM快近10倍。

Introduction

轻量级CNN的发展:过去十年中,研究人员主要关注轻量级CNN,并取得了显著进展。提出了许多高效设计原则,如可分离卷积、反向残差瓶颈、通道洗牌和结构重参数化等,这些原则促成了MobileNets、ShuffleNets和RepVGG等代表性模型的发展。

轻量级ViTs的探索:尽管直接减小ViT模型的大小以适应移动设备的约束是可能的,但这样做往往会降低性能,使其不如轻量级CNN。因此,研究人员开始探索轻量级ViTs的设计,目标是超越轻量级CNN的性能。

轻量级ViTs和CNNs的比较:尽管轻量级ViTs和轻量级CNNs在某些结构上具有相似性,例如都采用卷积模块来学习空间局部表示,但它们在块结构、宏观/微观设计上存在显著差异,这些差异尚未得到充分的检查。

主要贡献:

  1. 新的轻量级CNN架构RepViT:提出了一种新的轻量级CNN架构,名为RepViT,它通过整合轻量级ViTs的高效架构设计,旨在为资源受限的移动设备提供高性能的模型。

  2. 性能与延迟的优化:RepViT在保持低延迟的同时,实现了超越现有最先进轻量级ViTs和CNNs的性能,特别是在ImageNet数据集上达到了超过80%的top-1准确率,且在iPhone 12上的延迟仅为1.0毫秒。

  3. 架构设计的创新:文章详细介绍了RepViT架构的设计过程,包括块设计、宏观设计和微观设计,这些设计决策共同促进了模型性能的提升和延迟的降低。

延迟 vs 准确性

图1

Method

2.1 预备知识

延迟度量:作者选择在移动设备上的实际延迟作为模型性能评估的基准,而不是传统的FLOPs或模型大小,因为这些指标与移动应用中的实际延迟相关性不高。

训练对齐:为了公平比较,作者将MobileNetV3-L的训练与现有的轻量级ViTs对齐,包括使用AdamW优化器、余弦学习率调度器、数据增强技术如Mixup、自动增强和随机擦除,以及标签平滑作为正则化方案。

2.2 块设计

2.2.1 Separate token mixer and channel mixer

动机:轻量级ViTs的一个关键设计特征是将Token Mixer和Channel Mixer分开。这种分离基于MetaFormer架构,已被证明对ViTs的有效性至关重要。

图2 (a) 是一个 MobileNetV3 块,具有可选的squeeze-and-excitation (SE) 层。(b) 是设计的 RepViT 块,它通过结构重新参数化技术分离令牌混合器和通道混合器。SE 层在 RepViT 块中也是可选的。为简单起见,省略了范数层和非线性。

如图2(a)所示:

  • 在MobileNetV3-L中,原始的块结构采用1×1扩展卷积和1×1投影层来实现通道间的交互(即Channel Mixer),并在1×1扩展卷积之后使用3×3深度卷积(DW)来融合空间信息(即Token Mixer)。这种设计将Token Mixer和Channel Mixer耦合在一起。
  • 为了分离它们,作者首先将DW卷积上移,并在DW之后放置可选的Squeeze-and-Excitation(SE)层,因为SE层依赖于空间信息的交互。(通过将DW卷积移动到1×1扩展卷积之前,我们可以首先对每个通道进行空间混合,然后再通过1×1卷积进行通道混合。这样,空间信息的混合和通道信息的混合就不再是顺序依赖的,而是可以独立进行。
  • 采用结构重参数化技术来增强模型在训练期间的学习能力。这种技术允许在推理过程中消除跳跃连接带来的计算和内存成本,这对移动设备尤其有利。

扩展阅读

扩展卷积(Expansion Convolution)处理通道信息

  • 扩展卷积通常用于CNN中的“扩展层”或“瓶颈层”,其目的是在不显著增加参数数量的情况下增加特征图的维度。
  • 在MobileNetV2和MobileNetV3等架构中,扩展卷积通过1×1的卷积操作来实现通道数的增加,这有助于在后续的深度卷积层中捕获更丰富的特征。

深度卷积(Depthwise Convolution)处理空间信息

  • 深度卷积是一种对输入特征图的每个通道分别应用的卷积操作,每个通道的卷积核独立于其他通道。
  • 这种卷积方式可以增加特征图的空间维度,同时保持较低的计算成本,因为它允许每个输入通道独立地学习空间特征。
  • 在MobileNet系列架构中,深度卷积通常与扩展卷积结合使用,以实现有效的特征提取和降维。

投影(Projection Layer)

  • 投影层通常指的是1×1的卷积层,它用于调整特征图的通道数,而不会改变其空间维度。
  • 在某些CNN架构中,如MobileNetV1,投影层用于在深度卷积后减少特征图的通道数,以降低后续层的计算负担。
  • 在Transformer架构中,投影层也可以用于将多头自注意力(Multi-Head Self-Attention, MHSA)模块的输出投影回原始维度,以准备进行下一轮的自注意力计算。

拓展阅读2

Token Mixer

  • 在ViT中,Token Mixer通常指的是多头自注意力机制(MHSA),它允许模型在不同位置的输入特征(tokens)之间建立联系,通过注意力权重来强调某些特征。这种机制有助于模型捕获全局上下文信息。

Channel Mixer

  • Channel Mixer通常指的是在特征的通道维度上进行混合的操作,如1×1的卷积,它允许模型在保持空间位置不变的同时,重新分配和组合不同通道的特征信息。

分开的原因

  • 在一些传统的ViT架构中,Token Mixer和Channel Mixer可能是结合在一起的,这意味着它们在同一个操作中同时发生。然而,这种耦合可能不利于模型的效率和灵活性,尤其是在需要处理不同分辨率或在资源受限的设备上运行时。

效果:将 MobileNetV3-L 的延迟降低到 0.81 ms,以及临时性能下降到 68.3%。 

2.2.2 Reducing expansion ratio and increasing width

扩展比(Expansion Ratio):扩展比是指在网络中的某些层,特别是卷积层或前馈网络(Feed Forward Network, FFN)中,输出通道数与输入通道数的比例。例如,如果一个层的扩展比是4,那么它的输出通道数是输入通道数的4倍。

扩展比的调整

在传统的ViT中,FFN模块的扩展比通常设置为4,这意味着FFN的隐藏维度是输入维度的4倍。这种设计虽然有助于捕获复杂的特征,但也导致了计算资源的大量消耗。

网络宽度(Width):网络宽度指的是网络中通道的数量。增加网络宽度可以提供更多的特征表示能力,有助于提高模型的性能。

宽度的调整

为了补偿降低扩展比带来的参数减少,作者提出增加网络的宽度。例如,在每个阶段之后加倍通道数,从而在保持或提高性能的同时,减少模型的延迟。

方案

RepViT在通道混合器中为所有阶段设置扩展比为 2,随着扩展比较小,我们可以增加网络宽度来弥补较大的参数减少。我们在每个阶段之后对通道进行双重处理,每个阶段最终得到48,96,192和384个通道。

效果:在 0.91 ms 的类似延迟下获得了 73.0% 的 top-1 准确率的较差性能

2.3 宏观设计

2.3.1 Early convolutions for stem

动机

Stem是CNN中的第一个卷积层,它负责从原始图像中提取初步的特征表示。在ViT和一些轻量级CNN中,Stem通常使用patchify操作,将输入图像分割成小块。Patchify操作虽然简单,但可能导致优化问题和对训练配置的敏感性。这是因为它将图像分割成固定大小的非重叠块,这可能不利于模型学习有效的特征表示

为了解决上述问题,引入了早期卷积的概念。这种方法使用几个stride为2的3×3卷积层作为Stem,以替代传统的patchify操作。

早期卷积的优势:使用早期卷积可以提高优化稳定性和性能。这是因为较小的卷积核可以更好地捕捉局部特征,并且多层堆叠可以逐渐增加感受野,从而有助于模型学习更丰富的特征表示。

实现细节:在RepViT架构中,作者采用了两个3×3卷积层,步长为2,作为Stem。第一个卷积层的过滤器数量设置为24,第二个卷积层设置为48。

图3 (a)MobileNetV3-L 将过滤器的初始数量减少到 16,这反过来又限制了Stem的表示能力。(b)RepViT采用早期卷积的方法,简单地装备两个步长为 = 2 的 3 × 3 卷积作为Stem。

效果:整体延迟降低到 0.86 ms。top-1 准确率提高到 73.9%。 

 2.3.2 Deeper downsampling layers

动机:在CNN中,下采样层负责减少特征图的空间维度,同时增加特征的深度,这有助于模型捕获不同尺度的特征并减少计算量。在标准的ViT和一些轻量级CNN中,下采样通常由单独的层完成,例如通过步长大于1的卷积或池化操作。然而,这种简单的下采样可能会导致信息丢失,影响模型性能

深化下采样层的策略

通过增加下采样层的深度来提高网络的性能。这包括使用多个连续的卷积层来逐步降低特征图的分辨率,同时增加特征的深度。

具体实现

  • 在RepViT中,作者首先使用一个步长为2的深度卷积(DW convolution)进行空间下采样,然后使用一个1×1的逐点卷积(pointwise convolution)来调整通道维度。
  • 为了进一步加深下采样层并捕获更多的信息,作者在逐点卷积后添加了一个前馈网络(FFN)模块,以记忆更多的潜在信息
图4 (c)MobileNetV3-L (d)RepViT

MobileNetV3-L仅通过步长为 = 2 的 DW 卷积,可能缺乏足够的网络深度,导致信息丢失和对模型性能的负面影响。因此,为了实现单独和更深的下采样层,我们首先使用stride = 2和pointwise 1 × 1卷积的DW卷积分别进行空间下采样和调制通道维度。

效果:将 top-1 准确率提高到 75.4%,延迟为 0.96 ms

2.3.3 Simple classifier

动机

分类器是CNN架构中的最后部分,负责将特征转换为最终的类别预测。在传统的CNN中,分类器通常包括全连接层、全局平均池化层或类似的结构。在一些现有的轻量级CNN中,分类器可能包含额外的卷积层和全连接层,这些设计虽然可以提高特征的表达能力,但也增加了计算复杂度和延迟

简化分类器的设计

使用更简单的分类器设计,以减少计算量并降低延迟。这种设计通常包括全局平均池化层(Global Average Pooling, GAP)后接一个线性层。

  • 全局平均池化层可以有效地将特征图转换为一维特征向量,同时显著减少参数数量和计算量。这种操作对于减少模型大小和提高推理速度非常有益。
  • 在全局平均池化之后,一个线性层(通常是一个全连接层)用于将池化后的特征映射到最终的类别上。这种设计简单且有效。
图4 (e)MobileNetV3-L (f)RepViT

效果:精度下降 0.6%,但延迟降低到 0.77 ms。 

2.3.4 Overall stage ratio

阶段比率(Stage Ratio):阶段比率是指网络中不同阶段的层数或块数的比例。这个比例对网络的性能和计算效率有重要影响。

动机:在第三阶段使用更多的层数可以带来准确性和速度之间的良好平衡。现有的轻量级ViTs通常在第三阶段应用更多的块,以实现更好的性能。

对网络采用 1:1:7:1 的阶段比率。然后,我们将网络深度增加到 2:14:2,实现更深的布局。

效果:将 top-1 准确率提高到 76.9%,延迟为 0.91 ms

2.4 微观设计

2.4.1 Kernel size selection

动机

  • 卷积核的大小直接影响CNN的性能和计算效率。较大的卷积核可以捕获更广泛的上下文信息,但会增加计算复杂度和延迟,特别是在移动设备上。
  • 一些研究工作,如ConvNeXt和RepLKNet,展示了使用大卷积核可以提高性能,但这些研究通常不针对移动设备优化。

在移动设备上,由于计算资源和内存访问成本的限制,大卷积核可能不是最优选择。此外,编译器和计算库通常对3×3卷积核有更高度的优化。

效果:保持76.9%的最高精度,同时延迟降低到0.89 ms。

2.4.2 Squeeze-and-excitation layer placement

动机

  • SE层作为一种通道注意力模块,可以弥补卷积在缺乏数据驱动属性方面的局限性,带来更好的性能。
  • 尽管SE层能够提升性能,但它也会引入额外的计算成本。因此,在设计轻量级模型时,需要仔细考虑SE层的放置,以平衡性能增益和计算效率。

先前研究的启示:引用了先前的研究,指出在低分辨率特征图的阶段使用SE层可能不会带来显著的准确率提升,而在高分辨率特征图的阶段使用SE层则可以更有效地提升性能。

具体方案

在RepViT中,采用了一种跨块的SE层放置策略。具体来说,每个阶段中的第1、3、5...个块使用SE层,这种交错放置方式旨在最大化准确率的提升,同时控制延迟的增加。

效果准确率达到77.4%,延迟为0.87 ms。

拓展阅读

SE模块:

Squeeze

  • 这一步骤通过全局平均池化(Global Average Pooling, GAP)将特征图压缩成一个单一的通道。这意味着无论特征图的空间维度有多大,都会被压缩成一个包含所有空间信息的单一数值。
  • 这种压缩操作生成了一个长度为1的全局特征向量,它捕获了输入特征图的全局空间信息。

Excitation

  • 接下来,这个全局特征向量通过几个全连接(FC)层进行非线性变换,通常包括一个ReLU激活函数和一个sigmoid激活函数。
  • ReLU层引入非线性,而sigmoid层则将输出值压缩到0和1之间,生成一个与输入通道数相同长度的权重向量。

Result

如表所示,RepViT在各种模型大小上始终实现最先进的性能。在类似的延迟情况下,RepViTM0.9可以显著优于EfficientFormerV2-S0和fastvitt - t8,准确率分别提高3.0%和2.0%。与EfficientFormerV2-S1相比,repviti - m1.1还可以获得1.7%的性能提升。值得注意的是,repviti - m1.0在iPhone 12上以1.0 ms的延迟实现了超过80%的top-1精度,据我们所知,这是轻量级机型的第一次。我们最大的模型,repviti - m2.3,获得83.7%的准确率,只有2.3毫秒的延迟。以上结果很好地表明,通过结合高效的架构设计,纯轻量级cnn可以在移动设备上优于现有的最先进的轻量级vit。 Conclusion

在本文中,我们通过结合轻量级vit的架构设计来重新审视轻量级cnn的高效设计。这就产生了RepViT,这是一个针对资源有限的移动设备的新型轻量级cnn系列。在各种视觉任务上,RepViT优于现有的最先进的轻量级vit和cnn,表现出良好的性能和延迟。这凸显了面向移动设备的纯轻量级cnn的前景。我们希望RepViT可以作为一个强大的基线,并激发对轻量级模型的进一步研究。

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

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

相关文章

大聪明教你学Java | 深入浅出聊 RocketMQ

前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言&#x1f4…

技术派Spring事件监听机制及原理

Spring事件监听机制是Spring框架中的一种重要技术,允许组件之间进行松耦合通信。通过使用事件监听机制,应用程序的各个组件可以在其他组件不直接引用的情况下,相互发送和接受消息。 需求 在技术派中有这样一个需求,当发布文章或…

旋转变压器软件解码simulink仿真

1.介绍 旋转变压器是一种精密的位置、速度检测装置,尤其适用于高温、严寒、潮湿、高速、振动等环境恶劣、旋转编码器无法正常工作的场合。旋转变压器在使用时并不能直接提供角度或位置信息,需要特殊的激励信号和解调、计算措施,才能将旋转变压…

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统 一 文档简介二 平台构建2.1 使用平台2.2 百度智能云2.2.1 物联网核心套件2.2.2 在线语音合成 2.3 playback语音数据准备与烧录2.4 开机语音准备与添加2.5 唤醒词识别词命令准备与添加 三 代码准备3.1 sln-local/2-iot 代码…

2025第13届常州国际工业装备博览会招商全面启动

常州智造 装备中国|2025第13届常州国际工业装备博览会招商全面启动 2025第13届常州国际工业装备博览会将于2025年4月11-13日在常州西太湖国际博览中心盛大举行!目前,各项筹备工作正稳步推进。 60000平米的超大规模、800多家国内外工业装备制造名企将云集…

Unity Shader 软粒子

Unity Shader 软粒子 前言项目Shader连连看项目渲染管线设置 鸣谢 前言 当场景有点单调的时候,就需要一些粒子点缀,此时软粒子就可以发挥作用了。 使用软粒子与未使用软粒子对比图 项目 Shader连连看 这里插播一点,可以用Vertex Color与…

KUKA机器人不同运行方式

KUKA机器人有以下四种运行方式: 1、手动慢速运行(T1) 2、手动快速运行(T2) 3、自动运行(AUT) 4、外部自动运行(AUT EXT) 将示教器上的钥匙向右旋转,就会…

【数据结构之B树的讲解】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

专题五:Spring源码之初始化容器上下文

上一篇我们通过如下一段基础代码作为切入点,最终找到核心的处理是refresh方法,从今天开始正式进入refresh方法的解读。 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(…

Study--Oracle-05-Oracler体系结构

一、oracle 体系概览 Oracle数据库的体系结构通常包括以下主要组件: 1、实例(Instance):运行数据库的软件环境,包括内存结构(SGA)和进程结构(Background Processes and User Proces…

Mysql面试合集

概念 是一个开源的关系型数据库。 数据库事务及其特性 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。 事务特性: (1)原子性:即不可分割性,事务要么全部被执行,要么就…

Spring Boot 实现 AOP 动态热插拔功能并附DEMO源码

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

3D Gaussian Splatting代码中的Gaussian_Module和Cameras两个类的代码解读

Gaussian_model 讨论Gaussian_model这个类,是因为里面包含了三维高斯分布的基本信息,里面定义了各种参量的构建方式、用于优化学习的激活函数、学习率设置方法和高斯点优化过程中的增加与删除方式及对应优化器的处理方法。这个类定义在scene文件夹中的g…

探索工业AI智能摄像机的高端科技

在当今快速发展的工业智能化领域,工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注(文末有国外工程师的评测链接)。搭载Raspberry Pi CM4支持的旨在广泛应用,涵盖从简单的条形码扫描到基于人工智能的工业环境中的缺…

数学知识——欧拉函数

数学知识(二) 20240628 求和N互质的个数公式 先分解N,再求个数fai n欧拉函数的证明:用容斥原理 不考 求质因子 p1, … , pk 1-N中与N互质的个数, 去掉质因子倍数 是pi的倍数的有N/pi个,但是会有既是p1也是…

【UE5.1】Chaos物理系统基础——01 创建可被破坏的物体

目录 步骤 一、通过笔刷创建静态网格体 二、破裂静态网格体 三、“统一” 多层级破裂 四、“簇” 群集化的破裂 五、几何体集的材质 六、防止几何体集自动破碎 步骤 一、通过笔刷创建静态网格体 1. 可以在Quixel Bridge中下载两个纹理,用于表示石块的内外纹…

微信小程序毕业设计-英语互助系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

微信小程序-插槽slot

一.插槽slot 在页面使用自定义组件的时候&#xff0c;如果在自定义组件里面写子组件&#xff0c;子组件的内容无法显示。 <custom01> <text slotslot-top>你好&#xff0c;上方组件</text> 你好&#xff0c;组件 <text slotslot-bottom>你好&#xf…

小型语言模型的兴起

过去几年&#xff0c;我们看到人工智能能力呈爆炸式增长&#xff0c;其中很大一部分是由大型语言模型 (LLM) 的进步推动的。GPT-3 等模型包含 1750 亿个参数&#xff0c;已经展示了生成类似人类的文本、回答问题、总结文档等能力。然而&#xff0c;虽然 LLM 的能力令人印象深刻…

文件操作~

目录 1.为什么使用文件&#xff1f; 2.什么是文件&#xff1f; 2.1 程序文件 2.2 数据文件 2.3 文件名 3.⼆进制文件和文本文件&#xff1f; 4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 ⽂件的打开和关闭 5.文件的顺序读写 5.1 …