Noise2Void 的一些学习总结

本篇很大一部分内容借鉴了篇末所引用的优质博客~~

1. 概括

Noise2Noise (N2N) 可以利用一对独立的噪声图片来训练去噪模型,在这里,作者更进一步提出了一个策略 Noise2Void (N2V) ,只利用噪声图像即可。方法的核心思想是patch-based view和噪声独立性假设(给定信号s,不同position的噪声ni和nj之间相互独立)。图像中的像素点并不是独立存在的,每一个像素点和周围的像素点都是条件相关的。其实这很容易理解,正因为每一个像素点都和周围的像素点有着一定的关联,我们的神经网络才能利用某个被污染的像素点这种隐含信息通过观察其周围的像素点推断出被污染部分的真实值。理解了这一点,本文的核心思想也就抓住了。
 

2. 方法介绍

噪声图像的产生 x = s + n ,可以看作是从下面的联合分布产生的,

 假设 p ( s )  是满足下式的任意分布,

 si,sj是在一定半径距离内的两个像素,也就是说像素 si在统计上不是独立的,都与周围的像素点成条件概率的关系。

而针对噪声,噪声图像中的噪声时独立于像素而存在的,任何像素点都有p的概率被独立同分布的噪声所污染,则假设其是条件独立的形式,

 其中​n_i是i处对应的噪声点。之后因为本文考虑的是L_2损失,因此还对噪声做出了和N2N相同的假设,即噪声分布的均值等于0,那么有:

 换句话说,如果我们获取到了同一个信号的不同噪声图片,然后对它们取平均,结果将会接近真正的信号。

2.1. 传统的有监督训练


传统CNN的运行原理是通过一个固定大小的感受野在图像上滑块,然后将滑块与图像对应的像素进行乘积、激活等一系列操作。对于一个FCN来说,网络输出的每一个像素的预测值。现在,我们考虑训练一个 CNN 来实现 x  到 s 的映射,也就是一个图片作为输入,预测出另一个图片作为输出。
每个输出的预测像素值\hat{s_i} 都对输入像素有一定大小的感受野x_{RF(i)} ,也就是影响像素预测的一组输入像素。然后,我们可以把 CNN 看作是一个函数,其输入是x_{RF(i)} ,输出则是位置 i 处的像素值\hat{s_i}

 

 一对训练数据(x^j,s^j)可以看作是数据对(x^j_{RF(i)},s^j_i),我们现在利用这些数据对来更新网络参数,通过一系列相互重叠的滑块,最终将整张图像的内容映射为另一张新的图像。如果将这种patch2pixel的想法对应到本文一开始的(1)式,那么我们就可以将其改写为:

也就是对每个噪声图像的每个像素点,网络 f_\Theta力求将其映射为干净图像对应的像素点。
 

 2.2. Noise2Noise 训练


N2N 可以让我们应对没有真实标签的训练数据,我们一开始的训练数据为(x^j,x^{'j}),其中,

然后我们可以将我们的训练数据看作是数据对(x^j_{RF(i)},x^{'j}_{i})。尽管我们尝试去学习从一个噪声图片到另一个噪声图片的映射,训练依旧可以收敛到正确的解,因为噪声输入的期望值等于干净信号。

将前面我们所说的patch2pixel的也运用到这里,那么我们有其输入转化为(x^j_{RF(i)},x^{'j}_i),其中 x^j_{RF(i)}是噪声图像的一个patch,而x^{'j}_i是另一个噪声图像对应处的像素点,将其带入(9)式,我们可以得到:

由N2N可知,在期望下(11)式是和(9)式等价的。

2.3. Noise2Void 训练


接下来让我们更进一步分析,如果我们将x^{'j}_i换成x^{j}_i,换句话说,我们将一个噪声图像的一个patch和patch中对应的一个像素点配对,那么对于(11)式我们进一步将其代换为:

 

 那么(12)式是成立的吗?显然在期望下(12)式还是成立的,并且与(11)式等价。这是因为在期望下,E_{x^j_{i}}(x^j_i)=E_{x^{'j}_{i}}(x^{'j}_i)=s^j_i。通过这种代换,我们就可以在理论上实现我们本部分开始时的目的了,即通过单张噪声图像实现模型的训练。
但是观察上面的理论公式(12),如果我们像之前一样简单地提取出一个小块并用它的中间像素值作为目标,将patch的全部信息同时输入到模型中,模型很容易坍缩成一个忽略目标像素点周围的信息,而只关注目标像素点自身的恒等映射,也就是将输入的中间像素值直接映射到输出。为了解决这个问题,作者提出了一个新颖的方式,blind-point。简单来说,blind-point就是将输入patch中的目标点遮盖住,然后模型可以通过未遮盖住的部分推断出遮盖住的目标点, 因此,我们的网络需要一个特殊的感受野,也就是在中间位置有一个盲点。预测像素值 \hat{s_i}受到所有矩形邻域输入的影响除了在位置 i 处的输入像素x_i 。

在这里插入图片描述

盲点网络可以使用传统的有监督训练或者 N2N 训练方式,此时目标分别是干净图像和噪声图像。由于可利用的输入信息少了一点,我们期望它的准确率会略有下降。

盲点网络的优点是它不能学习一个恒等映射。因为我们假设噪声像素是相互独立的,周围的像素没有和n_i相关的信息。而信号不是相互独立的,我们仍然可以通过其周围的像素来估计出s_i虽然这样做会因为patch比理论值缺少了一个像素点的信息而无法达到理论值的精度

2.4. 实现细节

尽管盲点网络可以仅仅利用单独的噪声图片来进行训练,但要想高效地设计出这样一个网络并不容易。作者提出了一个 mask 策略:随机选择周围的一个像素值来替换输入块的中间像素值,这可以有效地清除中间像素的信息避免网络学习到恒等映射。

 但是,这样依然不是非常高效,我们必须处理整个块来计算单个像素值对应的梯度。因此,作者使用下面的近似技术:给定一个噪声图像 x_i,随机裁剪出 64 ∗ 64 大小的小块(这大于整个网络的感受野)。然后在每个小块内,分层采样来随机选取 N 个像素,对它们进行掩盖并用原始的噪声像素来作为目标。这样,就可以一次性计算这 N 个点对应的梯度,而忽略其它的预测值。
 

3. 实验结果

 N2V 可以应用在一些没有干净图像或者噪声图像的场景,但它也有一些局限性。

这个例子是说不满足第一个假设的情况,即图像中每个像素点都不是独立存在的。

比如下图所示,红色箭头所指的位置是一个孤立的亮点,而其周围比较暗,这些亮点处的像素值很难依靠周围的像素值进行推断,因此生成的图像会丢失掉这些亮点;在第二行图像上,由于山峰处的像素变化剧烈,因此也无法用周围的像素点来近似的预测,所以生成的图像会过于平滑。

在这里插入图片描述

 另外,再来看不满足第二个假设的情况:如果噪声不满足相互独立的假设,N2V 也就无法很好地去除这些噪声。

在这里插入图片描述

 可以看出,当噪声不是均匀分布的时,噪声图像期望值等于真实图像这个基石般的前提被打破,所产生的结果也会出现问题。其实本文,包括N2N的一个隐含思想就是,期望在损失函数下为0的地方是噪声,因此当使用结构化噪声时,在本文的L_2损失下那些叠加后取平均不能被抵消的地方的噪声不能被模型所识别,所以最后被保留了下来。这就出现了第一行结果中的棋盘阴影和第二行结果中的条状阴影。虽然在实际生活中,这种结构化噪声常常因为测量仪器的固有问题而出现。
 

写在最后
本文通过添加前提假设,将N2N的基石公式进一步推广,实现了单噪声图像的恢复,真实实现了这一系列方法的一种无监督学习。针对本文的失败案例虽然目前各种论文已经提出了许多不同的解决方法,例如每次随机取不同的像素点/多个像素点、将遮盖的像素点信息以后验信息的形式添加到模型中等,但终究还是无法打破两个强力的假设的约束。个人感觉,如果打破这种方法的具体实现流程,而是将其期望匹配的思想应用于其他更先进的网络,也许会迈出新的一步。
 

完结~~

本篇所引用的优质的博客:

(2条消息) 图像去噪之 Noise2Noise 和 Noise2Void_涑月听枫的博客-CSDN博客_noise2noise

Noise2Void - Learning Denoising from Single Noisy Images_seniusen的博客-CSDN博客

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Noise2Void是一种图像去噪的方法,它是基于N2N(Noise2Noise)方法的改进。N2N方法首次提出了可以仅使用噪声图像而不需要干净图像来训练模型的思想。在N2N方法中,图像去噪问题被公式化为x = s + n,其中x是噪声图像,s是干净图像,n是噪声。然而,由于实际操作中很难获得无限多的配对噪声图像,N2N方法在实践中存在一些问题。 为了解决这些问题,Noise2Void(N2V)方法被提出。N2V方法不需要配对的噪声/干净图像,而是仅使用单张噪声图像进行模型训练。这种方法在理论上弱于监督方法,但强于自监督方法。然而,N2V方法也存在一些挑战。首先,为了获得准确的结果,需要大量的噪声图像,并且这些噪声图像应该是同一张干净图像添加了随机噪声后获得的。然而,这些噪声图像往往难以获取甚至无法获取。其次,当噪声分布与损失函数不匹配时,模型的性能会下降。 总之,Noise2Void是一种改进的图像去噪方法,它通过仅使用单张噪声图像进行模型训练来解决N2N方法中的一些问题。然而,N2V方法仍然面临着一些理论和实践上的挑战。 #### 引用[.reference_title] - *1* *3* [图像去噪之 Noise2NoiseNoise2Void](https://blog.csdn.net/qq_37614597/article/details/114964757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Noise2Void 的一些学习总结](https://blog.csdn.net/m0_66890670/article/details/127792540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值