基于Transformer的图像去模糊算法:Stripformer(条带注意力去运动模糊)
字数 3525 2025-12-11 14:02:07

基于Transformer的图像去模糊算法:Stripformer(条带注意力去运动模糊)

题目描述
图像去模糊旨在从模糊的输入图像中恢复出清晰的图像。运动模糊是由于相机与场景之间的相对运动引起的,其模糊核通常具有方向性,呈现条纹状。传统的去模糊算法往往依赖手工先验,而基于CNN的方法通常通过堆叠卷积层隐式建模全局依赖,效率较低。Stripformer提出一种基于Transformer的架构,核心创新是引入了“条带注意力”(Strip Attention)模块,显式地建模水平与垂直方向的长程依赖,以更高效地处理具有方向性的运动模糊。本题目将详细解析Stripformer的核心思想、网络结构、条带注意力机制以及其训练与推理过程。

解题过程

1. 问题建模与分析

  • 输入与输出:模型输入是一张因相机或物体运动而产生的模糊图像 \(I_{blurry} \in \mathbb{R}^{H \times W \times 3}\),输出是对应的清晰图像估计 \(I_{sharp} \in \mathbb{R}^{H \times W \times 3}\)
  • 核心挑战:运动模糊具有方向性,意味着图像中像素的退化与特定方向(通常是水平或垂直)上相邻的像素强相关。标准卷积的局部感受野难以有效捕获这种长程、定向的依赖性。全局Transformer(如Vision Transformer)虽然能捕获长程依赖,但其计算复杂度高(与像素数的平方成正比),且其注意力是各向同性的,没有针对运动模糊的定向特性进行优化。
  • 解决思路:Stripformer的核心思路是设计一种条带注意力(Strip Attention)机制,将传统的全局、密集注意力分解为沿水平方向和垂直方向的两个条带注意力操作。这能显式地、高效地捕获图像中与运动模糊方向一致的长程依赖。

2. 网络整体架构概览
Stripformer采用一个编码器-解码器结构,并加入了跳跃连接(类似U-Net),以融合多尺度特征。

  • 编码器:包含多个层级,每级由多个Strip Transformer Block堆叠而成,并通过Patch Mergging(类似于卷积下采样)来降低空间分辨率、增加通道数,从而提取多尺度特征。
  • 解码器:包含多个层级,每级由多个Strip Transformer Block堆叠而成,并通过Patch Expanding(上采样操作)来提高空间分辨率、减少通道数。解码器每一层的输入除了来自上一解码层的特征,还通过跳跃连接融合来自对应编码层的同尺度特征。
  • 瓶颈层:位于编码器与解码器之间,也由Strip Transformer Block构成。
  • 输入/输出投影:网络开始是一个卷积层(Embedding Layer),将输入RGB图像投影到高维特征空间。网络结尾是一个卷积层(Reconstruction Layer),将最终特征映射回RGB空间,并与输入模糊图像相加(残差学习),得到清晰图像。

3. 核心组件:条带注意力(Strip Attention)机制详解
这是Stripformer最核心的创新点。其目标是替换标准Transformer中的多头自注意力(MHSA),使其更适合处理方向性模糊。

  • 步骤1:特征图准备
    假设输入到Strip Transformer Block的特征图为 \(X \in \mathbb{R}^{H \times W \times C}\)。首先,通过LayerNorm进行归一化,然后通过线性投影生成查询(Query)、键(Key)、值(Value)向量。但关键在于,Strip Attention不直接在整个特征图上计算全局注意力
  • 步骤2:分解为水平与垂直条带注意力
    Stripformer将完整的注意力计算分解为两个顺序执行的、更高效的操作:
    • 水平条带注意力
      1. 重塑:将特征图 \(X\) 重塑为 \(X_h \in \mathbb{R}^{H \times W \times C}\)。这里,我们将每一的像素视为一个“条带”。
      2. 注意力计算:计算行内的注意力。对于第 \(i\) 行,其查询向量 \(Q_{i,:}\) 会与同一行所有位置的键向量 \(K_{i,:}\) 计算注意力权重,然后对同一行的值向量 \(V_{i,:}\) 进行加权聚合。这相当于在水平方向上捕获长程依赖(因为一行可能横跨整个图像宽度),但垂直方向上(行与行之间)在此步没有交互。
      3. 复杂度:对于 \(H\) 行,每行有 \(W\) 个元素,计算复杂度为 \(O(H \times W^2)\)。相比于全局注意力的 \(O((H \times W)^2)\),显著降低。
    • 垂直条带注意力
      1. 重塑:将经过水平注意力处理后的特征图重塑为 \(X_v \in \mathbb{R}^{W \times H \times C}\)。这里,我们将每一的像素视为一个“条带”。
      2. 注意力计算:计算列内的注意力。对于第 \(j\) 列,其查询向量与同一列所有位置的键值计算注意力。这捕获了垂直方向上的长程依赖。
      3. 复杂度:为 \(O(W \times H^2)\)
  • 步骤3:组合与输出
    将经过水平和垂直条带注意力处理后的特征图(需重塑回原始形状)通过一个可学习的权重进行融合,然后通过一个前馈网络(FFN,通常由两个线性层和GELU激活函数组成)进行非线性变换。最终,通过一个残差连接将输入 \(X\) 加到输出上,完成一个Strip Transformer Block的计算。
  • 设计优势
    1. 方向性建模:显式地沿水平和垂直两个主要方向建模长程依赖,这与许多运动模糊的物理模型(方向性模糊核)高度契合。
    2. 计算高效:总体复杂度为 \(O(HW(H+W))\),远低于全局注意力的 \(O((HW)^2)\),使其能处理更高分辨率的图像。
    3. 信息交互:虽然两个注意力是顺序执行的,但通过先水平后垂直(或反之),信息最终能在整个二维空间内间接传播,实现全局上下文的建模。

4. 训练策略与损失函数

  • 数据集:通常在合成的运动模糊数据集(如GoPro、REDS)上进行训练。这些数据集包含模糊-清晰的图像对。
  • 损失函数:通常结合多种损失函数来监督训练:
    • 像素级损失:如L1损失(平均绝对误差),迫使预测图像在像素级上接近真实清晰图像。\(L_{L1} = \| I_{pred} - I_{gt} \|_1\)
    • 感知损失:使用预训练的VGG网络,比较预测图像与真实图像在特征空间的差异,以提升视觉质量。\(L_{perc} = \| \phi(I_{pred}) - \phi(I_{gt}) \|_2^2\),其中 \(\phi\) 表示VGG的某一层特征。
    • 对抗损失(可选):引入一个判别器(Discriminator),与Stripformer(生成器)进行对抗训练,使生成的图像看起来更“真实”,从而提升细节的清晰度和自然度。
      总的损失函数是这些损失的加权和:\(L_{total} = \lambda_1 L_{L1} + \lambda_2 L_{perc} + \lambda_3 L_{adv}\)
  • 优化:使用Adam优化器,采用逐步学习率衰减策略。

5. 推理过程
推理过程是前向传播:

  1. 输入模糊图像 \(I_{blurry}\)
  2. 经过Embedding Layer得到初始特征。
  3. 特征依次通过编码器、瓶颈层、解码器的各层Strip Transformer Block,并融合多尺度跳跃连接特征。
  4. 通过Reconstruction Layer得到残差清晰图像 \(R\)
  5. 输出清晰图像:\(I_{sharp} = I_{blurry} + R\)
    这个过程是端到端的,无需任何后处理。

总结
Stripformer通过引入条带注意力这一核心机制,为基于Transformer的图像去模糊提供了一个高效且有效的解决方案。它通过将全局注意力分解为水平和垂直方向上的顺序注意力,显式地建模了与运动模糊物理特性相符的长程、定向依赖,在保持较强去模糊能力的同时,显著降低了计算复杂度,实现了性能与效率的良好平衡。其编码器-解码器结构则帮助网络融合多尺度信息,以恢复不同尺度下的清晰细节。

基于Transformer的图像去模糊算法:Stripformer(条带注意力去运动模糊) 题目描述 图像去模糊旨在从模糊的输入图像中恢复出清晰的图像。运动模糊是由于相机与场景之间的相对运动引起的,其模糊核通常具有方向性,呈现条纹状。传统的去模糊算法往往依赖手工先验,而基于CNN的方法通常通过堆叠卷积层隐式建模全局依赖,效率较低。Stripformer提出一种基于Transformer的架构,核心创新是引入了“条带注意力”(Strip Attention)模块,显式地建模水平与垂直方向的长程依赖,以更高效地处理具有方向性的运动模糊。本题目将详细解析Stripformer的核心思想、网络结构、条带注意力机制以及其训练与推理过程。 解题过程 1. 问题建模与分析 输入与输出 :模型输入是一张因相机或物体运动而产生的模糊图像 \( I_ {blurry} \in \mathbb{R}^{H \times W \times 3} \),输出是对应的清晰图像估计 \( I_ {sharp} \in \mathbb{R}^{H \times W \times 3} \)。 核心挑战 :运动模糊具有方向性,意味着图像中像素的退化与特定方向(通常是水平或垂直)上相邻的像素强相关。标准卷积的局部感受野难以有效捕获这种长程、定向的依赖性。全局Transformer(如Vision Transformer)虽然能捕获长程依赖,但其计算复杂度高(与像素数的平方成正比),且其注意力是各向同性的,没有针对运动模糊的定向特性进行优化。 解决思路 :Stripformer的核心思路是设计一种 条带注意力(Strip Attention) 机制,将传统的全局、密集注意力分解为沿水平方向和垂直方向的两个条带注意力操作。这能显式地、高效地捕获图像中与运动模糊方向一致的长程依赖。 2. 网络整体架构概览 Stripformer采用一个 编码器-解码器 结构,并加入了跳跃连接(类似U-Net),以融合多尺度特征。 编码器 :包含多个层级,每级由多个Strip Transformer Block堆叠而成,并通过Patch Mergging(类似于卷积下采样)来降低空间分辨率、增加通道数,从而提取多尺度特征。 解码器 :包含多个层级,每级由多个Strip Transformer Block堆叠而成,并通过Patch Expanding(上采样操作)来提高空间分辨率、减少通道数。解码器每一层的输入除了来自上一解码层的特征,还通过跳跃连接融合来自对应编码层的同尺度特征。 瓶颈层 :位于编码器与解码器之间,也由Strip Transformer Block构成。 输入/输出投影 :网络开始是一个卷积层(Embedding Layer),将输入RGB图像投影到高维特征空间。网络结尾是一个卷积层(Reconstruction Layer),将最终特征映射回RGB空间,并与输入模糊图像相加(残差学习),得到清晰图像。 3. 核心组件:条带注意力(Strip Attention)机制详解 这是Stripformer最核心的创新点。其目标是替换标准Transformer中的多头自注意力(MHSA),使其更适合处理方向性模糊。 步骤1:特征图准备 假设输入到Strip Transformer Block的特征图为 \( X \in \mathbb{R}^{H \times W \times C} \)。首先,通过LayerNorm进行归一化,然后通过线性投影生成查询(Query)、键(Key)、值(Value)向量。但关键在于, Strip Attention不直接在整个特征图上计算全局注意力 。 步骤2:分解为水平与垂直条带注意力 Stripformer将完整的注意力计算分解为两个顺序执行的、更高效的操作: 水平条带注意力 : 重塑 :将特征图 \( X \) 重塑为 \( X_ h \in \mathbb{R}^{H \times W \times C} \)。这里,我们将每一 行 的像素视为一个“条带”。 注意力计算 :计算 行内 的注意力。对于第 \( i \) 行,其查询向量 \( Q_ {i,:} \) 会与 同一行 所有位置的键向量 \( K_ {i,:} \) 计算注意力权重,然后对同一行的值向量 \( V_ {i,:} \) 进行加权聚合。这相当于在 水平方向 上捕获长程依赖(因为一行可能横跨整个图像宽度),但 垂直方向 上(行与行之间)在此步没有交互。 复杂度 :对于 \( H \) 行,每行有 \( W \) 个元素,计算复杂度为 \( O(H \times W^2) \)。相比于全局注意力的 \( O((H \times W)^2) \),显著降低。 垂直条带注意力 : 重塑 :将经过水平注意力处理后的特征图重塑为 \( X_ v \in \mathbb{R}^{W \times H \times C} \)。这里,我们将每一 列 的像素视为一个“条带”。 注意力计算 :计算 列内 的注意力。对于第 \( j \) 列,其查询向量与 同一列 所有位置的键值计算注意力。这捕获了 垂直方向 上的长程依赖。 复杂度 :为 \( O(W \times H^2) \)。 步骤3:组合与输出 将经过水平和垂直条带注意力处理后的特征图(需重塑回原始形状)通过一个可学习的权重进行融合,然后通过一个前馈网络(FFN,通常由两个线性层和GELU激活函数组成)进行非线性变换。最终,通过一个残差连接将输入 \( X \) 加到输出上,完成一个Strip Transformer Block的计算。 设计优势 : 方向性建模 :显式地沿水平和垂直两个主要方向建模长程依赖,这与许多运动模糊的物理模型(方向性模糊核)高度契合。 计算高效 :总体复杂度为 \( O(HW(H+W)) \),远低于全局注意力的 \( O((HW)^2) \),使其能处理更高分辨率的图像。 信息交互 :虽然两个注意力是顺序执行的,但通过先水平后垂直(或反之),信息最终能在整个二维空间内间接传播,实现全局上下文的建模。 4. 训练策略与损失函数 数据集 :通常在合成的运动模糊数据集(如GoPro、REDS)上进行训练。这些数据集包含模糊-清晰的图像对。 损失函数 :通常结合多种损失函数来监督训练: 像素级损失 :如L1损失(平均绝对误差),迫使预测图像在像素级上接近真实清晰图像。\( L_ {L1} = \| I_ {pred} - I_ {gt} \|_ 1 \)。 感知损失 :使用预训练的VGG网络,比较预测图像与真实图像在特征空间的差异,以提升视觉质量。\( L_ {perc} = \| \phi(I_ {pred}) - \phi(I_ {gt}) \|_ 2^2 \),其中 \( \phi \) 表示VGG的某一层特征。 对抗损失 (可选):引入一个判别器(Discriminator),与Stripformer(生成器)进行对抗训练,使生成的图像看起来更“真实”,从而提升细节的清晰度和自然度。 总的损失函数是这些损失的加权和:\( L_ {total} = \lambda_ 1 L_ {L1} + \lambda_ 2 L_ {perc} + \lambda_ 3 L_ {adv} \)。 优化 :使用Adam优化器,采用逐步学习率衰减策略。 5. 推理过程 推理过程是前向传播: 输入模糊图像 \( I_ {blurry} \)。 经过Embedding Layer得到初始特征。 特征依次通过编码器、瓶颈层、解码器的各层Strip Transformer Block,并融合多尺度跳跃连接特征。 通过Reconstruction Layer得到残差清晰图像 \( R \)。 输出清晰图像:\( I_ {sharp} = I_ {blurry} + R \)。 这个过程是端到端的,无需任何后处理。 总结 Stripformer通过引入 条带注意力 这一核心机制,为基于Transformer的图像去模糊提供了一个高效且有效的解决方案。它通过将全局注意力分解为水平和垂直方向上的顺序注意力, 显式地建模了与运动模糊物理特性相符的长程、定向依赖 ,在保持较强去模糊能力的同时,显著降低了计算复杂度,实现了性能与效率的良好平衡。其编码器-解码器结构则帮助网络融合多尺度信息,以恢复不同尺度下的清晰细节。