Wave-ViT: Unifying Wavelet and Transformersfor Visual Representation Learning ——ECCV

📅 2026/7/6 13:48:43 👁️ 阅读次数 📝 编程学习
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 的核心前向传播流程:

  1. 输入 X:输入的特征图。

  2. 生成 Query (q):$X$ 直接通过线性映射生成 q,保持原有的分辨率和空间结构。

  3. 无损生成 Key (k) 和 Value (v)

    • X 首先进入DWT(离散小波变换)模块进行无损下采样,大幅度减少了 Token 的数量。

    • 下采样后的特征通过一个3 * 3 卷积进行局部特征调整。

    • 调整后的特征再分别映射生成 k 和 v。

    • 结果:因为 k 和 v 的 Token 数量因小波下采样而骤减,自注意力机制(Multi-Head Attention)的计算复杂度显着降低

  4. 输出增强(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)

  • 致命缺陷(为什么不能用池化?)

    1. 高频信息丢失:这些基于池化的操作是不可逆的,会不可避免地导致信息丢弃(Information Dropping),尤其是物体纹理细节等高频成分(High-frequency Components)。这对于极度依赖细节的密集预测任务(如分割、检测)是非常致命的。

    2. 破坏平移等变性:文献中提到,近期的研究 [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

  1. 拆分每个 Token 的 768 维向量切成 12 段 64 维,得到 12 组特征,每组形状[10, 64]
  2. 分头独立计算(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]每一头都是一套完整独立的单头注意力,互不干扰。
  3. 合并拼接把 Out1~Out12 在通道维度拼在一起:Concat(Out1,Out2,...,Out12)→ 形状变回[10, 64×12] = [10,768]
  4. 融合线性层拼接后的 768 维特征再过一层可学习 Linear,把多头信息融合,防止 12 个头信息割裂,得到最终多头注意力输出。

那么于此,就是一个HWD*DHW,换句话说一个n^2的复杂度

低频轮廓 LL + 垂直高频 LH + 水平高频 HL + 对角高频 HH 互相融合

┌─── 线性映射 ───> Query (保持高空间分辨率 n) ───┐ │ │ 输入 X ───> 降维 ───┼─── DWT ───> 空间变小/通道无损 ───> Conv3x3 ─────┼───> 算注意力 (公式2) ───> 全局交互特征 │ │ │ │ │ └─> IDWT (无损还原高分辨率, 感受野扩大) ─> 局部细节特征 X^r │ │ └───────────────────────────── 拼接与融合 (公式3) <──────────────────────┘ │ 最终输出 (n x D)