【S2-MLP】核心方法解读

news2024/10/12 11:28:40

abstract:

近年来,visual Transformer (ViT)及其后续工作抛弃了卷积,利用自关注运算,达到了与CNN相当甚至更高的准确率。最近,MLP-mixer放弃了卷积和自关注操作,提出了一个只包含MLP层的体系结构。为了实现交叉拼接通信,在信道混合MLP的基础上,设计了一个额外的令牌混合MLP。

在JFT-300M等超大规模数据集上进行训练时,取得了令人满意的效果。但是在中等规模的数据集(如ImageNet-1K)上训练时,它无法达到与CNN和ViT同行一样出色的性能。令牌混合MLP的性能下降促使我们重新思考token混合MLP。我们发现MLP-mixer中的令牌混合操作是具有全局接收场和特定空间配置的深度卷积的一种变体。

在本文中,我们提出了一种新的纯MLP架构,空间移位MLP (S2 -MLP)。与MLP混频器不同,我们的s2 -MLP只包含通道混频器MLP。我们设计了一种空间移位操作来实现补丁之间的通信。它有一个局部接收场,是空间不可知论的。同时,该方法无参数,计算效率高。在ImageNet1K数据集上训练时,所提出的S2 -MLP比MLP-mixer具有更高的识别精度。同时,S2 -MLP在ImageNet-1K数据集上实现了与ViT一样出色的性能,其架构更简单,FLOPs和参数更少。

intro:

近年来,卷积神经网络(convolutional neural networks, CNN)[23,14]在计算机视觉领域取得了巨大成功。最近,受Transformer[41]在自然语言处理中的成功启发,人们提出了vision Transformer (ViT)[9]。它用Transformer中的自关注操作代替CNN中的卷积操作,对图像不同空间位置的局部patch之间的视觉关系进行建模。ViT及其后续工作[38,46,42,28,13,44,39]已经取得了与cnn相当甚至更好的性能。与CNN需要细致的卷积核设计相比,ViT堆叠了几个标准Transformer块,减少了手工操作,减少了归纳偏差。

最近,MLP-mixer[36]提出了一种更简单的替代方案,完全基于多层感知器(MLP),以进一步减少归纳偏差。MLPmixer的基本模块由两个部分组成:通道混合MLP和令牌混合MLP。信道混合MLP将特征映射沿信道维度进行投影,从而实现不同信道之间的通信。同时,token混合维度沿着空间维度投射特征映射,利用空间位置之间的通信。在JFT-300M等超大规模数据集上进行训练[33]时,MLP-mixer获得了很好的识别精度。但在ImageNet-1K和ImageNet21K等中等规模数据集上训练时,MLP-mixer与ViT的准确率仍有差距[8]。具体来说,Mixer-Base-16[36]在ImageNet-1K上的top-1准确率仅为76.44%,而viti - base -16[9]的top-1准确率为79.67%。

MLP-mixer在ImageNet-1K上的不理想性能促使我们重新思考混合令牌MLP。给定矩阵形式的N个patch特征,X = [x1,···,xN],令牌混合MLP进行XW,其中W∈R N×M为权矩阵。很容易观察到,token混合MLP的输出XW的每一列都是patch特征(X中的列)的加权求和,求和中的权重可以看作是Transformer中的关注点。但是Transformer中的自关注依赖于数据,而token混合MLP中求和的权重与输入无关。在某种程度上,加权求和更像深度卷积[5,19,20]。而深度卷积只有局部接收场。相比之下,token混合MLP具有一个全局接收域。此外,深度卷积核在不同位置之间是共享的,而token混合MLP的求和权值在不同位置是不同的。该方法不受局部接收场的限制和空间不可知约束,具有更强的拟合能力和灵活性。但是,不打破链条的自由伴随着失去空间不变的性质。

在这项工作中,我们提出了一种空间移位MLP (S2 -MLP)架构,这是一种概念上简单的架构,仅包含信道混合MLP。为了实现空间位置之间的通信,我们采用了一种无参数且计算效率高的空间移位操作。同时,空间转移是空间不可知论的,同时保持一个局部的接收场。图1展示了S2 -MLP的架构。它将图像裁剪成w×h不重叠的小块。对于每个patch,通过全连通层获得路径嵌入。wh补丁进一步通过S2 -MLP块堆栈进行特征提取。每个S2 -MLP块包含四个完全连接的层。每个S2 -MLP块中使用的全连接层与MLP-mixer中使用的通道混合MLP具有相同的功能。但是我们的S2 -MLP不需要令牌混合MLP。

通过提出的空间移位模块实现不同的空间位置。它是无参数的,只是将通道从一个补丁转移到相邻的补丁。尽管空间移位模块只支持相邻块之间的通信,但堆叠一系列S2 -MLP块使远程通信成为可能。

S2 -MLP的架构简单而优雅。在同等规模的参数和FLOPs下,该方法在ImageNet1K数据集上的识别精度明显高于MLP-mixer。同时,该方法在ImageNet1K数据集上的识别精度与ViT相当,且结构更简单,参数更少,FLOPs更少。


提出的空间移位多层感知(S2 -MLP)模型的结构。从图像中裁剪的非重叠块是模型的输入。它们通过一堆s2 -MLP块,这些块通过全局平均池化进一步聚合成单个特征向量。之后,将特征向量馈送到全连接层中用于预测标签。一个s2 -MLP块包含四个全连接层、两个GELU层[15]、两个层归一化[1]、两个跳过连接[14]和一个空间移位模块。提出的空间移位模块将c通道分成若干组。然后它将不同的通道组向不同的方向移动。


related work:

基于transformer的视觉模型:略

基于mlp的视觉模型:MLP- mixer[36]提出了一个完全基于MLP层的概念和技术上简单的架构。为了对空间位置之间的通信建模,提出了一种令牌混合MLP。尽管MLP-Mixer在大规模数据集JFT-300M上训练时取得了令人鼓舞的结果,但在包括ImageNet-1K和ImageNet-21K在内的中等规模数据集上训练时,它不如其视觉Transformer同类。FF[30]采用了类似的架构,但继承了ViT的位置嵌入。Res-MLP[37]也设计了一个纯MLP结构,提出了一种仿射变换层,便于大量MLP块的叠加。Res-MLP使用比MLP-mixer更深的架构,实现了比MLP-mixer更高的精度和与ViT相当的识别精度。gMLP[27]设计了门控操作来增强空间位置之间的通信,实现了与DeiT相当的识别精度。EA[12]通过从训练数据中学习到的外部记忆,将自注意模块替换为外部注意模块。它是由两个线性层的级联实现的。CCS-MLP[45]重新思考了令牌混合MLP的设计,提出了一种通道特定的循环令牌混合MLP。更先进的作品[25,3,18,32]采用分层金字塔来增强代表能力。

method:

预先要知道的:

空间移动MLP结构:

空间移动MLP主干网由一个面向patch的全连接层,N个s2MLP block和一个用于分类的全连接层组成。

本文提出的空间移位操作与Shift[43]、4-connected Shift[2]和TSM[26]密切相关。我们的空间移位操作可以看作是没有原点元素信息的特殊版本的4-Connected Shift。与fc- shiffc结构中的4连通移位残差块[2]不同,我们的S2 -MLP块,如图1所示,需要另外两个完全连通的层,仅用于混合fc-shift-fc结构之后的channel。此外,4-connected移位残差网络在早期层利用卷积,而我们的网络采用纯mlp结构。

全连接层:

表示图像,均匀分割为W×H块个patch,对于每一个Pi,我们将其展开成一个向量并通过一个全连通层将其投影成一个嵌入向量ei,然后进行层归一化:其中是全连接层的参数,并且LN是层归一化。

S2-MLP block:

我们的结构堆叠了N个相同尺寸和结构的s2-MLP,每一个空间位移块包含了四个全连接层,两个层归一化和两个激活函数GELU,两个跳跃连接,和一个先前的空间位移块。

值得注意的是,S2 -MLP中使用的所有全连接层仅用于混合通道。我们在MLPmixer中不使用令牌混合MLP。由于全连接层是众所周知的,并且我们已经在上面介绍了层归一化和GELU,因此我们在这里只关注提出的空间移位模块。

Group:

我们沿通道维度均匀分裂T,得到g个更薄的张量,其中T τ∈。值得注意的是,组的数量g取决于第二步中移动方向的设计。例如,默认情况下,我们只沿四个方向移动,因此在此配置中g被设置为4。

空间位移操作:

对于第一组通道t1,我们沿宽方向移动+1。同时,我们将第二组通道t2沿宽维移动- 1。同样,我们将t3沿高度移动+1,将t4沿高度移动- 1。

空间移位运算的公式演示了伪代码

可以看到,这里就是将输入划分成四个不同的分组,各自沿着不同的轴向(H和W轴)偏移,由于实现的原因,在边界部分会有重复值出现。分组依赖于方向的数量,这里默认使用4,即4个方向偏移。

虽然从单个空间偏移模块上来看,仅仅关联了相邻的 patch,但是从整体堆叠后的结构来看,可以实现一个近似的长距离交互过程。

上述的空间位移方式是最直接的移位方式之一,我们也评估了其他移位方式,令人惊讶的是,上述简单的方式取得了优异的成绩。

使用空间位移操作,我们不再需要token mixing作为mlp mixer,我们只需要channel mixing沿着通道维度投影patch特征,注意,单个块中的空间移位操作只能从相邻块中获得视觉内容,不能访问图像中所有块的视觉内容。但是我们N个堆叠的s2-MLP,全局的视觉内容就会扩散到每个patch上。

与深度卷积的关系: 

介绍深度卷积:

给定一个定义为张量的,深度卷积在张量上的每个二维切片可分离地使用二维卷积核Ki,其中i是1到c,深度卷积计算量成本低,广泛应用于高效神经网络的快速推理

关系:

提出的空间偏移是受到TSM中提出的时间偏移的启发[26]。它最初用于建模相邻帧之间的时间关系,它沿着时间维度移动通道。

在这项工作中,我们将其扩展到二维空间场景。实际上,空间移位操作等于具有固定和特定于组的核权值的深度卷积。设一组深度卷积核为K = {K1,···,Kc}。如果我们设置

基于核群K的深度卷积相当于我们的空间移位操作。

实际上,四个方向的偏移都可以通过特定的卷积核构造来实现

所以分组空间偏移操作可以通过为 Depthwise Convolution 的不同分组指定对应上面的卷积核来实现。

也就是说,我们的空间移位操作是深度卷积的一种变体,具有上面定义的固定权重。

同时,空间移位操作在每组信道内共享核权重。正如我们在介绍中提到的,MLP-mixer中的令牌混合MLP是一个全局接收和特定于空间的深度卷积。同时,与我们的空间移位和普通深度卷积相比,在特定的空间位置,token混合中求和的权重是跨通道共享的。相比之下,香草深度卷积对不同的通道学习不同的卷积核,我们的空间移位操作在组内共享权值,并对不同的组采用不同的权值。换句话说,我们的空间移位操作和MLPmixer中的令牌混合MLP都是深度卷积的变体。我们在表1中总结了它们之间的关系和差异。

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

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

相关文章

漏洞挖掘 | 通过错误日志实现XXE外带

介绍 在最近的一个项目中,我发现了一个与 XML 外部实体(XXE)攻击相关的重大安全问题。 本文讲述了我在项目中发现并利用 XXE 漏洞的过程,特别是通过一种非传统的方式——利用 Java 异常在日志文件中输出攻击结果。 什么是XXE&a…

基于STM32的太阳跟踪系统设计

引言 本项目设计了一个基于STM32的太阳跟踪系统,通过光敏传感器阵列实时检测太阳位置,并控制电机驱动太阳能板或光伏板跟随太阳移动,从而最大化太阳能的利用效率。该系统使用双轴运动控制,实现水平和垂直方向的精确跟踪&#xff…

【Java】类型转换与类型提升

目录 1.类型转换 1.1自动类型转换(隐式) 1.2强制类型转化(显式) 2.类型提升 3.字符串类型 1.类型转换 Java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有教严格的校验. 在Java中,当参与运算数…

[单master节点k8s部署]36.ingress 配置https(三)

目前我们的tomcat服务在浏览器上通过http来访问。为了提升安全性,我们将配置TLS secret 证书,从而可以进行https访问。 一对TLS密钥包括一个证书(trs.crt)和一个私钥,证书是公钥证书,用于加密数据并标识服…

气膜滑冰馆的现实意义:冰雪运动的全民普及—轻空间

气膜滑冰馆的出现不仅是城市发展中的一项基础设施建设,更代表着冰雪运动的逐步普及和全民健身理念的深入人心。在过去,许多地方的冰上运动资源相对匮乏,而如今,气膜滑冰馆通过其独特的优势,弥补了这一空白,…

Fleet Command

边缘计算 文章目录 前言一、边缘创造一个更快速、更智能、联系更紧密的世界二、优势边缘计算的优势1. 降低延迟2. 提高可靠性3. 降低成本4. 更广的覆盖范围三、创新借助 NVIDIA 实现边缘创新1. 企业边缘计算2. 工业边缘 AI3. 机器人和边缘 AI4. 构建面向 AI 时代的应用5. 边缘生…

C++——反向迭代器

1.回顾 template<class T> struct __list_iterator {typedef list_node<T> Node;typedef __list_iterator<T> self;Node* _node;__list_iterator(Node* node):_node(node){}self& operator(){_node _node->_next;return *this;}T& operator*(){…

C# 删除插入-列表排序字典

C# 删除插入-列表排序字典 测试文件 using System; using System.Collections; using System.Collections.Generic;using

五、Linux之Vi和Vim编辑器

基本介绍 Vi Linux 系统会内置 vi 文本编辑 Vim 具有程序编辑的能力&#xff0c;可以看做是 Vi 的增强版本&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。 代码补完、编译及错误跳转等方便编程的功能特别丰富 常用的三种模式 正常模式 以 vim …

如何将 html 渲染后的节点传递给后端?

问题 现在我有一个动态的 html 节点&#xff0c;我想用 vue 渲染后&#xff0c;传递给后端保存 思路 本来想给html的&#xff0c;发现样式是个问题 在一个是打印成pdf&#xff0c;然后上传&#xff0c;这个操作就变多了 最后的思路是通过 html2canvas 转化成 canvas 然后变成…

鸿蒙--WaterFlow 实现商城首页

目录结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ ├──constants │ │ │ └──CommonConstants.ets // 公共常量类 │ │ └──utils │ │ └──Logger.ets // 日志打印类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口…

TypeScript 中命名空间与模块的理解及区别

文章目录 一、模块&#xff08;Modules&#xff09;示例 二、命名空间&#xff08;Namespaces&#xff09;示例 三、区别 一、模块&#xff08;Modules&#xff09; 在 TypeScript 中&#xff0c;任何包含顶级 import 或 export 声明的文件都被视为一个模块。模块的特点是它有…

未来的电影:人机环境生态系统智能

本文摘自《影视产业研究》2024年10月创刊号 摘要: 随着人工智能的快速发展&#xff0c;未来的电影得到了广泛关注。通过对未来电影相关研究提供了一种将人机环境系统智能与影游结合的方式来解决未来电影的瓶颈问题&#xff0c;并从态势感知相关研究角度进行了研究。鉴于此&…

阿里云等联合编写的《2024大模型典型示范应用案例集》(附PDF分享)

这份大模型案例集资料已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 2024 年是大模型深入赋能千行百业&#xff0c;融入实体经济&#xff0c;助力科技创新的一年。截至今年5月&#xff0c;我国国产大模型的数量已经超过…

taozige/基于Java语言的充电桩平台+充电桩系统+充电桩管理系统+充电桩系统源码+充电桩管理后台+充电桩小程序

简述 SpringBoot 框架&#xff0c;充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5新能源汽车电动自行车公交车-四轮车充电充电源代码充电平台源码Java源码无加密项目 介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充…

Python人脸识别实战——基于Dlib和OpenCV的人脸识别与关键点检测(附完整代码和结果图)

Python人脸识别实战——基于Dlib和OpenCV的人脸识别与关键点检测&#xff08;附完整代码和结果图&#xff09; 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0…

基于FPGA的以太网设计(一)

以太网简介 以太网&#xff08;Ethernet&#xff09;是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准&#xff0c;它规定了包括物理层的连线、电子信号和介质访问控制的内容。以太网是目前应用最普遍的局域网技术&#xff0c;取代了其他局域网标准如…

在线深度学习:爱奇艺效果广告分钟级模型优化

01# 背景 在效果广告投放场景中&#xff0c;媒体侧需要准确衡量每次请求的价值&#xff0c;模型预估值在广告竞价中扮演着核心角色。模型预估精度的提升&#xff0c;是改善媒体侧变现效率、提升广告收益的核心技术驱动力。 此前&#xff0c;爱奇艺效果广告预估模型为小时级模型…

爬虫设计思考之二

“所谓爬虫,其本质是一种计算机程序,它的行为看起来就像是蜘蛛在网上面爬行一样,顺着互联网这个“网”,一条线一条线地“爬行”。 一、认识爬虫 爬虫这个词对于非专业人士比较的陌生&#xff0c;但是实际却和我们的生活息息相关。例如我们国内经常使用的百度浏览器搜索&#x…

Qt-系统处理鼠标相关事件(57)

目录 使用 按下事件 释放事件 双击事件 移动事件 滚轮事件 使用 按下事件 实现下面的功能 鼠标在此处点击&#xff0c;就可以获取鼠标位置 添加函数 提升函数 手册中找到这个函数的原型 重写该函数 定义 重写 这里有一个细节需要注意&#xff0c;因为这里的标准点击…