谷歌提出纯 MLP 构成的视觉架构,无需卷积、注意力 !
来源 | 迈微AI研习社
责编 | 寇雪芹
头图 | 下载于视觉中国
当前,卷积神经网络(CNN)和基于自注意力的网络(如近来大火的 ViT)是计算机视觉领域的主流选择,但研究人员没有停止探索视觉网络架构的脚步。近日,来自谷歌大脑的研究团队(原 ViT 团队)提出了一种舍弃卷积和自注意力且完全使用多层感知机(MLP)的视觉网络架构,在设计上非常简单,并且在 ImageNet 数据集上实现了媲美 CNN 和 ViT 的性能表现。
计算机视觉的发展史证明,规模更大的数据集加上更强的计算能力往往能够促成范式转变。虽然卷积神经网络已经成为计算机视觉领域的标准,但最近一段时间,基于自注意力层的替代方法 Vision Transformer(ViT)实现新的 SOTA 性能。从技术上讲,ViT 模型延续了长久以来去除模型中手工构建特征和归纳偏置的趋势,并进一步依赖基于原始数据的学习。
近日,原 ViT 团队提出了一种不使用卷积或自注意力的 MLP-Mixer 架构(简称 Mixer),这是一种颇具竞争力并且在概念和技术上都非常简单的替代方案。
Mixer 架构完全基于在空间位置或特征通道重复利用的多层感知机(MLP),并且仅依赖于基础矩阵乘法运算、数据布局变换(如 reshape 和 transposition)和非线性层。
论文地址:https://arxiv.org/pdf/2105.01601.pdf
项目地址:https://github.com/google-research/vision_transformer/tree/linen
结果表明,虽然 Mixer 架构很简单,但取得了极具竞争力的结果。当在大型数据集(约 1 亿张图像)上进行预训练时,该架构在准确率 / 成本权衡方面能够媲美 CNN 和 ViT,实现了接近 SOTA 的性能,在 ImageNet 数据集上取得了 87.94% 的 top1 准确率。
对于该研究提出的 Mixer 架构,特斯拉 AI 高级总监 Andrej Karpathy 认为:「很好!1×1 卷积通常利用深度卷积实现堆叠或交替,但在这里,通道或空间混合得到简化或者实现完全对称。」
另一用户表示:「CV 领域网络架构的演变从 MLP 到 CNN 到 Transformer 再回到 MLP,真是太有意思了。」
不过,谷歌 DeepMind 首席科学家 Oriol Vinyals 也提出了质疑,他认为:「per-patch 全连接,那不就是卷积吗」
那就先来看一下MLP-Mixer这个新框架吧,它不使用卷积或自注意力机制。相反,Mixer体系架构完全基于在空间位置或特征通道上重复应用的多层感知器(MLP),它只依赖基础的矩阵乘法操作、数据排布变换(比如reshape、transposition)以及非线性层。
下图展示了MLP-Mixer的整体结构:
首先,它的输入是一系列图像块的线性投影(其形状为patches x channels),其次,Mixer使用两种类型的MLP层:
1、通道混合MLP(channel-mixing MLPs ):用于不同通道之间进行通信,允许对每个token独立操作,即采用每一行作为输入。
2、token混合MLP(The token-mixing MLPs ):用于不同空间位置(token)之间的通信;允许在每个通道上独立操作,即采用每一列作为输入。
以上两种类型的MLP层交替执行以实现两个输入维度的交互。
在极端情况下,MLP-Mixer架构可以看作一个特殊的CNN,它使用1×1通道混合的卷积,全感受域的单通道深度卷积以及token混合的参数共享。典型的CNN不是混合器的特例,卷积也比MLPs中的普通矩阵乘法更复杂(它需要额外的成本来减少矩阵乘法或专门实现)不过,尽管它很简单,MLP-Mixer还是取得了很不错的结果。
当对大型数据集进行预训练时(大约100万张图片),它达到了之前CNNs和Transformers在ImageNet上的最佳性能:87.94%的 top-1 验证准确率。当对1-10万张图片大小的数据集进行预训练时,结合现代正则化技术( regularization techniques),Mixer同样取得了强大的性能。
Mixer 混合器架构
一般来讲,当今深度视觉体系结构采用三种方式进行特征混合:
(i)在给定的空间位置;
(ii)不同的空间位置之间;
(iii)将上述两种方式组合。
在CNNs中,(ii)是采用N× N进行卷积和池化,其中N>1;(i)采用1×1卷积;较大的核则同时执行(i)和(ii)。通常更深层次的神经元有更大的感受野。
在Transformer和其他注意力架构中,自注意力层允许同时执行(i)和(ii),而MLP只执行(i)。Mixer架构背后的思想是:通过MLP实现每个通道混合操作(i)和 token混合操作(ii)的显著分离。
在上图体系架构中,Mixer将序列长度为S的非重叠的图像块作为输入,每个图像块都投影到所需的隐层维度C,并产生一个二维实值输入X∈ RS×C。如果原始图像的分辨率为(H x W),每个图像块的分辨率为(P x P),那么图像块的数量则为S=HW/P2。所有的块都采用相同的投影矩阵进行线性投影。
Mixer由等尺寸的多层组成,每层有两个MLP块。第一个是token mixing MLP块:它作用于X的列,从RS映射到R S,可在所有列中共享。第二个是Channel-mixing MLP块:它作用于X的行,从Rc映射到 R C,可在所有行中共享。每个MLP块包含两个全连接层和一个独立于输入的非线性层。其基本方程如下:
图中,Ds Dc分别代表token-mixing与channel-mixing MLP中隐层宽度。由于Ds的选择独立于输入图像块的数量,因此,网络的计算复杂度与输入块的数量成线性关系;此外,Dc独立于块尺寸,整体计算量与图像的像素数成线性关系,这类似于CNN。
如上文所说,相同的通道混合MLP(或令牌混合MLP)应用于X的每一行和列,在每一层内绑定通道混合MLP的参数都是一种自然选择,它提供了位置不变性,这是卷积的一个显著特征。
不过,跨通道绑定参数的情况在CNN中并不常见。例如CNN中可分离卷积,将不同的卷积核独立应用于每个通道。而Mixer中的token 混合MLP可以对所有通道共享相同的核(即获得完全感受野)。通常来讲,当增加隐层维数C或序列长度S时,这种参数绑定可以避免体系架构增长过快,并且节省内存。令人没想到的是,这种绑定机制并没有影响性能。
Mixer中的每个层(除了初始块投影层)接收相同大小的输入。这种“各向同性”设计最类似于使用固定宽度的Transformer和RNN。这与大多数CNN不同,CNN具有金字塔结构:越深的层具有更低的分辨率,更多的通道。需要注意的是,以上是典型的设计,除此之外也存在其他组合,例如各向同性网状结构和金字塔状VIT。除了MLP层之外,Mixer还使用了其他标准的体系结构组件:Skip 连接和层规范化。
此外,与ViTs不同,Mixer不使用位置嵌入,因为token混合mlp对输入token的顺序敏感,因此可以学习表示位置。最后,Mixer使用一个标准的分类head和一个线性分类器。
更多实验结果和代码
该研究用实验对 MLP-Mixer 模型的性能进行了评估。其中,模型在中大规模数据集上进行预训练,采用一系列中小型下游分类任务,并对以下三个问题进行重点研究:
在下游任务上的准确率;
预训练的总计算成本,这对于在上游数据集上从头开始训练模型非常重要;
推断时的吞吐量,这在实际应用中非常重要。
该研究的实验目的不是展示 SOTA 结果,而在于表明:一个简单的基于 MLP 的模型就可以取得与当前最佳的 CNN、基于注意力的模型相媲美的性能。
下表 1 列出了 Mixer 模型的各种配置以对标一些最新的 SOTA CNN 和基于注意力的模型:
下表 2 给出了最大 Mixer 模型与 SOTA 模型的性能对比结果:
当在 ImageNet-21k 上进行带有额外正则化的预训练时,Mixer 实现了非常好的性能(ImageNet 上 84.15% top-1),略低于其他模型。当上游数据集的大小增加时,Mixer 的性能显著提高。具体来说,Mixer-H/14 在 ImageNet 上取得了 87.94% top-1 的准确率,比 BiT-ResNet152x4 高 0.5%,比 ViT-H/14 低 0.5%。值得一提的是,Mixer-H/14 的运行速度要比 ViT-H/14 快 2.5 倍,比 BiT 快 2 倍。
图 2(左)展示了表 2 中 SOTA 模型在 ImageNet 数据集上的准确率、训练成本帕累托前沿(Pareto frontier):
下表展示了在多种模型和预训练是数据集规模上,Mixer 和其他一些模型的性能对比结果。
由上表可得,当在 ImageNet 上从头开始训练时, Mixer-B/16 取得了一个合理的 top-1 准确率 76.44%,这要比 ViT-B/16 低 3%。随着预训练数据集的增大,Mixer 的性能逐步提升。值得一提的是,在 JFT-300M 数据集上预训练、微调到 224 分辨率的 Mixer-H/14 取得了 86.32% 的准确率,比 ViT-H/14 仅低 0.3%,但运行速度是其 2.2 倍。
下图是原论文附带的代码,很简单,只有43行。
更多细节可参考论文原文。
更多精彩推荐无人机、IoT 设备都有漏洞?专访以色列老牌安全企业Check Point用 Python 实现隐身,我可以 | 文末福利AI 3D 传感器市场竞争白热化,中国掌握自主可控核心技术时不我待!小心!你家的 IoT 设备可能已成为僵尸网络“肉鸡”
点分享点收藏点点赞点在看
相关文章:

HttpApplication事件ASP.NET页面周期
学习吧少年........................... 修改中........... 当一次请求到达IIS 1、http.sys将请求发送到指定的应用程序池。 2、应用程序池再将请求交给池中的工作进程(w3wp.exe), 3、w3wp.exe根据请求URL的后缀,决定加载那个ISAP…

C#实现对象的Xml格式序列化及反序列化
要序列化的对象的类: [Serializable]public class Person{private string name;public string Name{get{return name;}set{namevalue;}}public string Sex;public int Age31;public Course[] Courses;public Person(){}public Person(string Name){nameName;Sex&qu…

outlook2010 打开总是提示“正在加载配置文件”
公司员工的电脑一打开OUTLOOK2010的时候,总是提示“正在加载配置文件”,要重新启动,还是无法打开,尝试了卸载和重装的方法也没有用.其实,只需下载一个windows search 4.0即可解决.转载于:https://blog.51cto.com/shidilun/1400227

腾讯云存储产品矩阵全面升级,发布三维生态战略
5月10日,腾讯云在北京举行存储产品战略发布会,发布了业界首款十微秒级的极速型云硬盘、业界首款突破百GB 吞吐的文件存储、以及业界首创能够10倍提升数据湖存储分析性能的对象存储三级加速器等新一代云存储产品矩阵。 同时,腾讯云还宣布将围…

围绕云计算 虚拟化技术又呈现新面貌
本文讲的是围绕云计算 虚拟化技术又呈现新面貌,【IT168 资讯】虚拟化技术的三项基本使命-即作为客户端技术,作为服务器技术和作为网络技术,如今正在围绕云计算理念相结合在一起。 起源于X86服务器的虚拟化技术已经快速扩展到存储和网络领域。…

C#字符串处理类
首先介绍一下常用的几个功能: Compare(str1,str2)——比较两个字符串 str1,str2的大小,如果大于返回正数,等于返回0,小于返回负数! IndexOf——定位字符串中第一次出现某个给定字符串的位置PadLeft和PadRight——在字…

linux严谨的telnet搭建并用防火墙开通与禁行
今天本打算练练防火墙iptables的东西,本想拿telnet的23号端口练手,没想到在敲实验的时候遇到了些曲折,经过一番努力,把本次实验过程生成文档。实验环境:rhel5.6及系统盘实验目的:通过iptables对telnet服务2…

孩子、老人与海豚,如何用 AI 伴他们走出孤独
“万里归来颜愈少。微笑。笑时犹带岭梅香。试问岭南应不好。却道。此心安处是吾乡。”苏轼的一首《定风波》道出老人心愿,道出人生百态,也道尽世间炎凉。当你走出万里,无论天涯或是海角,每个人的身上都带着自己独有的印记。这份印…

Linux之 手动释放内存
我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode)。它们的定义如下: 所谓"文件", 就是按一定的形式存储在介质上的信息,所以一个文件其实包含了两方面的信息,一是存储的数据本身,二是有关该文…

C#操作Excel导入导出
前些日子,有很多朋友说需要C#导出到Excel的代码,现共享给大家 /// <summary> /// 读取Excel文档 /// </summary> /// <param name"Path">文件名称</param> /// <returns>返回一个数据集</returns> …

中国安全态势越来越好,专访山石网科CSO蒋东毅 | 拟合
从无序中寻找踪迹,从眼前事探索未来。2021 年正值黄金十年新开端,CSDN 以中立技术社区专业、客观的角度,深度探讨中国前沿 IT 技术演进,推出年度重磅企划栏目——「拟合」,通过对话企业技术高管大咖,跟踪报…

《大数据、小数据、无数据:网络世界的数据学术》一 导读
前 言‖ 在“大数据”风靡的当代,学术研究中的“小数据”依旧不容小觑。随着绝对数据量的增加,学者们进行个体研究的能力却不断退化。因为他们从未距离研究对象如此遥远。新工具和新视角成为学术研究的必需品。但相对于“小数据”而言,“大…

UIView旋转角度
2019独角兽企业重金招聘Python工程师标准>>> 最近做一个视图的旋转、放大、拖动、拉伸,其他的都慢慢解决了,就是旋转之后各种问题不好处理,最终归结到旋转角度的不能获取,纠结了好几天,终于找到了获取旋转角…

生成静态文件的新闻系统核心代码
在网上看了许多能生成静态页的新闻系统,但基于asp.net的系统极少,闲下时间来自己写了一个,发出来,大家一起研究,代码没做什么优化,只是实现了功能 using System;using System.Collections;using System.Com…

「软件」2.0时代已经到来,你需要这样的开发工具
互联网催生了软件的繁荣,而在AI浪潮的推动下,软件正在朝着更「智能」的方向发展,也就是「软件2.0」时代。「软件2.0」其实就是神经网络,也就是这一波AI浪潮的基石。 在「软件1.0」时代,程序员用Java、Python、C等语言…

WF4 Beta,RC版文章总结
Visual Studio 2010明天就要发布正式版了,伴随Visual Studio 2010的发布微软的新一代工作流框架Workflow Foundation 4也会正式发布。从Beta版开始就断断续续的开始关注了,并写了一些文章,今天总结下: WF4 Beta1的几篇文章&#x…

亚马逊云科技在中国区域上线机器学习新服务,打造广泛而深入的人工智能与机器学习工具集
2021年5月11日,在完全托管的机器学习服务Amazon SageMaker落地中国区域一周年之际,亚马逊云科技宣布通过与光环新网和西云数据的紧密合作在中国区域进一步落地多项人工智能与机器学习的新服务和功能,丰富了其针对不同企业需求而打造的人工智能…

mysql ERROR 1045
2019独角兽企业重金招聘Python工程师标准>>> C:\Program Files\MySQL\MySQL Server 5.0\bin> mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES) 编辑mysql配置文件my.ini(不知道在…

C#:将另一个应用程序的主窗口移至屏幕最前
2019独角兽企业重金招聘Python工程师标准>>> 使用WindowsAPI函数SwitchToThisWindow,可以将指定窗口移动到屏幕最前。 如果要将另一个应用程序的窗口移动到最前,只需要找到该窗口的句柄,再调用SwitchToThisWindow函数即可。可通过…

阿里技术文档:Redis+Nginx+Spring全家桶+Dubbo精选
最近花了很长的时间去搜罗整理Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好…

网页刷新方法集合
代码如下: <input typebutton value刷新 οnclick"history.go(0)"> 代码如下: <input typebutton value刷新 οnclick"location.reload()"> 代码如下: <input typebutton value刷新 οnclick"…

MOS管体二极管的作用
这里有两种解释: 1、mos管本身自带有寄生二极管,作用是防止VDD过压的情况下,烧坏mos管,因为在过压对MOS管造成破坏之前,二极管先反向击穿,将大电流直接到地,从而避免MOS管被烧坏。 2、防止管子的…

Complex Instance Placement
转自: https://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/complex-instance-placement.html This work is licensed under a Creative Commons Attribution 3.0 Unported License.http://creativecommons.org/licenses/by/3.0/…

在SecureCRT下使用sz下载和rz上传文件
之前通过FTP来下载Linux机器上的文件,在Windows编辑完后再上传,如此比较麻烦,刚听同事说用sz和rz命令可以实现在SecureCRT中上传下载。 配置上传下载目录:选择某个session 标签,点鼠标右键,弹出菜单…

开源的 6 条社会契约
作者 | Brett Cannon 译者 | 弯月 责编 | 欧阳姝黎出品 | CSDN(ID:CSDNnews)以下为译文:本文探讨一下关于开源用户权利的问题。我想指出一点,开源维护者不欠用户什么,而粗鲁地对待他们是一种不道德的行为…

理解linux tr命令
2019独角兽企业重金招聘Python工程师标准>>> 1. tr 命令的功能 tr命名是简化了的sed命令。其主要的功能包括: a. 用一个字符来替换另外一个字符。 b. 删除字符串中的指定子串。 c. 合并字符串中重复串。 2. 常见的命令格式: tr -c -d -s [&qu…

Lambda中的常用sql方法
1、Groupby 对集合进行分组,如: var dllList _menuMan.Load(c > c.TXT_ASSEMBLYNAME ! null).GroupBy(c>c.TXT_ASSEMBLYNAME).OrderByDescending(c>c.Count()).Select(c>c.Key).ToList(); 这里Goupby后面的OrderByDescending表示对每组数量…

刚发现的 Wi-Fi 安全漏洞,可能危及全球所有设备!
作者 | Carol出品 | CSDN(ID:CSDNnews)近日,纽约大学阿布扎比分校的安全研究员 Mathy Vanhoef (马蒂范霍夫)发现了一组可能会影响到数百万设备的 Wi-Fi漏洞。可怕的是,其中部分漏洞甚至可以追溯…

linux + ffmpeg + eclipse 调试
使用linux ffmpeg eclipse调试步骤OS : ubuntu 12.04Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c导入ffmpeg项目File —-> Import —-> c / c —-> Existing Code as Makefile Project 输入 Project Name, 选择ffmpeg所在目录, Toolchain选择Linu…

在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme)。接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉。通过改变主题的内容,而不用改…