轻量化Backbone | ShuffleNet+ViT结合让ViT也能有ShuffleNet轻量化的优秀能力

news2024/11/20 23:28:52

视觉Transformer(ViTs)在各种计算机视觉任务中表现出卓越的性能。然而,高计算复杂性阻碍了ViTs在内存和计算资源有限的设备上的适用性。尽管某些研究已经深入探讨了卷积层与自注意力机制的融合,以增强ViTs的效率,但在纯自注意力机制的基础上构建小型但有效的ViTs仍存在知识空白。此外,采用直接策略来减少大型但性能卓越的ViT中的特征通道往往会导致性能显著下降,尽管效率得到改善。

为了解决这些挑战,作者提出了一种新的通道Shuffle模块,以改进小型ViTs,展示了在计算资源有限的环境中纯自注意力模型的潜力。受ShuffleNetV2中通道Shuffle设计的启发,作者的模块扩展了小型ViT的特征通道,并将通道分为两组:Attended Group和Idle Group。自注意力计算仅在指定的Attended Group上使用,然后进行通道Shuffle操作,促进两组之间的信息交换。

通过将作者的模块整合到小型ViT中,作者可以在保持与原始模型相当的计算复杂性的情况下实现更好的性能。具体而言,作者提出的通道Shuffle模块可持续提高各种小型ViT模型在ImageNet-1K数据集上的top-1准确度,提高幅度最高可达2.8%,而模型复杂性的变化不超过0.03 GMACs。

1、简介
自ViT成功以来,视觉Transformer已经主导了计算机视觉领域,表现出在图像分类、目标检测和分割等方面出色的性能。然而,自注意力机制的高计算负担使ViTs在具有有限内存和计算资源的设备上与传统的卷积神经网络相比效率较低。因此,研究界越来越关注开发轻量化和高效的ViT模型。

已经提出了各种方法来解决这一挑战。一些方法将高效的卷积操作与计算昂贵的自注意结合起来,创建了混合高效的ViTs。然而,这些方法未充分利用纯自注意模型实现高性能和高效率的潜力。或者,某些研究重新审视高效CNN的设计原则,并将它们转移到高效ViT的设计中,例如基于窗口的注意力、分层网络架构、瓶颈结构和空间可分的自注意力。

值得注意的是,由ShuffleNet引入的通道Shuffle设计在这个背景下研究较少。此外,一些强大的ViT模型通过简单地减少特征通道、层或自注意头的数量构建它们的轻量级版本。然而,正如表I所示,这种简单的模型大小减小往往导致性能显著下降。例如,当特征通道数量从384减少到192时,DeiT-Tiny与DeiT-Small相比,在ImageNet上的top-1准确度下降了7.7%。
在这里插入图片描述

作者发现,导致小型ViTs性能下降的主要原因之一是特征通道数量有限。特征通道数量不足使小型ViTs无法有效表示图像。为了缓解图像表示不足的类似问题,以往的高效CNN研究利用分组卷积的概念,降低计算复杂性和内存占用,而不损害特征通道的总数。

此外,ShuffleNet提出了一种通道Shuffle操作,以帮助信息在组之间流动。ShuffleNet v2广泛探讨了架构设计,并引入了一种策略,将通道分成两组,允许一组在整个层中保持Idle,并在两组之间进行通道Shuffle。值得注意的是,高效CNN中的这些设计很少用于高效的纯自注意力模型。

因此,在本文中,作者提出了一个专门为小型ViT模型设计的通道Shuffle模块,以解决上述挑战。受到ShuffleNet v2、ShuffleNet的启发,作者的模块扩展了压缩ViT模型的特征通道,并将其分为两组,即Attended Group和Idle Group。在每个层中,Attended Group执行类似于传统ViT的自注意力计算,而在计算过程中,Idle Group保持不活跃。在每个层的末尾,使用通道Shuffle操作来交错两个特征通道组,并促进信息交换。这个模块作为一个即插即用的增强功能,可以改善小型ViTs的性能,而仅需稍微增加计算量。与此同时,作者的模块是通用的,可以应用于普通ViTs和分层ViTs。在本文中,作者选择DeiT和T2T-ViT作为普通ViTs的代表,选择Swin Transformer作为分层ViTs的代表。

此外,作者观察到,在层归一化之后,Idle通道可能与Attended通道相比具有不同的尺度,导致许多无关紧要的通道。为了解决这个问题,作者提出了一种简单的通道重新缩放优化方法,以缓解这个问题。大量的实验证明了作者的模块的有效性和高效性。

作者总结作者工作的主要贡献如下:

作者开发了一种高效的通道Shuffle模块,以增强小型ViTs,而仅需非常少量的额外计算,满足具有有限计算资源的环境。

作者的模块可以作为独立的即插即用组件,用于普通ViTs和分层ViTs。

作者引入了一种简单的通道重新缩放方法,以缓解Attended Group和Idle Group之间尺度不同的问题。

大量实验证明了作者提出的模块的高效性和有效性。据作者所知,这是第一项通过丰富通道级信息而保持计算复杂性的工作,改善了小型高效ViTs。

  1. 方法
    A. 预备知识
    传统的ViT首先将输入图像分成图像块(patches),然后通过线性投影将图像块映射为图像Token。这些Token作为后续计算的输入,使模型能够捕捉全局上下文信息。作者将第层的输入特征映射表示为,其中N和C分别是Token和特征通道的数量。每个ViT层由多头自注意力(MHSA)模块和前馈网络(FFN)模块组成。

对于MHSA模块,它将输入特征映射线性变换为三个矩阵,分别称为Key()、Query()和Key():
在这里插入图片描述

其中,和分别是相应的权重,省略了偏置项。接下来,它通过Key和Query之间的Softmax激活进行点积运算,计算注意力图:

在这里插入图片描述

其中是K的维度,通常与通道维度C相同。注意力图反映了每对Token之间的相似性。最后,MHSA计算出带有残差连接的注意力输出:
在这里插入图片描述

其中是可学习的权重。在MHSA模块之后,使用两层多层感知器(MLP)作为FFN模块来自激活每个Token:

在这里插入图片描述

其中和是两个可学习的投影权重,是通道扩展比例,是第层ViT的输出,省略了偏置项。此外,ViT引入了预模块层归一化(LN)在特征映射上,以提高训练时间和泛化性能。

B. 通道Shuffle模块
图1提供了作者提出的通道Shuffle模块的概述,旨在增强小型ViT模型的能力。为了提高特征表示能力,作者首先在Token嵌入阶段将输入特征映射的特征通道数量加倍,得到。在第层中,特征映射被沿着特征通道维度分为两组,即Attended Group 和Idle Group 。Attended Group仅占据一半的通道并参与本层的计算,导致关注输出。相反,Idle Group保持其余一半的通道,直到本层结束,以便。在第层的末尾,这两组被连接在一起,如下所示:
在这里插入图片描述

其中是第层的输出。最后,作者对应用通道Shuffle,以强制信息在这两组之间进行交换。

C. 通道重新缩放
作者已经发现了与MHSA和FFN模块中使用的残差连接[36]相关的一个潜在问题,它可能导致Xi Attn +1和Xi Idle +1之间的尺度差异显著。这种差异可能导致在特别是在深层中的层归一化之后出现许多无关紧要的值。为了解决这个问题,作者为Xi Attn +1设计了一种通道重新缩放方法。具体而言,作者修改了方程3和4中描述的Transformer层如下:

在这里插入图片描述

其中

是两个可学习的系数。作者可以使用这个简单的修改来使作者的模块自动控制Attended Group中特征表示的尺度。

D. 计算复杂性分析
首先,作者比较了普通ViT和配备了作者提出的模块的小型ViT的理论计算复杂性,假设两个模型具有相等数量的总特征通道。对于普通ViT,每层的计算复杂性可以表示为:

在这里插入图片描述

其中N、C和分别表示Token的数量、特征通道和MLP的扩展比例。另一方面,配备了作者的通道Shuffle模块的小型ViT的计算复杂性为:

值得注意的是,作者的Shuffle模块的计算复杂性明显小于普通ViT的计算复杂性。因此,考虑具有相等数量的总特征通道的模型,即具有相似的特征表示能力,作者提出的模块在计算上更高效,适用于资源有限的设备上部署。

此外,作者分析了配备通道Shuffle模块的小型ViT模型与不带该模块的整体计算复杂性。由于Idle Group不参与计算,作者模块每层的计算复杂性增加仅来自通道重新缩放,即NC。因此,层上的总计算复杂性增加为。

此外,作者的模块在Token嵌入阶段将通道数量加倍,导致额外的次计算,其中代表图像块的大小。此外,在最后一层,作者的模块引入了额外的次计算,其中表示类别数量。

因此,总的计算复杂性增加为,与整体计算复杂性相比相对较小。以DeiTTiny为例,总的计算复杂性约为1.25GMACs,而作者的通道Shuffle模块带来的额外计算复杂性仅为0.03GMACs,约占总计算复杂性的2%。

E. 即插即用模块
这个模块的一个重要贡献是它可以解决小型ViT模型性能下降的问题。通道Shuffle模块可以轻松地集成到小型ViT中,而不需要对Backbone架构进行重大修改。如图1所示,Idle Group不参与计算,这使得将模块应用于不同变体的ViT架构变得简单。
在这里插入图片描述

当将通道Shuffle模块集成到普通ViT中时,在图像Token嵌入阶段,特征通道的数量会加倍,然后在整个网络中保持不变。然而,在分层ViTs中,计算复杂性可以与下采样层中的特征通道数量的平方成正比。作者的通道Shuffle模块可能会导致计算量显著增加。

以Swin Transformer为例,完全连接的下采样层的计算复杂性为。但是,如果在通道Shuffle模块中将特征通道加倍,下采样的计算复杂性将增加到每个下采样层的。

为了解决这个问题,在将通道Shuffle模块应用于分层ViTs时,作者对Attended Group和Idle Group执行单独的下采样操作,以防止在分层ViTs中引入过多的计算负担。

  1. 实验
    3.1. 主要结果
    在这里插入图片描述

表II提供了在精度、参数数量和计算复杂性方面纯自注意模型与作者的通道Shuffle模块的比较。结果清楚地显示,通道Shuffle模块显著提升了小型ViT在分类任务中的性能,将准确性提高了2.2∼3.0%,而计算开销并未显著增加。

以DeiT-Tiny为例,Shuffle版本在保持与原始版本等效的计算成本的情况下,提高了2.2%的top-1准确性。至于Swin-ExtraTiny,由于作者去掉了一个层,Shuffle版本(1.0GMACs)比未Shuffle版本(1.1GMACs)运行更快,top-1准确性提高了3.0%。这些结果突显了作者简单而强大的设计模块的有效性和通用性。

在这里插入图片描述

表III提供了作者的通道Shuffle模块、其他高效CNN、ViT和混合模型之间的全面比较。首先,作者的通道Shuffle模块在模型复杂性和准确性之间的权衡方面始终优于所有其他纯ViT模型,突显了作者模块的有效性。其次,与将卷积和自注意相结合的混合模型相比,作者的模块取得了可比较甚至更好的性能。

例如,在相同的模型复杂性为1.1GMACs的情况下,具备通道Shuffle模块的Swin-ExtraTiny优于EdgeNeXt-XS约2.8%。这个结果展示了高效的纯自注意力网络的潜力。然而,值得注意的是,与面向移动设备的CNN相比,基于自注意力的网络在实现相同性能时仍然显示出较低的效率。

3.2. 特征通道分析
通道Shuffle模块在增强小型ViT模型表示图像特征的能力方面起到了关键作用。即使一半的通道不活跃地参与Transformer层的计算,它们仍然具有两个重要的功能:在层之间传播梯度和丰富可用的图像特征。

在这里插入图片描述

为了验证这一观点,作者在图2中可视化并比较了关于Shuffle和Vanilla Swin-ExtraTiny的四个阶段的特征通道分布。作者使用t-分布随机邻居嵌入(t-SNE)进行降维。在图2(a)中,很明显,早期阶段的通道数量较少(例如Swin-ExtraTiny的48个通道和Shuffle Swin-ExtraTiny的96个通道),Shuffle模型(橙色)显示出比未Shuffle的模型(蓝色)更多样化的分布。这表明Shuffle模型在早期阶段从作者的模块中获益,通过在早期阶段融入更丰富的信息。

然而,随着模型进入更深层次并且特征通道数量增加,Shuffle和未Shuffle模型之间的分布方差变得不那么明显,如图2©和2(d)所示。作者认为这是为什么作者的通道Shuffle模块可以改善小型ViT模型性能的主要原因。然而,作者还指出,随着模型规模的增加,该模块的改进会减小。较大的ViT模型已经拥有足够的特征通道来有效地表示图像,而过大的通道甚至可能产生负面影响。

例如,Shuffle Swin-Ti(28.8M,4.3G MACs)的准确性仅略高于其Vanilla版本(28.8M,4.5G MACs)的80.8%。作者认为该模块对于缺乏特征表示的小型模型最有益。随着模型规模的增加,当模型的特征表示变得更加复杂时,该模块的影响消失。

3.3. 消融研究
作者在通道Shuffle模块中提出了两个关键组件:独立的通道Shuffle过程和通道重新缩放。在本节中,作者进行割离研究以评估这两个设计选择的影响。
在这里插入图片描述

通道Shuffle
表IV表明,如果不进行重新缩放,仅仅将通道Shuffle模块集成到视觉Transformer中,性能会略有改善。这是因为当特征通道数量较小时,通道Shuffle过程可能会引入更不平衡的特征。尽管性能略有提升,但仅采用通道Shuffle模块仍有助于提高准确性。

通道重新缩放
表IV强调了通道重新缩放在该模块中的重要性,因为它改进了通道Shuffle的结果。例如,具有通道重新缩放的Shuffle SwinExtra Tiny模型超越了原始版本和不缩放版本,分别提高了3.0%和2.0%的top-1准确性。

参考
ShuffleNet v2. Plug’n Play Channel Shuffle Module for Enhancing Tiny Vision Transformers.

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

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

相关文章

KOSMOS系列

Overview 总览摘要1 引言2 KOSMOS-2.52.1 Model Architecture2.1 Image and Text Representations2.3 Pre-training Data2.4 Data Processing2.5 Filtering and Quality Control 3 Experiments3.1 Evaluation3.2 Implementation Details3.3 Results3.4 Discussion 4 Related Wo…

车载多源融合定位

终端硬件由两部分组成,组合导航处理板和地磁导航处理板。 组合导航处理板负责采集加速度计、陀螺、GNSS和轮速计等数据进行组合导航解算,差分数据通过6Q主板获取到后通过串口发送至组合导航处理板。地磁导航处理板负责地磁数据采集,保存至数…

嵌入式实时操作系统的设计与开发 (启动过程学习)

b Reset; b Undef; b SWI; b PreAbort; b DataAbort; b . ;保留 b IRQ; b FIQ;建立异常向量表的过程,其中第一个指令通常都是存放在主存的零地址的。 异常向量表存放的全是汇编跳转指令,这些指令从主存的零地址(0x0)开始连续存储在…

Ubuntu下vscode dotNet downloading的问题(Cmake代码高亮)

问题描述:使用Cmake Language Support插件需要安装dotnet的支持库,我原本已经使用apt的方式安装了,但是进入vscode依旧要我下载。尝试按网上的方法修改为我指定的路径: "dotnetAcquisitionExtension.existingDotnetPath&quo…

Vsftp安装配置(超详细版)

目录 1 FTP、Vsftp介绍 1.1 FTP介绍 1.2 Vsftp介绍 1.3 Vsftp的登录类型 2 Vsftp安装配置 2.1 更换源 2.2 安装epel源 2.3 安装Vsftpd及相关依赖 2.4 vsftpd配置文件说明 2.5 vsftpd 配置详解 2.6 备份配置文件 3 vsftpd 配置匿名用户 3.1 编辑配置文件 3.2 常用的匿名FTP配置…

传输层 | UDP协议、TCP协议

之前讲过的http与https都是应用层协议,当应用层协议将报文构建好之后就要将报文往下层传输层进行传递,而传输层就是负责将数据能够从发送端传到接收端。 再谈端口号 端口号(port)标识了一个主机上进行通信的不同的应用程序,在TCP/IP协议中&…

让你的服务器变成游戏世界:打造游戏化在线社区的“秘诀”

引言 假如我有一台服务器,我希望打造一款游戏化的在线社区。那么,如何打造这样一个社区程序并成功运营呢?让我们一起来畅想吧! 一、确定社区的主题和目标群体 打造一款游戏化的在线社区,首先,我们需要明确…

【Android 性能优化:内存篇】——WebView 内存泄露治理

背景:笔者在公司项目中优化内存泄露时发现WebView 相关的内存泄露问题非常经典,一个 Fragment 页面使用的 WebView 有多条泄露路径,故记录下。 Fragment、Activity 使用WebView不释放 项目中一个Fragment 使用 Webview,在 Fragm…

区块链(12):java区块链项目之集群部署

选择3台服务器进行区块链项目部署 1 nginx部署页面 1.1 部署静态页面 1.2 nginx 反向代理的配置 修改nginx.conf文件 nginx 默认端口是http 80或者https443 将80代理到8080 location /blockchain {proxy_pass http://localhost:8080/blockchain;proxy_redirect default; …

深度学习-卷积神经网络

文章目录 应用卷积神经网络卷积处理分类问题 应用 图片分类图片检索图片分割图片风格迁移姿态估计OCR等 卷积神经网络 核概念计算机视觉中处理图片的核大小是通过经验得来的,而深度学习中的权重大小是自己学习出的。卷积VS神经网络:一个是局部观察一个…

进阶JAVA篇- LocalDate 类与 LocalTime 类、LocalDateTime 类的常用API(六)

目录 API 1.0 LocalDate 类与 LocalTime 类、LocalDateTime 类的API说明 1.1 如何创建LocalDate 类与 LocalTime 类、LocalDateTime 类的对象 1.2 LocalDate 类与 LocalTime 类、LocalDateTime 类中的以 get 开头实例方法 1.3 LocalDateTime 类中的 toLocalDat…

【Android】VirtualDisplay创建流程及原理

Android VirtualDisplay创建流程及原理 Android DisplayManager提供了createVirtualDisplay接口,用于创建虚拟屏。虚拟屏可用于录屏(网上很多资料说这个功能),分屏幕(比如一块很长的屏幕,通过虚拟屏分出不…

Windows服务器安装php+mysql环境的经验分享

php mysql环境 下载IIS Php Mysql环境集成包,集成包下载地址: 1、Windows Server 2008 一键安装Web环境包 x64 适用64位操作系统服务器:下载地址:链接: https://pan.baidu.com/s/1MMOOLGll4D7Eb5tBrdTQZw 提取码: btnx 2、Windows Server 2008 一键安装Web环境包 32 适…

【开篇】汇编语言之基础知识篇

文章目录 📋前言一. ⛳️机器语言二. ⛳️汇编语言的产生三. ⛳️汇编语言的组成四. ⛳️存储器五. ⛳️指令和数据六. ⛳️存储单元七. ⛳️CPU 对存储器的读写7.1 地址总线7.2 数据总线7.3 控制总线 📝总结 📋前言 🏠 个人主页&…

OOA/D 时统一过程(UP)中的 迭代、 进化 和 敏捷

一、迭代和进化式开发的优势 相对于顺序或“瀑布”软件开发模型,迭代和进化式开发(iterative and evolutionary development )对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常会还没有详细定义所有需求的情况下假…

阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享

今天,由云原生计算基金会 CNCF 主办的 KubeConCloudNativeConOpenSourceSummit China 2023 主论坛在上海举办。阿里云容器服务负责人易立在主论坛发表演讲,介绍阿里云为大模型提供的基础设施能力,以及通过云原生 AI 的方式助力大模型普惠提效…

【Eclipse】设置自动提示

前言: eclipse默认有个快捷键:alt /就可以弹出自动提示,但是这样也太麻烦啦!每次都需要手动按这个快捷键,下面给大家介绍的是:如何设置敲的过程中就会出现自动提示的教程! 先按路线找到需要的页…

[计算机提升] 用户和用户组

1.1 用户和用户组 1.1.1 用户 用户账户是计算机操作系统中用于标识和管理用户身份的概念。 每个用户都拥有一个唯一的用户账户,该账户包含用户的登录名、密码和其他与用户身份相关的信息。 用户账户通常用于验证用户身份,并授权对系统资源的访问权限。…

Ourphp建站系统存在SQL注入

查询用户 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任…

时间显示相关

显示当前的时间 显示当前的年份 date %Y date %y 显示当前的月 date %m 显示当前的日 date %d 显示小时 date %H 显示分钟 date %M 显示秒 date %S 组合显示 date …