1. 引言
图像去噪(Image Denoising)是图像处理中的核心任务之一,在医学影像诊断、视频监控、卫星遥感、数字摄影等领域广泛应用[1]。噪声影响图像质量,且影响图像分析等任务,因此,图像去噪是计算机视觉需要研究的问题[2]。
根据去噪方式的不同图像去噪分为传统方法与深度学习方法。传统方法以BM3D算法为代表[3],其通过非局部相似块的三维变换域协同滤波抑制高斯噪声,非局部均值滤波则利用图像自相似性进行加权平均,此类方法虽在特定噪声去除中有效,但普遍面临边缘退化与计算复杂度高的问题[4]。
深度学习领域[5],DnCNNs首次将残差学习引入去噪网络[6],FFDNet通过噪声水平映射实现自适应去噪[7],但是对高频噪声的提取能力不足,可能导致细节效果不佳,且依赖合成高斯噪声数据进行训练,真实场景去噪性能受限。CBDNet提出结合噪声估计与非盲去噪子网络,通过非对称学习和真实噪声建模提升真实图像去噪效果[8]。
本文提出了一种改进图像去噪方法小波变换增强的FFDNet (Fast and Flexible Denoising Network),简写为WT-FFDNet。将小波变换卷积(WTConv2d)引入FFDNet,通过多尺度小波变换提取图像的低频和高频特征,从而增强网络对噪声的处理能力[9]。结合深度可分离卷积(Depthwise Separable Convolution)进一步降低计算复杂度,提升去噪效率。
2. 网络改进介绍
2.1. FFDNet介绍
FFDNet是一种基于卷积神经网络的图像去噪方法,网络首先将输入的噪声图像与噪声水平参数拼接,形成多通道输入,通过一系列卷积层提取特征,最终输出恢复的干净图像[10]。
输入的图像进行预处理,原始的噪声图像经过下采样生成4个子图,形成多通道输入,宽度和高度尺寸缩小为原图的1/2。将噪声水平扩展为噪声图与下采样后的图拼接,作为输入通道。
网络结构主体由多组卷积网络组成,第一层:Conv + ReLU组合,中间层:Conv + Batch Normalization + ReLU,最后一层:Conv层。FFDNet采用轻量化的U-Net结构,使用3 × 3卷积核减少参数量。网络的参数通过正交矩阵初始化。网络能处理噪声水平[0, 75]的高斯噪声,不需要根据不同噪声的级别训练不同的模型。FFDNet使用残差学习的思想,直接预测噪声残差,不预测干净图像本身,通过上述卷积层组实现噪声特征到干净特征的映射。
最后,通过上采样和残差连接重建去噪图像,将得到的低分辨率特征图恢复至原始尺寸,保证与输入图像尺寸一致。
2.2. 网络的整体设计
本文设计的WT-FFDNet模型利用小波变换的多尺度分析能力,能够有效地捕获噪声图像中的不同细节特征。为了在提升性能的同时保持计算效率,模型采用深度可分离卷积替代标准卷积操作,有效地降低了计算的复杂度,同时保持了模型的表达能力。此外,WT-FFDNet还结合了通道注意力机制,使网络能够自适应地增强重要特征的权重,从而提高特征表达的有效性。模型还采用了多尺度特征提取策略,通过在不同尺度上提取和融合特征,提高对不同尺度噪声的适应性和鲁棒性。
网络的整体工作流程,原始图像数据经OpenCV读取并转换为适当的通道格式,使用缩放因子(1.0, 0.9, 0.8, 0.7)生成多分辨率图像。利用窗口50 × 50 (patch_size = 50)和步长100 (stride = 100)进行切块,每个补丁通过aug_times的值控制数据增强程度,最终存储为.h5文件,分别用于训练集和验证集。数据加载时,每个批次从HDF5文件中提取原始图像补丁,并动态添加高斯噪声。接着,通过concatenate_input_noise_map将噪声图像与其噪声标准差拼接,作为输入。输入数据经过VGGBlock提取初步特征,其中VGGBlock由两层3 × 3卷积 + BatchNorm + ReLU组成,以增强局部特征表达能力。随后,ResNetBlock进一步提升特征提取能力,使用跳跃连接(skip connection)保留关键信息,并通过Squeeze-and-Excitation (SE)模块自适应调整通道权重,突出重要特征。在降噪过程中,模型使用db2小波基进行小波分解,将输入特征分解为低频分量(LL)和高频分量(LH, HL, HH)。高频分量易受噪声影响,使用DepthwiseSeparableConvWithWTConv2d进行处理,以抑制噪声相关特征。随后,从最后1级到第1级逐层进行小波逆变换(inverse_wavelet_transform),将校准后的高频分量与低频分量拼接,恢复完整的特征图。最后,UpSampleFeaturesFunction采用反卷积(F.conv_transpose2d)进行上采样,使特征图恢复至原始输入尺寸,并细化高频细节,确保边缘与纹理信息对齐。该网络不直接预测干净图像,而是预测噪声分量,最终的去噪结果通过残差计算(输入图像–预测噪声)得到,使模型能适应不同的噪声水平。网络整体架构图如图1所示,其中DpSeWTConv为DepthwiseSeparableConvWithWTConv2d的缩写。
Figure 1. Overall Architecture of the WT-FFDNet Network
图1. WT-FFDNet网络整体架构图
2.3. 小波变换
小波变换是一种时频分析工具,能将信号分解为不同频率和时间尺度的小波系数。在图像处理方面,小波变换可以将图像分解为低频和三个方向的高频细节特征,分别对应水平、垂直和对角线方向的细节特征信息。其多尺度、多方向的分解特性使小波变换在捕获图像的局部和全局特征方面比传统卷积具有优势,对于同一张图片使用小波卷积和普通卷积进行特征提取,观察得到小波卷积能提取更多的细节特征,如图2所示。
传统卷积神经网络通过堆叠卷积层逐步提取特征,但在处理多尺度信息时存在局限性。小波变换能在一次操作中实现多尺度分解,分解为4个方向的分量,为CNN提供了更丰富的特征表示。此外,小波变换的正交性保证分解的信息接近无损分解,有助于保留图像的细节信息。将小波变换与CNN结合,能同时利用小波变换的多尺度分析能力和CNN的非线性特征提取能力,两者形成互补优势。
Figure 2. Feature extraction comparison between wavelet convolution and ordinary convolution
图2. 小波卷积与普通卷积特征提取对比图
Figure 3. Depthwise separable wavelet convolution architecture
图3. 深度可分离小波卷积架构图
在FFDNet的基础上引入小波变换卷积(WTConv2d),通过多尺度小波分解增强特征提取能力[11]。整个处理过程是:“先分解,再重建”。利用PyWavelets库,根据参数wt_type设置小波基的类型,参数wt_levels设置小波分解的级数,生成相应的分解滤波器dec_filters和重构滤波器rec_filters。分解滤波器将输入特征图分解成低频和高频成分;而重构滤波器则用于将各个子带的信息经过处理后重新合成。通过卷积操作将输入特征图下采样,获得四个子带(LL, LH, HL, HH)的系数。为提高特征表达能力,模块采用多层级(wt_levels参数控制)的小波分解,对低频部分进行迭代处理。在每一级中,将得到的小波系数进行重新排列后,通过专门设计的局部卷积和缩放操作(_ScaleModule),对系数进行微调,增强特征表达。将处理后的低频和高频系数重新组合,通过逆小波变换实现上采样重构,从而获得增强后的特征图。
除了小波分解重构分支外,WTConv2d模块还保留了一条基于常规深度卷积(depthwise convolution)的路径,对原始输入进行特征提取。最终将基础卷积与小波变换分支输出的特征进行特征融合。DepthwiseSeparableConvWithWTConv2d卷积整体架构图如图3所示。
2.4. 深度可分离卷积
深度可分离卷积(Depthwise Separable Convolution)是一种轻量化的卷积,将特征提取与特征融合分开,降低了计算的复杂度[12]。传统卷积与深度可分离卷积的参数量和计算量的对比如下表1。其中Cin和Cout分别是输入通道和输出通道,卷积核大小为K × K。
Table 1. Comparison of parameter quantities
表1. 参数量对比表
卷积类型 |
参数量公式 |
标准卷积 |
Cin × Cout × K × K |
深度卷积 |
Cin × K × K |
逐点卷积 |
Cin × Cout |
深度可分离卷积总计 |
Cin × K × K + Cin × Cout |
深度可分离卷积的思路是将标准卷积分为两个步骤:首先,通过深度卷积对每个通道进行空间卷积。再通过逐点卷积对不同通道进行特征进行融合。深度可分离卷积架构如图4所示。
Figure 4. Depthwise separable convolution architecture
图4. 深度可分离卷积架构图
在WT-FFDNet中,将小波变换和深度可分离卷积,用WTConv2d替换传统深度卷积形成DepthwiseSeparableConvWithWTConv2d。
2.5. VGGBlock与ResNetBlock
VGGBlock模块的核心是连续重复的多个3 × 3卷积层,每个卷积层后接归一化和ReLU激活函数。该模块在设计上没有池化操作,保持了输入特征图的空间分辨率。先通过一个3 × 3卷积(padding = 1),接着BN层和ReLU激活函数,以提取初步特征。再通过一个相同结构的3 × 3卷积层及其对应的BN和ReLU,进一步加强特征表达能力。VGGBlock结构图如图5所示。
ResNetBlock模块是根据残差学习的思想设计而来,通过引入跳跃连接缓解深层网络的训练难题。在基础卷积块的基础上,模块中增加融合了通道注意力机制——Squeeze-and-Excitation (SE)模块,自适应地调整各通道的重要程度,增强网络对关键特征的感知力。模块由两个连续的3 × 3卷积层组成,每个卷积后有BN层和ReLU激活函数。其中,第一个卷积层用于初步特征提取,第二个卷积层进一步提炼特征。在第二个BN层后,通过Squeeze-and-Excitation机制对卷积输出的通道进行加权调整。该模块内部使用一个缩减比例来降低特征维度,再经过激活和扩展操作,得到每个通道的权重,进而强调重要特征。原始输入通过直接跳跃连接与经过卷积和SE调整后的特征进行逐元素相加,随后经过ReLU激活。缓解深层网络训练中梯度消失的问题,ResNetBlock结构如图5所示。
Figure 5. VGGBlock and ResNetBlock structures
图5. VGGBlock与ResNetBlock结构图
3. 实验验证与分析
3.1. 数据集
Urban100、Set12、Kodak24、CBSD68和BSDS500是计算机视觉领域常用的基准测试集。Urban100包含100张高分辨率城市场景图像(500~1500像素),其建筑结构和密集纹理用于检验模型对几何结构的重建能力。Set12作为轻量级测试集,包含12张典型自然图像(约512 × 512像素),用于不同噪声强度下的去噪算法横向对比。Kodak24数据集的24张sRGB图像(768 × 512像素)因自然色彩过渡和细腻场景细节,成为图像去噪任务的常用数据集。CBSD68为68张彩色自然图像(平均约481 × 321像素),验证算法对彩色图像细节的保留效果。BSDS 500有500张多样化的高质自然图像,对模型进行综合测试。
3.2. 网络训练环境和参数设定
使用kaggle线上环境,GPU是NVIDIA Tesla P100,显存为16G、CPU是Intel Xeon,Python版本为3.10,深度学习框架为pytorch,其为版本2.5.1,训练环境说明如表2所示。在网络训练过程中使用Adam优化器,均方误差损失函数(MSE)进行优化,参数betas保持默认设置,初始学习率设为1×10−3,通过分阶段调整策略:当训练轮次超过50时降为1 × 10−4,超过60轮次后降为1 × 10−6。训练过程采用批量大小为64的配置,共进行90个训练周期,每10个迭代保存一次中间结果,每5个周期保存完整检查点。噪声强度参数设置为动态范围[0, 75/255],验证时使用固定噪声强度。模型正则化为每10次迭代执行一次滤波器正交化操作,通过SVD分解保证卷积核的正交性。
Table 2. Training environment description
表2. 训练环境说明表
配置 |
说明 |
平台 |
Kaggle |
CPU |
Intel Xeon |
GPU |
NVIDIA Tesla P100 |
框架和语言 |
Pytorch2.5.1+Python3.10 |
3.3. 评价指标
PSNR中文简称峰值信噪比,它是图像质量评价指标,用于评估原始图像与去噪后的图像的还原程度,PSNR越高说明去噪效果越好。PSNR的计算公式如下:
MAX为图像中像素的可能最大值。MSE为均方误差是原始图像与去噪后图像之间的像素值差异的平均值。其计算公式如下:
其中,
和
分别代表原始图像和处理后图像在位置
的像素值,M和N是图像的宽度和高度。
3.4. 实验结果
在Berkeley Segmentation Dataset 500数据集测试原模型与改进模型的PSNR值对比,对比结果如图6所示。
Figure 6. PSNR comparison between improved model and original model
图6. 改进模型与原模型PSNR对比图
在不同数据集上对比不同方法在相同噪声强度下的性能,本文方法在高噪声强度下超越了前面模型,对比结果如表3所示。
Table 3. PSNR comparison of different methods at the same noise intensity
表3. 不同方法在相同噪声强度PSNR值对比表
噪声强度 |
数据集 |
NLDD |
NLB |
BM3D |
DnCNN |
WT-FFDNet |
15 |
CBSD68 |
33.16 |
33.14 |
33.45 |
33.89 |
33.28 |
Kodak24 |
33.93 |
33.84 |
34.19 |
34.48 |
34.46 |
Urban100 |
- |
- |
- |
- |
33.28 |
35 |
CBSD68 |
29.08 |
28.77 |
28.95 |
29.58 |
29.27 |
Kodak24 |
30.04 |
29.64 |
29.98 |
30.46 |
30.48 |
Urban100 |
- |
- |
- |
- |
29.27 |
70 |
CBSD68 |
25.86 |
25.79 |
25.86 |
- |
26.35 |
Kodak24 |
26.86 |
26.76 |
26.91 |
26.96 |
26.96 |
Urban100 |
- |
- |
- |
- |
26.11 |
在cbsd68、urban100、kodak测试集测试模型的去噪性能,各测试集的PSNR和SSIM值如表4所示。
Table 4. PSNR/SSIM results on different datasets
表4. 不同数据集的PSNR/SSIM值结果表
数据集 |
噪声强度 |
15 |
35 |
50 |
70 |
CBSD68 |
33.2821/0.9110 |
29.2787/0.8126 |
27.7245/0.7120 |
26.3574/0.6452 |
Urban100 |
33.2800/0.9439 |
29.2766/0.8991 |
27.7565/0.8363 |
26.1116/0.7842 |
Kodak24 |
34.4618/0.9098 |
30.4872/0.8453 |
28.5032/0.7715 |
26.9652/0.7166 |
4. 结语
综上所述,本研究通过将小波变换与FFDNet结合,形成图像去噪网络WT-FFDNet。小波变换卷积模块(WTConv2d)通过多级分解–重构机制,能分离高频噪声与低频结构特征;引入深度可分离卷积与通道注意力机制,进一步提升网络的性能;动态噪声输入与残差学习的使用,单个模型可覆盖0~75强度宽域噪声,降低模型的训练投入。实验表明,该方法在CBSD68、Urban100等数据集上PSNR指标均提升。