当前位置: 首页 > news >正文

《TransMamba:一种混合Transformer-Mamba网络用于单图像去雨》学习笔记

paper:2409.00410

GitHub:sunshangquan/TransMamba

目录

摘要

1、介绍

2、相关工作

2.1 单图像去雨

2.2 视觉Transformer

2.3 光谱域中的Transformer

2.4 光谱域中的图像恢复

2.5 视觉Mamba

3、方法

3.1  整体网络架构

3.2 光谱域变换块(SDTB)

3.2.1 光谱带自注意力模块(SBSA)

3.2.2 光谱增强前馈模块(SEFF)

3.3 级联双向SSM模块

3.4 重建损失与一致性损失

4、实验

4.1  实验设置

4.2 对比实验

4.3 消融实验

4.5 实际应用

4.6 限制与未来工作


摘要

现有的去雨 Transformer 采用自注意力机制,通过固定范围的窗口或沿通道维度的方式来操作,这限制了非局部感受野的利用。为了解决这个问题,我们提出了一种新颖的双分支混合Transformer-Mamba网络,命名为TransMamba,旨在有效捕捉长程的与雨滴相关的依赖关系。基于雨滴退化和背景的不同光谱域特征的先验知识,我们在第一个分支上设计了一个光谱带状Transformer模块。在光谱域的通道维度上执行自注意力操作,以增强建模长程依赖的能力。为了增强频率特定信息,我们提出了一种光谱增强的前馈模块,该模块能够在光谱域聚合特征。在第二个分支中,Mamba层配备了级联的双向状态空间模型模块,用于进一步捕捉局部和全局信息的建模。在编码器和解码器的每个阶段,我们执行双分支特征的通道级拼接,并通过通道压缩实现特征融合,从而更有效地集成Transformer和Mamba分支的多尺度信息。为了更好地重建清晰图像中固有的信号级关系,我们还提出了一种光谱一致性损失。在多个数据集和真实世界图像上的大量实验表明,我们的方法在与最先进的方法比较时具有明显的优越性。

1、介绍

雨滴去除:作为一种常见的恶劣天气,雨滴严重影响户外视觉,因此去雨是一个重要的低层视觉任务,旨在将带雨滴的图像恢复为清晰的图像。早期的工作利用物理先验来设计模型,如稀疏编码 [9]、低秩模型 [10]、高斯混合模型 [11] 等。然而,这些模型依赖于手动调整超参数,因此无法去除具有复杂外观和不同尺度的雨滴。

最近,卷积神经网络(CNN)在建模复杂模式方面超越了传统模型。为单张图像的去雨问题开发了各种CNN架构 [12]–[16]、[16]–[23]。然而,CNN无法学习长程依赖关系,因为卷积层的感受野范围有限。为了解决这个问题,Transformers [3]–[6]、[24]–[27] 被用来通过自注意力机制学习非局部表示来去除雨滴。然而,自注意力机制的二次计算复杂度限制了token选择。现有的去雨Transformer需要将自注意力限制在每个通道维度或固定大小的块中,这限制了它们充分利用长程依赖的能力。该设置还忽视了雨滴的内在一致性,这些雨滴在位置上动态变化,但在外观上密切相关。

为了解决从图像中高效去除雨滴的问题,我们提出了一种双分支混合Transformer-Mamba(TransMamba)网络。我们的模型由两个分支组成:一个Transformer分支和一个Mamba分支,每个分支在去雨过程中发挥不同但互补的作用。

雨滴由于其在光谱域中的频率特征而呈现出独特的挑战。我们观察到,光谱域中的每个token表示的是原始2D图像的正弦成分,提供了特定频带的全局分解表示。低频成分主要编码雨滴,通常表现为重复的、无纹理的区域。相反,高频成分代表具有丰富纹理的背景区域。为了利用这一观察,我们首先使用快速傅里叶变换(FFT)将图像转换到光谱域。这种变换使我们能够在光谱域中执行自注意力操作,根据频率分解更有效地捕捉全局依赖关系。通过将tokens分离到不同的频带中,我们引入了光谱带状自注意力(SBSA),它根据频带的重要性选择性地重新分配注意力。包含雨滴的低频带接收较少的注意力,而编码背景纹理的高频带则接收增强的注意力。这种选择性注意力通过减弱低频雨滴信号并保留高频图像细节,从而实现有效的雨滴去除。

为了进一步优化光谱域中的特征提取,我们引入了一个光谱增强前馈(SEFF)模块。该模块利用频域中的逐元素相乘与空间域中的卷积类似的属性。在我们的双分支架构中,我们对光谱域特征应用逐像素的权重和偏置,从而增强频率特定的信息。一个分支中的SiLU激活函数充当门控机制,控制另一个分支的输出,从而实现最佳的光谱增强。

虽然Transformer分支侧重于捕获全局信息,但我们的Mamba分支旨在增强序列一致性。该分支由双向状态空间模型(SSM)模块组成,确保图像序列之间的线性依赖关系得以保留。我们利用信号处理中的一致性度量,量化两个信号之间的线性关系,引入了一种光谱一致性损失函数。该损失函数确保重建的图像保持清晰图像中固有的线性关系,从而获得更精确和一致的去雨输出。

总之,我们的贡献有三个方面:

  1. 我们提出了一种双分支混合Transformer-Mamba网络。其第一个Transformer分支通过在光谱域tokens之间进行自注意力建模,实现全面的信息建模。第二个Mamba分支配备了双向SSM模块以增强序列一致性。
  2. 为了更好地提取频率特定的特征,我们开发了一种光谱增强前馈模块。通过引入光谱一致性损失函数,我们确保重建信号级的线性关系。
  3. 通过在各种基准测试和真实世界图像上进行大量实验,我们展示了我们的方法在去雨性能上优于最先进的方法。

2、相关工作

2.1 单图像去雨

早期的研究通过采用雨滴的各种物理先验来处理单图像去雨问题 [9]、[11]、[28]–[30]。但这些方法通常需要经验性地调整手工设计的超参数,且难以适应复杂的雨天场景。

近年来,深度学习方法(如CNN)在许多视觉任务中超越了传统方法,包括单图像去雨 [33]–[39]。许多网络设计被提出,例如编码器-解码器 [40]、细节网络 [41]、[42]、递归网络 [12]–[14]、脉冲网络 [43]、神经表示学习 [7]、生成对抗网络 [44]、多尺度结构 [16]–[18]、变分自编码器 [15]、分形带学习 [45]、渐进式学习 [16]、[22]、[23]、[46] 和半监督迁移学习 [19]–[21]。其他方法将深度学习与传统先验结合,以达到更好的去雨效果 [47]、[48]。为了使CNN能够训练,许多数据集被收集,包括合成雨滴数据集 [12]、[42]、[49] 和真实世界的雨滴数据集 [8]、[50]、[51]。尽管CNN方法在性能上超过了传统方法,但它们的感受野有限,因此很难有效地捕捉长程依赖。

2.2 视觉Transformer

最近,Transformer [52]、[53] 被引入到计算机视觉领域,并在多个任务中超过了CNN [54]–[60]。为了实现输入形状的灵活性和可扩展的推理,其他一些工作将卷积与Transformer结合 [61]–[63]。对于单图像去雨,Jiang等人 [26] 提出了将CNN与Transformer结合的去雨网络。Xiao等人 [4] 设计了一种纯Transformer模型,通过基于窗口和空间的自注意力来有效去除雨滴。为了更好地建模雨滴引起的退化关系,还提出了稀疏Transformer [5]、[6]。然而,现有的基于Transformer的去雨方法通常将自注意力限制在每个通道维度或者固定范围的窗口内,忽视了雨滴的位置是多样的,但在外观上是相似的,因此在光谱域中密切相关。为此,我们提出了一种光谱域带状Transformer,它根据背景特征在高频分量中的编码和在低频分量中嵌入的雨滴退化像素,自适应地对不同部分进行注意力分配,从而获得更优的去雨效果。

2.3 光谱域中的Transformer

一些工作探讨了结合Transformer架构和频域表示来解决磁共振超分辨率 [64]、音乐信息检索 [65]、故障诊断 [66]、视频超分辨率 [67]、[68] 和去模糊 [69] 等任务。一些超光谱图像分析工作被称为光谱Transformer,但它们与将空间RGB图像转换到光谱或频域的工作无关 [70]–[73]。Fang等人 [64] 通过计算输入图像的梯度图来嵌入高频先验,然后再将其输入Transformer。Ding等人 [66] 沿时间维度应用一维频率变换,以更好地编码长程序列。另一项工作 [67] 在自注意力模块中采用离散余弦变换,但忽略了原始图像信号的复数部分。Kong等人 [69] 将自注意力模块中空间域的张量乘法替换为频域中Query、Key和Value块之间的逐元素乘积。现有的频域Transformer要么沿时间维度计算一维频率用于处理序列数据,要么仅计算块级的频率表示,无法捕获全局空间依赖关系。因此,我们提出了图像级别的光谱带状自注意力(SBSA),用于全局特征提取,并通过光谱增强前馈模块(SEFF)更好地重新加权提取的信息。

2.4 光谱域中的图像恢复

一些工作引入了光谱域操作来解决图像恢复任务,包括超分辨率 [64]、视频超分辨率 [67]、[68]、去模糊 [69]、[74] 和一般恢复 [75] 等。然而,这些工作忽略了雨滴的光谱域先验,因此未能有效适应单图像去雨任务。

2.5 视觉Mamba

最近,状态空间模型 [76]–[79],如Mamba [80]、[81],展现了在长程建模中的高效性。尽管一些工作已经探索了它们在视觉任务中的能力 [82]–[85],但其他工作指出,基于注意力的模型和CNN仍然在局部和短序列任务中优于Mamba [86]。为了进一步增强全局建模能力,现有的基于Mamba的去雨工作 [82]、[84]、[85] 都是在频域中随机地转换图像并执行计算。在本工作中,我们尝试将CNN、Transformer和Mamba结合在频域中,以使模型具备同时进行局部和全局建模的能力。

3、方法

3.1  整体网络架构

我们提出的TransMamba的网络架构,如图3所示,采用了对称的多层双分支编码器-解码器结构。假设输入的雨天图像为 R \in \mathbb{R}^{3 \times H \times W},其中 H 和 W 分别表示图像的高度和宽度。我们使用一个 3×3 的卷积来生成图像块的重叠嵌入。在编码器-解码器的第一个分支中,我们结合多个 SDTB(光谱域变换块)来捕获复杂的特征并动态地识别雨水相关的因素。对于第二个分支,我们采用多个 CBSM(通道基础模块)来补充第一个分支 Transformer 块的缺失信息。两个分支在每一层的输出特征通过拼接和逐点卷积的方式进行合并。在同一层内,编码器和解码器通过跳跃连接互联,这与之前的研究一致 [3][4][87],有助于增强训练过程的稳定性。每一层之间,我们使用pixel-unshuffle 和 pixel-shuffle 操作来实现特征下采样和上采样。

3.2 光谱域变换块(SDTB)

在我们的 TransMamba 中,每一层都有多个 SDTB 被级联,SDTB 的流程可以通过以下方程表示:

F_n = F_{n-1} + \text{SBSA}[\text{LayerNorm}(F_{n-1})]

F_n = F_n + \text{SEFF}[\text{LayerNorm}(F_n)]

其中,LayerNorm 表示层归一化,F_n 表示第 n 层的特征。它包含两个子模块:SBSA 用于提取光谱和空间域的长程与局部依赖关系,SEFF 用于增强雨水条纹的频率特定信息。下面将详细介绍这些子模块。

3.2.1 光谱带自注意力模块(SBSA)

为了更好地捕捉动态分布的雨水降解特征,我们引入了光谱带自注意力(SBSA)模块。该模块包括一个可分离卷积序列,由点卷积深度卷积2D FFT 操作以及光谱带自注意力机制组成。可分离卷积用于提取 Query、Key 和 Value 的雨相关降解特征。这些特征提取后,将被送入自注意力机制以有效地加权特征令牌的值。FFT 操作将空间域的特征转换到光谱域,在光谱域中,每个像素都嵌入了具有特定频率的原始空间特征的正弦成分。由于分解特性,在光谱域中修改单个令牌将导致原图像的全局信号变化。因此,我们认为每个光谱域 token 编码了全局知识的部分依赖关系,提取这些 token 有助于捕获长程信息。通过上述特征提取过程,我们的 SBSA 实现了全局和局部动态特征的聚合。

可分离卷积序列(Separable Convolution Sequence)是指将传统卷积操作分解为多个独立步骤并按顺序执行的卷积结构,其核心目标是通过降低计算复杂度和参数量实现模型轻量化。

深度卷积:对输入特征图的每个通道独立进行空间卷积,即每个输入通道对应一个独立的卷积核(例如3x3),输出通道数与输入通道数相同。

点卷积:使用1x1卷积核进行跨通道的特征融合,调整输出通道数。

其过程可以表达为:

[F_Q, F_K, F_V] = \text{Conv}_{1\times1}(F_n)

F_{i \in \{Q, K, V\} }= \text{C2R}(\mathbb{F}(\text{Conv}_{3\times 3}^d(F_i)))

其中,Conv^d_{3\times3} 是 3×3 的深度卷积,Conv_{1\times1} 是点卷积,\mathbb{F} 表示 2D FFT 操作,C2R  是通过 PyTorch 中的 view_as_real 操作进行的复数到实数的转换F_{i\in\left \{ Q,K,V \right \}} \in \mathbb{R}^{C \times H \times W} 是光谱域中的 Query、Key 和 Value 特征。

现有的视觉 Transformer [3]–[5] 通常依赖于固定范围的注意力或仅在通道维度上进行注意力计算,这是由于计算和内存效率的折衷。然而,这种固定设置限制了自注意力在长程范围内的自适应扩展,以便关联所需的特征。相比之下,我们观察到,由于雨水降解特征在光谱域中的低频部分具有重复的纹理,像素在不同频率上应分配不同的注意力。因此,我们提出了光谱带重排(SBR)方法,将光谱域的元素分类到不同频率的带段中,并在它们之间分配不同的注意力。

F_{i \in \{Q, K, V\} }= \text{Reorganize}(\text{gather}(F_i; M))

其中,Reorganize 表示重排操作,将光谱特征从\mathbb{R}^{C \times HW}重排成\mathbb{R}^{Cb\times HW/b}gather 表示基于网格索引 M 收集特征,M 是通过为特定形状 H×W  计算网格索引来预处理的,中心索引表示高频,外围索引表示低频。

Reorganize 操作代替了传统 Transformer 的 Reshape 操作。

 “gather&split”(收集和分割)模块将频谱特征根据网格索引进行操作,收集相关特征并分割成高频和低频两部分。

提取到的特征被送入自注意力机制,过程如下:

F_n = \text{softmax}(\frac{F_Q F_K^T}{\sqrt{k}} ) F_V

其中,k 是注意力头的数量。通过这种方式,我们可以有效地捕获跨频带和跨空间的长程依赖信息。

在获得光谱域注意力特征后,我们通过以下公式输出空间特征:

F_n = \text{Conv}_{1\times 1} \left( \mathbb{F}^{-1} \left( R2C \left( \text{Scatter} \left( R(F_n); M \right) \right) \right) \right)

其中,\mathbb{F}^{-1} 是 2D 逆 FFT 过程,R2C 表示通过 PyTorch 中的 view_as_complex 实现的实数到复数操作,Scatter 表示基于索引 M 进行令牌检索的步骤,R 是维度重塑操作。

3.2.2 光谱增强前馈模块(SEFF)

先前的研究 [3]–[5] 通常依赖单一范围或单一尺度的卷积网络来增强局部上下文。然而,这些方法往往忽略了不同范围和尺度的动态分布雨水降解之间的相关性。在实践中,可以通过扩展卷积核大小或利用膨胀机制来提取多尺度信息。因此,我们将两个不同范围的深度卷积路径集成到前馈模块中,并结合光谱增强前馈模块(SEFF)进行多尺度信息增强。

SEFF 模块利用了卷积在空间域等同于在光谱域进行元素级乘积的性质,提出了光谱增强前馈(SEFF)模块。在 SEFF 中,成对的权重和偏置被调整并广播,以充当光谱域特征上的滤波器。这样,每个表示频率分量的 token 可以被自适应地增强或过滤,从而更好地分离雨相关的降解和背景信息。

在 SEFF 中,首先使用点卷积操作将通道维度扩展一个因子 r,然后将扩展后的张量传入两个并行分支。经过特征转换后,使用 3×3 卷积和扩张 3×3 卷积来增强多范围信息的提取。两个分支的特征被转换到光谱域,并通过一对可学习的权重和偏置增强光谱域信息。通过这种方式,我们增强了对不同频率分量的适应性。

该模块的流程可以通过以下方程表示:

[F_1, F_2] = \text{Conv}_{1\times 1}(F_n)

F_1 = \text{Conv}^d_{3 \times 3}(F_1), \quad F_2 = \text{Conv}_{3\times 3}^{d,\text{dilated } }(F_2)

F_1 = W_1^{\uparrow} \odot \mathbb{F}(F_1) + B_1, \quad F_2 = W_2^{\uparrow} \odot \mathbb{F}(F_2) + B_2

F_n = \text{Conv}_{1\times1} ((\text{SiLU}(\mathbb{F}^{-1}(F_2)) \odot \mathbb{F}^{-1}(F_1)))

其中,\text{Conv}_{3\times 3}^{d,\text{dilated } } 是 3×3 的扩张深度卷积,W_1,W_2 \in \mathbb{R}^{C \times H \times W} 是经过插值调整的光谱域权重,B_1, B_2 \in \mathbb{R}^{C \times 1 \times 1} 是偏置,SiLU 是激活函数。

3.3 级联双向SSM模块

受到[79]的启发,我们提出通过级联双向SSM模块来进一步增强序列一致性。前向方向的表达可以通过以下公式表示:

[F1, F2] = \text{Conv}_{1\times 1}(F_n)

F_1 = \text{SSM}\left( \sigma\left( \text{Conv1d}^d(\text{SA}(\text{Conv}^d_{5\times 5}(F1)))) \right) \right)

F3 = F1 \cdot \sigma\left( \text{CA}(\text{Conv}^d_{5\times5}(F2)) \right)

看框架F_1应该是是左边这条分支,用的应该是CA,F_2应该是右边这条分支,用的应该是SA,不知道是不是公式写错了。 

其中,SA 和 CA 分别表示空间注意力(Spatial Attention)和通道注意力(Channel Attention)[94]。

反向方向的表达可以通过以下公式表示:

[F4, F5] = \text{Conv}_{1\times 1}(\text{Flip}(F3))

F4 = \text{SSM}\left( \sigma\left( \text{Conv1d}^d(\text{SA}(\text{Conv}^d_{5 \times5}(F4)))) \right) \right)

F_o = F4 \cdot \sigma\left( \text{CA}(\text{Conv}^d_{5\times5}(F5)) \right)

其中,Flip 是沿通道维度进行翻转的操作。

同上,感觉有问题。

通过通道翻转操作,卷积和SSM过程被从前向方向反转到反向方向。将前向和反向的 CBSM(级联双向SSM模块)级联起来,形成双向SSM模块。双向策略可以缓解SSM模块在长范围特征提取中的遗忘问题,更好地增强长距离信息的提取。

3.4 重建损失与一致性损失

为了监督TransMamba的训练,我们采用L1范数来计算去雨图像 \tilde{B} 和干净背景图像 B 之间的重建损失,表达式如下:

L_{rec} = \| \tilde{B} - B \|_1

此外,我们注意到,L1重建损失只在像素级别上调节去雨图像与真实图像之间的相似性,但忽略了从信号角度看,它们之间的全局一致性。图像中信号成分的固有关系在谱域中因雨迹退化的模式而被破坏。通过模拟原始信号关系,我们迫使退化图像的信号表示恢复为干净背景的原始正弦信号。因此,我们引入了图像谱域信号之间的一致性[95],作为一种调节综合线性关系的手段,表达式如下:

\mathbb{G}({\tilde{B}, B}) = \frac{\| \mathbb{F}(\tilde{B}) \bar{\mathbb{F}}(B) \|_1^2}{\| \mathbb{F}(\tilde{B})\bar{\mathbb{F}}(\tilde{B}) \|_1 \|\mathbb{ F}(B)\bar{\mathbb{F}}({B}) \|_1}

其中,\bar{\boldsymbol{\mathbb{F}}} 表示信号的共轭分量,\| \mathbb{F}(F) \bar{\mathbb{F}}(F) \|_1​ 是信号 F 的谱密度,而分子 \| \mathbb{F}(\tilde{B})\bar{\mathbb{ F}}(B) \|_1^2 表示去雨图像和干净图像信号之间的平方交叉谱密度。公式7的值在[0, 1]范围内变化。当两幅图像信号没有一致性时,公式7的值为0,而在完美线性一致性情况下,其值为1。因此,我们将谱一致性损失定义为:

L_{coh} = 1 - \sqrt{\mathbb{G}({\tilde{B}, B} )}

最终的损失函数表达式为:

L = L_{rec} + \alpha L_{coh}

其中,\alpha是谱一致性损失的权重。

4、实验

4.1  实验设置

a) 实现细节:

在我们的模型中,图3中SDTB(Spectral Domain Transformer Blocks)和CMSM(Channel-wise Multi-Scale Modules)的数量分别设置为N_{i \in \{1, 2, 3, 4\}}L_{i \in \{1, 2, 3, 4\}},其中分别设置为 (1, 3, 4, 4)。四个层次的注意力头的数量分别设置为 (1, 2, 4, 8)。初始通道数C_f 设置为36。对于SBSA(Spectral Band Splitting Attention),基于第IV-D节的消融实验,我们将带宽数 b 设置为2。关于SEFF(Spectral Encoding Feature Fusion),通道扩展因子 r 设置为2.667,预定义的权重大小为48×48。训练过程中,我们使用AdamW优化器[96],并采用逐步训练[3],初始批大小为8,初始patch大小为128。总训练迭代次数为300,000次。初始学习率设置为 3 \times 10^{-4},用于前92,000次迭代,然后使用余弦退火方案[97]将学习率降低到 1 \times 10^{-6} ,用于剩余的208,000次迭代。在数据增强方面,我们使用随机垂直和水平翻转。所有实验都在NVIDIA Tesla V100 GPU上使用PyTorch实现。

b) 基准数据集:

我们在五个常用的去雨数据集上进行实验,分别是 Rain200H [12]、Rain200L [12]、DID-Data [49]、DDN-Data [42] 和 SPA-Data [8]。其中,Rain200H 和 Rain200L 是Yang等人[12]提出的,分别表示含有重度和轻度雨条纹的基准数据集。每个数据集包含1800对合成训练图像和200张测试图像。DID-Data [42] 包含12000对合成训练图像,具有三种不同的雨密度级别,以及1200对测试图像。DDN-Data [42] 是通过从UCID [98]、BSD [99]和Google搜索的图像中提取1000张图像合成的14000对雨天图像。SPA-Data [8] 是一个大规模的真实世界雨天数据集,包含638,464个雨/干净图像patch用于训练,1000对图像用于测试。我们还使用了Internet-Data [8],包括147张真实世界的雨天图像,用于定性对比。

c) 基准对比:

我们将我们的TransMamba与两种优化方法进行对比,分别是 DSC [29] 和 GMM [11];八种CNN方法,包括DDN [42]、RESCAN [13]、PReNet [22]、MSPFN [16]、RCDNet [48]、MPRNet [23]、DualGCN [1] 和 SPDNet [2];以及五种基于Transformer的方法,包括Uformer [87]、Restormer [3]、IDT [4]、DRSFormer [5]、UDR-S2Former [6] 和 NeRD-Rain [7]。

4.2 对比实验

a) 定量评估:

在我们的研究中,我们对合成数据集和真实雨天数据集进行了全面的比较分析,结果总结在表I中。正如所示,我们提出的方法在所有其他去雨方法中始终表现优异,特别是在PSNR方面。例如,TransMamba的性能比最先进的方法UDR-S2Former平均提高了0.32 dB。模型大小、复杂度、推理运行时以及在无参考数据集Internet-Data [8]上的无参考图像质量结果已在补充材料中报告。

由于Internet-Data [8]中缺少真实世界雨天图像的地面真值,我们通过计算无参考图像质量评估指标(包括NIQE [100]和BRISQUE [101])对20张随机抽样的图像进行了定性比较。结果见表II。正如所见,我们的方法在这两个无参考指标上都取得了最佳图像质量。

b) 定性评估:

此外,我们在六个数据集上进行了视觉对比,去雨结果展示在图4到图7中。图4和图5展示了在合成数据集上的去雨结果,而图6和图7则展示了在真实世界数据集SPA-Data [8]和Internet-Data [8]上的去雨结果。这些视觉结果突出了我们方法在去除雨迹退化方面的有效性,包括在合成和真实世界的雨天图像中,既有小雨条纹也有大雨条纹。

 

c) 性能与复杂度

我们还在模型大小和计算复杂度方面将我们的方法与近期的去雨模型进行了对比。此外,我们还展示了Rain200L [12]数据集上的去雨结果(以PSNR为参考),以便便于对比这些方法的性能。复杂度的值展示在表III中。正如所示,我们的方法在模型大小和计算开销方面与之前的方法相当。值得注意的是,谱域权重是在复数空间中定义的,可以通过将它们修剪为实数空间来压缩其复杂度。我们将基于模型压缩技术,如修剪和量化,来处理模型效率的问题。总体而言,我们的方法在去雨性能和模型复杂度之间取得了良好的平衡。

4.3 消融实验

为了评估TransMamba中每个组件的有效性,我们在Rain200H数据集[12]上进行了消融实验。具体来说,我们研究了以下几个成分的影响,包括自注意力机制的选择、SBSA中通道数和频带数、前馈网络的选择,以及光谱一致性损失的权重。

a) SBSA

为了验证所提出的SBSA的有效性,我们与三个基线方法进行了比较:多维卷积头转置注意力(MDTA)[3]、基于频域的自注意力求解器(FSAS)[69]和top-k稀疏注意力(TKSA)[5]。此外,我们还探讨了通过排除SBR步骤得到的SBSA额外设置。定量分析结果如表IV所示。FSAS在频域内采用逐点积来替代常规的张量乘法,从而丧失了应由张量乘法捕捉的全局信息。尽管TKSA整合了跨通道的丰富局部信息,但可能导致在光谱域中长程依赖关系的提取不足。相对而言,我们的SBSA结合SBR能够在光谱和空间域中提取长程依赖关系,使PSNR比TKSA提高了0.47dB。

b) 通道数和频带数

为了评估SBSA中特征通道数(Cf)和光谱频带数(b)的影响,我们进行了五种不同配置的实验,分别为(72,1)、(36,2)、(18,4)、(9,8)和(4,18)。它们的乘积限制在72以内,受限于内存。结果如表V所示。可以观察到,虽然减少通道数会降低网络的学习能力,但配置(18,4)仍能提供与(72,1)类似的性能,表明SBSA的有效性。当(Cf, b)组合为(36,2)时,表现最好。

c) SEFF

为了评估所提出的SEFF,我们与四种替代方案进行了比较:(1)原始前馈网络(FN)[102]、(2)门控Dconv前馈网络(GDFN)[3]、(3)基于频域的判别前馈网络(DFFN)[69]、(4)混合尺度前馈网络(MSFN)[5]。定量结果如表VI所示。虽然DFFN能够提取频域特征,但在利用多范围空间知识和增强频域特定信息方面有所欠缺。尽管MSFN整合了混合尺度信息,但仍可能忽略了光谱域中特征的利用。通过结合FFT和跨不同范围的特征聚合,我们的SEFF模块进一步提升了性能,相较于MSFN,PSNR提升了0.14dB。

d) SSM

为了评估所提出的CBSM的有效性,我们与五种设置进行了比较:(1)视觉状态空间模块(VSSM)[83]、(2)两个前向方向级联的CBSM、(3)两个反向方向级联的CBSM、(4)前向和反向方向级联的CBSM、(5)前向和反向方向级联的CBSM(我们的方法)。如表VII所示,双向设置(4)和(5)表现最好。

e) 光谱一致性损失

表VIII展示了光谱一致性损失Lcor的有效性,并检查了不同损失权重值的影响。可以明显看出,加入Lcor后,性能得到了持续增强,当其损失权重α为5时,达到了最佳结果。

4.5 实际应用

为了进一步展示TransMamba在实际雨水去除中的应用及其对下游检测任务的提升能力,我们在图8中展示了两个示例。如图所示,所有的雨滴痕迹都被去除,帮助检测器准确识别了之前被遮挡的物体,如鞋子和手袋。

为了更广泛地评估图像去雨对下游视觉应用(如目标检测)的影响,我们利用流行的目标检测模型YOLOv3[103]评估了COCO350和BDD350数据集[16][104]上的去雨结果。表IX展示了我们的TransMamba在所有去雨方法中,获得了最佳的目标检测性能。图9中的两个实例展示了,TransMamba去雨后的图像在图像质量和检测准确度方面都表现最好。

4.6 限制与未来工作

由于TransMamba在去除雨水积聚方面的强大能力,可能会使恢复的背景过于平滑。我们计划利用扩散模型来缓解这一问题。此外,我们正在开发模型压缩和加速算法,以使雨滴去除模型能够实现实时使用。

相关文章:

《TransMamba:一种混合Transformer-Mamba网络用于单图像去雨》学习笔记

paper:2409.00410 GitHub:sunshangquan/TransMamba 目录 摘要 1、介绍 2、相关工作 2.1 单图像去雨 2.2 视觉Transformer 2.3 光谱域中的Transformer 2.4 光谱域中的图像恢复 2.5 视觉Mamba 3、方法 3.1 整体网络架构 3.2 光谱域变换块&am…...

危化品经营单位安全管理人员的职责及注意事项

危化品经营单位安全管理人员肩负着保障经营活动安全的重要责任,以下是其主要职责及注意事项: 职责 1. 安全制度建设与执行:负责组织制定本单位安全生产规章制度、操作规程和生产安全事故应急救援预案,确保这些制度符合国家相关法…...

安装Redis并把Redis设置成windows下的服务然后进行Redis实例演示

目录 (一)安装Redis (二)Redis设置成windows下的服务 1、把redis设置成windows下的服务 2、设置服务命令 (三)Redis实例演示 1、Redis插入数据 2、Redis修改数据 3、Redis删除数据 4、Redis查询数…...

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中,有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统,能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…...

牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)

文章目录 牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)A. 夹心饼干B. C. 食堂大作战(思维)D. 小苯的排列计数(差分、树状数组)E. 和和(大根堆,前缀和)F. 怎么写线性SPJ &…...

【python】解析自动化脚本文件并按照=测试周期=存储记录

【python】连接Jira获取token以及jira对象 【python】解析自动化脚本文件并按照测试周期存储记录 【python】向Jira推送自动化用例执行成功 【python】向Jira测试计划下,附件中增加html测试报告 将已编写的自动化测试用例按照jira号解析出来,并按照测试计…...

一种简单有效的分析qnx+android智能座舱项目中的画面闪烁的方法(8155平台)

在智能座舱项目的开发过程中,画面闪烁问题是一个常见但棘手的挑战。由于这些闪烁现象往往转瞬即逝,传统的分析工具如截图、录屏或dump图层等方法难以捕捉和定位问题根源。针对这一难题,本文介绍了一种较为有效的分析方法,能够帮助…...

架构师论文《论湖仓一体架构及其应用》

软考论文-系统架构设计师 摘要 作为某省级商业银行数据中台建设项目技术负责人,我在2020年主导完成了从传统数据仓库向湖仓一体架构的转型。针对日益增长的支付流水、用户行为埋点及信贷审核影像文件等多模态数据处理需求,原有系统存在存储成本激增、实…...

一篇文章学懂Vuex

一、基于VueCli自定义创建项目 233 344 二、Vuex 初始准备 建项目的时候把vuex勾选上就不用再yarn add vuex3了 store/index.js // 这里面存放的就是vuex相关的核心代码 import Vuex from vuex import Vue from vue// 插件安装 Vue.use(Vuex)// 创建仓库(空仓库…...

模拟实现Java中的计时器

定时器是什么 定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码. 前端/后端中都会用到计时器. 定时器是⼀种实际开发中⾮常常⽤的组件. ⽐如⽹络通信中, 如果对⽅ 500ms 内没有返回数据, 则断开连接尝试重…...

全面理解-深拷贝与浅拷贝

在 C 中,深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 是两种完全不同的对象拷贝策略,主要区别在于对指针和动态分配资源的处理方式。正确理解二者的区别是避免内存泄漏、悬空指针和程序崩溃的关键。 一、核…...

20250212:https通信

1:防止DNS劫持:使用 https 进行通信。 因为是SDK授权开发,需要尽量压缩so库文件和三方依赖。所以第一想法是使用 head only 的 cpp-httplib 进行开发。 cpp-httplib 需要 SSL 版本是 3.0及以上。但本地已经在开发使用的是1.0.2a版本,不满足需求。 方案1:升级OpenSSL 将Op…...

如何使用爬虫获取淘宝商品详情:API返回值说明与案例指南

在电商数据分析和运营中,获取淘宝商品详情是常见的需求。淘宝开放平台提供了丰富的API接口,允许开发者通过合法的方式获取商品信息。本文将详细介绍如何使用PHP编写爬虫,通过淘宝API获取商品详情,并解析API返回值的含义和结构。 一…...

List 接口中的 sort 和 forEach 方法

List 接口中的 sort 和 forEach 方法是 Java 8 引入的两个非常实用的函数,分别用于 排序 和 遍历 列表中的元素。以下是它们的详细介绍和用法: sort 函数 功能 对列表中的元素进行排序。 默认使用自然顺序(如数字从小到大,字符…...

7.建立文件版题库|编写model文件|使用boost split字符串切分(C++)

建立文件版题库 题目的编号题目的标题题目的难度题目的描述,题面时间要求(内部处理)空间要求(内部处理) 两批文件构成第一个:questions.list : 题目列表(不需要题目的内容)第二个:题目的描述,题目的预设置…...

鸿蒙NEXT应用App测试-专项测试(DevEco Testing)

注意:大家记得先学通用测试在学专项测试 鸿蒙NEXT应用App测试-通用测试-CSDN博客 注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注…...

一周学会Flask3 Python Web开发-Jinja2模板访问对象

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象,如果如何来访问呢? 我们看下下面示例: 定义一个Student类 cla…...

docker离线安装记录

1.安装包 首先需要从官方网站下载Docker的离线安装包,可以通过以下地址找到自己想安装的版本: wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz 【Docker】Docker学习之一:离线安装Docker步骤_docker离线…...

FreiHAND (handposeX-json 格式)数据集-release >> DataBall

FreiHAND (handposeX-json 格式)数据集-release 注意: 1)为了方便使用,按照 handposeX json 自定义格式存储 2)使用常见依赖库进行调用,降低数据集使用难度。 3)部分数据集获取请加入:DataBall-X数据球(free) 4)完…...

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载,导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas,UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…...

anaconda不显示jupyter了?

以前下载的anaconda显示jupyter,但是最近学习吴恩达的机器学习视频,需要用到jupyter,以前的jupyter运行不了,就重新下载了一个anaconda,发现新版的anaconda首页不显示jupyter了,在查找资料之后,…...

WordPress平台如何接入Deepseek,有效提升网站流量

深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…...

第十三:路由两个注意点:

4.3. 【两个注意点】 路由组件通常存放在pages 或 views文件夹&#xff0c;一般组件通常存放在components文件夹。 通过点击导航&#xff0c;视觉效果上“消失” 了的路由组件&#xff0c;默认是被卸载掉的&#xff0c;需要的时候再去挂载。 <script setup lang"ts&q…...

【前端学习笔记】Pinia

1.介绍 Pinia 是 Vue 3 中的官方状态管理库&#xff0c;作为 Vuex 的继任者&#xff0c;它为 Vue 3 提供了一个更现代、更灵活、更易用的状态管理解决方案。Pinia 主要用于管理应用中的全局状态&#xff0c;并提供了一个清晰、简洁的 API 来处理复杂的状态逻辑、数据流和副作用…...

Windows 11【1001问】Windows 11系统硬件配置要求

Windows 11 的设计目标是让用户更贴近自己喜欢的内容&#xff0c;在其发布之际&#xff0c;计算机在连接、创作以及游戏体验方面扮演了更加核心的角色。在设定 Windows 11 的最低系统要求时&#xff0c;我们依据三个关键原则来指导决策&#xff0c;以确保用户能够获得卓越的使用…...

ROS ur10机械臂添加140夹爪全流程记录

ROS ur10机械臂添加140夹爪 系统版本&#xff1a;Ubuntu20.04 Ros版本&#xff1a;noetic Moveit版本&#xff1a;moveit-noetic 参考博客&#xff1a; ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例&#xf…...

火绒终端安全管理系统V2.0网络防御功能介绍

火绒终端安全管理系统V2.0 【火绒企业版V2.0】网络防御功能包含网络入侵拦截、横向渗透防护、对外攻击检测、僵尸网络防护、Web服务保护、暴破攻击防护、远程登录防护、恶意网址拦截。火绒企业版V2.0的网络防御功能&#xff0c;多层次、多方位&#xff0c;守护用户终端安全。 …...

halcon三维点云数据处理(二十五)moments_object_model_3d

目录 一、moments_object_model_3d例程二、moments_object_model_3d函数三、效果图一、moments_object_model_3d例程 这个例子说明了如何使用moments_object_model_3d运算符来将3D数据与x、y、z坐标轴对齐。在实际应用中,通过3D传感器获取的物体模型可能具有一个与物体主轴不…...

网络安全漏洞管理要求 网络安全产品漏洞

一、漏洞类型 缓冲区溢出、跨站脚本、DOS攻击、扫描、SQL 注入、木马后门、病毒蠕虫、web攻击、僵尸网络、跨站请求伪造、文件包含、文件读取、目录遍历攻击、敏感信息泄露、暴力破解、代码执行漏洞、命令执行、弱口令、上传漏洞利用、webshell利用、配置不当/错误、逻辑/涉及错…...

XML(eXtensible Markup Language)

eXtensible Markup Language&#xff08;可扩展标记语言&#xff09;是一种用来存储和传输数据的文本格式。 具体定义 XML 可扩展标记语言&#xff0c;是用于标记电子文件使其具有结构性的标记语言&#xff0c;可以 用来标记数据、定义数据类型&#xff0c;是一种允许用户对自…...

SpringBoot两种方式接入DeepSeek

方式一&#xff1a;基于HttpClient 步骤 1&#xff1a;准备工作 获取 DeepSeek API 密钥&#xff1a;访问 DeepSeek 的开发者平台&#xff0c;注册并获取 API 密钥。 步骤 2&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId&g…...

el-date-picker 组件限制禁止选择当前时间之前的时间

页面代码 <el-date-pickerv-model"xxx.startTime"type"datetime"placeholder"请选择开始时间"value-format"YYYY-MM-DD HH:mm:ss"clearable:disabledDate"disabledDateFn":disabled-hours"disabledHours":dis…...

嵌入式科普(33)深度解析C语言中的const和volatile关键字

1. 关键字基础概念 const&#xff1a;定义"只读变量"&#xff0c;被修饰的变量不可被程序修改 volatile&#xff1a;提醒编译器该变量可能被意外修改&#xff0c;禁止编译器优化 九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参 嵌入式科普(23)指向寄存器的…...

DIP的实际举例

SOLID原则。 依赖倒置原则&#xff08;DIP&#xff09;的核心是高层模块不应该依赖于低层模块&#xff0c;二者都应该依赖于抽象&#xff08;接口或抽象类&#xff09; 例如&#xff0c;随着业务的发展&#xff0c;订单总金额的计算规则可能需要根据不同的客户类型或促销活动…...

【GESP】C++二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵

GESP二级真题&#xff0c;多层循环、分支语句练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3955/ 【GESP】C二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵 | OneCoderGESP二级真题&#xff0c;多层循环、分支…...

python类型转换深浅拷贝

1.类型转换 1.1 int(x):转化为一个整数&#xff0c;只能转换由纯数字组成的字符串 float->int 浮点型强转整形会去掉小数点后面的数&#xff0c;只保留整数部分 a 1.2 print(type(a)) #<class float> b int(a) print(type(b)) #<class int>print(int…...

Kafka面试题汇总

基础篇 1、什么是 Apache Kafka&#xff1f;它的主要用途是什么&#xff1f; 2、Kafka 中的几个核心概念是什么&#xff1f;请简要说明每个概念的作用。 3、Kafka 的 Producer 和 Consumer 是如何工作的&#xff1f;它们之间的数据传递机制是什么&#xff1f; 进阶篇 1、K…...

window安装MySQL5.7

1、下载MySQL5.7.24 浏览器打开&#xff1a; https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-winx64.zip 2、解压缩 下载下来的是一个压缩包&#xff0c;解压到你想放到的目录下面&#xff0c;我放的是“C:\MySQL” 3、配置MySQL环境变量 计算机右键 - 属性 …...

什么是手机9008模式?如何进入9008

之前给大家分享了一些有关手机刷机的知识&#xff0c;今天给大家讲一讲如果刷机过程中不慎变砖应该如何应对&#xff08;当然了&#xff0c;希望大家都不会遇到&#xff09;&#x1f602;&#x1f604; 在给手机 Root 或刷机时&#xff0c;线刷 9008 指的是利用 高通 9008 模式…...

【jira】用到几张表

jira用到的几张表 测试计划&#xff0c;测试周期&#xff0c;测试用例&#xff0c;问题记录 1. 测试计划 # 记录表&#xff0c;查计划详情 SELECT ID,issuenum,SUMMARY FROM jiraissue where issuenum 22871# 测试计划下&#xff0c;测试周期&#xff0c;查测试周期id&…...

文件包含-session2

[题目信息]&#xff1a; 题目名称题目难度文件包含-session22 [题目考点]&#xff1a; 由于网站功能需求&#xff0c;会让前端用户选择要包含的文件&#xff0c;而开发人员又没有对要包含的文件进行安全考虑&#xff0c;就导致攻击者可以通过修改文件的位置来让后台执行任意…...

在 MySQL 的 InnoDB 存储引擎中,脏页(Dirty Page)的刷盘(Flush)时机

1. 后台线程周期性刷盘 触发机制&#xff1a; InnoDB 的 Page Cleaner 线程 会周期性地将脏页刷入磁盘&#xff0c;防止内存中脏页堆积。 触发条件&#xff1a; 脏页比例阈值&#xff1a;当 Buffer Pool 中脏页占比超过 innodb_max_dirty_pages_pct&#xff08;默认 90%&#…...

Vscode编辑器获取更新远程最新分支

解决&#xff1a;打开当前项目的终端&#xff0c;输入 git remote update origin --prune # 查看远程分支 git branch -r --prune --prune 参数告诉 Git 清理那些远程仓库中已经删除但本地仍然存在的跟踪分支。 命令作用 更新远程仓库引用&#xff1a; git remote update …...

`AdminAdminDTO` 和 `userSession` 对象中的字段对应起来的表格

以下是将更正后的表格放在最前面的回答&#xff0c;表格包含序号列&#xff0c;合并了后端 AdminAdminDTO 和前端 userSession 的所有字段&#xff0c;并标注对方没有的字段。token 字段值用省略号&#xff08;...&#xff09;表示&#xff1a; 序号字段名AdminAdminDTO (后端…...

存储引擎、索引(MySQL笔记第四期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 存储引擎概念InnoDB存储引擎MyISAM存储引擎Memory存储引擎存储引擎的选择 索引三种索引索引分类语法(创建/查看/删除)性能分析工具SQL执行频率慢查询日志profile详情explain执行计…...

全面汇总windows进程通信(二)

在Windows操作系统下,实现进程间通信(IPC, Inter-Process Communication)有几种常见的方法,包括使用管道(Pipe)、共享内存(Shared Memory)、消息队列(Message Queue)、命名管道(Named Pipe)、套接字(Socket)等。本文介绍如下几种: 信号量(Semaphore)和互斥量(…...

【大模型】蓝耘智算云平台快速部署DeepSeek R1/R3大模型详解

目录 一、前言 二、蓝耘智算平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 应用场景 2.4 对DeepSeek 的支持 2.4.1 DeepSeek 简介 2.4.2 DeepSeek 优势 三、蓝耘智算平台部署DeepSeek-R1操作过程 3.1 注册账号 3.1.1 余额检查 3.2 部署DeepSeek-R1 3.2.1 获取…...

心理咨询小程序的未来发展

还在眼巴巴看着心理咨询行业的巨大蛋糕却无从下口&#xff1f;今天就来聊聊心理咨询小程序的无限潜力 据统计&#xff0c;全球超 10 亿人受精神心理问题困扰&#xff0c;国内心理健康问题也日益突出&#xff0c;心理咨询需求猛增。可传统心理咨询预约难&#xff0c;费用高&…...

硬件工程师入门教程

1.欧姆定律 测电压并联使用万用表测电流串联使用万用表&#xff0c;红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…...

大模型本地部署硬件资源学习(包含模型微调所需资源)

大模型本地部署硬件配置学习 前言1.大模型应用需求分析扩展框架2.华为昇腾算力3.显卡信息汇总对比表4.大模型微调显卡资源指南&#xff08;Qwen系列与DeepSeek蒸馏模型&#xff09;一、Qwen系列模型微调显存需求二、DeepSeek-R1蒸馏模型微调显存需求三、显存优化策略与硬件选型…...