当前位置: 代码迷 >> 综合 >> 【MeatFormer】MetaFormer is Actually What You Need for Vision
  详细解决方案

【MeatFormer】MetaFormer is Actually What You Need for Vision

热度:33   发布时间:2023-12-15 12:33:16.0

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

代码: https://github.com/sail-sg/poolformer


首先,看到这个文章的名字,就知道它肯定跟attention和transform有关,经典文章:attention is all your  need在脑海中飘过。。。

1.论文主要贡献

本文主要有两个创贡献,一个式提出了一种MeatFormer结构,另一个式成功将MeatFormer应用于图像分类、目标检测、语义分割等任务中。

2.网络结构

 左图第一列是MeatFormer的网络,作者认为transformer最核心的地方就是token mixer,在不同transformer中,token mixer的表现形式不尽相同,有的是attention,有的是空间MLP,而本文的poolformer是用一个pooling 层来实现token mixer的作用。右图是token mixer在ImageNet-1K上的验证集表现。

2.1MeatFormer

 首先,将输入影像送入input embedding层,于ViT类似,然后将结果送入两个MeatFormer模块中。

 2.2PoolFormer

 纵观各种transformer大法,他们大量的工作都集中在设计各种基于注意机机制的token mixer模块中,而作者认为这些类似于MLP模型的transformer的成功都得益于MetaFormer结构,为了验证这个想法,作者设计了简单的pooling层作为token mixer,这个操作没有任何可学习参数,而且他只是每个token 都平均融合它附近的token 特征。

假设输入是维度的,那么pooling操作可以表示为:

 K为pooling size。


self-attention和空间MLP会由于token的数量而导致计算复杂度较大,而且,MLP在处理长序列时会带来更多的可学习参数,因此,self-attention和空间MLP智能处理几百个长度的tokens,而pooling操作的计算复杂度和token的长度时线性关系,且没有可学习参数。整个PoolFormer的结构如下图所示。 

pool操作的伪代码如下图:

 从图二可以看到pool操作可以减小图像的尺寸,从Pooling 操作的公式就可以看出。

直观的看,不容易看出这个pooling的关系,我们假设K=3*3,i=j=1 

T_{:,1,1}^{'}=(\frac{1}{3*3}T_{:,0,0}+T_{:,0,1}+T_{:,0,2}+T_{:,1,0}+T_{:,1,1}+T_{:,1,2}+T_{:,2,0}+T_{:,2,1}+T_{:,2,2})-T_{:,1,1}

即就是,对每个token临近的K*K个块中的token进行均值化处理,再减去原始token值,得到每个token的残差,这里有点不是很理解作者为什么要减去原始的token值,有理解的童鞋欢迎留言交流。从伪代码中也能看出最后一步就是减去了原始token值。

还有一个细节,就是本文的pooling操作本身没有改变图像的尺寸,因为它不是将K*K个token处理成一个token,这是与正常卷积神经网络的pooling层不一样的地方,从伪代码里可以看出,pooling的stride=1,也就是每次根据K*K个邻域更新中间的token值,迭代完整个token矩阵,就相当于更新了token矩阵,不会改变尺寸,但是从图2中又能看到每个stage之后,图像的尺寸不断缩小,每次缩小为原来的1/2,这是为啥呢?答案在下面这个表里。

 从上面这个表格可以看到:

stage1:patch_size=7*7,stride=4,尺寸从H*W ---> H/4 *W/4

stage2:patch_size=3*3,stride=2,尺寸从H/4 *W/4 ---> H/8 *W/8

stage3:patch_size=3*3,stride=2,尺寸从H/8 *W/8 ---> H/16 *W/16

stage4:patch_size=3*3,stride=2,尺寸从H/16 *W/16 ---> H/32 *W/32

哦,恍然大悟,原来是在patch embedding的时候改变了尺寸,pooling没有改变尺寸。

3.实验

话不多说,直接从精度和计算量上感受压迫感十足的PoolFormer吧!

3.1图像分类

3.2目标检测

 

3.3语义分割

 整理不易,欢迎一键三连!!!

  相关解决方案