【网络模型】Wave-MLP

Wave-MLP

An image patch is a wave:Quantum Insipired Vision MLP

Tang Y, Han K, Guo J, et al. An image patch is a wave: Phase-aware vision mlp[J]. arXiv preprint arXiv:2111.12294, 2021.

Abstract

这是一篇2022CVPR的文章,一般的MLP的输入与ViT中的类似,基本都是将图像或者特征切成patch来生成对应的token作为输入,一般的MLP方法都是采用fix weight来对不同的token进行融合,使用固定的权重可能会导致无法很好的去调节来自不同图像不同的语义信息,因此本文提出了根据输入进行动态聚合token的方法。借用量子力学wave function的幅度和相位的概念,作者提出了wave-MLP,本文将幅度直接定义为原始的特征,相位项通过复数形式进行表征,且相位项由输入图像进行动态的生成,引入相位项可以动态调节tokens与MLP fix weight之间的关系。(有点CNN中条件卷积的味道了)

keypoint

作者认为Vision MLP的瓶颈在于它的一个聚合特征的方式 通过固定权重的全连接层来融合不同的token,因为在Transformer中,可以通过使用注意力来调节权重,所以作者也想寻找方法能够对权重进行调节。

设计方法:

一般的MLP模型主要由 全连接非线性激活函数组成。对于vision MLP,一般是将图像分为多个patch(tokens),然后使用channel FC和token FC去提取他们的特征,对于d维n个tokens Z = [ z 1 , z 2 , . . . z n ] \Z=[z1,z2,…zn]Z =[z 1 ,z 2 ,…z n ],channel FC可以表示如下:

【网络模型】Wave-MLP
一般为了聚合不同tokens,因此也会有token FC操作:
【网络模型】Wave-MLP
j表示第j个输出token,Token FC操作可以通过融合不同的tokens来捕获空间信息。如果想对这两种融合方式更了解的话,可以看看MLP-Mixer,比较经典的一篇文章。

; Phase-Aware Token Mixing

为了动态的调节tokens和权重的关系,作者将每个token视为一个带有幅度和相位的wave function,wave function的表达式如下:

【网络模型】Wave-MLP
实际上和大学学的一些电路很多知识差不多,很多领域都有这种表达。这里面前面项表征幅度,后面项实际上是一个周期函数,而θ j \ \theta j θj表示相位用于表示当前token的位置,通过幅度和相位的组合表示,每个token都可以得到一个复数域的表达。

假设我们要对token z 1 z1 z 1以及z 2 z2 z 2进行融合,在这里为了更简单的叙述,假设他们的融合权重均为1,得到z r = z 1 + z 2 zr=z1 +z2 z r =z 1 +z 2的结果的幅度和相位可以计算如下:

【网络模型】Wave-MLP
对融合的一个更直观的图如下图所示:
【网络模型】Wave-MLP
左图所示就是两个token在复数域相加的形式(可以认为有点类似于两个向量的相加),右图是他们在不同相位(角度下)在实数轴的投影。可见,当两个token具有相同相位的时候,它们的结果是互相增强的,反相是互相削弱的,对于其他情形,它们融合后的结果增强还是削弱取决于相位差,可以看出以往MLP在实数域的表达只有同相和反相两种特殊类型。

Amplitude

对于幅度项,由上面的公式3可以看出,是实际上就是对一个实数域加绝对值的操作,但实际上,这种绝对值操作在复数域中可以通过修改相位来实现,所以去绝对值可以通过给相位加上一定的偏移如π \pi π来实现,作者在这里对token的幅度获取是通过对输入进行channel FC来获得,实际上就是原始获得的特征:

【网络模型】Wave-MLP

; Phase

相位在wave function中表示wave在某个阶段中所在的位置,如果用可学习的固定参数来表示相位信息的话,虽然能够区分同幅图像中不同的token(这样做有点类似于transfomer的位置编码),但忽略了不同输入图像的多样性。
为了捕获到每个不同的输入的信息,作者定义了一个估计模块来根据输入特征产生相应的相位信息:可以表示如下:

【网络模型】Wave-MLP
然后作者实现这个操作,也是直接用channel FC来生成这个相位。

Token aggreation:

具有wave function形式的token一般在复数域进行表示,为了进行更好的计算,可以使用欧拉公式对上述式子3进行展开得到:

【网络模型】Wave-MLP
因此一个复数域可以拆分为实部和虚部进行表示,然后不同的token可以通过token FC操作进行融合:
【网络模型】Wave-MLP
可以看出相位信息在动态的调节权重和token的关系,同时相位也作用于tokens的聚合过程,根据上述的做法,作者建立了一个PATM模块来执行上述token的聚合过程,如下图所示:

【网络模型】Wave-MLP
可以看出,给定输入的特征幅度和相位分别由channel FC来产生,然后将wave function形式的token用公式7进行展开实数虚数部分,然后聚合得到输出,模块的最后输出再使用一个Channel FC来增强表达能力。

; Wave MLP Block

从图上可以看出Wave MLP主要包含两种类型的Block,分别是token mixing和Channel-mixing MLP,其中Channel-Mixing MLP的实现通过堆叠两个channel-FC和非线性激活函数构成。token mixing则包含PATM模块用于聚合不同的tokens。
Token mixing MLP主要由两个并行的PATM模块组成,然后对他们的输出进行加权求和。为了解决不同图像可能具有不同的size问题(就是想减少计算量),作者对token Fc操作限制一个local window中进行,对tokens进行连接,除了两个并行的PATM,作者使用了额外的channel FC连接进行原始的信息的保留。
整个模型通过交替的堆叠token mixing,Channel FC和归一化构成。为了产生层级的特征,作者将整个模型分为四个stage,逐步减少图像的分辨率,增加通道数(常规操作)

Experiment

ImageNet分类:

基础模型的token-FC窗口设为7×7,模型的大小可以通过调节stage和窗口大小根据计算量和参数量进行设定,其中T*模型是将相位的产生从FC换成深度可分离卷积来代替。

【网络模型】Wave-MLP
然后将其作为检测主干网络,采用mask r-cnn的检测头也是获得不错的结果:
【网络模型】Wave-MLP
总的来说,从实验结果可以看出,MLP模型也能完爆Swin Transformer,不过对于这些模型通常需要采用更大的数据集以及更好的训练方法,emmmm当然也要有更好的卡!

; Ablation study

读文章更应该关注消融实现,消融实验是再T*模型上做的,首先是相位是否有用:

【网络模型】Wave-MLP
可以看出相位对性能的提升还是有必要的。
接着是生成相位的模型,作者对比了深度可分离卷积,channel FC和残差直接映射的做法:

【网络模型】Wave-MLP
此外也对比了聚合不同token的局部窗口的size,窗口太大对于图像来说未必有用:
【网络模型】Wave-MLP

总结

这篇文章针对了MLP中固定权重的问题无法针对不同语义的输入,提出了Wave-MLP,并获得了优于Swin的性能,在摩尔定律的趋势下,未来的模型或许会由CNN向MLP进行发展,Transformer在某种意义上其实也是MLP的一种变体,只不过Transformer能够利用attention的形式进行计算,对MLP的研究相信未来或许是视觉里面的一个大方向。

Original: https://blog.csdn.net/qq_42129459/article/details/123947499
Author: 小飞龙飞飞飞
Title: 【网络模型】Wave-MLP

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/533006/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球