【图像去噪】论文精读:Toward Convolutional Blind Denoising of Real Photographs(CBDNet)

文章目录

  • 前言
  • Abstract
  • 1. Introduction
  • 2. Related Work
    • 2.1. Deep CNN Denoisers
    • 2.2. Image Noise Modeling
    • 2.3. Blind Denoising of Real Images
  • 3. Proposed Method
    • 3.1. Realistic Noise Model
    • 3.2. Network Architecture
    • 3.3. Asymmetric Loss and Model Objective
    • 3.4. Training with Synthetic and Real Noisy Images
  • 4. Experimental Results
    • 4.1. Test Datasets
    • 4.2. Implementation Details
    • 4.3. Comparison with State-of-the-arts
    • 4.4. Ablation Studies
    • 4.5. Interactive Image Denoising
  • 5. Conclusion


前言

论文题目:Toward Convolutional Blind Denoising of Real Photographs —— 迈向真实照片的卷积盲去噪

论文地址:Toward Convolutional Blind Denoising of Real Photographs

论文源码:https://github.com/GuoShi28/CBDNet

CVPR 2019!真实世界盲图像去噪!

Abstract

虽然深度卷积神经网络(CNNs)在加性高斯白噪声(AWGN)图像去噪方面取得了令人印象深刻的成功,但它们在真实世界的噪声照片上的性能仍然有限。主要原因是他们的学习模型很容易过拟合简化的AWGN模型,该模型严重偏离了复杂的真实噪声模型。为了提高深度CNN去噪器的泛化能力,我们建议使用更真实的噪声模型和真实世界的噪声干净图像对训练卷积盲去噪网络(CBDNet)。一方面,考虑信号相关噪声和相机内信号处理管道来合成真实的噪声图像。另一方面,还包括真实世界的噪声照片及其几乎无噪声的照片来训练我们的CBDNet。为了进一步提供一种交互式策略方便地校正去噪结果,将具有非对称学习的噪声估计子网络嵌入到CBDNet中,抑制噪声水平的低估。在真实世界噪声照片的三个数据集上的大量实验结果清楚地表明,CBDNet在定量指标和视觉质量方面优于最先进的方法。该代码可在 https://github.com/GuoShi28/CBDNet 获得。

摘要总览:

  • motivation:为了提升真实世界图像的去噪性能,增强泛化能力,提出CBDNet,学习真实噪声,而不是高斯白噪。
  • 模型:CBDNet,相机产生的真实噪声图像和几乎无噪声照片训练。
  • 特点:交互式策略,非对称学习

带着问题继续阅读论文,CBDNet是如何实现的?交互式策略是什么?什么是非对称学习?

1. Introduction

图像去噪是低级视觉和图像处理中必不可少的基本问题。几十年来,人们开发了许多有前景的方法[3,12,17,53,11,61]。去除加性高斯白噪声(AWGN),实现了接近最优的性能[8,31,50]。然而,在真实的相机系统中,图像噪声来自多个来源(如暗电流噪声、短噪声和热噪声),并进一步受到相机内处理(ISP)管道(如demosaicing、Gamma校正和压缩)的影响。所有这些使真实噪声更加多样化从AWGN中,对真实世界的噪声照片进行盲去噪仍然是一个具有挑战性的问题。

最近,深度 CNN 的发展显着提高了高斯去噪性能 [61, 38, 62]。然而,当应用于真实照片时,用于盲AWGN去除的深度降噪器会急剧下降(见图1(d))。另一方面,用于非盲AWGN去除的深度去噪器会在去除噪声的同时平滑细节(见图1(e))。这种现象可以从深度 CNN [39] 的特征来解释,其中它们的泛化在很大程度上取决于记忆大规模训练数据的能力。换句话说,现有的 CNN 降噪器往往过度拟合高斯噪声,并且不能很好地推广到具有更复杂噪声的真实噪声图像。在这里插入图片描述
在本文中,我们通过为真实世界的照片开发卷积盲去噪网络 (CBDNet) 来解决这个问题。如[39]所示,CNN去噪器的成功在很大程度上取决于合成噪声和真实噪声的分布是否很好地匹配。因此,真实的噪声模型是真实照片盲去噪的首要问题。根据[14,45],泊松高斯分布可以近似为信号相关和平稳噪声分量的异方差高斯,被认为是对真实原始噪声建模的AWGN更合适的替代方案。此外,相机内处理会进一步使噪声在空间上和颜色相关,这增加了噪声的复杂性。因此,我们在噪声模型中考虑了泊松-高斯模型和相机内处理管道(例如,demosaicing、Gamma校正和JPEG压缩)。实验表明,相机内处理管道在现实噪声建模中起着关键作用,在DND[45]上,AWGN获得了显著的性能增益(即PSNR > 5 dB)。

我们进一步结合合成和真实噪声图像来训练CBDNet。一方面,很容易访问大量的合成噪声图像。然而,真实照片中的噪声不能完全用我们的模型来表征,从而为提高去噪性能提供一些余地。另一方面,一些方法[43,1]建议通过对同一场景的数百个噪声图像进行平均来获得无噪声图像。然而,这样的解决方案的成本是昂贵的,并且存在无噪声图像的过度平滑效应。得益于合成和真实噪声图像的结合,CBDNet在DND[45]上可以获得0.3 ~ 0.5dB的PSNR增益。

我们的CBDNet由两个子网络组成,即噪声估计和非盲去噪。随着噪声估计子网络的引入,我们通过对噪声水平的低估误差施加更多的惩罚来采用非对称损失,使得当噪声模型与真实噪声不匹配时,我们的CBDNet表现稳健。此外,它还允许用户通过调整估计的噪声水平图来交互校正去噪结果。在三个真实的噪声图像数据集上进行了广泛的实验,即NC12[29]、DND[45]和Nam[43]。在定量指标和感知质量方面,与最先进的技术相比,我们的CBDNet表现良好。如图1所示,盲AWGN[61]的非盲BM3D[12]和DnCNN都不能对真实世界的噪声照片进行去噪。相比之下,我们的CBDNet在去除复杂的真实世界噪声的同时,通过保留大多数结构和细节,获得了非常令人愉悦的去噪结果。

总而言之,这项工作的贡献有四个方面:

  • 通过考虑异方差高斯噪声和相机内处理管道,提出了一种真实的噪声模型,大大提高了去噪性能。
  • 结合合成噪声图像和真实噪声照片,以更好地表征真实世界的图像噪声,提高去噪性能。
  • 得益于噪声估计子网络的引入,提出了非对称损失来提高对噪声的泛化能力,通过调整噪声水平图允许交互式去噪。
  • 在三个真实世界的噪声图像数据集上的实验表明,我们的CBDNet在定量指标和视觉质量方面都取得了最先进的结果。

介绍梳理:摘要的扩展。首先,展开分析问题切入点,即真实噪声来源(ISP),这样的盲去噪很难(motivation)。然后,阐述现有的方法,通过图1的比较,说明BM3D和DnCNN对于真实的高斯噪声效果不好,甚至更差(DnCNN)。进而,强调本文的CBDNet的实现,噪声模型由高斯白噪变为泊松高斯分布,并在主流数据集上产生良好的效果。最后,说明本文四个贡献。

继续思考问题,CBDNet是如何实现的?交互式noise level map和FFDNet有何不同?非对称学习损失是如何定义的?

2. Related Work

2.1. Deep CNN Denoisers

深度神经网络 (DNN) 的出现导致高斯去噪的显着改进。在Burgeret等人[6]之前,大多数早期的深度模型无法达到最先进的去噪性能[22,49,57]。随后,CSF [53] 和 TNRD [11] 展开优化算法来解决专家模型领域以学习阶段推理过程。通过结合残差学习[19]和批处理归一化[21],Zhang等人[61]提出了一种去噪CNN (DnCNN),其性能优于传统的基于非cnn的方法。在不使用干净数据的情况下,Noise2Noise [30] 也达到了最先进的水平。最近,其他CNN方法,如RED30[38]、MemNet[55]、BM3D-Net[60]、MWCNN[33]和FFDNet[62],也被开发出来,具有良好的去噪性能。

得益于cnn的建模能力,研究[61,38,55]表明,学习单个模型进行盲高斯去噪是可行的。然而,这些盲模型可能过度拟合AWGN,无法处理真实噪声。相比之下,非盲 CNN 去噪器,例如 FFDNet [62],可以通过手动设置适当或相对较高的噪声水平在大多数真实噪声图像上取得令人满意的结果。为了利用这一特性,我们的CBDNet包括一个噪声估计子网络和一个非对称损失来抑制噪声水平的低估误差。

2.2. Image Noise Modeling

大多数去噪方法都是针对非盲高斯去噪开发的。然而,真实图像中的噪声来自各种来源(暗电流噪声、短噪声、热噪声等),并且要复杂得多 [44]。利用泊松建模光子传感和高斯剩余平稳扰动,采用泊松-高斯噪声模型[14]对成像传感器的原始数据进行建模。在[14,32]中,还考虑了摄像机响应函数(CRF)和量化噪声,以获得更实际的噪声建模。不除了泊松-高斯,Hwang 等人[20]给出了泊松光子噪声建模的Skellam分布。此外,在考虑摄像机内图像处理流水线时,信道无关噪声假设可能不成立,提出了几种跨通道噪声建模的方法[25,43]。在这项工作中,我们展示了真实的噪声模型在基于 CNN 的真实照片去噪中起着关键作用,泊松高斯噪声和相机内图像处理管道都有利于去噪性能。

2.3. Blind Denoising of Real Images

真实噪声图像的盲去噪通常更具挑战性,可能涉及噪声估计和非盲去噪两个阶段。对于AWGN,已经开发了几种基于PCA的[48,34,9]方法来估计噪声标准差(SD)。Rabie[49]将噪声像素建模为异常值,并利用洛伦兹鲁棒估计器进行AWGN估计。对于泊松-高斯模型,Foi等人[14]提出了一种两阶段方案,即多个期望/标准差对的局部估计和全局参数模型拟合。

在大多数盲去噪方法中,噪声估计与非盲去噪密切相关。Portilla[46,47]采用高斯尺度混合对每个尺度的小波块进行建模,并利用贝叶斯最小二乘估计干净的小波块。基于分段平滑图像模型,Liu et al.[32]提出了一种统一的颜色噪声估计和去除框架。龚等人。 [15] 将数据拟合项建模为 L1 和 L2 范数的加权和,并利用小波域中的稀疏正则化器来处理混合或未知噪声。Lebrun等人[28,29]通过将每个补丁组的噪声建模为零均值相关高斯分布,提出了非局部贝叶斯方法[27]的扩展。Zhu等人[63]提出了一种贝叶斯非参数技术,通过高斯(LR-MoG)模型的低秩混合去除噪声。Nam等人[43]将跨通道噪声建模为多元高斯,并通过贝叶斯非局部均值滤波器[24]进行去噪。Xu等人[59]提出了一种多通道加权核范数最小化(MCWNNM)模型来利用信道冗余。他们进一步提出了一种三边加权稀疏编码(TWSC)方法,以更好地建模噪声和图像先验[58]。除了噪声临床(NC)[28,29]、MCWNNM[59]和TWSC[58]外,大多数盲去噪器的代码是不可用的。我们的实验表明,它们仍然局限于从真实图像中去除噪声。

相关工作:1.深度CNN去噪模型;2.图像去噪模型;3.真实图像的盲去噪模型。除了陈述句介绍其他工作外,突出本文工作的优势。此外,重点落在盲去噪模型很多,但是真实图像的盲去噪很难。

3. Proposed Method

本节介绍我们的CBDNet,由噪声估计子网络和非盲去噪子网络组成。首先,我们引入噪声模型生成合成噪声图像。然后,网络架构和非对称损失。最后,我们解释了合成噪声图像和真实噪声图像的结合来训练CBDNet。

3.1. Realistic Noise Model

正如 [39] 中所指出的,CNN 的泛化在很大程度上取决于记忆训练数据的能力。现有的CNN去噪器,如DnCNN[61],通常不能很好地处理真实的噪声图像,这主要是由于它们可能过度拟合AWGN,而真实的噪声分布与高斯分布有很大的不同。另一方面,当使用真实噪声模型进行训练时,CNN 的记忆能力将有助于使学习模型能够很好地推广到真实照片。因此,噪声模型在保证CNN去噪性能中起着至关重要的作用。

与AWGN不同,真实图像噪声通常更复杂和依赖于信号的[35,14]。实际上,光子传感产生的噪声可以建模为泊松,而其余的平稳扰动可以建模为高斯。因此,泊松-高斯为成像传感器[14]的原始数据提供了合理的噪声模型n(L) ∼ N (0, σ2(L)),可以进一步近似为定义为:
σ 2 ( L ) = L ⋅ σ s 2 + σ c 2 .  (1) \sigma^{2}(\mathbf{L})=\mathbf{L} \cdot \sigma_{s}^{2}+\sigma_{c}^{2} \text {. }\tag{1} σ2(L)=Lσs2+σc2(1)
其中 L 是原始像素的辐照度图像。n(L) =ns(L) + nc 涉及两个分量,即噪声方差为 σ2c 的平稳噪声分量 nc 和具有空间变化噪声方差 L · σ2s 的信号相关噪声分量 ns。

然而,真实的照片通常是在相机内处理(ISP)之后获得的,这进一步增加了噪声的复杂性,使其在空间上和彩色相关。因此,我们考虑了ISP管道的两个主要步骤,即demosaicing和Gamma校正,导致真实的噪声模型为:
y = f ( D M ( L + n ( L ) ) ) (2) \mathbf{y}=f(\mathbf{D M}(\mathbf{L}+\mathbf{n}(\mathbf{L})))\tag{2} y=f(DM(L+n(L)))(2)
其中 y 表示合成噪声图像,f (·) 表示从 [16] 中提供的 201 个 CRF 中均匀采样的相机响应函数 (CRF)。采用L = Mf−1(x)从干净的图像x生成辐照度图像。M(·)表示将sRGB图像转换为Bayer图像的函数,DM(·)表示demosaicing函数[37]。请注意,DM(·) 中的插值涉及不同通道和空间位置的像素。方程式(2)中的合成噪声。因此是通道和空间相关的。

此外,为了扩展CBDNet处理压缩图像,我们可以在生成合成噪声图像时包括JPEG压缩,
y = JPEG ⁡ ( f ( D M ( L + n ( L ) ) ) ) . (3) \mathbf{y}= \operatorname{JPEG}(f(\mathbf{D M}(\mathbf{L}+\mathbf{n}(\mathbf{L})))) .\tag{3} y=JPEG(f(DM(L+n(L)))).(3)

对于嘈杂的未压缩图像,我们采用方程式(2) 中的模型。生成合成噪声图像。对于嘈杂的压缩图像,我们利用方程式(3)中的模型。具体来说,σs 和 σc 分别从 [0, 0.16] 和 [0, 0.06] 的范围内均匀采样。在JPEG压缩中,质量因子从[60,100]范围内采样。我们注意到不考虑量化噪声,因为它最小,可以忽略,而不会对去噪结果产生任何明显的影响[62]。

真实噪声模型:1.服从泊松-高斯分布;2.真实照片是在相机ISP后产生的包括去马赛克、伽马校正、JPEG压缩等,这样产生的图像叫合成噪声图像(synthetic noisy image)也就是公式中的y;3.基于此建模,有公式(1)(2)(3)。

3.2. Network Architecture

在这里插入图片描述
如图2所示,所提出的CBDNet包括一个噪声估计子网络CNN_E和一个非盲去噪子网络CNN_D。首先,CNN_E 采用噪声观测 y 来产生估计的噪声水平图 ^σ(y) =F_E (y; W_E ),其中 W_E 表示 CNN_E 的网络参数。我们让 CNN_E 的输出是噪声水平图,因为它与输入 y 的大小相同,并且可以使用全卷积网络进行估计。然后,将 y 和 ^σ(y) 作为输入,得到最终的去噪结果 ^x = F_D (y, ^σ(y); W_D ),其中 W_D 表示 CNN_D 的网络参数。此外,CNN_E 的引入还允许我们在将其放入非盲去噪子网络 CNN_D 之前调整估计的噪声水平图 ^σ(y)。在这项工作中,我们提出了一个简单的策略,让ˆ̺(y) = γ·ˆσ(y)进行交互去噪。

我们进一步解释了 CNN_E 和 CNN_D 的网络结构。CNN_E 采用普通的五层全卷积网络,无需池化和批量归一化操作。在每个卷积(Conv)层中,特征通道数设置为32,滤波器大小为3 × 3。在每个Conv层之后部署ReLU非线性[42]。对于 CNN_D,我们采用 U-Net [51] 架构,该架构将 y 和 ^σ(y) 作为输入,以给出无噪声干净图像的预测 ^x。在[61]之后,首先学习残差映射R(y,ˆσ(y);WD),然后预测ˆx =y + R(y,ˆσ(y);W_D)。CNNE 的 16 层 U-Net 架构也如图 2 所示,其中引入了对称跳跃连接、跨步卷积和转置卷积来利用多尺度信息并扩大感受野。所有过滤器大小为 3×3,ReLU 非线性 [42] 在每个 Conv 层之后应用,除了最后一个。此外,我们凭经验发现批量归一化对真实照片的噪声去除几乎没有帮助,部分原因是真实噪声分布与高斯分布根本不同。

最后,我们注意到也可以通过学习从噪声观测到干净图像的直接映射来训练单个盲CNN去噪器。然而,如[62,41]所述,以噪声图像和噪声水平图为输入有助于将学习到的模型推广到噪声模型以外的图像,从而有利于盲去噪。我们凭经验发现,对于噪声水平较低的图像,单盲 CNN 降噪器的性能与 CBDNet 相当,并且对于噪声较大的图像,不如 CBDNet。此外,噪声估计子网络的引入也使得交互式去噪和非对称学习成为可能。因此,我们建议在CBDNet中包含噪声估计子网络。

CBDNet网络结构拆解:

  • CBDNet包含两个部分:噪声估计网络(E)和非盲去噪网络(D)
  • E是5层全卷积网络,后跟ReLU,卷积层特征数32,卷积核3×3。用来估计noise level map,在送入D之前,可以通过非对称损失交互
  • D是16层U-Net,使用残差连接、跨步卷积、转置卷积,除了最后一个卷积层其他卷积层均跟ReLU。使用BN对于真实照片噪声没有用。
  • 噪声水平低的图像,单盲和CBDNet差不多;噪声水平高的图像,CBDNet更好。
  • CBDNet的具体实现见对应的复现文章

3.3. Asymmetric Loss and Model Objective

当输入噪声 SD 时,CNN 和传统的非盲去噪器都表现出色。高于ground-truth(即高估误差),这鼓励我们采用非对称损失来提高CBDNet的泛化能力。如FFDNet[62]所示,当输入噪声SD时,BM3D/FFDNet取得了最好的结果。和真实噪声SD匹配。当输入噪声 SD 时。低于ground-truth,BM3D/FFDNet的结果包含可感知的噪声。当输入噪声 SD 时。高于ground-truth结构,BM3D/FFDNet仍然可以通过逐渐缩小一些低对比度结构以及输入噪声SD的增加。因此,非盲去噪器对噪声SD的低估误差很敏感,但对过估计误差具有鲁棒性。有了这个属性,BM3D/FFDNnet 可以通过设置相对较高的输入噪声 SD 来对真实照片进行去噪。这可以解释 BM3D 在非盲设置中在 DND 基准 [45] 上的合理性能。

解释了非对称:非盲模型BM3D和FFDNet在低噪声水平下去噪效果差;在高噪声水平下去噪效果好。非对称损失的提出就是为了解决上述问题。

为了利用盲去噪中的非对称灵敏度,我们在噪声估计上提出了一种非对称损失,以避免在噪声水平图上出现低估误差。给定像素 i 处的估计噪声水平 ^σ(yi) 和地面实况 σ(yi),当 ^σ(yi) < σ(yi) 时,应对其 MSE 施加更多的惩罚。因此,我们将噪声估计子网络上的非对称损失定义为,
L asymm  = ∑ i ∣ α − I ( σ ^ ( y i ) − σ ( y i ) ) < 0 ∣ ⋅ ( σ ^ ( y i ) − σ ( y i ) ) 2 , (4) \mathcal{L}_{\text {asymm }}=\sum_{i}\left|\alpha-\mathbb{I}_{\left(\hat{\sigma}\left(y_{i}\right)-\sigma\left(y_{i}\right)\right)<0}\right| \cdot\left(\hat{\sigma}\left(y_{i}\right)-\sigma\left(y_{i}\right)\right)^{2},\tag{4} Lasymm =i αI(σ^(yi)σ(yi))<0 (σ^(yi)σ(yi))2,(4)

其中 ie = 1 对于 e < 0,否则为 0。通过设置 0 < α < 0.5,我们可以对低估误差施加更多的惩罚,使模型可以很好地推广到真实噪声。

此外,我们引入了一个全变分(TV)正则化器来约束ˆσ(y)的平滑性,
L T V = ∥ ∇ h σ ^ ( y ) ∥ 2 2 + ∥ ∇ v σ ^ ( y ) ∥ 2 2 (5) \mathcal{L}_{T V}=\left\|\nabla_{h} \hat{\sigma}(\mathbf{y})\right\|_{2}^{2}+\left\|\nabla_{v} \hat{\sigma}(\mathbf{y})\right\|_{2}^{2}\tag{5} LTV=hσ^(y)22+vσ^(y)22(5)

其中∇h (∇v)表示沿水平(垂直)方向的梯度算子。对于非盲去噪的输出ˆx,我们将重建损失定义为,
L r e c = ∥ x ^ − x ∥ 2 2 . (6) \mathcal{L}_{r e c}=\|\hat{\mathbf{x}}-\mathbf{x}\|_{2}^{2} .\tag{6} Lrec=x^x22.(6)

综上所述,我们的CBDNet的总体目标是,
L = L rec  + λ asymm  L asymm  + λ T V L T V , (7) \mathcal{L}=\mathcal{L}_{\text {rec }}+\lambda_{\text {asymm }} \mathcal{L}_{\text {asymm }}+\lambda_{T V} \mathcal{L}_{T V},\tag{7} L=Lrec +λasymm Lasymm +λTVLTV,(7)
其中 λasymm 和 λTV 分别表示非对称损失和 TV 正则化器的权衡参数。在我们的实验中,通过最小化上述目标,报告了CBDNet的PSNR/SSIM结果。对于视觉质量的定性评估,我们通过将VGG-16[54]的relu3_3上的感知损失[23]进一步添加到Eqn(7)中的目标来训练CBDNet。

损失函数定义:

  • 非对称损失项:输入噪声水平与真实噪声水平一致时,去噪效果最好;低于时则有噪声剩余;高于时仍保持好的效果。所以,需要先估计噪声水平。当估计的噪声水平低于真实值时,应该给MSE增加惩罚。通过后面的实验可知,σ=0.3不错。
  • 全变分正则项(TV):保证估计的噪声平滑
  • 去噪网络的重建损失:MSE损失

3.4. Training with Synthetic and Real Noisy Images

第3.1节中的噪声模型可用于合成任意数量的噪声图像。我们还可以保证干净图像的高质量。尽管如此,真实照片中的噪声不能完全用噪声模型来表征。幸运的是,根据[43,45,1],通过对来自同一场景的数百个噪声图像进行平均,可以获得几乎无噪声的图像,文献中已经建立了几个数据集。在这种情况下,场景被限制为静态的,获取数百个噪声图像通常很昂贵。此外,由于平均效应,几乎无噪声的图像往往是过度平滑的。因此,可以结合合成和真实噪声图像来提高对真实照片的泛化能力。

在这项工作中,我们使用 3.1 中的噪声模型。生成合成噪声图像,并使用来自 BSD500 [40]、滑铁卢 1600 张图像 [36] 和来自 MIT-Adobe FiveK 数据集 [7] 的 1600 张图像作为训练数据。具体来说,我们使用 RGB 图像 x 来合成干净的原始图像 L = Mf -1(x) 作为反向 ISP 过程,并使用相同的 f 生成与 公式 (2) 或 (3) 的噪声图像。其中 f 是从 [16] 中的 CRF 随机采样的。对于真实的噪声图像,我们利用RENOIR数据集[4]中的120张图像。特别是,我们在训练期间交替使用一批合成和真实噪声图像。对于一批合成图像,公式(7) 中的所有损失被最小化以更新 CBDNet。对于一批真实图像,由于无法获得地面真实噪声水平图,在训练中只考虑L_rec和L_TV。我们凭经验发现,这种训练方案在提高对真实照片去噪的视觉质量方面是有效的。

训练策略:真实照片中的噪声无法用噪声模型表示。使用合成噪声图像和干净图像提升模型对真实照片的泛化能力。

  • 合成噪声图像训练集:BSD500中的400张图像、1600张Waterloo、1600张MIT-Adobe FiveK
  • 真实噪声图像训练集:120张RENOIR

4. Experimental Results

4.1. Test Datasets

采用NC12[29]、DND[45]和Nam[43]三个真实世界噪声图像数据集:

NC12 包括12张噪声图像。真实的干净图像不可用,我们只报告去噪结果进行定性评估。

DND 包含50对真实的噪声图像和相应的近无噪声图像。与[4]类似,通过对低ISO图像的仔细后处理,获得了几乎无噪声的图像。PSNR/SSIM 结果是通过在线提交系统获得的。

Nam 包含11个静态场景,对于每个场景,几乎无噪声的图像是500个JPEG噪声图像的平均图像。我们将这些图像裁剪为 512 × 512 个补丁,并随机选择 25 个补丁进行评估。

4.2. Implementation Details

方程式(7) 中的模型参数。由** α = 0.3、λ1 = 0.5 和 λ2 = 0.05 **给出。请注意,来自 Nam [43] 的噪声图像是 JPEG 压缩的,而来自 DND [45] 的噪声图像是不压缩的。因此我们采用方程式(2) 中的噪声模型。为 DND 和 NC12 训练 CBDNet,以及方程式(3)中的模型。训练 Nam 的 CBDNet(JPEG)。

为了训练我们的CBDNet,我们采用了β1 = 0.9的ADAM[26]算法。[18]中的方法用于模型初始化。mini-batch 的大小为 32,每个补丁的大小为 128 × 128。所有模型都训练了 40 个 epoch,其中前 20 个 epoch 的学习率为 10-3,然后使用学习率 5 × 10−4 进一步微调模型。在Nvidia GeForce GTX 1080 Ti GPU上使用MatConvNet包[56]训练我们的CBDNet大约需要三天。

4.3. Comparison with State-of-the-arts

为了进行比较,我们考虑了四种盲去噪方法,即NC[29,28]、NI[2]、MCWNNM[59]和TWSC[58]。NI [2] 是一个商业软件,已包含在 Photoshop 和 Corel PaintShop 中。此外,我们还包括盲高斯去噪方法(即CDnCNN-B[61])和三种非盲去噪方法(即CBM3D[12]、WNNM[17]、FFDNet[62])。当将非盲去噪器应用于真实照片时,我们利用[9]来估计噪声SD。

NC12。图3显示了NC12图像的结果。所有竞争方法都在去除黑暗区域中的噪声方面受到限制。相比之下,CBDNet在保持显著图像结构的同时,在去除噪声方面表现出色。在这里插入图片描述

DND。表 1 列出了 DND 基准网站上发布的 PSNR/SSIM 结果。毫无疑问,CDnCNNB[61]不能推广到真实的噪声照片,性能很差。尽管噪声 SD。提供了非盲高斯去噪器,如WNNM[17]、BM3D[12]和FoE[52],只实现了有限的性能,这主要是由于真实噪声与AWGN有很大的不同。MCWNNM[59]和TWSC[58]是专门为真实照片盲去噪而设计的,也取得了很好的效果。得益于真实的噪声模型和与真实噪声图像的结合,我们的CBDNet获得了最高的PSNR/SSIM结果,略好于MCWNNM[59]和TWSC[58]。CBDNet 也显着优于另一个基于 CNN 的降噪器,即 CIMM [5]。至于运行时间,CBDNet处理512 × 512图像大约需要0.4s。图 4 提供了 DND 图像的去噪结果。BM3D 和 CDnCNN-B 无法从真实照片中去除大部分噪声,NC、NI、MCWNNM 和 TWSC 仍然无法去除所有噪声,NI 也会受到过度平滑的影响。相比之下,我们的CBDNet在平衡噪声去除和结构保存方面表现出色。在这里插入图片描述
在这里插入图片描述
Nam。定量和定性结果如表2和图5所示。CBDNet(JPEG)的性能比CBDNet好得多(即PSNR约为1.3 dB),与最先进的技术相比取得了最好的性能。在这里插入图片描述
在这里插入图片描述

4.4. Ablation Studies

噪声模型的影响。我们考虑异构高斯(HG)和相机内处理(ISP)管道来建模图像噪声,而不是AWGN。在DND和Nam上,我们实现了四种噪声模型变体:(i)高斯噪声(CBDNet(G)), (ii)异构高斯(CBDNet(HG)), (iii)高斯噪声和ISP (CBDNet(G+ISP)), (iv)异构高斯和ISP (CBDNet(HG+ISP),即完整的CBDNet。对于 Nam,还包括 CBDNet(JPEG)。表 3 显示了不同噪声模型的 PSNR/SSIM 结果。
在这里插入图片描述

G vs HG。在没有ISP的情况下,CBDNet(HG)比CBDNet(G)获得了约0.8 ~ 1 dB的增益。当包含ISP时,HG的增益适中,即CBDNet(HG+ISP)仅优于CBDNet(G+ISP)约0.15 dB。

w/o ISP。相比之下,观察到ISP对真实图像噪声建模更为关键。特别是CBDNet(G+ISP)比CBDNet(G)高4.88 dB,而CBDNet(HG+ISP)在DND上优于CBDNet(HG) 3.87 dB。对于 Nam,在 ISP 中包含 JPEG 压缩进一步带来了 1.31 dB 的增益。

合成图像和真实图像的结合。我们实现了两个基线:(i)仅在合成图像上训练的 CBDNet(Syn),以及(ii)仅在真实图像上训练的 CBDNet(Real),并将我们的完整模型重命名为 CBDNet(All)。图7显示了这三种方法在NC12图像上的去噪结果。即使在大规模合成图像数据集上进行训练,CBDNet(Syn) 仍然不能去除所有真实噪声,部分原因是真实噪声不能完全用噪声模型来表征。CBDNet(Real)可能会产生过度平滑的结果,部分原因是不完善的影响无噪声图像。相比之下,CBDNet(All) 在保留锐利边缘的同时有效地去除真实噪声。三种模型在DND上的定量结果如表1所示。CBDNet(All)比CBDNet(Syn)和CBDNet(Real)获得了更好的PSNR/SSIM结果。在这里插入图片描述

不对称损失。图8比较了不同α值的CBDNet去噪结果,即α=0.5、0.4和0.3。当α=0.5时,CBDNet对低估误差和高估误差施加相同的惩罚,当α<0.5时,对低估误差施加更多的惩罚。可以看出,较小的α(即0.3)有助于提高CBDNet对未知真实噪声的泛化能力。在这里插入图片描述

4.5. Interactive Image Denoising

给定估计的噪声水平图 ^σ(y),我们引入了一个系数 γ (> 0) 来交互式地将 ^σ(y) 修改为 ^̺ =γ · ^σ(y)。通过允许用户调整γ,非盲去噪子网络以ˆ̺和噪声图像为输入,得到去噪结果。图 6 显示了两个真实的噪声 DND 图像以及使在这里插入图片描述
用不同 γ 值获得的结果。通过将 γ = 0.7 指定到第一个图像,并且γ = 1.3 到第二个,CBDNet 可以在保留详细纹理和去除复杂噪声方面以更好的视觉质量实现结果。因此,这种交互方案可以为在实际场景中调整去噪结果提供一种方便的方法。

丰富实验:实验部分主要体现工作量。首先阐明实验设置,参数等,然后和SOTA比,最后和自己比(消融实验)。交互体现在4.5部分,用户调整γ可以得到不同效果的结果。

5. Conclusion

我们提出了一种CBDNet来盲去噪真实世界的噪声照片。这项工作的主要发现是两方面的。首先,真实的噪声模型,包括异质高斯和ISP管道,对于使从合成图像中学习到的模型适用于真实世界的噪声照片至关重要。其次,可以通过在训练中结合合成和真实噪声图像来提高网络的去噪性能。此外,通过在CBDNet中引入噪声估计子网络,我们能够利用非对称损失来提高其对真实世界噪声的泛化能力,方便地进行交互式去噪。

总结复习巩固:

  1. 目标:真实图像盲去噪,用合成图像和干净图像估计真实噪声
  2. 与AWGN模型不同,本文的噪声模型符合泊松-高斯分布
  3. CBDNet结构:噪声估计子网和非盲噪声子网
  4. 损失函数定义:去噪损失项+非对称损失项+变分平滑损失项
  5. 交互参数γ

在这里插入图片描述

再看一遍CBDNet的网络结构强化一下记忆,然后马不停蹄地来到复现文章,看看CBDNet是如何用代码实现的吧!

本文对应的复现文章:【图像去噪】论文复现:适合新手小白的Pytorch版本CBDNet复现!轻松跑通训练和测试代码!简单修改路径即可训练自己的数据集!代码详细注释!数据处理、模型训练和验证、推理测试全流程讲解!


至此本文结束。

如果本文对你有所帮助,请点赞收藏,创作不易,感谢您的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404117.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring IoCDI(下)—DI的尾声

我们之前学习了控制反转IoC&#xff0c;接下来就开始学习依赖注入DI的细节。 依赖注入是一个过程&#xff0c;是指IoC容器在创建Bean时&#xff0c;去提供运行时所依赖的资源&#xff0c;而资源指的就是对象。我们使用 Autowired 注解&#xff0c;完成依赖注入的操作。简单来说…

使用docker compose一键部署redis服务

使用docker compose一键部署redis服务 1、创建安装目录 mkdir /data/redis/ -p && cd /data/redis2、创建docker-compose.yml文件 version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/xiaopangpang/redis:7.0.5container_name: redisrestart: al…

【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)

个人主页~ 实战项目的实现过程&#xff08;一&#xff09;~ 实战项目的实现过程 二、初步了解各个外设硬件1、OLED模块2、GPS模块3、MPU6050模块4、超声测距模块5、温度测控模块6、语音模块7、SIM模块8、按键模块 三、查阅资料1、查看手册2、查找例程 四、研究硬件功能1、OLED…

js使用run编码计算region的交集并集差集

所有shape都转为run编码 转为run编码后再运算可以节约大量内存 subtractIntervals 函数的逻辑:目前的实现假设了所有的 subIntervals 都会与 intervals 完全重叠,这可能导致计算不准确。应该将 subIntervals 从 intervals 中去除时,考虑到可能的部分重叠。 差集计算:sub…

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧&#xff0c;网络无敌&#xff01;Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【kubernetes】k8s配置资源管理

一、ConfigMap资源配置 ConfigMap保存的是不需要加密配置的信息 ConfigMap 功能在 Kubernetes1.2 版本中引入&#xff0c;许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制&#xff0c;ConfigMap 可以被…

银河麒麟V10+qt5,12.11编译mysql驱动连接OceanBase数据库

1、下载mysql数据库,解压后里面包含编译所需要的lib和include文件夹,下载地址:https://www.mysql.com/downloads/ 选择适合自己系统的版本: 解压后的文件夹中包含需要的lib和include文件夹: 使用qt打开mysql源码项目: 根据自己qt安装路径,找到项目: 注释掉如图: …

C++STL之string类:相关习题解析

目录 1&#xff0c;字符串转整型数字 2&#xff0c;字符串最后一个单词的长度(getline的使用) 3&#xff0c;仅仅反转字母 4&#xff0c;字符串中的第一个唯一字符(找字符串中第一个只出现一次的字符) 5&#xff0c;验证回文串 6&#xff0c;验证回文串|| 7&#xff0c;…

Vue 3 + 天地图 + D3.js 绘制行政区划

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;组件封装篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:组件封装-天地图 目录 引入天地图 API 初始化地图 引入 D3.js 加载行政区划数据 添…

mysql聚合函数和分组

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

小五金加工:细节决定产品质量与性能

在小五金加工领域&#xff0c;细节往往决定着最终产品的质量、性能以及市场竞争力。看似微不足道的细微之处&#xff0c;实际上蕴含着巨大的影响。时利和将介绍小五金加工中细节的重要性。 首先&#xff0c;细节关乎产品的精度。小五金零件通常尺寸较小&#xff0c;但对精度的要…

TorchChat:Ollama的潜在对手

PyTorch最近发布TorchChat&#xff0c;TorchChat允许在本地台式机、笔记本电脑或移动设备上下载和运行大型语言模型。会不会让你想到什么&#xff0c;没错就是Ollama。TorchChat是一个适应性强的框架&#xff0c;旨在提高各种硬件平台的LLMs效率&#xff0c;有助于在各种设备上…

怎样使用sudo的时候不需要输入密码?

在Ubuntu等Linux系统下&#xff0c;经常要在个人账户使用sudo命令来执行一些需要root权限的命令&#xff0c;但是需要输入该账户的密码&#xff0c;有时候显得很繁琐&#xff0c; 那么怎样使用sudo的时候不需要输入密码呢&#xff1f; 有如下两种方法&#xff1a; 常规方法1…

解决 Swift 6 全局变量不能满足并发安全(concurrency-safe)读写的问题

概述 WWDC 24 终于在 Swift 十岁生日发布了全新的 Swift 6。这不仅意味着 Swift 进入了全新的“大”版本时代&#xff0c;而且 Swift 编译器终于做到了并发代码执行的“绝对安全”。 不过&#xff0c;从 Swift 5 一步迈入“新时代”的小伙伴们可能对新的并发检查有些许“水土不…

迭代器失效

一、什么是迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构&#xff0c;其底层实际就是一个指针&#xff0c;或者是对指针进行了封装&#xff0c;比如&#xff1a;vector的迭代器就是原生态指针T* 。因此迭代器失效&#xff0c;实际就是迭代器底层对应指针所指…

使用Virtio Driver实现一个计算阶乘的小程序——QEMU平台

目录 一、概述 二、代码部分 1、Virtio 前端 (1) User Space (2) Kernel Space 2、Virtio 后端 三、运行 QEMU Version&#xff1a;qemu-7.2.0 Linux Version&#xff1a;linux-5.4.239 一、概述 本篇文章的主要内容是使用Virtio前后端数据传输的机制实现一个计算阶乘的…

【RabbitMQ】 相关概念 + 工作模式

本文将介绍一些MQ中常见的概念&#xff0c;同时也会简单实现一下RabbitMQ的工作流程。 MQ概念 Message Queue消息队列。是用来存储消息的队列&#xff0c;多用于分布式系统之间的通信。 系统间调用通常有&#xff1a;同步通信和异步通信。MQ就是在异步通信的时候使用的。 同…

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示&#xff0c;左边的方块中的子方块&#xff0c;是展示了自动驾驶获取数据的途径&#xff0c;这里包括&…

Java之文件操作和IO

目录 File类 属性 构造方法 方法 文件内容的读写 InputStream OutputStream File类 属性 修饰符及类型属性说明static StringpathSeparator依赖于系统的路径分隔符&#xff0c;String类型的表示static charpathSeparator依赖于系统的路径分隔符&#xff0c;char类型的…

vscode 远程免密登录

Windows R 输入 cmd在命令行终端中输入 ssh-keygen 一直回车、确定 生成秘钥 3. C:\用户\xxx.ssh 拷贝公钥内容 id_rsa.pub 4. 在虚拟机~/.ssh/ 下创建文件touch authorized_keys,拷贝公钥内容 id_rsa.pub粘贴到authorized_keys里即可。