Toward Convolutional Blind Denoising of Real Photographs
本文提出了一个针对真实图像的盲卷积去噪网络,增强了深度去噪模型的鲁棒性和实用性。
摘要
作者提出了一个 CBD-Net,由噪声估计子网络和去噪子网络两部分组成。
作者设计了一个更加真实的噪声模型,同时考虑了信号依赖的噪声和相机内部处理的噪声。
基于真实噪声模型合成的图片和真实的噪声图片被联合在一起对网络进行训练。
噪声模型
除了高斯噪声,真实的图片噪声更加复杂,并且是信号依赖的。
给定一个干净图片 x,一个更加真实的噪声模型 \(n(x) ~ N(0, \sigma(y))\) 可以表示为:

其中,\(n(x) = n_s (x) + n_c\) 包含一个信号依赖的组成 \(n_s\) 和一个静态的噪声组成 \(n_c\)。\(n_c\) 是一个方差为 \(\sigma_c ^2\) 的高斯噪声, \(n_s\) 则和图像的像素值有关,比如 \(x(i) * \sigma_s^2\)。
另外,我们再把相机内部处理过程考虑进去的话,就会产生以下这个信号依赖和通道依赖的噪声模型。

\(y\) 表示合成图片, \(f\) 代表相机反应函数(CRF),\(M\) 代表将 sRGB 图片转化为 Bayer 图片的函数,\(M^{-1}\)代表去马赛克函数。
此外,为了扩展到对压缩图片的处理,我们把 JPEG 压缩也考虑进合成图片的生成过程。

- 针对原始图片、无压缩图片和压缩图片,我们分别用以上三种模型来生成训练图片。
网络结构

噪声等级子网络由五层的卷积组成,卷积核大小为 3*3,通道数为 32,激活函数采用 Relu,没有采用池化和批归一化,输出的噪声等级图和原噪声图片大小相同。
去噪子网络将噪声等级图和原噪声图片一起作为输入,采用了 U-Net 的网络结构,卷积核大小为 3*3,激活函数采用 Relu,学习噪声图片的残差。
非对称学习
作者用传统的去噪方法 BM3D/FFDNet 做了一个实验。当给定的噪声等级和真实噪声等级一样时,去噪效果毋庸置疑是最好的。当给定的噪声等级低于真实噪声等级一样时,去噪结果仍然有可见的噪声;但当给定的噪声等级高于真实噪声等级一样时,仍然可以取得非常满意的结果。

- 为了利用这种非对称特性进行盲去噪,我们在噪声估计中提出了不对称损失以避免在噪声水平上出现低估误差。
- 给定像素 \(i\) 处估计的噪声等级 \(\hat \sigma(y_i)\)和真实值 \(\sigma(y_i)\)。当 \(\hat \sigma(y_i) < \sigma(y_i)\),我们应该强加更多惩罚。 因此,噪声等级估计子网络的不对称损失定义如下:

通过设定 \(0 < \alpha < 0.5\),,我们可以强加更多惩罚给低估误差。
另外,我们引入一个总体方差正则化项来限制 \(\hat \sigma(y_i)\) 的平滑性:

对于去噪子网络的输出 \(\hat x\),我们定义重构误差为:

网络的总损失即为以上三部分的求和:

训练过程
基于真实噪声模型合成的图片和真实的噪声图片被联合在一起对网络进行训练,来增强网络处理真实图像的泛化能力。
- 针对一个批次的合成图片,\(L_{rec} , L_{asymm},L_{TV}\) 三个损失都被计算来训练网络。
针对一个批次的真实,由于噪声等级不可知,因此只有,\(L_{rec} 和 L_{TV}\) 两个损失被计算来训练网络。
验证和结果
- 不同 \(\alpha\) 值的去噪结果对比如下图所示,可以看到,较小的 \(\alpha = 0.3\) 会对去除未知噪声并且保留图片的结构有所帮助。

另外,作者又对只用合成图片、只用真实图片和联合真实图片和合成图片三种情况进行了对比,进一步验证了联合训练的有效性。

最后,一些实验结果如下所示:


获取更多精彩,请关注「seniusen」!

Toward Convolutional Blind Denoising of Real Photographs的更多相关文章
- Paper | Toward Convolutional Blind Denoising of Real Photographs
目录 故事背景 建模现实噪声 CBDNet 非对称损失 数据库 实验 发表在2019 CVPR. 摘要 While deep convolutional neural networks (CNNs) ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- CV codes代码分类整理合集 《转》
from:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program] ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- 计算机视觉与模式识别代码合集第二版one
Topic Name Reference code Feature Detection, Feature Extraction, and Action Recognition Space-Time I ...
- CVPR2018资源汇总
CVPR 2018大会将于2018年6月18~22日于美国犹他州的盐湖城(Salt Lake City)举办. CVPR2018论文集下载:http://openaccess.thecvf.com/m ...
- Paper | Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising
目录 故事背景 网络结构 BN和残差学习 拓展到其他任务 发表在2017 TIP. 摘要 Discriminative model learning for image denoising has b ...
- 论文翻译:2020_FLGCNN: A novel fully convolutional neural network for end-to-end monaural speech enhancement with utterance-based objective functions
论文地址:FLGCNN:一种新颖的全卷积神经网络,用于基于话语的目标函数的端到端单耳语音增强 论文代码:https://github.com/LXP-Never/FLGCCRN(非官方复现) 引用格式 ...
- 《DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks》研读笔记
<DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks>研读笔记 论文标题:DSLR-Quality ...
随机推荐
- HDU 2005 第几天?(闰年判断)
传送门: acm.hdu.edu.cn/showproblem.php?pid=2005 第几天? Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- ubuntu开启ssh连接
1.安装openssh-server sudo apt-get install -y openssh-server 2.修改/etc/ssh/sshd-config配置 PermitRootLogin ...
- java使用JSCH连接FTP(Linux服务器)上传文件到Linux服务器
首先需要用到jsch-0.1.54.jar 包: 链接: https://pan.baidu.com/s/1kZR6MqwpCYht9Pp_D6NKQw 密码: gywx 直接上代码: package ...
- 菜鸟笔记 -- Chapter 4.7 代码注释与编码规范
4.7 代码注释与编码规范 在程序代码中适当的添加注释可以提高程序的可读性和可维护性.好的编码规范可以使程序更易阅读和理解.下面我们将介绍几种代码注释,以及应该注意的编码规范. 4.7.1 代码注释 ...
- Struts2中期(这框架目前正处于淘汰状态)
Struts2的第二天 Struts2的第二天的内容 1. Struts2框架中的Servlet的API的使用 2. Struts2中Action接收请求参数 3. Struts2中自定义拦截器 案例 ...
- Invalid default value for prop "value": Props with type Object/Array must use a factory function to return the default value.(props default 数组/对象的默认值应当由一个工厂函数返回)
Invalid default value for prop "value": Props with type Object/Array must use a factory fu ...
- struts2入门第一天----------一个简单例
搭建完环境后就可以动手去打代码了.首先创建一个简单的提交表单的jsp页面(html页面也可以), <%@ page language="java" import=" ...
- 使用docker安装和运行常用的数据库和中间件
mysql: docker pull mysql: docker run --name mysql -p : -v /usr/share/zoneinfo/Asia/Shanghai:/etc/loc ...
- 【PHP】array_column函数
array_column() 返回输入数组中某个单一列的值. 例子,从记录集中取出 last_name 列: <?php // 表示由数据库返回的可能记录集的数组 $a = array( arr ...
- [转]App离线本地存储方案
App离线本地存储方案 原文地址:http://ask.dcloud.net.cn/article/166 HTML5+的离线本地存储有如下多种方案:HTML5标准方案:cookie.localsto ...