本文希望从网络架构设计和新颖的训练数据合成来提升去噪性能。作者提出了 Swin-Conv-UNet 盲去噪模型。整体结构来自 UNet,模块的设计思想结合了 DRUNet 和 SwinIR。

基于 Swin-Conv-UNet 结果和数据分析的盲去噪方法

论文名称:Practical Blind Denoising via Swin-Conv-UNet and Data Synthesis 

论文地址: https://arxiv.org/pdf/2203.13278.pdf

盲去噪任务介绍

作为基本的图像复原问题,图像去噪 (Image Denoising) 问题的目标是从噪声图片中重建清晰的图像,越来越受到人们的关注。它是诸多视觉任务的第一步,且能够帮助评估不同图像先验和优化算法的有效性。目前已经提出了基于深度学习的方法的多种网络架构和超分网络的训练策略来改善去噪的性能。顾名思义,Image Denoising 任务需要两张图片,一张清晰的图和一张带噪声的图。去噪模型的目的是根据后者生成前者,而退化模型的目的是根据前者生成后者。经典去噪任务认为:噪声类型和噪声水平 (noise type and noise level) 是已知的。 但是,在实际应用中,这种噪声作用十分复杂,不但强度水平未知,而且噪声类型也难以简单建模 (白噪声,JPEG 压缩噪声,泊松噪声,相机传感器噪声等)。这种噪声类型或噪声水平未知的超分任务我们称之为盲去噪任务 (Blind Image Denoising)。对于这类任务的深度学习方法目前有两大类:其一是把噪声类型简单建模为加性高斯白噪声 (Additive White Gaussian Noise, AWGN),并想办法改进模型,因为网络架构可以帮助捕获图像先验来提升去噪任务的性能;其二是去关注训练数据或者噪声建模。但是,以 AWGN 简单建模的训练样本和真实图像之间存在一个域差。以 AWGN 为噪声训练得到的网络在实际应用时,这种域差距将导致比较糟糕的性能。

Swin-Conv-UNet_去噪

从模型架构和噪声类型建模两个方面提升去噪性能

已有一些相关的工作希望建模更接近真实世界噪声,通过利用数字传感器的物理特性和成像流水线的步骤,已有的工作[1]设计了一种相机传感器噪声合成方法,并提供了一种有效的深度原始图像去噪模型。但是它主要关注相机传感器引起的噪声,而缺乏对通用盲去噪方法的思考。

去噪模型的架构可以帮助捕获图像先验来提升去噪任务的性能,所以也是值得考虑的因素之一。

所以这个工作试图通过新颖的网络架构设计和新颖的训练数据合成来提升去噪性能。对于网络架构设计的部分,不同类型的架构具有互补的图像先验的捕捉能力,可以结合使用以提高性能。因此,作者考虑了两种模型,分别是 DRUNet 和 SwinIR。作者提出了一个 Swin-Conv 模块,以结合残差卷积层的 local 建模能力和 Swin 模块的 non-local 建模能力,然后将其作为主要构建模块插入到 UNet 模型架构中。对于噪声模拟部分,作者同时考虑了加性高斯白噪声,泊松噪声,斑点噪声,JPEG 压缩噪声和相机传感器噪声等类型,以模拟真实世界噪声。

图像复原问题的建模

Swin-Conv-UNet_数据_02

可以看出解决盲去噪的关键在于对 noise 图像的退化过程进行建模以及对 clean 图像的先验设计。

很明显,退化过程是由来自训练数据的噪声图像隐式定义的,这表明训练数据的噪声图像负责深度盲去噪模型来捕捉退化过程的知识。为了提高深度盲去噪模型的图像先验建模能力,应该重点改善以下三个因素,包括网络结构、模型大小和干净的图像训练数据。很明显,退化过程是由训练数据的噪声图像隐式定义的这表明训练数据的噪声图像负责 Blind Image Denoising 模型来捕捉退化过程的知识为了提高深度盲去噪模型的图像先验建模能力,应该重点改善以下3个因素,包括网络结构、模型大小和干净的图像训练数据。其中,模型的大小很容易调节,所以本文重点考虑网络架构训练数据的退化模型

网络架构的改进--Swin-Conv-UNet

作者提出了如下图1所示的 Swin-Conv-UNet 盲去噪模型。整体结构来自 UNet,模块的设计思想结合了 DRUNet 和 SwinIR。具体而言,这个工作设计了一个 Swin-Conv (SC) 模块,嵌入在 UNet 的大架构里面。

UNet 骨干包含4个 scale,每个 scale 都有一个 stride=2 的下采样 Conv 和一个 stride=2 的上采样 Conv Transpose,外加一个残差连接。从第1级到第4级,每层的通道数分别为64、128、256和512。SCUNet 和DRUNet 之间的主要区别在于,SCUNet 在向下缩放和向上缩放的每个尺度中采用4个 SC 模块,而不是4个残差卷积块。

Swin-Conv-UNet_建模_03

值得指出的是,本文所提出的 SCUNet 具有几个优点。其一,SC 模块融合了 RConv 模块的 local 建模能力和SwinT 模块的 non-local 的建模能力。其二,SCUNet 的局部和非局部建模能力通过多尺度 UNet 得到进一步增强。其三,1×1 卷积可以有效地促进 SwinT 块和 RConv 块之间的信息融合。其四,split 和 concat 类似于 Group Conv,也能够节约一些计算复杂度。

退化模型的改进--实用的噪声退化模型

作者通过合成带噪声的数据来模拟真实世界的数据,合成噪声数据是通过本文提出的实用的噪声退化模型。下面是本文所使用的噪声类型:

① 加性高斯白噪声 (Additive white Gaussian Noise, AWGN)

加性高斯白噪声是最广泛使用的去噪假设。虽然它可以完美地模拟图像传感器的读取噪声,但它通常与真实噪声不匹配,并且会降低训练的深度去噪模型的实用性。通过这种噪声构建的训练样本能够完成去噪任务,但是牺牲了边缘和纹理。作者不使用简化的 AWGN,而是采用具有 3 × 3 协方差矩阵的 3D 广义零均值高斯噪声模型来模拟R,G 和 B 通道之间的噪声相关性。

根据R,G 和 B 通道之间的噪声相关性大小,作者认为有两种极端的情况:加性高斯白噪声和灰度高斯噪声。作者从 {2/255,3/255,50/255} 对它们的噪声水平进行统一采样。并分别以概率0.4,0.4和0.2对这两种极端情况和一般情况进行采样。

② 泊松噪声 (Poisson Noise)

泊松噪声通常是指光子散粒噪声,其来源于电荷的离散性质。它严重出现在弱光条件下,如夜间摄影、医学成像、光学显微镜成像和天文成像的场景下。与信号无关的高斯噪声不同,泊松噪声是信号相关的

传统的非深度学习方法处理这类噪声的方法是变量稳定变换 (Variable-Stabilizing Transformation, VST),这种方法可以将噪声转化为近似的信号无关噪声,然后用高斯去噪方法处理。但是,这种方法需要事先知道噪声类型,这对于真实图像来说一般是不可能的。

Swin-Conv-UNet_人工智能_04

③ 斑点噪声 (Speckle Noise)

斑点噪声是乘法噪声,通常出现在相干成像系统中,如合成孔径雷达 (SAR) 成像和医学超声成像。它可以通过 clean 图像和高斯噪声之间的乘法来建模。因此,作者通过高斯噪声与 clean 图像相乘来模拟斑点噪声。

④ JPEG 压缩噪声 (JPEG Compression Noise)

Swin-Conv-UNet_去噪_05

⑤ 相机传感器的处理噪声 (Processed Camera Sensor Noise)

现代数码相机的输出 RGB 图像,那这里面的噪声主要是由原始传感器数据 (Raw Sensor Data) 中的读取散粒噪声通过图像信号处理 (ISP) 管道引起的。因此,经处理的相机传感器噪声的分布随着读取和散粒噪声模型以及ISP 模型而变化。作者通过反向 ISP 流水线先把图片从 clean 版本生成原始图片,然后在 Raw 域将读取和散粒噪声加在原始图片上,再通过正向 ISP 流水线处理得到 RGB 域图片。

读取和散粒噪声取自论文: Unprocessing images for learned raw denoising (CVPR 2019)
ISP 流水线取自论文: Designing a practical degradation model for deep blind image super-resolution (ICCV 2021)。包括去马赛克 (Demosaicing)、曝光补偿 (Exposure Compensation)、白平衡 (White Balance)、相机到 XYZ (D50) 色彩空间转换、XYZ (D50) 到线性 RGB色彩空间转换、色调映射 (Tone Mapping) 和伽马校正 (Gamma Correction)。作者在本文中调换了伽马校正和色调映射的顺序,把伽马校正作为 ISP 流程的最后一步。

正向-反向色调映射可能会导致相对于原始图像的色移 (Color Shift) 问题,作者也通过对干净图像应用反向-正向色调映射来解决这个问题。

⑥ 图像缩放 (Resizing)

Swin-Conv-UNet_去噪_06

在实践中,真实图像可能会被调整大小或 JPEG 压缩几次,JPEG 压缩可能会在 Resizing 之前或之后执行。所以,作者最终采用了双重退化策略 (Double Degradation Strategy) 和随机洗牌策略 (Random Shuffle Strategy)。这样做的目的是使得退化空间得到拓展,这可以促进盲去噪模型的泛化能力。

具体而言,作者执行上述退化过程,高斯噪声和 JPEG 压缩噪声被添加的概率为1,其他退化作用被添加的概率为0.5。

训练数据合成策略

如下图2所示是训练数据合成策略。与之前介绍的 Real-ESRGAN,BSDNet 采用的训练数据合成策略相比,主要由以下三点不一样:

一种手工设计的广义盲图像超分退化模型:模糊、下采样和噪声等退化作用强势包揽!

底层任务超详细解读 (三):只用纯合成数据来训练真实世界的盲超分模型 Real-ESRGAN

  1. Real-ESRGAN,BSDNet 采用的训练数据合成策略用于盲超分任务,本文用于盲去噪任务。
  2. 本文采用的训练数据还对高质量图像执行尺寸调整,以产生噪声图像的相应干净图像。
  3. 加入了更多种类的噪声,比如斑点噪声等,可以产生非常逼真的噪声图像。

Swin-Conv-UNet_数据_07

图2:成对的训练数据合成策略。由于泊松噪声是信号相关的,因此 Poison 的虚线箭头表示干净图像用于产生泊松噪声。由于色调映射可能会导致相对于原始图像的色移问题,因此 Camera Sensor 的虚线箭头表示通过对干净图像应用反向-正向色调映射来解决这个问题

下图3是合成的训练数据对示例。高质量图像的大小为544×544。noise/clean 图像块的大小为128×128。

Swin-Conv-UNet_人工智能_08

图3:合成的训练数据对示例。高质量图像的大小为544×544。noise/clean 图像块的大小为128×128

SCUNet 去噪实验结果

Swin-Conv-UNet_建模_09

对于盲去噪实验,作者通过添加具有特定噪声水平的 AWGN 来生成噪声图像,并且分别学习每个噪声水平的去噪模型。一开始按照噪声等级25训练模型,并在其他的噪声等级下进行微调。

Grayscale Gaussian denoising

如下图4所示为数据集 Set12,BSD68,Urban100 的去噪任务结果。噪声等级设置为15, 25, 50,可以看出,对于三个数据集上的所有噪声水平,本文提出的 SCUNet 实现了明显优于其他方法的 PSNR 结果。具体来说,SCUNet 在 Set12 上的平均 PSNR 超过了 DnCNN、IRCNN 和 FFDNet 0.6 dB,在 BSD68 上超过了 0.3dB,在Urban100 上超过了 1.6dB。

Swin-Conv-UNet_数据_10

图4:Set12,BSD68,Urban100 的去噪任务结果

如下图5所示是 Set12 数据集中的 "Barbara" 图片在噪声水平为50时的去噪可视化结果。作者还比较了基于 non-local 先验的 BM3D 和 WNNM 模型,有如下的观察结果:

首先,WNNM 产生比一些深度去噪方法如 DnCNN、FFDNet、RNAN 和 FOCNet 更好的视觉效果,但是它们对重复线的复原效果不足。但是本文的 SCUNet 比其他方法产生了更好的视觉效果,进一步验证了 SCUNet 对图像非局部性建模的有效性。

Swin-Conv-UNet_人工智能_11

图5:Set12 数据集中的 "Barbara" 图片在噪声水平为50时的去噪可视化结果

Color Gaussian denoising

如下图4所示为数据集 CBSD68,kODAK24,McMaster,Urban100 的去噪任务结果。可以看出,本文的 SCUNet 产生了最佳的整体性能。有趣的是,虽然 SCUNet 在不同噪声水平下的 PSNR 增益与 DRUNet 相似,但随着噪声水平的增加,它比 SwinIR 获得了更大的 PSNR 增益。可能的原因是 SwinIR 往往缺乏对去除重噪声的长程相关性进行建模的能力。

Swin-Conv-UNet_去噪_12

图6:CBSD68,kODAK24,McMaster,Urban100 的去噪任务结果

如下图7所示是 CBSD68 数据集中的 "163085" 图片在噪声水平为50时的去噪可视化结果。可以看出,SwinIR 未能恢复沿鸟喙的黄色条状部分,而 DnCNN,RNAN 和 DRUNet 引入了一些平滑度。相比之下,SCUNet 可以恢复精细结构并较好地保持图像清晰度。

Swin-Conv-UNet_去噪_13

图7:CBSD68 数据集中的 "163085" 图片在噪声水平为50时的去噪可视化结果

与此同时,作者还报告了 DRUNet, SwinIR, SCUNet 的计算复杂度。可以看到,由于结合了 UNet 和 SC 模块,SCUNet 实现了最低的 FLOPs。由于 SwinIR 不使用任何下采样操作,因此它会受到高 FLOPs 和长运行时间的影响。相比较而言,SCUNet 实现了FLOPs、runtime 和 #Params 之间的最佳权衡。

Swin-Conv-UNet_建模_14

图8:DRUNet, SwinIR, SCUNet 的计算复杂度

SCUNet 盲去噪实验结果

Swin-Conv-UNet_去噪_15

如下图9所示是 SCUNet 盲去噪实验可视化结果。可以观察到 SCUNet 和 SCUNetG 在去除噪声和保留细节方面达到了最佳的视觉效果。例如,CBDNet 和 DeamNet 都不能去除 "Palace" 的处理后的相机传感器噪声,而 SCUNet 和 SCUNetG 可以去除这样的低频噪声并恢复底层边缘。但是,从无参考图像质量评价 (IQA) 的指标来看,SCUNet 和 SCUNetG 并没有显示出有希望的结果,这种现象进一步表明,无参考 IQA 方法应根据退化类型进一步变化。这也是对 IQA 领域的一个新思考。

Swin-Conv-UNet_建模_16

图9:SCUNet 盲去噪实验在三张图片 "Palace", "Building", "Stars" 的可视化结果和无参考图像质量评价指标 NIQE ↓ / NRQM ↑ / PIQE ↓

如下图10所示是 SCUNet 和 SCUNetG 对来自 RNI15 数据集的真实图像的更多盲去噪结果。"Boys", "Dog" 和 "Glass" 可能被未知相机类型的已处理相机传感器噪声破坏,而 "Flowers" 被高斯噪声破坏。从视觉效果上看,看出 SCUNet 和 SCUNetG 也很好地完成了这些复杂的盲去噪任务。

Swin-Conv-UNet_建模_17

图10:SCUNet 和 SCUNetG 对来自 RNI15 数据集的真实图像的更多盲去噪结果,第2行和第3行分别是 SCUNet 和 SCUNetG 的可视化结果

总结

噪声类型或噪声水平未知的超分任务我们称之为盲去噪任务 (Blind Image Denoising)。本文希望从网络架构设计和新颖的训练数据合成来提升去噪性能。从模型架构上看,作者提出了 Swin-Conv-UNet 盲去噪模型。整体结构来自 UNet,模块的设计思想结合了 DRUNet 和 SwinIR。具体而言,这个工作设计了一个 Swin-Conv (SC) 模块,嵌入在 UNet 的大架构里面。从合成数据集的退化类型上来看,作者提出了实用的噪声退化模型,包含加性高斯白噪声 (Additive white Gaussian Noise, AWGN),泊松噪声 (Poisson Noise),斑点噪声 (Speckle Noise),JPEG 压缩噪声 (JPEG Compression Noise),相机传感器的处理噪声 (Processed Camera Sensor Noise) 和 图像缩放 (Resizing)。