论文题目:Noise2Noise: Learning Image Restoration without Clean Data

一、简介

论文提出,在没有干净数据的情况下也能对图像进行重建,重建效果和使用干净数据恢复一样好甚至在有些情况下更好。论文展示了单个模型进行了摄影噪声去除,合成蒙特卡罗渲染去除,以及欠采样MRI扫描的重建 。

论文使用表示输入的噪声图像,并且是根据对应的干净图像随机分布的变量,,论文仅仅是根据噪声图像对图像进行修复,此外,既不需要明确的噪声统计似然模型,也不需要图像先验,而是间接地从训练数据中学习这些信息。虽然从统计的角度来看,论文的结果没有很大的优势,但它通过提升训练数据的可用性要求,极大地简化了实际的信号重建。

二、知识理论背景

假设有一组不可靠的室温测量值(y1,y2,...)。估计真正未知温度的一个常见策略是根据损失函数L找到一个与测量值的平均偏差最小的z:

当L为L2时,,这个最小值是在观测值的算术平均值处找到的。

当L为L1时,,则最优解为观测值的中值。

当L为L0时,,即差不为0的个数,最优解为观测值的众数。

从统计的角度看,这些常用的损失函数可以看作负对数似然函数的最大似然估计。

神经网络的训练的目标函数如下:

如果对输入数据的依赖去掉的话,目标函数变为:

相反,在每个训练样本中,完全训练任务分解为相同的最小化问题,目标函数为:

实际上,在有限数量的输入-目标对上训练回归器的过程隐含了一点:输入与目标的关系并不是一一对应的,而是一个多值映射问题。例如,在所有自然图像的超分辨率任务中,低分辨率图像x可以对应用许多不同的高分辨率图像y,因为在抽取过程中丢失了关于边缘和纹理的准确位置和方向的知识。

L2最小化的存在一个性质是,当用期望与目标相匹配的随机数替换目标时,结果估计值保持不变。这意味着,用零均值噪声破坏神经网络的训练目标,原则上是不会改变网络需要学习的内容的(即不会影响网络的输出)。

综上,经验风险最小化公式可以写为:

上面公式的输入和目标都是从噪声分布图像中提取的,基于前面的的知识,未观测到的干净数据为:

对于无限的数据,用噪声图像作为目标的结果就和用干净图像作为目标的重建效果一样。

对于有限的数据,方差是目标中噪声的平均方差除以训练样本的数量,即:

根据论文提出的理论以及方差和协方差的基本性质,可以得到最后一排公式。

如果噪声是互不相关的,则可以简化为:

无论是哪种情况,估计的方差都是噪声的平均(协)方差,除以样本N的数目。因此,随着样本数的增加,误差接近于零。

三、实验

3.1 加性高斯噪声

对目标图片加上人工合成的加性高斯噪声,使用L2损失进行训练修复。

baseline:之前博文提到的一种具有128个特征映射的30层分层残差网络的“RED30”方法,它在包括高斯噪声在内的各种图像恢复任务中被证明是非常有效的。(链接:https://blog.csdn.net/csdn_misli/article/details/82259420)

训练集:使用IMAGENET验证集中50k大小的图像,裁剪为256*256像素大小的块。

图像处理:对每个训练样本分别随机化噪声标准差,即网络在去除噪声时必须估计噪声的大小(“盲”去噪)。

测试集:BSD300,SET14,KODAK

结果:Gaussian列,clean是RED30用干净目标图像训练的效果,noisy是使用RED30噪声目标图像训练的效果。BM3D:广泛使用的基准去噪方法

使用noisy目标的训练收敛速度也一样很快。

论文也提到将RED30变为U-Net方法也能取得相似的结果,并且收敛速度快10倍。

对于收敛速度,随着像素相关性的增加,加权梯度的有效平均值减小,权值更新变得比较嘈杂,这使得收敛速度变慢,但即使在极度模糊的情况下,最终的质量也是相似的(在0.1db以内)。

对于数据预算,令一个具有加性高斯白噪声的图片为一个捕获单元(capture unit,CU),假设19个CUs足够对应一个干净的图片(目标),则1个CU加上1个目标(19个CUs)一共需要20个CUs,对于有限的数据,在2000个CUs预算下,可以分为潜在的干净图片N和需要得到一个干净图片所需要的噪声图片M,则M*N = 2000,传统方法中,M=20,N= 100,只有100个训练数据对,即最终产生100个干净图片(case1)。但是论文提到使用同样的数据,可以有100*20*19=38000个训练数据对,即对每个潜在的干净图片,形成19*20个可能的训练数据对,虽然最后还是只有100个干净图片,但是这样的训练数据扩大了,同时效果也很理想(case2)。并且论文也提出,即使N=1000,M=2,即增加干净潜在的图片数量,只用2个CUs进行一个干净图片的复原训练(case3)会产生更好的结果。

3.2 其他的合成噪声

泊松噪声

泊松噪声也是图片中主要的噪声来源,虽然添加噪声零均值时,也很难去除,因为它是信号依赖的。设置噪声等级,使用L2损失函数进行训练。得到的结果可以查看前面的一张表格,可以看到结果相似,并且两者收敛速度差不多。

乘性伯努利噪声

构造一个随机掩码m,对于有效像素为1,对于零/缺失像素为0。为了避免确实像素(0)的后向传播梯度问题,loss函数修改为:

p表示像素损坏的概率,在训练上,;测试上,p=0.5.。同样也可以在前面表格看到结果,可以发现,用噪声图片作为目标效果更好一点。

文本去除

在图像上随机分布大量随机字符串,并且字体大小和颜色也是随机的,但是字体和字符串的方向是不变的。

p表示像素损坏的概率,训练上,测试上.

在这里,使用平均数(L2损失)得到的结果并不好,因为覆盖文本的颜色与实际图像无关。最后得到的图像将不正确地趋向于正确图像和平均文本颜色(中等灰色)的线性组合,所以采用中数作为正确结果,即采用L1损失函数,

随机值脉冲噪声

将图像的一些像素用噪声替换掉,其他的像素保持不变,与标准的椒盐噪声不一样,论文研究了一个更复杂的分布,其中每个像素有p的概率被均匀分布的随机颜色替换,1-p的概率保留原来的颜色。像素的颜色分布是在原始颜色加上均匀分布的Dirac分布,相对权重由替换概率p给出,在这种情况下,均值和中值都不能得到正确的结果,理想的结果是众数,使用L0损失函数,,在训练中从2到0线性降低。在训练网络时,对噪声输入和噪声目标分别使用[0,0.95]的概率对像素进行噪声污染。

论文提出只要小于50%的像素是随机化污染的的,L1损失就会产生很好的效果,但是超过这个阈值之后,它很快就开始将黑暗和明亮的区域偏向于灰色。

3.3 Monte Carlo Rendering

Monte Carlo 积分器将随机采样过程的期望值等于每个像素的强度,即采用噪声为零均值。Mente Carlo噪声比高斯噪声难去除,但是可以借助可能生成的辅助信息在一定程度上缓解了这一问题,在数据生成过程中,这些信息干净的图像相关。在实验中,去噪器的输入不仅包括每个像素的亮度值,还包括每个像素可见表面的平均反照率(即纹理颜色)和法向量。

高动态范围(High dynamic range,HDR)。即使有足够的采样,浮点像素亮度也可能相差几个数量级。为了构造适合一般8位显示设备的图像,需要使用色调映射算子将这一高动态范围压缩为固定范围。使用Reinhard全局算子的一个变体:

  ,v是一个标量亮度值,该式能将任何v>=0的值映射到0<= T(v) < 1。

如果直接使用MSE L2loss会导致最后的结果被outliers影响,因为对损失函数做了改变:

Noise2Noise:Learning Image Restoration without Clean Data读书笔记相关推荐

  1. 图像去噪--Noise2Noise: Learning Image Restoration without Clean Data

    Noise2Noise: Learning Image Restoration without Clean Data ICML 2018 1 Introduction 基于 corrupted or ...

  2. 读论文:Noise2Noise: Learning Image Restoration without Clean Data

    很有意思的文章,我之前做过一些深度学习的降噪任务,针对不同光照条件下的图像进行降噪.这个时候就会涉及到标签样本的制作. 在监控领域中,相差6个db的照度,图像的噪点就会有明显的差异性.所以我们在训练模 ...

  3. 【论文阅读笔记】Noise2Noise: Learning Image Restoration without Clean Data

    官方代码地址:https://github.com/NVlabs/noise2noise 论文地址:https://arxiv.org/abs/1803.04189   第一次接触这方向,相当于翻译了 ...

  4. Clean Code读书笔记

    Clean Code读书笔记 一.整洁代码 如何做到整洁 怎么做 为什么 代码逻辑直接了当 便于理解 有意义的命名 便于理解 减少依赖关系 便于维护 分层战略完善错误 缺陷难以隐藏 有单元测试和验收测 ...

  5. Analyzing Neural Time Series Data 读书笔记6

    Analyzing Neural Time Series Data 第六章读书笔记 仅做学习记录 6 Practicalities of EEG Measurement and Experiment ...

  6. Analyzing Neural Time Series Data 读书笔记3

    Analyzing Neural Time Series Data 第三章读书笔记 仅做学习记录 3 Interpreting and Asking Questions about Time-Freq ...

  7. 代码整洁之道 Clean Code 读书笔记

    目录 代码整洁之道 Clean Code 第一章 整洁代码 第二 三章 命名与函数 第四 五章注释与格式 第六章 对象和数据结构 第七章 错误处理 第八章 边界 第九章 单元测试 第十章 类 第十一章 ...

  8. 《深度学习》/《Deep Learning》——深度学习圣经的读书笔记

    学习方法 对着书看一遍,把理解的内容写成笔记 看完一章后,看着笔记和书,把内容复习一下,把需要画线的地方画好并理解 逐层深入:这本书讲解基础概念讲得不生动,但是高层次上有很多不错的高瞻远瞩的见解,所以 ...

  9. XDL: An Industrial Deep Learning Framework for High-dimensional Sparse Data 论文笔记

    本文的github地址: https://github.com/alibaba/x-deeplearning X-Deep Learning(简称XDL)于2018年12月由阿里巴巴开源,是面向高维稀 ...

最新文章

  1. Error in ggplot(df, aes(x = x, y = y)) : could not find function “ggplot“
  2. Android中Webview使用javascript调用事先定义好的Java函数
  3. 恐怖之城(深圳)系列1---K113大巴洗劫一空
  4. MongoDB C Driver使用教程
  5. so(3) se(3) optimization
  6. 文档布局分析 扭曲文档图像恢复
  7. 【Codeforces 1426 E】Rock, Paper, Scissors,贪心!算反面
  8. 计算机组成原理试题库(含答案),计算机组成原理试题库(含答案)--
  9. css常用样式大全集锦
  10. ZebraDesigner-设计label
  11. 模型评估与选择(后篇)-代价曲线
  12. Ubuntu18.04双系统安装+GPU+CUDA10+CUDNN7+ANACONDA3+PYTHON+PYCHARM
  13. 树莓派4B:连接windows远程桌面
  14. 叉积 微分 恒等式_一个斜三角中的恒等式
  15. 小技巧,怎么查看数据库热度排名
  16. Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
  17. 图神经网络(CNN)三
  18. .Net Core 2.1 JWT Bearer 的认证
  19. win11安装VB6.0(已解决)
  20. 搜索功能(支持全拼,首字母,不区分大小写,关键字变色等)

热门文章

  1. ceil函数和round函数的用法
  2. 彩票摇奖 java_用java 实现彩票摇奖,猜拳程序
  3. Flowable-6.6.0 工作流引擎(windows平台zip包)下载
  4. 80c52和ULN2003控制步进电机转动
  5. everything搜到不到文件的设置问题
  6. win10电脑防火墙允许ping设置
  7. js13位时间戳转换,10位时间戳转换
  8. 腾讯文档服务器异常怎么回事,腾讯文档怎么编辑不了 编辑不了解决方法
  9. Windows 10开启ISS Web服务
  10. 马士兵qbc和qbe示例