标题&作者团队
本文是清华大学周杰团队在MLP方面的探索,不用现有MLP方案在空域进行token间信息交换,提出了一种全局滤波器方案在频域进行token间信息交换。受益于FFT的
log-linear
计算复杂度,GFNet可以设计成分层架构形式,能够更高分辨率作为起点,比如
。虽然这篇文章的指标对比最新的VOLO、ViP等不算高,不过它为相关架构设计提供了一个非常不错的思路,值得学习。
近期Transformer与MLP模型的发展证明了其具有以更少的归纳偏置取得更佳性能的潜力,这些模型往往基于从原始数据学习空间位置上相关性。然而,这些自注意力与MLP的计算复杂度会随图像尺寸迅速增长,这使得这些方法难以满足高分辨率特征需求。
在本文中,我们提出了全局滤波器网络(Global Filter Network, GFNet),一种概念简单且计算高效的架构,它在频域以log-linear
复杂度学习长距离空间依赖。所提架构通过如下三个关键操作替代ViT中的自注意力层:
所提方案在ImageNet以以及下游任务上表现出了非常有力的精度-复杂度均衡。相比Transformer与CNN模型,所提方案在高效性、泛化性以及鲁棒性方面极具竞争力。
在正式介绍之前,我们简单介绍一点关于傅里叶变换的基础知识。
离散傅里叶变换(DFT)在数字信号处理领域起着非常重要的作用。我们以1D DFT为例进行介绍。给定长度为N的序列
,1D DFT通过如下公式将其转换到频域:
注:
表示序列
的频谱。
此外,值得注意的是:DFT是一对一变换。因此,给定DFT
,我们可以通过如下公式进行原始信号
重建:
DFT在现代信号处理算法中得到了广泛应用,主要由以下两个原因:
上图给出了本文所提方案整体架构示意图,它是一种类似ViT、DeiT的架构,即仅通过PatchEmbedding进行空间尺寸下降,然后通过多个核心模块进行处理,最后后接线性分类层进行分类。
所提方案的输入尺寸为
并进行非重叠块拆分与线性投影得到维度D的词。GFNet的核心模块包含两部分:
Global Filter Layer 我们提出了全局滤波器层作为自注意力层之外的选择:在频域进行空间信息交互。给定词
,我们首先采用2DFFT变换将其变换到频域:
然后,我们再采用可学习滤波器
进行调制:
注:这里的滤波器
由于具有与X相同的维度而被称之为全局滤波器。最后,我们采用逆FFT将调制信号变换回空间并更新词:
上述核心部分的实现伪代码如下,就是这么的简单。
X = rfft2(x, dim=(1, 2))
X_tilde = X * K
x = irfft2(X_tilde, dim=(1, 2))
Architecture variants 考虑到自注意力与MLP的高计算复杂度问题,现有ViT、MLP采用快速降低分辨率的方式,即初始的PatchEmbedding尺寸非常大,比如
。然而,GFNet的的计算复杂度为log-linear
,可以避免上述问题。因此,我们可以以更高分辨率(比如
)的特征作为起点,然后逐渐下采样。在这篇文章中,我们主要探索了两种形式的GFNet,即Transformer风格与CNN风格。
为验证所提方案的有效性,我们在ImageNet分类以及下游任务(语义分割)上进行了对比分析。
上表给出了Transformer风格架构的性能对比,从中可以看到:
上表对比了分层架构的信息对比,从中可以看到:受益于log-linear
复杂度,GFNet-H取得了比ResNet、RegNet、PVT等更高的性能;取得了与Swin相当的精度,但具有更简单更广义设计。
上表对比了所提方案在不同数据集上的迁移能力,从中可以看到:所提方法具有更佳的迁移能力。比如,GFNet显著优于ResMLP,同时具有比EfficientNet-B7相当的性能。
上表对比了所提方法在ADE20K语义分割数据上的性能对比,从中可以看到:所提方案在该任务上表现非常好,在不同复杂度方面取得了与其他模型(比如ResNet、PVT、Swin)相当甚至更好的性能。