快速傅里叶卷积.
- paper:Fast Fourier Convolution
0. TL; DR
本文介绍了一种新型的卷积算子——Fast Fourier Convolution(FFC)。传统的卷积操作在深度神经网络中通常具有局部性和固定尺度的特性,导致其在连接网络中两个遥远位置时效率较低。FFC通过利用傅里叶变换的频谱卷积定理,实现了非局部感受野和跨尺度融合。它将局部卷积、半全局频谱堆叠图像块处理以及全局图像级频谱操作封装在一个操作单元中,能够直接替换现有的普通卷积,且在多个视觉任务上均取得了显著的性能提升。
1. 背景介绍
深度神经网络在计算机视觉领域取得了巨大的成功,尤其是卷积神经网络(CNNs)。然而,传统的卷积操作存在一些局限性:它们通常具有较小的感受野(如3×3卷积核),并且只能局部地处理图像信息。这种局部性在处理一些需要全局上下文的任务(如人体姿态估计)时显得不足。此外,CNNs通常采用链式拓扑结构,不同层次的特征抽象之间缺乏有效的信息融合。近年来,研究者们开始探索如何扩大卷积的感受野(如可变形卷积和非局部神经网络)以及如何实现跨尺度特征融合(如特征金字塔网络FPN和高分辨率网络HRNet)。
本文提出的Fast Fourier Convolution(FFC)旨在通过傅里叶变换的频谱理论,设计一种能够同时实现非局部感受野和跨尺度融合的卷积操作。FFC的核心思想是利用傅里叶变换的全局性,使得频谱域中的点更新能够影响所有输入特征,从而实现非局部的感受野。此外,FFC还通过多分支聚合步骤实现了跨尺度信息的融合。
2. 方法介绍
FFC的整体架构如图1所示,它由两条相互连接的路径组成:一条是空间(局部)路径,负责在输入特征的部分通道上执行普通卷积;另一条是频谱(全局)路径,负责在频谱域中操作。这两条路径能够捕捉不同感受野的互补信息,并在内部进行信息交换。
假设输入特征图 $X \in \mathbb{R}^{H \times W \times C}$,其中 $H \times W$ 表示空间分辨率,$C$ 表示通道数。在FFC的入口处,输入特征图 $X$ 沿通道维度被分为两部分:局部部分 $X_l \in \mathbb{R}^{H \times W \times (1-\alpha_{in})C}$ 和全局部分 $X_g \in \mathbb{R}^{H \times W \times \alpha_{in}C}$。其中,$\alpha_{in} \in [0, 1]$ 表示分配给全局部分的通道比例。输出张量 $Y \in \mathbb{R}^{H \times W \times C}$ 也按照相同的方式分为局部和全局两部分,且全局部分的比例由超参数 $\alpha_{out} \in [0, 1]$ 控制。FFC内部的更新过程可以表示为以下公式:
\[Y^l = Y^{l \rightarrow l} + Y^{g \rightarrow l} = f_l(X^l) + f_{g \rightarrow l}(X^g) \\ Y^g = Y^{g \rightarrow g} + Y^{l \rightarrow g} = f_g(X^g) + f_{l \rightarrow g}(X^l)\]其中,$Y_{l \rightarrow l}$ 通过普通卷积捕捉小尺度信息;$Y_{g \rightarrow l}$ 和 $Y_{l \rightarrow g}$ 通过跨路径转换实现多尺度感受野;而 $Y_{g \rightarrow g}$ 通过频谱变换器 $f_g$ 实现全局感受野。
频谱变换器 $f_g$ 的目标是以高效的方式将卷积的感受野扩展到输入特征图的全分辨率。为此本文采用了离散傅里叶变换(DFT),并通过Cooley-Tukey算法加速计算(FFT)。频谱变换器 $f_g$ 由傅里叶单元和局部傅里叶单元组成。
Fourier Unit (FU)的主要功能是将原始空间特征转换到频谱域,在频谱域中进行全局更新,然后将数据转换回空间格式。由于傅里叶变换涉及复数运算,因此必须确保FU的输入和输出都是实数,以便与其他神经模块兼容。当对实信号应用2D快速傅里叶变换(FFT)时,结果是一个厄米特矩阵,具有共轭对称性。利用这一特性,可以确保输出张量为实数。
FU的伪代码如图所示。在实际计算中,只保留FFT结果的一半,并通过共轭对称性恢复另一半。为了便于计算,将虚部附加到实部,形成一个额外的维度。在频谱域中,可以自定义一系列新的层,例如频谱1×1卷积、批量归一化和ReLU激活函数。最终,通过逆2D FFT操作将结果转换回实数。
Local Fourier Unit (LFU)的设计目标是捕捉和传播局部信息(例如输入特征图左上角的判别性纹理模式)。LFU的结构如图所示,其与FU的主要区别在于一个额外的分割和拼接步骤,该步骤将空间维度减半,生成四个较小的特征图。然后对堆叠的特征图应用标准FU。受时间偏移模块(TSM)的启发,FU的结果通过空间偏移和复制,完全恢复到原始分辨率和通道数。
FFC在设计上与普通卷积具有良好的兼容性。由于 $f_l$、$f_{g \rightarrow l}$ 和 $f_{l \rightarrow g}$ 均基于普通卷积实现,它们自然继承了普通卷积的属性,例如卷积核大小、步幅和通道分组等。对于频谱变换器 $f_g$,由于频谱域中的操作具有全局感受野,因此其卷积核大小始终固定为1。
此外,当需要模拟普通卷积的下采样行为(即卷积步幅大于1)时,本文采用平均池化代替通道减少步骤,以近似实现下采样。通过这种方式,FFC可以无缝插入大多数现有的卷积神经网络中,而无需额外修改。
下表比较了FFC和普通卷积的参数数量和浮点运算次数(FLOPs)。由于FFT和逆FFT是无参数操作,且其时间复杂度相对于其他计算成本可以忽略不计(例如 $O(CHW \log(HW))$),因此在表中未考虑其复杂度。从表可以看出,FFC的复杂度与普通卷积相当。特别是在需要大卷积核时,FFC的频谱变换器 $f_g$ 仍然可以使用1×1卷积核实现全局感受野,这使得FFC在处理大感受野任务时具有显著优势。
3. 实验分析
3.1 图像分类实验
实验表明,全局路径可以显著提升模型性能,且仅需增加少量的FLOPs和参数。下表展示了在不同比例 $\alpha$ 下的性能对比。当 $\alpha = 0.5$ 时,模型达到了最佳性能,表明局部和全局路径之间取得了良好的平衡。在后续实验中,作者选择 $\alpha = 0.25$,以在性能和复杂度之间取得较好的折衷。
FU和LFU在不同尺度上操作,实验结果表明它们可以相互补充。下表显示了在不同 $\alpha$ 下,使用LFU对性能的提升。尽管LFU带来的性能提升较为有限,但它确实能够进一步提高模型的性能。
此外,实验还验证了跨路径转换的重要性。在移除全局到局部(global-to-local)或局部到全局(local-to-global)的融合路径后,模型的准确率分别下降至76.6%和76.2%。这表明跨尺度融合对于模型性能至关重要。
FFC可以轻松替换多种现代CNN架构中的普通卷积,且在不同网络中均能显著提升性能。下表展示了在不同网络中应用FFC的效果。例如,FFC-ResNet-50的性能比ResNet-101高出0.4%,但参数数量仅为后者的60%。这表明FFC通过引入非局部感受野,显著减少了达到高准确率所需的网络深度。
3.2 视频动作分类实验
在视频动作分类任务中,FFC同样表现出色。实验选择了Kinetics-400数据集,并以ResNet-50为骨干网络,将关键卷积层替换为3D-FFC。下表展示了实验结果。与C2D基线模型相比,使用FFC的模型准确率从71.9%提升至73.5%,且计算量和参数数量均少于将2D卷积扩展为3D卷积的I3D模型。此外,FFC与非局部块(Non-Local Block)结合使用时,能够进一步提升性能,表明FFC与现有方法具有良好的互补性。
3.3 人体关键点检测实验
人体关键点检测任务需要更精细的特征定位,因此是测试局部与非局部感受野融合效果的良好场景。实验在Microsoft COCO数据集上进行,采用SimpleBaseline作为基础模型。下表展示了实验结果。FFC在所有实验设置下均优于最近提出的SRL-FFT方法。特别是对于ResNet-50模型,FFC带来的性能提升最为显著。此外,FFC在输入图像分辨率较高时表现出色,表明其能够有效结合局部和全局信息,从而提高关键点检测的准确性。