Wave-ViT: Unifying Wavelet and Transformersfor Visual Representation Learning ——ECCV
遇到的问题,目前vit人脸溯源方向表现不如resnet,考虑是不是频率方面丢失,于是观看文献
目录
小波自注意力模块架构 (Wavelets Block)
(c) 与 (d) 的对比:传统卷积 vs 小波卷积过程
与前者对比,为什么出现本文
多尺度 ViT 的兴起 (Multi-scale ViT Backbones)
由此带来的改变
Basic Self-attention block (标准自注意力模块)
举例子:10 个 Token,D=768,12 头,单头维度 64
背景:多尺度视觉 Transformer (Multi-scale ViT) 在计算机视觉任务中表现出了强大的主干网络(Backbone)性能。但由于 Transformer 的自注意力机制(Self-attention)计算复杂度与输入的 Token(Patch)数量呈平方关系 (O(N^2)),计算成本非常高。
现有痛点:为了降低计算开销,现有的主流方法通常对 Key (K) 和 Value (V) 进行下采样(Down-sampling)操作(例如使用平均池化 Average Pooling)。
论文发现的缺陷:这种传统的下采样设计是不可逆的(Not invertible),会不可避免地导致信息丢失,尤其是物体中的高频成分(例如纹理细节、边缘等)。
为了解决上述问题,受到小波理论(Wavelet Theory)的启发,作者提出了Wave-ViT:
可逆下采样(Invertible Down-sampling):论文将小波变换(Wavelet Transforms)与自注意力学习以统一的方式进行结合,实现了无损的(Lossless)Key/Value 下采样。这样既降低了计算量,又保留了完整的信息。
逆小波变换增强(Inverse Wavelet Transforms):在自注意力机制输出后,利用逆小波变换来聚合局部上下文信息,从而扩大了感受野(Receptive Field)并增强了输出特征。
核心优势:在效率(Efficiency)与准确率(Accuracy)之间取得了更好的权衡(Trade-off)。
一张图通过DWT之后,分解成四个子带(通常对应低频近似成分 LL,以及垂直高频 LH、水平高频 HL、对角线 HH 高频细节成分)。
核心优势:DWT 和 IDWT 之间是数学上可逆且无损的。这意味着它在下采样(降低分辨率)的同时,高频的纹理和边缘信息被编码保留在其他子带中,而不会像传统平均池化(Average Pooling)那样直接将高频信息抹抹消。
小波自注意力模块架构 (Wavelets Block)
这是 Wave-ViT 的核心前向传播流程:
输入 X:输入的特征图。
生成 Query (q):$X$ 直接通过线性映射生成 q,保持原有的分辨率和空间结构。
无损生成 Key (k) 和 Value (v):
X 首先进入DWT(离散小波变换)模块进行无损下采样,大幅度减少了 Token 的数量。
下采样后的特征通过一个3 * 3 卷积进行局部特征调整。
调整后的特征再分别映射生成 k 和 v。
结果:因为 k 和 v 的 Token 数量因小波下采样而骤减,自注意力机制(Multi-Head Attention)的计算复杂度显着降低。
输出增强(IDWT 分支):
3 * 3 卷积之后的特征,同时被送入IDWT(逆离散小波变换)模块,恢复到原始的分辨率尺寸。
这个恢复后的长程/局部混合上下文信息,最终被残差相加(Residual Connection)到自注意力机制的输出中,从而扩大了感受野并增强了最终的特征表达。
(c) 与 (d) 的对比:传统卷积 vs 小波卷积过程
作者在右侧对比了他们的方法与传统设计的本质区别:
(c) 传统的单层 3 * 3 卷积:在一个高分辨率的特征图上直接进行卷积,虽然能提取局部特征,但计算量随着分辨率变大而激增。
(d) DWT-Convolution-IDWT 过程:
先用 DWT 把高分辨率特征图「无损压缩」到低分辨率。
在低分辨率、小尺寸的特征图上进行卷积(Conv)处理(计算开销极小)。
处理完后,用 IDWT 将其「无损还原」回高分辨率。
结论:这种设计在大幅降低计算量(FLOPs)的同时,通过小波的反转特性,完美保留并聚合了高频和低频的上下文特征。
与前者对比,为什么出现本文
多尺度 ViT 的兴起 (Multi-scale ViT Backbones)
原始 ViT 的局限(单尺度、低分辨率):标准的 ViT 产生的是单尺度(Single-scale)且低分辨率(Low-resolution)的特征图。这种特征图用于像素级的密集预测任务(Dense Prediction Tasks,如实例分割 Instance Segmentation、语义分割 Semantic Segmentation)时,效果并不理想("not trivial"),因为分割任务需要非常精准的空间边界信息。
多尺度金字塔策略("Pyramid" Strategy):由于自然场景中的物体和视觉模式通常以不同的尺度(大小)出现,研究者们开始探索多尺度架构,通过聚合不同尺度的上下文信息来拓宽 ViT 的能力边界。
代表性工作:
PVT (Pyramid Vision Transformer) [55, 54]:将金字塔结构融入 Transformer 框架,生成多尺度的特征图,从而能够高效对接下游的密集预测任务。
MViT (Multiscale Vision Transformers) [14]:通过逐层扩大通道容量(Channel Capacity)同时降低空间分辨率(Spatial Resolution)的方式,在 Transformer 架构中构建出多尺度的特征层次结构。
由此带来的改变
核心矛盾:计算量与分辨率的平方冲突:在多尺度特征图上直接运行自注意力机制,其计算成本与输入 Patch 的数量(即空间分辨率)呈二次方(Quadratical)增长。高分辨率意味着 Patch 极多,计算量会原地爆炸。
现有的妥协方案(基于池化的下采样):为了降低 Keys ($K$) 和 Values ($V$) 的计算开销,经典的多尺度 ViT 方案通常在计算注意力前进行下采样:
PVT [54]采用了平均池化(Average Pooling)。
MViT [14]采用了池化核(Pooling Kernels)。
致命缺陷(为什么不能用池化?):
高频信息丢失:这些基于池化的操作是不可逆的,会不可避免地导致信息丢弃(Information Dropping),尤其是物体纹理细节等高频成分(High-frequency Components)。这对于极度依赖细节的密集预测任务(如分割、检测)是非常致命的。
破坏平移等变性:文献中提到,近期的研究 [66] 表明,在深度网络(即使是 CNN)中盲目应用池化操作,会损害网络的平移等变性(Shift-equivariance),导致模型对输入图像的微小位移变得过于敏感。
Basic Self-attention block (标准自注意力模块)
这是最原始的 ViT 设计(如 DeiT、ViT-Base):
特征维度:输入 X 维度为 H * W * D(高 * 宽 * 通道数)。Q, K, V 三个分支完全对称,通过线性层(Linear)后,它们的维度都保持为 H * W * D。
注意力矩阵:Q 和 K 矩阵相乘后,通过 Softmax 得到的注意力权重图(Attention Map)维度为H * W * H * W(即 N * N,其中 N=HW 是 Token 数量)。
痛点:当图像分辨率很高(H, W 很大)时,这个 N * N 的矩阵计算和存储开销呈二次方(Quadratic)爆炸式增长。
因此,最后,多头注意力的计算是由单头进行拼接
举例子:10 个 Token,D=768,12 头,单头维度 64
- 拆分每个 Token 的 768 维向量切成 12 段 64 维,得到 12 组特征,每组形状
[10, 64]。- 分头独立计算(12 次独立单头注意力)对第 1 组
[10,64]:生成 Q1/K1/V1 → 算 QKᵀ → Softmax → 乘 V1,输出Out1 [10,64]对第 2 组[10,64]:生成 Q2/K2/V2 → 独立算一套单头注意力,输出Out2 [10,64]…… 一直到第 12 个头,算出Out12 [10,64]每一头都是一套完整独立的单头注意力,互不干扰。- 合并拼接把 Out1~Out12 在通道维度拼在一起:
Concat(Out1,Out2,...,Out12)→ 形状变回[10, 64×12] = [10,768]- 融合线性层拼接后的 768 维特征再过一层可学习 Linear,把多头信息融合,防止 12 个头信息割裂,得到最终多头注意力输出。
那么于此,就是一个HWD*DHW,换句话说一个n^2的复杂度
低频轮廓 LL + 垂直高频 LH + 水平高频 HL + 对角高频 HH 互相融合
┌─── 线性映射 ───> Query (保持高空间分辨率 n) ───┐ │ │ 输入 X ───> 降维 ───┼─── DWT ───> 空间变小/通道无损 ───> Conv3x3 ─────┼───> 算注意力 (公式2) ───> 全局交互特征 │ │ │ │ │ └─> IDWT (无损还原高分辨率, 感受野扩大) ─> 局部细节特征 X^r │ │ └───────────────────────────── 拼接与融合 (公式3) <──────────────────────┘ │ 最终输出 (n x D)