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

文章目录

  • RepViT: Revisiting Mobile CNN From Vit Perspective
    • 动机
      • 现状
      • 问题
    • 贡献
    • 实现
      • Block设置
        • 独立的token融合器和通道融合器
        • 减少膨胀并增加宽度
      • 宏观设计
        • stem的早期卷积
        • 简单分类器
        • 整体阶段比率
      • 微观设计
        • 内核大小选择
        • Squeeze-and-excitation层放置
        • 网络架构
    • 实验
      • ImageNet-1K上进行图像分类
      • RepViT融合SAM

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分割比较
在这里插入图片描述

语义分割结果
在这里插入图片描述

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

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

相关文章

Codeforces Round 970 (Div. 3)

#include <iostream> #include <cmath> using namespace std;// 函数 is 用于判断给定的字符串 s 是否表示一个满足条件的正方形数。 bool is(const string &s, int n) {// 首先计算 n 的平方根 k。int k sqrt(n); // 如果 k 的平方不等于 n&#xff0c;那么 …

Java | Leetcode Java题解之第390题消除游戏

题目&#xff1a; 题解&#xff1a; class Solution {public int lastRemaining(int n) {int a1 1;int k 0, cnt n, step 1;while (cnt > 1) {if (k % 2 0) { // 正向a1 a1 step;} else { // 反向a1 (cnt % 2 0) ? a1 : a1 step;}k;cnt cnt >> 1;step s…

3012家!第六批专精特新“小巨人”企业名单和第三批复核通过企业名单公示

工业和信息化部开展了第六批专精特新“小巨人”企业培育和第三批专精特新“小巨人”企业复核工作&#xff0c;已完成相关审核。今日&#xff0c;各地陆续公示了第六批专精特新“小巨人”企业和第三批专精特新“小巨人”复核通过企业名单。 第六批专精特新“小巨人”企业和第三…

TikTok店群模式:从盈利到管理的全方位指南

北京时间9月2日&#xff0c;TikTok举办了“Grow With TikTok”研讨会。此次盛会不仅深入探讨了品牌如何利用TikTok平台实现快速成长与业务拓展&#xff0c;还针对TikTok店群运营模式中遇到的实际问题&#xff0c;提供了宝贵的指导意见。基于会议的精髓&#xff0c;本文将探讨如…

Oceanbase 透明加密TDE

官方文档&#xff1a;数据库透明加密概述-V4.3.2-OceanBase 数据库文档-分布式数据库使用文档 OceanBase 数据库社区版暂不支持数据透明加密。 数据存储加密是指对数据和 Clog 等保存在磁盘中的数据进行无感知的加密&#xff0c;即透明加密&#xff08;简称 TDE&#xff09;。…

5G ARMxy边缘计算网关依靠 SPI加密芯片保障工业数据传输

数字化进程迅猛推进的时代&#xff0c;数据的采集、处理以及传输所占据的地位愈发关键。ARM 边缘计算机以其超乎寻常的强大性能和丰富多彩的功能特性&#xff0c;为形形色色的应用场景奉献出了高效且值得信赖的解决方案。 ARM 边缘计算机对于多种操作系统均予以支持&#xff0…

TCP协议 配合 Wireshark 分析数据

在TCP连接中&#xff0c;无论是客户端还是服务端&#xff0c;都有可能成为发送端或接收端&#xff0c;这是因为TCP是一个全双工协议&#xff0c;允许数据在同一连接中双向流动 客户端&#xff08;Client&#xff09;&#xff1a;通常是指主动发起连接请求的一方。例如&#xf…

Python脚本实现向飞书发送卡片消息

目录 1 先创建一个卡片消息2 Python脚本2.1 告警测试2.2 告警恢复 总结 1 先创建一个卡片消息 飞书卡片搭建工具 根据自己的需要创建一个消息卡片&#xff1a; 可以在 卡片源代码 中看到这个卡片的代码信息 2 Python脚本 2.1 告警测试 test.py 文件 ""&quo…

Table表格td之间有空隙?你少设了border-collapse

设置之前 设置之后 table {border:solid 1px #cccccc;border-collapse: collapse;border-spacing: 0; }

2024最新PyCharm下载安装激活汉化教程!(附激活码)

激活码&#xff08;文末附带精品籽料&#xff09;&#xff1a; K384HW36OB-eyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6I…

TripoSR模型构建指南

一、介绍 TripoSR 是由 Tripo AI 和 Stability AI 合作开发的最先进的开源模型&#xff0c;用于从单个图像进行快速前馈 3D 重建。利用大型重建模型&#xff08;LRM&#xff09;的原理&#xff0c;TripoSR 带来了关键的进步&#xff0c;大大提高了 3D 重建的速度和质量。该模型…

【ISSCC】论文详解-34.6 28nm 72.12TFLOPS/W混合存内计算架构

本文介绍ISSCC34.6文章&#xff0c;题目是《A 28nm 72.12TFLOPS/W Hybrid-Domain Outer-Product Based Floating-Point SRAM Computing-in-Memory Macro with Logarithm Bit-Width Residual ADC》&#xff08;一种28nm 72.12TFLOPS/W混合域外积浮点SRAM存内计算宏单元&#xff…

AI Dify + 大模型+ Agent 详细教程 从0-1教你构建小助手

前言 Dify 是一个易于使用的 LLMOps 平台&#xff0c;提供了多种应用程序类型和模板&#xff0c;包括 AI 聊天机器人、代码转换器、SQL 生成器、新闻内容编写、创意脚本等。团队使用 Dify&#xff0c;可以基于 GPT-4 等模型快速「开发部署」 AI 应用程序并进行可视化操作&…

python学习13:对excel格式文件进行读写操作

读取excel的话需要下载第三方库&#xff1a; 常用的库:xlrd(读),xlwt(写),xlutils,openpyxl[-----pip install xxx-------] 这里推荐openpyxl pip install openpyxl excel读取的基本操作 # 2)基本操作: # 2.1)打开文件,获取工作簿 filename rD:\stdutyZiLiao\pythoneProje…

面试总结1

1.数据库查询语句&#xff0c;找重复名字。有三列&#xff08;名字、班级、姓名&#xff09; 2.问3范式&#xff0c;字段类型&#xff0c;前两个是project_id&#xff1a;项目编号&#xff08;可以包含字母和数字&#xff09;project_name&#xff1a;项目名称&#xff08;可以…

【C++】vector(下)--上篇

个人主页~ vector&#xff08;上&#xff09;~ vector 二、vector的模拟实现1、了解组成2、vector.h&#xff08;1&#xff09;为什么有了size_t参数的vector构造函数还要再写一个int参数的重载vector构造函数&#xff08;2&#xff09;为什么reserve不用memcpy&#xff08;3&…

【C语言】零碎知识点(易忘 / 易错)总结回顾

一、数据类型 1、%p —— 以地址的形式打印 2、整型在内存中的存储 &#xff08;1&#xff09;原码、反码、补码 计算机中的有符号数有三种表示方法&#xff1a;原码、反码和补码。 三种表示方法均有符号位和数值位两部分&#xff0c;数值位三种表示方法各不相同。 原码&a…

Redis数据结构与连接

1 基本的数据结构 1.1 string string的实现有多种 int&#xff1a;字符串长度小于等于20且能转成整数raw&#xff1a;字符串长度大于44embstr&#xff1a;字符串长度小于等于44 字符串长度小于1M 时&#xff0c;加倍扩容&#xff1b;超过 1M 每次只多扩1M&#xff1b;字符串…

MySQL:表创建指南

前言 随着信息技术的飞速进步&#xff0c;数据库设计的优劣对系统性能产生了决定性影响。 一个精心设计的数据库不仅能显著提升应用效率&#xff0c;还能确保数据的安全和一致性。 本文将以一张具体的实体-关系图&#xff08;E-R图&#xff09;为基础&#xff0c;详细阐述如…

HarmonyOS NEXT开发:UI导航栏组件-NavigationBarView

NavigationBarView 是什么&#xff1f; NavigationBarView是ArkTS上的UI自定义导航栏组件&#xff0c;内置了导航栏的返回按钮、标题、搜索入口、右侧按钮等常用微功能。NavigationBarView结构展示 NavigationBarView ├── back │ ├── back_icon │ …