即插即用! | 苹果推出新型网络架构 FastViT: 又快又强又稳,端侧一键部署毫无压力!

简介: 即插即用! | 苹果推出新型网络架构 FastViT: 又快又强又稳,端侧一键部署毫无压力!

640.png


Title: FastViT: A Fast Hybrid Vision Transformer using Structural Reparameterization

Paper: https://arxiv.org/pdf/2303.14189.pdf

导读

本文介绍了一种新颖的混合视觉架构——FastViT,其有机的结合了CNNsTransformer,无论在精度或者运行效率上均有了稳定的提升。FastViT的主要贡献是引入了一种新的Token混合算子,命名为叫做RepMixer,听名字就知道结合结构重新参数化技术啦。该算子的作用原理是通过消除网络中的skip connection来降低内存访问成本。与此同时,本文还采用了traintime overparametrization和大内核卷积等技术来提高精度。

实验结果表明,FastViT

  • 在移动设备上的速度比最近的混合Transformer架构CMT3.5倍!
  • ImageNet数据集上的精度相同,但速度比EfficientNet4.9倍且比ConvNeXt1.9倍!
  • 在相似的延迟下,FastViTImageNet上的Top-1精度比MobileOne高出4.2%

就问你服不服?总而言之,FastViT在多个任务(图像分类、检测、分割甚至是 3D 网格回归)上的表现均优于竞争对手,特别是在移动设备和桌面GPU上都有显着的延迟改进。此外,FastViT模型能够较好的适应域外和破损数据,相较于其它SOTA架构具备很强的鲁棒性和泛化性能。说得我都想赶紧替换上去了,真香!

方法

上图为FastViT的整体框架图,如上所述,这是一种混合Transformer模型,其架构是基于CVPR'2022 Oral上的一篇工作PoolFormer改进的:

PoolFormer is instantiated from MetaFormer by specifying the token mixer as extremely simple operator, pooling. PoolFormer is utilized as a tool to verify MetaFormer hypothesis "MetaFormer is actually what you need" (vs "Attention is all you need").

时间宝贵,我们参照上面示意图快速过一下。

上述框架图中最左侧的部分是整体的模块示意图,共包含一个Stem层和四个Stage,分别作用在不同的尺度上,最后是接入一个  的深度可分离MobileOne块和一个平均池化层直接套个全连接输出最终的分类结果。

首先,从上往下观察,Stem部分在右上角那里,同其余Stage内的模块一样,都是套用了结构参数化技术,常规套路,用于推理时融合算子加速用的。其次,可以看到,针对每个Stage的不同特性,这里采用不同的结构去捕获不同层级的特征。具体的,看下图(a)先,这里主要引入了

可以看到,针对每个Stage的不同特性,这里采用不同的结构去捕获不同层级的特征,但整体范式上还是套用了结构参数化技术,常规套路。先看下图(a)部分,此处主要采用了分解机制。图(c)部分眼熟的小伙伴一眼就闻到了ConvNeXt的味道,(⊙o⊙)…。重点可能是放在图(d),也就是本文反复强调的RepMixer,跟MetaFormer一样,也是一种Token混合算子,主要功效是对跳跃连接进行重参数化改造,有助于减轻内存访问成本。

类似于ConvNeXtFastViT也是由里而外逐步做实验去优化的,具体的改进方案如下所示:

下表给出它的不同配置:

为了验证重参数化跳跃连接的好处,作者对MetaFormer架构中最高效的Token混合算子之一,即PoolingRepMixer进行了相关实验:

其中,两个压缩过的模型都具有约1.8G FLOPs。实验环境是在iPhone 12 Pro移动设备上对各种输入分辨率的模型进行时间测量,分辨率从224×2241024×1024逐步缩放。从图中可以看出,RepMixer显著优于Pooling算子,尤其是在更高的分辨率下。观察下384×384这里,使用RepMixer可以使延迟降低25.1%,而在更大的分辨率例如1024×1024下,延迟直接降低至43.9%,Cool!

为了进一步提高效率(参数数量、FLOPs 和延迟),本文设计了一种分解版本替换了所有的密集卷积(如)。但是,参数量低了性能肯定会受影响啦。所以,为了增加拟合能力,作者执行线性训练时超参数化,具体可参考MobileOne论文。

此外,在卷积的初始阶段、Patch Embedding和投影层中进行MobileOne风格的超参数化有助于提高性能,如下表所示:

可以看出,训练时超参数化可以使FastViT-SA12模型在ImageNet上的Top1精度直接提高0.6%。哪怕是在较小的FastViT-S12变体中,Top-1精度也能提高0.9%

然而,训练时超参数化会导致由于添加分支所带来的计算开销而增加训练时间(多分支并行的通病)。因此,为了解决此问题,在该架构中,我们只对那些分解层进行超参数化,这些层位于卷积初始阶段、Patch Embedding和投影层中。这些层的计算成本比网络的其余部分要低,因此超参数化这些层不会显著增加训练时间。例如,FastViT-SA12使用训练时超参数化的训练时间比在相同设置下不使用超参数化的训练时间长 6.7%,FastViT-SA36也仅为4.4%。

最后,便是大卷积核的魔力了,笔者先前讲了挺多的,有兴趣的自行去翻阅『CVHub』历史文章:

总的来说,随着感受野的增加,大核卷积有助于提高模型的鲁棒性。因此,结合大核卷积是提高模型性能和鲁棒性的有效方法。

效果

不说了,一句话概括就是又快又强!值得一提的是,作者还将其扩展到 3D 手部网格估计:

这是最终的效果图,看来还是苹果香啊!哈哈哈~~~

总结

本文提出了一种通用的混合视觉转换器,它在多种计算结构上非常高效,包括移动设备和桌面级 GPU。通过结构重参数化,所提模型FastViT显著降低了内存访问成本,尤其是在高分辨率下提速明显。此外,通过进一步的架构优化,最终提高了 ImageNet 分类任务和其他下游任务(如目标检测、语义分割和 3D 手部网格估计)的性能,同时对域外数据和损失数据具备很强的泛化性和鲁棒性!



目录
相关文章
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
71 2
|
4月前
|
Kubernetes Devops 持续交付
DevOps实践:使用Docker和Kubernetes实现持续集成和部署网络安全的守护盾:加密技术与安全意识的重要性
【8月更文挑战第27天】本文将引导读者理解并应用DevOps的核心理念,通过Docker和Kubernetes的实战案例,深入探讨如何在现代软件开发中实现自动化的持续集成和部署。文章不仅提供理论知识,还结合真实示例,旨在帮助开发者提升效率,优化工作流程。
|
4月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
130 0
|
23天前
|
监控 安全 持续交付
构建高效的微服务架构:从设计到部署
构建高效的微服务架构:从设计到部署
24 1
|
28天前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
55 1
|
2月前
|
安全 定位技术 数据安全/隐私保护
|
22天前
|
供应链 监控 安全
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
62 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
222 3
|
3月前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
77 2