您的位置:首页 > 其它

论文笔记:Noise2Noise: Learning Image Restoration without Clean Data

2018-07-20 16:28 513 查看

Introduction

这是ICML2018的一篇论文,其由来自英伟达、阿尔托大学和 MIT 的研究者联合发表。该文章提出了一个很有意思的观点:在某些常见情况下,网络可以学习恢复信号而不用“看”到“干净”的信号,且得到的结果接近或相当于使用“干净”样本进行训练。而这项结论来自于一个简单的统计学上的观察:我们在网络训练中使用的损失函数,其仅仅要求目标信号(ground truth)在某些统计值上是“干净”的,而不需要每个目标信号都是“干净”的。

Theoretical background

先看一种简单的情况,假设我们对某个物理量(如房间的温度)多次测量,得到一系列不可靠的测量值(y1,y2,...y1,y2,...)。一种估计真实值的通用方法是找到一个数zz,使其与这些测量值有最小的平均偏差,即优化下面损失函数:
argminzEy{L(z,y)}arg⁡minzEy{L(z,y)}

对于L2L2损失L(z,y)=(z−y)2L(z,y)=(z−y)2,该损失函数的最优解在测量值的算数平均值(期望)处取到:
z=Ey{y}z=Ey{y}

对于L1L1损失L(z,y)=|z−y|L(z,y)=|z−y|,该损失函数的最优解在测量值的中值处取到:
z=median{y}z=median{y}

对于L0L0损失L(z,y)=|z−y|0L(z,y)=|z−y|0,该损失函数的最优解近似在测量值的众数处取到:
z=mode{y}z=mode{y}

从统计学角度,这些通用的损失函数都可以解释为似然函数的负对数,而对这些损失函数的优化过程可以看做为最大似然估计。
训练神经网络回归器是这种点估计过程的推广。已知一系列输入-目标对(xi,yi)(xi,yi),典型的网络训练形式是优化下列目标函数:
argminθE(x,y){L(fθ(x),y)}arg⁡minθE(x,y){L(fθ(x),y)}

其中,网络函数为fθ(x)fθ(x),θθ为网络参数。
如果将整个训练任务分解为几个训练步骤,根据贝叶斯定理可将上述目标函数变为:
argminθEx{Ey|x{L(fθ(x),y)}}arg⁡minθEx{Ey|x{L(fθ(x),y)}}

则网络训练的目标函数与前面所说的标量损失函数有相同的形式,也具有相同的特性。

实际上,通过上述目标函数,在有限数量的输入-目标对上训练回归器的过程隐含了一点:输入与目标的关系并不是一一对应的,而是一个多值映射问题。比如对于一个超分辨问题来说,对于每一个输入的低分辨图像,其可能对应于多张高分辨图像,或者说多张高分辨图像的下采样可能对应同一张图像。而在高低分辨率的图像对上,使用L2L2损失函数训练网络,网络会学习到输出所有可能结果的平均值。

综上所述,L2L2最小化的一个看起来似乎微不足道的属性是,如果我们用一个期望与目标相匹配的随机数替换目标,那么估计值将保持不变。因此,如果输入条件目标分布p(y|x)p(y|x)被具有相同条件期望值的任意分布替换,则最佳网络参数θθ也保持不变。这意味着,可以在不改变网络训练结果的情况下,将神经网络的训练目标添加上均值为0的噪声。则网络目标函数可以变为
argminθ∑iL(fθ(x^i),y^i)arg⁡minθ∑iL(fθ(x^i),y^i)

其中,输出和目标都是来自于有噪声的分布,且满足E{y^i|x^i}=yiE{y^i|x^i}=yi

当给定的训练数据无限多时,该目标函数的解与原目标函数的相同。当训练数据有限多时,估计的均方误差等于目标中的噪声的平均方差除以训练样例的数目,即:
Ey^[1N∑iyi−1N∑iy^i]2=1N[1N∑iVar(yi)]Ey^[1N∑iyi−1N∑iy^i]2=1N[1N∑iVar(yi)]

因此,随着样本数量的增加,误差接近于零。即使数据量有限,估计也是无偏的,因为它在期望上是正确的。

在许多图像复原任务中,输入的被污染数据的期望就是我们要恢复的“干净”的目标,因此只要对每张被污染的图像观察两次,即输入数据集也是目标数据集,就可以实现对网络的训练,而不需要获得“干净”的目标。
L1L1损失可以得到目标的中值,这意味着网络可以被训练用来修复有显著异常内容的图像(最高可达50%),而且也仅仅需要成对的被污染图像。

Practical experiments

加性高斯白噪声

一般加性高斯白噪声是零均值的,所以文章采用L2L2损失训练网络。
文章使用开源图像库的图像,对每张图像随机添加方差为σ∈[0,50]σ∈[0,50]的噪声,网络在去噪过程中需要估计噪声幅度,整个过程是盲去噪过程。

从去噪结果可以看出,使用“干净”的目标和使用有噪声的目标有相似的收敛速度和去噪质量。如果进一步使用不同大小的高斯滤波器模糊有噪声的目标图像,可以观察到低频噪声会更顽固,需要更多的迭代次数,但是对于所有情况来说,网络都收敛于相似的去噪质量。

其他合成噪声

泊松噪声

泊松噪声和高斯噪声一样是零均值的,但是更难去除,因为其是信号相关的。文章使用L2L2损失,且在训练过程中变化噪声幅度λ∈[0,50]λ∈[0,50]。
需要说明的是,图像饱和截止区域是不满足零均值假设,因为在这些区域部分噪声分布被丢掉了,而剩余部分的期望不再是零了,所以在这些区域不能得到好的效果。

乘性伯努利噪声

即相当于对图像进行随机采样,未采样到的点像素值为0。被污染像素的可能性记为pp,在文章训练过程中,变化p∈[0.0,0.95]p∈[0.0,0.95],而在测试中p=0.5p=0.5。而得到的结果是使用被污染的目标比“干净”目标得到PSNR值还要高一点,这可能是由于被污染的目标在网络输出中有效地应用了dropout技术的结果。

文字去除

网络使用独立的被污染输入和目标对进行训练,被污染像素的可能性pp在训练过程中为[0.0,0.5][0.0,0.5],而在测试中p=0.25p=0.25。且在训练中使用L1L1损失作为损失函数,从而去除异常值。

随机值脉冲噪声

即对于每一个位置的像素都有可能性pp被[0,1][0,1]的值随机替代。在这种情况下,平均值和中值都能产生好的结果,其理想的输出应该是像素值分布的众数。为了近似寻找众数,文章使用退火版本的“L0L0损失”函数,其定义为(|fθ(x^)−y^|+ϵ)γ(|fθ(x^)−y^|+ϵ)γ,其中ϵ=10−8ϵ=10−8,在训练时γγ从2到0线性下降。训练时输入和目标图像被污染像素的可能性为[0,0.95][0,0.95]。

除此之外,文章还在Monte Carlo渲染和MRI方面做了测试,均得到了不错的效果。
该文章的意义在于,在现实世界中想要获得清晰的训练数据往往是很困难的,而这篇文章提供了一种新的思路解决这个问题。文章也提到了,天下没有免费的午餐,该方法也无法学习获取输入数据中不存在的特性,但这同样适用于清晰目标的训练。

英伟达新闻地址:新闻地址
An unofficial and partial Keras implementation:github

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐