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

基于matlab实现的DnCNN网络

超越高斯去噪器:深度CNN图像去噪的残差学习

新闻: DRUNet

  • 最先进的去噪性能

  • 可用于即插即用的图像恢复

建议使用PyTorch代码进行训练和测试。MatConvnet和PyTorch的模型参数相同。

  • main_train_dncnn.py

  • main_test_dncnn.py

  • main_test_dncnn3_deblocking.py

合并批量归一化(PyTorch)


import torch
import torch.nn as nndef merge_bn(model):''' 将所有'Conv+BN'(或'TConv+BN')合并为'Conv'(或'TConv')基于 https://github.com/pytorch/pytorch/pull/901作者:Kai Zhang (cskaizhang@gmail.com) https://github.com/cszn/DnCNN2019年1月1日'''prev_m = Nonefor k, m in list(model.named_children()):if (isinstance(m, nn.BatchNorm2d) or isinstance(m, nn.BatchNorm1d)) and (isinstance(prev_m, nn.Conv2d) or isinstance(prev_m, nn.Linear) or isinstance(prev_m, nn.ConvTranspose2d)):w = prev_m.weight.dataif prev_m.bias is None:zeros = torch.Tensor(prev_m.out_channels).zero_().type(w.type())prev_m.bias = nn.Parameter(zeros)b = prev_m.bias.datainvstd = m.running_var.clone().add_(m.eps).pow_(-0.5)if isinstance(prev_m, nn.ConvTranspose2d):w.mul_(invstd.view(1, w.size(1), 1, 1).expand_as(w))else:w.mul_(invstd.view(w.size(0), 1, 1, 1).expand_as(w))b.add_(-m.running_mean).mul_(invstd)if m.affine:if isinstance(prev_m, nn.ConvTranspose2d):w.mul_(m.weight.data.view(1, w.size(1), 1, 1).expand_as(w))else:w.mul_(m.weight.data.view(w.size(0), 1, 1, 1).expand_as(w))b.mul_(m.weight.data).add_(m.bias.data)del model._modules[k]prev_m = mmerge_bn(m)def tidy_sequential(model):for k, m in list(model.named_children()):if isinstance(m, nn.Sequential):if m.__len__() == 1:model._modules[k] = m.__getitem__(0)tidy_sequential(m)

训练 (MatConvNet)

  • Simplenn 版本

    • DnCNN_TrainingCodes_v1.1
  • DagNN 版本

    • DnCNN_TrainingCodes_DagNN_v1.1

测试 (MatConvNet 或 Matlab)

  • [演示] Demo_test_DnCNN-.m

  • [模型] 包括用于高斯去噪的训练模型;用于高斯去噪、单图像超分辨率(SISR)和去块的单一模型。

  • [测试集] BSD68和Set10用于高斯去噪评估;Set5、Set14、BSD100和Urban100数据集用于SISR评估;Classic5和LIVE1用于JPEG图像去块评估。

新的FDnCNN模型

我基于FFDNet训练了新的灵活DnCNN(FDnCNN)模型。

FDnCNN可以通过单一模型处理[0, 75]范围的噪声级别。

Demo_FDnCNN_Gray.m

Demo_FDnCNN_Gray_Clip.m

Demo_FDnCNN_Color.m

Demo_FDnCNN_Color_Clip.m

网络架构和设计原理

  • 网络架构

在这里插入图片描述

  • 批量归一化和残差学习对高斯去噪有益(特别是对于单一噪声级别)。受加性白高斯噪声(AWGN)污染的噪声图像的残差遵循恒定的高斯分布,这在训练过程中稳定了批量归一化。

    • 来自一批训练的噪声块、干净块和残差(噪声)块的直方图。噪声级别为25,块大小为40x40,批量大小为128。

在这里插入图片描述

* 来自另一批训练的噪声块、干净块和残差(噪声)块的直方图。噪声级别为25,块大小为40x40,批量大小为128。

在这里插入图片描述

 * 无噪声图像超分辨率没有这种特性。
  • 预测残差可以解释为在起点(即噪声图像)执行一个梯度下降推理步骤。

    • DnCNN中的参数主要代表图像先验(任务无关),因此可以为不同任务学习单一模型,如图像去噪、图像超分辨率和JPEG图像去块。

    • 左侧是受不同退化影响的输入图像,右侧是DnCNN-3恢复的图像。

在这里插入图片描述

结果

高斯去噪

BSD68数据集上不同方法的平均PSNR(dB)结果。

噪声级别BM3DWNNMEPLLMLPCSFTNRDDnCNNDnCNN-BFDnCNNDRUNet
1531.0731.3731.21-31.2431.4231.7331.6131.6931.91
2528.5728.8328.6828.9628.7428.9229.2329.1629.2229.48
5025.6225.8725.6726.03-25.9726.2326.2326.2726.59

视觉结果

左侧是受AWGN污染的噪声图像,中间是DnCNN去噪的图像,右侧是真实图像。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过单一(DnCNN-3)模型进行高斯去噪、单图像超分辨率和JPEG图像去块

BSD68数据集上噪声级别15、25和50的高斯去噪、Set5、Set14、BSD100和Urban100数据集上缩放因子2、3和40的单图像超分辨率、Classic5和LIVE11数据集上质量因子10、20、30和40的JPEG图像去块的平均PSNR(dB)/SSIM结果。

高斯去噪

数据集噪声级别BM3DTNRDDnCNN-3
1531.08 / 0.872231.42 / 0.882631.46 / 0.8826
BSD682528.57 / 0.801728.92 / 0.815729.02 / 0.8190
5025.62 / 0.686925.97 / 0.702926.10 / 0.7076

单图像超分辨率

数据集缩放因子TNRDVDSRDnCNN-3
236.86 / 0.955637.56 / 0.959137.58 / 0.9590
Set5333.18 / 0.915233.67 / 0.922033.75 / 0.9222
430.85 / 0.873231.35 / 0.884531.40 / 0.8845
232.51 / 0.906933.02 / 0.912833.03 / 0.9128
Set14329.43 / 0.823229.77 / 0.831829.81 / 0.8321
427.66 / 0.756327.99 / 0.765928.04 / 0.7672
231.40 / 0.887831.89 / 0.896131.90 / 0.8961
BSD100328.50 / 0.788128.82 / 0.798028.85 / 0.7981
427.00 / 0.714027.28 / 0.725627.29 / 0.7253
229.70 / 0.899430.76 / 0.914330.74 / 0.9139
Urban100326.42 / 0.807627.13 / 0.828327.15 / 0.8276
424.61 / 0.729125.17 / 0.752825.20 / 0.7521

JPEG图像去块

数据集质量因子AR-CNNTNRDDnCNN-3
Classic51029.03 / 0.792929.28 / 0.799229.40 / 0.8026
2031.15 / 0.851731.47 / 0.857631.63 / 0.8610
3032.51 / 0.880632.78 / 0.883732.91 / 0.8861
4033.34 / 0.8953-33.77 / 0.9003

要求和依赖

  • MATLAB R2015b
  • Cuda-8.0 & cuDNN v-5.1
  • MatConvNet

或者只需要MATLAB R2015b来测试模型。
https://github.com/cszn/DnCNN/blob/4a4b5b8bcac5a5ac23433874d4362329b25522ba/Demo_test_DnCNN.m#L64-L65

引用

@article{zhang2017beyond,title={Beyond a {Gaussian} denoiser: Residual learning of deep {CNN} for image denoising},author={Zhang, Kai and Zuo, Wangmeng and Chen, Yunjin and Meng, Deyu and Zhang, Lei},journal={IEEE Transactions on Image Processing},year={2017},volume={26}, number={7}, pages={3142-3155}, 
}
@article{zhang2020plug,title={Plug-and-Play Image Restoration with Deep Denoiser Prior},author={Zhang, Kai and Li, Yawei and Zuo, Wangmeng and Zhang, Lei and Van Gool, Luc and Timofte, Radu},journal={arXiv preprint},year={2020}
}

====================================================================

用于图像去噪和恢复的卷积神经网络

@Inbook{zuo2018convolutional,
author={Zuo, Wangmeng and Zhang, Kai and Zhang, Lei},
editor={Bertalm{\'i}o, Marcelo},
title={Convolutional Neural Networks for Image Denoising and Restoration},
bookTitle={Denoising of Photographic Images and Video: Fundamentals, Open Challenges and New Trends},
year={2018},
publisher={Springer International Publishing},
address={Cham},
pages={93--123},
isbn={978-3-319-96029-6},
doi={10.1007/978-3-319-96029-6_4},
url={https://doi.org/10.1007/978-3-319-96029-6_4}

挑战和可能的解决方案(来自上述书籍章节)

虽然针对AWGN去除的图像去噪已经得到了很好的研究,但关于真实图像去噪的工作却很少。
主要困难在于实际噪声比AWGN复杂得多,并且彻底评估去噪器的性能并非易事。图4.15显示了现实世界中的四种典型噪声类型。
可以看出,这些噪声的特征非常不同,单一的噪声级别可能不足以参数化这些噪声类型。在大多数情况下,去噪器只能在特定的噪声模型下很好地工作。
例如,为AWGN去除而训练的去噪模型对混合高斯和泊松噪声去除无效。
这在直觉上是合理的,因为基于CNN的方法可以被视为公式(4.3)的一般情况,重要的数据保真项对应于退化过程。尽管如此,由于以下原因,AWGN去除的图像去噪仍然很有价值。首先,它是评估不同基于CNN的去噪方法有效性的理想试验台。
其次,在通过变量分裂技术展开推理中,许多图像恢复问题可以通过顺序解决一系列高斯去噪子问题来解决,这进一步拓宽了应用领域。

为了提高CNN去噪器的实用性,最直接的方法可能是捕获足够数量的真实噪声-干净训练对进行训练,以便覆盖真实的退化空间。这种解决方案的优势在于不需要知道复杂的退化过程。然而,由于需要仔细的后处理步骤,如空间对齐和光照校正,推导噪声图像对应的干净图并非易事。或者,可以模拟真实退化过程从干净图像合成噪声图像。但是,准确建模复杂的退化过程并不容易。特别是,不同相机的噪声模型可能不同。尽管如此,为训练粗略建模某种噪声类型然后使用所学的CNN模型进行特定类型的去噪在实践中更受欢迎。

除了训练数据之外,鲁棒的架构和鲁棒的训练对于CNN去噪器的成功也起着至关重要的作用.
对于鲁棒架构,设计涉及由粗到精过程的深度多尺度CNN是一个有前景的方向。
这样的网络有望继承多尺度的优点:
(i) 在较大尺度上噪声级别降低;
(ii) 多尺度过程可以缓解普遍存在的低频噪声;
(iii) 在去噪之前对图像进行下采样可以有效地扩大感受野。
对于鲁棒训练,使用生成对抗网络(GAN)训练的去噪器对真实图像去噪的有效性仍有待进一步研究。基于GAN的去噪的主要思想是引入对抗损失以改善去噪图像的感知质量。此外,GAN的一个显著优势是它可以进行无监督学习。更具体地说,
可以在训练中使用没有真实值的噪声图像。到目前为止,我们已经提供了几种可能的解决方案来提高CNN去噪器的实用性。我们应该注意,这些解决方案可以结合起来进一步提高性能。
源码地址:https://download.csdn.net/download/FL1623863129/92178742

http://www.dtcms.com/a/511783.html

相关文章:

  • 网站一般用什么工具做wordpress英文版切换中文
  • 十大最佳摄影网站windows 版 wordpress
  • ruby 、gem 和 cocoapods的联系与区别
  • Python 圆台体积和表面积计算程序(Program for Volume and Surface area of Frustum of Cone)
  • MySQL索引指南
  • 分销网站制作条件免费机械网站模板
  • day01 pyspark入门和基础环境
  • 公司网站 URL 地址规范
  • 建设一个广告联盟的网站免费祝福网页在线制作
  • 实现Trie(前缀树)
  • 杰理SDK入门教程(六):自定义按键事件
  • gray = roi.clone();和gray = roi;的区别是什么?
  • STM32中MX_TIM2_Init函数和HAL_TIM_Base_MspInit函数区别
  • 【基于Selenium的智能滑块验证码破解技术详解】
  • AI体测设备服务商
  • 网站之间如何做视频交换惠州搜索引擎优化
  • 李宏毅机器学习笔记28
  • 【开题答辩实录分享】以《智慧社区信息化服务平台》为例进行答辩实录分享
  • 京东网站建设过程东莞建设网站的位置
  • SAP SD销售订单执行跟踪报表分享
  • 数据挖掘比赛baseline参考
  • [人工智能-大模型-19]:GitHub Copilot:程序员的 AI 编程副驾驶
  • 【JVM】低延迟垃圾收集器:Shenandoah收集器与ZGC收集器
  • 深圳网站建设deyondwordpress主题wake
  • Day44 | J.U.C中的LockSupport详解
  • 网络安全生态及学习路线
  • 深度学习-卷积神经网络基础
  • 广州教育网站设计公司在建工程项目查询
  • 【瀑布流大全】分析原理及实现方式(微信小程序和网页都适用)
  • wordpress网站的常规安全设置经验分享