论文阅读笔记:RepViT: Revisiting Mobile CNN From Vit Perspective

文章目录

RepViT: Revisiting Mobile CNN From Vit Perspective

论文地址: https://github.com/THU-MIG/RepViT

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

动机

现状

  • 与轻量级CNN相比,轻量级ViT在资源受限的移动设备上表现出了卓越的性能和更低的延迟。
  • 轻量级ViT和轻量级CNN之间有许多结构联系

问题

  • 摘要:
    • 轻量级ViT和轻量级CNN之间在块结构、宏观和微观设计方面的架构的显著差异未得到充分研究
  • 引言:
    • 轻量级ViT取得了成功,但由于硬件和计算库支持不足,扔面临实际挑战
    • ViT容易收到高分辨率输入的影响,从而导致高延迟。相比之下, CNN利用高度优化的卷积运算,其复杂度相对于输入呈线性,这使得它们有利于在边缘设备上部署。
    • 轻量级ViT和轻量级CNN表现出一定的结构相似性,如都采用卷积模块来学习空间局部表示、轻量级CNN通过增加卷积核大小来学习全局表示而轻量级ViT采用多头注意力模块。
    • 虽然存在这些结构联系,但他们之间的块结构、宏观.微观设计仍然存在显著差异,尚未得到足够的检验。
    • 问题:
      • 轻量级ViT的架构涉及能否增强轻量级CNN的性能?

贡献

  • 从ViT的角度重新审视轻量级CNN的高效架构设计,逐步增强它们在移动设备商的广阔前景
  • 通过集成轻量级ViT的高效架构设计,逐步增强标准轻量级CNN的移动友好性。
  • 提出了一个新的纯轻量级CNN系列,RepViT。
  • 在ImageNet上,在iPhone12上达到了1.0毫秒的延迟实现了 80 % 80\% 80%的top-1准确率。
  • RepVit和SAM结合后的RepViT-SAM的推理速度比先进的MobileSAM快十倍以上

实现

Block设置

独立的token融合器和通道融合器

独立token融合器和通道融合器是轻量级ViT的块结构的重要设计特征。最近的研究表明ViT的有效性主要源于其通用的token融合器和通道融合器结构,即MetaFormer架构。

如下图所示,(a)原始MobileNetV3块采用 1 × 1 1\times1 1×1扩展卷积核 1 × 1 1\times1 1×1投影层来实现通道之间的交互(即通道融合器)。在 1 × 1 1\times1 1×1扩展卷积之后配备 3 × 3 3\times3 3×3深度(DW)卷积, 用于空间信息的融合(即token融合器)。这样的设计使得token融合器和通道融合器耦合到一起。为了将它们分开,RepViT将DW卷积上移。可选择的squeeze-and-excitation (SE)层也向上移动到DW之后,因为它取决于空间信息交互。因此,成功地分离MobileNetV3 block中的token融合器和通道融合器。RepVit进一步在DW层采用广泛使用的结构重参化技术来增强训练期间的模型学习。得益于结构重参化技术,可以消除推理过程中与跳过连接相关的计算和内存成本。

减少膨胀并增加宽度

在普通ViT中,通道混合器中的扩展比通常设置为4,,使前馈网络(FFN)模块的隐藏维度 4 t i m e s 4times 4times比输入维度更宽。它消耗了很大一部分计算资源,从而影响了总体推理时间。最近的工作采用了更窄的FFN。

MobileNetV3-L中,扩展比的范围是2.3到6,其通道数比较多的最后两个阶段集中为6。RepViT模块所有阶段的通道混合器中的扩展比斗设置为2。者减少了延迟。在较小的扩展率下,可以增加网络宽度来弥补参数的大幅减少。因此在每个阶段之后将通道加倍,最终每个阶段分别有48/96/192和384个通道。

宏观设计

stem的早期卷积

ViT通常使用patchify操作作为主干,将输入图像划分为不重叠的补丁。这个简单的stem对应于具有大内核和大步长。分层ViT采用相同的patchify操作,但patch大小较小为4。最近的工作表明这种patch操作容易导致ViT训练的优化性和敏感性不合格。而使用少量堆叠的两个 3 × 3 3\times3 3×3卷积作为stem的代替方案,成为早期卷积,这提高了优化稳定性和性能。

MobileNetV3-L采用复杂的主干,涉及 3 × 3 3\times3 3×3卷积、深度不可分离卷积核反向bottleneck。MobileNetV3-L将滤波器的初始数量减少到16个来解决stem以最高分辨率处理输入图像在移动设备上遇到严重延迟瓶颈的问题,但这也限制了stem的表达能力。为了解决这些问题,RepViT采用早期卷积的方式,并简单的使用了两个 3 × 3 3\times3 3×3的 s t r i d e = 2 stride=2 stride=2的卷积。如下图(b)所示,第一个卷积中的滤波器数量设置为24,第二个卷积中的滤波器数量设置为48。

简单分类器

在轻量级ViT中,分类器通常由全局平均池化层和线性层组成。这种简单的分类器对延迟很友好。MobileNetV3-L采用了一个复杂的分类器,其中包括一个额外的 1 × 1 1\times1 1×1卷积核一个额外的线性层,以将特征扩展到更高维的空间(下图e)。这可以生成丰富的预测特征但延迟高。RepViT将其代替为一个简单的分类器,即全局平均池化层和线性层(下图(f))。

整体阶段比率

阶段比表示不同阶段的块数量的比率,从而表明计算在阶段之间的分布。在第三阶段使用更多的块可以在精度和速度之间实现良好的平衡。因此,现有轻量级ViT在这个阶段一般会应用更多的block。RepViT网络采用 1 : 1 : 7 : 1 1:1:7:1 1:1:7:1的级比,将网络深度增加到 2 : 2 : 14 : 2 2:2:14:2 2:2:14:2实现更深的布局。

微观设计

内核大小选择

CNN的性能和延迟通常受到卷积核大小的影响。由于计算复杂度和内存访问成本,大内核的卷积对移动设备并不友好。此外,与 3 × 3 3\times3 3×3卷积相比,较大的卷积核不会被编译器和计算库高度优化。MobileNetV3-L主要利用 3 × 3 3\times3 3×3卷积,在某些block中使用少量 5 × 5 5\times5 5×5卷积。RepViT所有模块都优先使用简单的 3 × 3 3\times3 3×3卷积。

Squeeze-and-excitation层放置

与卷积相比,自注意力模块的优点之一是能够根据输入调整权重,称为数据驱动属性。作为通道上的注意力模块,SE层可以弥补卷积缺乏数据驱动属性的限制,带来更好的性能。MobileNetV3-L在某些块中合并了SE层,主要关注后两个阶段。然而,与具有较高分辨率特征图的阶段相比,具有低分辨率特征图的阶段获得的准确度优势较小。同时,除了性能提升之外,SE层还带来了不可忽略的计算成本。因此,RepViT设计了一种以跨方式利用SE层的策略。即在第1、3、5、···层中采用SE层,以最小的延迟增量最大化准确性优势。

网络架构

RepViT有很多变体,包括RepViT-M0.9/M1.0/M1.1/M1.5/M2.3。"-MX"表示对应型号在移动设备上的延迟为X毫秒。变体通过每个阶段内的通道数和block数来区分。

实验

ImageNet-1K上进行图像分类

RepViT融合SAM

延迟比较

zero-shot分割比较

语义分割结果

相关推荐
aloha_7893 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
dsywws4 小时前
Linux学习笔记之vim入门
linux·笔记·学习
孙同学要努力5 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20215 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧36 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
A-超6 小时前
vue3展示pag格式动态图
笔记
绕灵儿7 小时前
OpenCV通过指针裁剪图像
人工智能·opencv·计算机视觉
sniper_fandc7 小时前
深度学习基础—循环神经网络的梯度消失与解决
人工智能·rnn·深度学习
u0101526587 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
weixin_518285057 小时前
深度学习笔记10-多分类
人工智能·笔记·深度学习