Loading... # **DnCNN** **图像盲降噪与优化算法对比** (数据科学导论结课小论文) **摘 要**:近几年,随着数据量的迅速增长,以及GPU等硬件性能的极大提高,深度学习在人们生活中占据重要的地位。而在图像识别这个领域,深度学习技术展示出了它特有的卓越性。在实际生活中,常规的图像可能会受到各方面影响而变得模糊。为了使受到噪音污染的图像变得干净且保留大部分图像细节,众多学者对图像降噪方法进行了研究。而其中一项基于CNN的图像降噪算法DnCNN于2016年发布,同时引发了相关领域对其的关注,后续也有越来越多的人在DnCNN算法基础上进行优化。本文介绍了DnCNN、UDnCNN、DUDnCNN等图像盲降噪算法以及他们的Leaky_ReLU函数优化,并且通过实验进行了降噪效果的对比。 **关键词**:图像降噪;卷积神经网络;Leaky_ReLU函数优化;DNCNN ## **1.** **引** **言** 图像降噪是指减少数字图像中噪声的过程。现实中的数字图像常会受到成像设备与外部环境噪声干扰等影响,导致图像变得模糊,而噪声则是图象干扰的主要原因。为了获得一个干净且细节不丢失的图像,图像的降噪成为了重点。本文所介绍的DNCNN有以下几大重点: (1)强调了residual learning(残差学习)和batch normalization(批量标准化)在图像复原中相辅相成的作用,可以在较深的网络的条件下,依然能带来快的收敛和好的性能。 (2)文章提出DnCNN,在高斯去噪问题下,用单模型应对不同程度的高斯噪音;甚至可以用单模型应对高斯去噪、超分辨率、JPEG去锁三个领域的问题。 同样,基于DnCNN的各种优化方式,也拥有各自的创新点。本文对几种DnCNN以及他们优化算法进行了对比实验(训练次数为200次),实验过程与结果上传: Github(https://github.com/joseph-cheung/From-DnCNN-to-UDnCNN-and-DUDnCNN) ## **2.** **图像降噪算法** 图像的降噪往往伴随着图像细节的丢失,而如何保留图像的细节且拥有较好的降噪能力,成为了重点研究方向。 ### **2.1 DnCNN**算法 DnCNN提出了在降噪领域中使用残差学习的方法来进行图像降噪,直接学习图片的噪声,可以更快更好的学习到降噪。并且,这种残差的降噪是比较通用的,可以推广到单图超分、jpeg去块也可以。 DnCNN拥有这样强大的图片降噪能力,主要在于它的几个创新点: (1)使用端到端的神经网络模型来进行AWGN的降噪,首次使用残差学习来降噪。 (2)结合残差学习和BN可以大幅度提高和加速降噪模型的训练,对于某一个特定的噪声水平,DnCNN可以在视觉效果和数值上达到SOTA的水平。 (3)DnCNN可以扩展到通用的降噪任务。训练一个盲高斯噪声的DnCNN可以优于针对某种具体噪声水平的方法。同样的方法可以扩展到三种一般的降噪任务,盲高斯去噪、单图超分和jpeg去块任务。 DnCNN的训练过程如下:  > **图1 DnCNN的训练过程** 原文章作者对于DnCNN的测试,表现如下:  > **图2 DnCNN在不同数据集上的表现** > **表1不同算法在BSD68数据集上的表现** | Noise Level | BM3D | WNNM | EPLL | MLP | CSF | TNRD | DnCNN | DnCNN-B | FDnCNN | | ------------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | --------- | -------- | | 15 | 31.07 | 31.37 | 31.21 | - | 31.24 | 31.42 | 31.73 | 31.61 | 31.69 | | 25 | 28.57 | 28.83 | 28.68 | 28.96 | 28.74 | 28.92 | 29.23 | 29.16 | 29.22 | | 50 | 25.62 | 25.87 | 25.67 | 26.03 | - | 25.97 | 26.23 | 26.23 | 26.27 | | Noise Level | BM3D | WNNM | EPLL | MLP | CSF | TNRD | DnCNN | DnCNN-B | FDnCNN | 我所做实验的结果(BSDS300数据集):  > **图3 DnCNN在BSDS300数据集上的表现** 可以看出DuCNN在不同数据集上峰值信噪比(Peak signal-to-noise ratio ,PSNR)的表现十分优秀。 ### **2.2 UDnCNN** UDnCNN是DnCNN的一个优化,主要所做的改变是将DuCNN与U-net相结合,即将DnCNN的卷积层改为:先进行池化(特征提取),再进行上采样(还原操作)。 UDnCNN的训练过程如下:  > **图4 UDnCNN的训练过程** 我所做实验的结果(BSDS300数据集):  > **图5 UDnCNN在BSDS300数据集上的表现** 采取UDnCNN的优化方式,从结果来看,是有利有弊。从 PSNR 看,加上U-Net后,降噪能力会略下降,主要在于池化层会丢失图片的价值特征信息。但是从图片结果来看,图片似乎变得会更加“好看一点”。 ### **2.3 DUDnCNN**算法 DUDnCNN再UDnCNN的基础上,将UDuCNN的池化改为了空洞卷积(dilated convolution),以达到增大感受野(Receptive Field)的作用。 具体做法是:在k个池化层和一个反池化层之后放置的每个卷积都应该被一个具有 2^(k−l)−1 个孔的扩张滤波器所替换。这可以通过dilation 可选参数来实现nn.Conv2d。确保相应地设置参数填充以在前向传播期间保持具有相同空间维度的张量。  > **图6 DUDnCNN的空洞卷积** 同时因为Pytorch的空洞卷积速度较慢,我们再进行空洞卷积之前,将torch.backends.cudnn.benchmark=True 之后改回 torch.backends.cudnn.benchmark=False 可以提速,达到提高效率的作用。 我所做实验的结果(BSDS300数据集):  > **图7 DUDnCNN在BSDS300数据集上的表现** ## **3.** **三种算法的对比** 将三种算法的结果进行对比(BSDS300数据集),得到:  > **图8 三种算法在BSDS300数据集上的表现** > **表2 三种算法的PSNR与Loss对比** | **Eval/CNNs** | **DnCNN** | **UDnCNN** | **DUDnCNN** | | --------------- | ------------- | ------------- | ------------- | | **PSNR** | 29.0762 | 28.4196 | 29.3118 | | **Loss** | 0.005108381 | 0.005901728 | 0.004859959 | ## **4.** **Leaky_ReLU**激活函数优化 广泛使用的激活函数为ReLU函数,公式如下:  ReLU函数特性决定了它在负值区间会存在缺陷,即当传递的变量小于零时,负值部分的神经元将不再参与参数的更新。 现在将三种算法的激活函数从ReLU激活函数变为Leaky_ReLU激活函数,公式如下:  LeakyReLU函数的结构如图9所示,在负值区间给出一个非常小的常数a来保留负值信息。在保留ReLU函数具有加快网络迭代速度特性的同时,又能解决有效信息的丢失问题。  > **图9 ReLU和 LeaktReLU损失函数** 使用LeakyReLU函数后,我们仍然使用同样的数据集(BSDS300数据集)训练上述三种算法,结果如下:  > **图10 三种算法加上LeakyReLU函数后在BSDS300数据集上的表现** > **表3 三种算法加上LeakyReLU函数后的PSNR与Loss对比** | **Eval/CNNs** | **DnCNN** | **UDnCNN** | **DUDnCNN** | | --------------- | ------------------- | ------------------- | ------------------- | | **PSNR** | 29.0926**↑** | 28.3110**↓** | 29.1659**↓** | | **Loss** | 0.005087597**↓** | 0.006038793**↑** | 0.005011519**↑** | 可以看出,使用了LeakyReLU函数后,三种算法的表现有好有坏。而详细分析实验的过程,发现使用了LeakyReLU函数在训练次数少于100次以下表现十分优秀,说明LeakyReLU函数优化方法可以在较短的时间内达到效果,在数据集较大的情况下或许有较好的表现。 ## **5.** **结** **论** DnCNN拥有有效的图像盲降噪能力,在处理图像噪音的问题上发挥着重要作用。同时也有越来越多的人对DnCNN的算法进行改进,开发DnCNN的潜力。他们的想法与优化都拥有不同的作用,或许可以适用于多种不同的场景与数据。 ## **参考文献** > [1]. K. Zhang, W. Zuo, Y. Chen, D. Meng and L. Zhang, "Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising," in IEEE Transactions on Image Processing, vol. 26, no. 7, pp. 3142-3155, July 2017, doi: 10.1109/TIP.2017.2662206. > > [2]. O. Ronneberger, P. Fischer, and T. Brox, “U-net: Convolutional networks for biomedical image segmentation,” in International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, 2015, pp. 234–241. > > [3]. F. Yu and V. Koltun, “Multi-scale context aggregation by dilated convolutions,” arXiv preprint arXiv:1511.07122, 2015. > > [4]. B. Xu, N. Wang, T. Chen, and M. Li, “Empirical evaluation of rectified activations in convolutional network,” arXiv preprint arXiv:1505.00853, 2015. > > [5]. L. Yang, W. Chen, H. Wang and Y. Chen, "Deep Learning Seismic Random Noise Attenuation via Improved Residual Convolutional Neural Network," in IEEE Transactions on Geoscience and Remote Sensing, doi: 10.1109/TGRS.2021.3053399. 最后修改:2021 年 10 月 04 日 10 : 29 AM © 允许规范转载