0

写在前面

随着ResMLP、MLP-Mixer等文章的提出,基于MLP的backbone重新回到了CV领域。在图像识别方面,基于MLP的结构具有较少的假设偏置,但是依旧能够达到与CNN和Vision Transformer相当的性能。

其中 spatial-shift MLP(S2-MLP)采用了空间移位操作,因此达到了比ResMLP、MLP-Mixer更好的性能。近期,采用了更小的patch和金字塔结构的Vision Permutator (ViP)和Global Filter Network (GFNet) 在性能上又一次超越了S2-MLP。

因此,作者基于S2-MLP,沿着通道维度拓展了特征的维度,并将特征按通道维度分成了多组,每组进行不同的空间移位操作,最后再采用split-attention将这些特征融合起来。

此外,与其他工作一样,作者也采用了更小尺度的patch和金字塔结构来提高图像识别精度。在55M参数 下,作者提出的S2-MLPv2-Medium能够在ImageNet上达到83.6% 的性能(不适用额外的数据预训练,输入图片大小为224x224)。

1

论文和代码地址

S²-MLPv2: Improved Spatial-Shift MLP Architecture for Vision

论文:https://arxiv.org/abs/2108.01072

代码:未开源

2

Motivation

近年来,研究者们在更少的假设偏置下实现更高的性能(主要包括Vision Transformer结构和基于MLP的结构)。Vision Transformer模型堆叠了一系列Transformer块,实现了全局感知的效果。MLP-based方法通过MLP将不同patch的信息进行投影,实现不同patch的信息交互,这也是一种全局的信息交互。

为了使得原始的S2-MLP达到更高的性能,S2-MLP的作者重新对S2-MLP结构进行了改进,提出了S2-MLPv2。相比于S2-MLP,S2-MLPv2的改动主要有两个方面:

1)作者沿着通道维度拓展特征图,并将扩展的特征图分割为多个部分。对于不同的部分,作者进行不同的空间移位操作,以增加特征的多样性。最后,作者使用split-attention操作来融合这些分裂的部分。

2)借鉴现有的MLP架构(比如ViP,GFNet,Cycle-MLP等等),作者采用较小的patch和分层金字塔结构。

作者在ImageNet-1K上进行了实验,结果表明S2-MLPv2的图像识别精度达到了SOTA。在使用55M参数的情况下,作者提出的S2-MLPv2-Medium能够在ImageNet上达到83.6%的性能。

3

方法

3.1.  Spatial-Shift MLP (S2-MLP)

在介绍S2-MLPv2之前,首先回顾一下S2-MLP的做法。S2-MLP的结构如上图所示,主要有三部分组成:patch embedding、一系列S2-MLP block和classification head。

Patch embedding layer

这一步和ViT一样,首先将W × H × 3大小的图像裁剪成w × h个patch。每个patch的大小为p × p × 3, p =W/w =H/h。然后通过全连通层将每个patch映射为一个d维向量。

Spatial-shift MLP block

如上图所示,Spatial-shift MLP block由4个用于混合通道的MLP层和一个用于spatial shift的mixing patch。

spatial-shift层的输入为一个w x h x c的特征X,首先X在通道维度上被均分为了四份,然后对每一份分别做四个不同方向(长、宽的正、负方向)的shift操作,用公式表示如下(其实就是沿不同方向偏移一个单位的距离):

S2-MLP 的N个spatial-shift MLP块采用了相同的设置,并且没有像GFNet那样采用金字塔结构。

Split Attention

ViP[1]中采用了ResNest中提出的Split Attention来将不同操作之后的feature map进行融合。具体实现上,对于给定的K个nxc的特征图























(其中n是patch的数量,c是通道数量),Split Attention首先K个特征图空间的信息进行了求和,计算如下:

这里的








就是一个长度为n,内容全部为1的向量(将

















进行点乘,其实就是








空间的信息进行求和 ),得到的








就是 c维的向量。

接着,将








送入到MLP中,得到:

因为















分别为




















的矩阵,所以













是一个大小为Kc的向量。将













reshape成一个






的矩阵:

然后在K这个维度上进行Softmax(这样就相当于得到K这个维度上的Attention Map):

最后将这个Attention Map与K个X进行相乘,得到attention之后的特征:

3.2. S2-MLPv2

与S2-MLP Backbone类似,S2-MLPv2由patch embedding、一系列S2-MLPv2 block和classification head组成。因此与S2-MLP相比,S2-MLPv2的主要不同之处就是在S2-MLPv2 block。

S2-MLPv2 Block

S2-MLPv2模块由两部分组成,也就是S2-MLPv2和 channel-mixing MLP (CM-MLP)组件。给定输入映射X,S2-MLPv2会执行下面的操作:

这里的channel-mixing MLP 和MLP-Mixer(如下图所示)的实现是一样的。

因此,本文的最大不同之处就是在S2-MLPv2(算法流程如下图所示)。

对于输入的特征X,S2-MLPv2首先会把特征在通道维度上拓展为原来的3倍,表示如下:

然后将这拓展之后的特征X分为三组:

对前两组















分别用























两种转换方式进行spatial-shift,























这两种转换方式是非对称的,表示如下:

























因为























是非对称的结构,所以它们在信息上可以互相补充。对于







,作者没有做任何的平移操作。

接下来,作者将三组特征进行聚合,聚合方式采用的是上面介绍的split attention:

然后将得到的特征送入到另一个MLP中进行特征的增强:

S2-MLPv2 module的代码如下所示:

Pyramid Structure

在本文中,作者还采用了两层金字塔结构来提性能,为了能够与ViT进行公平的比较,作者采用了和ViP的相同的设置,如下表所示:

更小的patch可能更有利于捕捉细粒度的视觉特征,从而获得更高的识别精度,但是同时也会带来更大的计算资源消耗。

4

实验

4.1. 与MLP方法比较

上表展示了S2-MLPv2其他MLP结构在ImageNet上的性能对比。其中MLP-Mixer、ResMLP、gMLP、S2-MLP、CCS-MLP没有利用金字塔结构,因此与GFNet、AS-MLP、CycleMLP、ViP等结构相比,它们的识别精度并不是非常高。

在相似的计算量和参数量下,S2-MLPv2的性能都能够由于同类的MLP模型。

4.2. 与CNN和Transformer方法比较

如上表所示,在使用更少参数,但更多FLOPs的情况下,S2-MLPv2-Medium实现了与其它vision Transformer相当的精度。但是相比于需要Self-Attention的Vision Transformer结构,本文提出的结构就简单的多,并且使用了更少的参数。

4.3. 金字塔结构的影响

为了评估金字塔结构对提出的S2-MLPv2的影响,作者比较了Small/7设置和Small/14设置(配置如上表所示)。两者都与Vision Permutator相同。其中,Small/7中初始patch大小为7×7,Small/14中初始patch大小为14 × 14。

从直观上看,较小的Patch有利于对图像中的细粒度细节建模,有利于获得更高的识别精度。从上表可以看出,Small/7设置的性能确实比Small/14更好。

4.4.  split attention的影响

作者比较了用split attention和sum pooling的方式来聚合特征,可以看出split attention的方式确实比sum pooling要好,但同时参数量也增加了一点。

4.5. split的影响

在实验中,作者是把X分成了三组,分别做不同的变换,探究split的影响,作者用了不同组的特征进行了实验。可以看出,三组特征都用的时候效果是最好的。

5

总结

本文对S2-MLP模型进行了改进,提出了S2-MLPv2模型。将feature map进行扩展,并将扩展后的feature map分为多组。每组的feature map分别进行不同的偏移,然后将偏移后的特征用split attention进行聚合。

同时,作者利用层次金字塔来提高其建模细粒度细节的能力,以获得更高的识别精度。使用55M参数,S2-MLPv2-Medium模型在ImageNet1K数据集上取得了83.6%的top-1精度,这是基于mlp方法的SOTA性能。同时,与基于Transformer的方法相比,S2-MLPv2模型在不需要Self-Attention的情况下,参数更少,但达到了相当的精度。

相比于现有的MLP的结构,S2-MLP的一个重要优势是,不管图像的输入是什么尺寸,S2-MLP的形状是不变的。因此,经过特定尺度图像预训练的S2-MLP模型可以很好地应用于具有不同尺寸输入图像的下游任务。

参考文献

[1]. Qibin Hou, Zihang Jiang, Li Y uan, Ming-Ming Cheng, Shuicheng Y an, and Jiashi Feng. Vision permutator: A permutable mlp-like architecture for visual recognition. arXiv preprint arXiv:2106.12368, 2021

作者简介

厦门大学人工智能系20级硕士

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎:努力努力再努力

公众号:FightingCV

备注:综合

计算机视觉交流群

图像分割、姿态估计、智能驾驶、超分辨率、自监督、无监督、等最新资讯,若已为CV君其他账号好友请直接私信。

在看,让更多人看到  

S2-MLPV2:目前最强的视觉MLP架构,空降榜一,达到83.6% Top-1准确率相关推荐

  1. 华为诺亚北大提出新视觉 MLP 架构,性能超越Swin (附代码下载)

    来源:计算机视觉研究院 来自华为诺亚方舟实验室.北京大学.悉尼大学的研究者提出了一种受量子力学启发的视觉 MLP 新架构. 近年来,计算机视觉领域的新型架构层出不穷,包括视觉 Transformer. ...

  2. ViP解读:视觉MLP结构新作

    最近的一篇新的视觉MLP方面的工作,天津大学程明明组参与其中,通过充分利用2D特征图的位置信息设计的一个MLP结构ViP(Vision Permutator),获得了相当不错的性能. 简介 论文提出一 ...

  3. 【计算机视觉】最强 Zero-Shot 视觉应用:Grounding DINO + Segment Anything + Stable Diffusion

    文章目录 一.前言 二.功能介绍 2.1 功能一 2.2 功能二 2.3 其他有趣的功能 三.总结 一.前言 用 Midjourney 花一个小时做的项目 logo 图: 解释一下 logo 的含义: ...

  4. CV之后,纯MLP架构又来搞NLP了,性能媲美预训练大模型

    视学算法报道 编辑:陈萍.小舟 搞不起大模型,试一下超高性能的纯 MLP 架构? 去年来自谷歌大脑的研究团队在网络架构设计方面挖出新坑,提出 MLP-Mixer ,这是一个纯 MLP 构建的视觉架构. ...

  5. 一文梳理视觉Transformer架构进展:与CNN相比,ViT赢在哪儿?

    来源:机器之心 Transformer 近年来已成为视觉领域的新晋霸主,这个来自 NLP 领域的模型架构在 CV 领域有哪些具体应用?. Transformer 作为一种基于注意力的编码器 - 解码器 ...

  6. ge-to-Image Translat卡内基梅隆大学新作!基于MLP架构的Imaion

    点击下方"AI算法与图像处理",关注一下重磅干货,第一时间送达 CVPR2021 很多成果基于之前大火的transformer,但是由于transformer的计算量太大了,最近基 ...

  7. 2020年“3D视觉工坊”视频号最受欢迎视频 Top 10!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 2020年"3D视觉工坊"视频号最受欢迎视频 Top 10! 在过去的2020年, ...

  8. WWW 2022 | 弯道超车:基于纯MLP架构的序列推荐模型

    ©作者 | 于辉,周昆 来源 | RUC AI Box 本文主要提出了一个基于纯 MLP 架构的序列化推荐模型,其通过可学习滤波器对用户序列进行编码,在 8 个序列化推荐数据集上超越了 Transfo ...

  9. NBA最强的状元:詹姆斯上榜,他保持了20年的稳定

    我们都知道,NBA的选秀前三顺位分别是状元,榜眼和探花,选秀顺位高不见得就一定会成长为超级巨星,但是代表着在进入NBA之前这个球员的篮球天赋究竟如何.在低顺位可以创造传奇的不是没有,科比,纳什,库里等 ...

最新文章

  1. 设计模式(二) 模板方法
  2. 属性篇(3)—If you love css …
  3. ubuntu安装gcc和g++
  4. 单机:Oracle单机数据库一键安装(11GR2/12C/18C/19C/21C)
  5. 双ip的oracle集群该怎么连接,如何配置电信联通双线双IP接入
  6. Java job interview:Linux操作系统的应用(红帽子)分析经验
  7. react全家桶介绍
  8. emlog mysql 设置_EMLOG模板自定义首页
  9. java中继承内部类的方法_Java自学-接口与继承 内部类
  10. [算法入门笔记] 18. 动态规划
  11. 数字图像处理--第六章彩色图像处理基础
  12. 百度地图整合离线和使用
  13. iOS 中将数据导出成Excel文件 ---- libxlsxwriter框架
  14. 简谈 Intel altera 和 Xilinx 的 FPGA 区别
  15. Unity 2D精灵分割图片注意事项
  16. jdbc+servlet+jsp来写个mysql分页案例
  17. PHP 环境搭建(win7+php5.6+apache或nginx)
  18. ERP术语解释及SAP模块介绍
  19. 【R】随机模拟计算定积分
  20. PTA第一章作业1--数据结构基本概念 顺序表基本操作

热门文章

  1. 个人学习机器学习笔记--
  2. 交换两幅图像的幅度谱和相位谱,并重构图像
  3. 设置固定高度_防排烟系统的设置,前室、楼梯间、避难层!设置要求全记住!...
  4. Vmware 连接局域网通过桥接方式
  5. Circular buffer
  6. 交叉编译docker_端侧推理引擎Tengine初识:安卓平台交叉编译并跑通MobileNetV1
  7. android导入导出txt通讯录,Android导入导出txt通讯录工具
  8. oracle 查看等待事务,ORACLE 等待事务查询语句
  9. 5个数中取三个数组合 不重复 php,PHP产生不重复随机数的5个方法总结
  10. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】