发表在2017 TIP。

摘要

Discriminative model learning for image denoising has been recently attracting considerable attentions due to its favorable denoising performance. In this paper, we take one step forward by investigating the construction of feed-forward denoising convolutional neural networks (DnCNNs) to embrace the progress in very deep architecture, learning algorithm, and regularization method into image denoising. Specifically, residual learning and batch normalization are utilized to speed up the training process as well as boost the denoising performance. Different from the existing discriminative denoising models which usually train a specific model for additive white Gaussian noise (AWGN) at a certain noise level, our DnCNN model is able to handle Gaussian denoising with unknown noise level (i.e., blind Gaussian denoising). With the residual learning strategy, DnCNN implicitly removes the latent clean image in the hidden layers. This property motivates us to train a single DnCNN model to tackle with several general image denoising tasks such as Gaussian denoising, single image super-resolution and JPEG image deblocking. Our extensive experiments demonstrate that our DnCNN model can not only exhibit high effectiveness in several general image denoising tasks, but also be efficiently implemented by benefiting from GPU computing.

结论

In this paper, a deep convolutional neural network was proposed for image denoising, where residual learning is adopted to separating noise from noisy observation. The batch normalization and residual learning are integrated to speed up the training process as well as boost the denoising performance. Unlike traditional discriminative models which train specific models for certain noise levels, our single DnCNN model has the capacity to handle the blind Gaussian denoising with unknown noise level. Moreover, we showed the feasibility to train a single DnCNN model to handle three general image denoising tasks, including Gaussian denoising with unknown noise level, single image super-resolution with multiple upscaling factors, and JPEG image deblocking with different quality factors. Extensive experimental results demonstrated that the proposed method not only produces favorable image denoising performance quantitatively and qualitatively but also has promising run time by GPU implementation.

要点

  • DnCNN可以处理未知程度的高斯噪声,即实现blind Gaussian denoising。
  • 作者还尝试了用一个DnCNN,同时处理未知高斯噪声、多尺度超分辨和未知QF的JPEG图像压缩。

优点

  • 应该是第一篇将DNN用于高斯去噪的网络,通过混合训练集,可以实现盲去噪。(CNN最早在[23]被用于图像去噪)
  • 打破了传统方法对模型或图像先验的形式约束,让网络自己学习先验项。
  • 作者通过实验发现,BN和残差学习是互助的。

故事背景

首先,作者回顾了高斯去噪的历史工作,主要是一些传统方法,例如nonlocal self-similarity models和马尔科夫随机场模型等。其中,NSS方法是SOTA常客,包括BM3D,NCSR等。

尽管如此,这些方法普遍需要优化、耗时;此外,这些方法都需要一些主观设计的参数。

这就引出了判别式学习方法。例如,[14]提出将随机场模型和展开的半二次优化模型在一个学习框架中统一起来。又比如,[15][16]提出的TNRD模型,可以学习一种调整的专家场(modified fields of experts)图像先验。这些方法普遍只学习一种特定的先验,并且只适用于某一个特定的噪声程度。(批注:实际上就是先验项的形式被提前规定好了,因此先验类型是固定的)

网络结构

整体上,网络采用的是VGG结构,改造:

  1. 所有卷积核都设为\(3 \times 3\)。
  2. 移除所有池化层。

在论文第三页,作者说明了如何根据有效感受野来设定网络深度。有兴趣的可以看一看。最终作者设定DnCNN为17层。对于盲去噪及其他任务,作者设为20层。

作者加入了一系列的关于CNN的优化手段:

  1. 残差学习:让CNN建模潜在干净图像与有噪图像的差异。换句话说,CNN需要从有噪图像中剥离出干净图像(找出自然无损图像的本质特征)。
  2. BN:加快和稳定训练过程。实验发现,BN和残差学习是彼此受益的

注意几点:

  1. 第一层和最后一层没有使用BN。
  2. 最后一层不使用ReLU非线性激活。
  3. 每一层卷积都产生64个通道,最后输出单通道的灰度图像,理想状况下为噪声图像。

最后值得一提的是,在传统方法中,由于通常是基于块处理,因此会产生比较明显的块效应。但在DnCNN中,我们采用的是补零卷积的方法,实验发现补零不会产生块效应

BN和残差学习

作者采用实验的方式,探究BN和残差学习的组合效果:

如图,无论是SGD还是Adam优化方法,RL和BN的强强联手都能显著提升网络性能。作者对此的解释是:

Actually, one can notice that in Gaussian denoising the residual image and batch normalization are both associated with the Gaussian distribution. It is very likely that residual learning and batch normalization can benefit from each other for Gaussian denoising. This point can be further validated by the following analyses.

拓展到其他任务

盲去噪:作者在训练集中混合了噪声标准差从0到55不等的有噪图像,来训练单一的DnCNN模型。

去JPEG块效应:同理。

超分辨:先插值升采样,然后再执行相同的流程。

实验略。这篇文章在现在看来还是相对简单的。

Paper | Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising的更多相关文章

  1. Paper | FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising

    目录 故事背景 核心思想 FFDNet 网络设置 噪声水平图 对子图像的去噪 保证噪声水平图的有效性 如何盲处理 为啥不用短连接 裁剪像素范围 实验 关于噪声水平图的敏感性 盲处理 发表在2018 T ...

  2. (IRCNN)Learning Deep CNN Denoiser Prior for Image Restoration-Kai Zhang

    学习深度CNN去噪先验用于图像恢复(Learning Deep CNN Denoiser Prior for Image Restoration)-Kai Zhang 代码:https://githu ...

  3. 论文解读《Learning Deep CNN Denoiser Prior for Image Restoration》

    CVPR2017的一篇论文 Learning Deep CNN Denoiser Prior for Image Restoration: 一般的,image restoration(IR)任务旨在从 ...

  4. Paper | Residual learning

    目录 1. OVERVIEW 2. DEGRADATION 3. SOLUTION(DEEP RESIDUAL LEARNING) 4. IMPLEMENTATION(SHORTCUT CONNECT ...

  5. [论文阅读] Deep Residual Learning for Image Recognition(ResNet)

    ResNet网络,本文获得2016 CVPR best paper,获得了ILSVRC2015的分类任务第一名. 本篇文章解决了深度神经网络中产生的退化问题(degradation problem). ...

  6. 论文笔记——Deep Residual Learning for Image Recognition

    论文地址:Deep Residual Learning for Image Recognition ResNet--MSRA何凯明团队的Residual Networks,在2015年ImageNet ...

  7. Paper Reading - Convolutional Sequence to Sequence Learning ( CoRR 2017 ) ★

    Link of the Paper: https://arxiv.org/abs/1705.03122 Motivation: Compared to recurrent layers, convol ...

  8. Deep Residual Learning for Image Recognition论文笔记

    Abstract We present a residual learning framework to ease the training of networks that are substant ...

  9. 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献中 ...

随机推荐

  1. 2019徐州网络赛 I J M

    I. query 比赛时候没有预处理因子疯狂t,其实预处理出来因子是\(O(nlog(n))\)级别的 每个数和他的因子是一对偏序关系,因此询问转化为(l,r)区间每个数的因子在区间(l,r)的个数 ...

  2. golang--连接redis数据库并进行增删查改

    (1)安装第三方开源的redis库: (2)在使用redis之前,需要安装第三方库,在GOPATH路径下执行安装指令--$GOPATH$:go get github.com/garyburd/redi ...

  3. Mybatis关联查询之三

    MyBatis的关联查询之自关联 自关联 一.entity实体类 public class City { private Integer cid; private String cname; priv ...

  4. js使用“toFixed( )”保留小数点后两位

    例如: var a = 1.335; alert(a.toFixed(2)) // IE 1.34 //chorme 1.33 若a为字符串,则需要先转换为Number类型 如: n = Number ...

  5. [Ljava.lang.String是一个字符串数组的字节码表示

    打印一个字符串数组的话,会发现 String[] arr = new String[10]; // String[] arr = {"yanggb", "huangq&q ...

  6. Netty - 粘包和半包(下)

    上一篇介绍了粘包和半包及其通用的解决方案,今天重点来看一下 Netty 是如何实现封装成帧(Framing)方案的. 解码核心流程 之前介绍过三种解码器FixedLengthFrameDecoder. ...

  7. 零零总总遇到过的CSS 样式

    1:添加弹出框阴影 2:禁止文本域缩放 3:直接使用CSS 完成文本内容大小写(针对英文) 4: 文本框中的占位符 5:让table每列一样高 6:不使用js 让内容换行 word-break 7:曾 ...

  8. Redis深度历险,全面解析Redis14个核心知识点

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取. 传送门: ...

  9. Shell(三):echo、printf、test命令

    一.echo 1.显示普通字符串: echo "today is a wonderful day" 这里的双引号可以省略. 2.显示转义字符: echo "\" ...

  10. Android 安全攻防(二): SEAndroid bionic

    转自:http://blog.csdn.net/yiyaaixuexi/article/details/8490886 最近研究SEAndroid,会陆续对各个模块做对比分析,学习移植SELinux至 ...