自监督去噪:Neighbor2Neighbor原理分析与总结

news2024/9/24 7:24:06

文章目录

    • 1. 方法原理
      • 1.1 先前方法总结
      • 1.2 Noise2Noise回顾
      • 1.3 从Noise2Noise到Neighbor2Neighbor
      • 1.4 框架结构
      • 2. 实验结果
      • 3. 总结

文章链接:https://arxiv.org/abs/2101.02824

参考博客:https://arxiv.org/abs/2101.02824

1. 方法原理

1.1 先前方法总结

  1. 监督学习的方法:noisy-clean训练方法数据集构建存在问题、泛化性不好,真实场景基本用不了。
  2. Noise2Noise系列:每个场景需要配对的噪声数据。应用上会有局限性,比如室内静态场景。
  3. 现有的自监督学习方法
    • 从单张图片上挖掘信息:DIP系列,Self2Self,Noisy-as-Clean
    • Noise2Noise系列:N2N,Noise2Void,Noise2Self,问题在于网络训练困难、会损失有用信息、依赖于噪声模型
    • 噪声建模方法:Probabilistic Noise2Void,Laine19,Dilated Blind-Spot预测噪声分布,在实际中很难应用

1.2 Noise2Noise回顾

Noise2Noise不需要噪声图片,基于多张独立的噪声图像就去噪, 具体内容可以参考:Noise2Noise 笔记

  • Noise2Noise的局限在于:需要采集同一个场景下多个图像,着对于动态场景(户外或者自拍)是非常困难的。

  • Neighbor2Nieghbor的动机就是解决上述问题,有两个假设/想法

    1. Noise2Noise是对同一场景进行多次采样训练 --> 对相似的场景进行多个采样然后进行训练 --> 降低数据采集的难度
    2. 是否能够只使用一张含噪声图像就训练网络

1.3 从Noise2Noise到Neighbor2Neighbor

Noise2Noise的最大似然估计
a r g m i n θ E x , y , z ∣ ∣ f θ ( y ) − z ∣ ∣ \underset{\theta}{argmin} E_{x,y,z}||f_{\theta}(y) - z|| θargminEx,y,z∣∣fθ(y)z∣∣

由于Noise2Noise要求一个场景(x)至少两个独立含噪的图片( y , z y,z yz),这在真实场景中很难满足,所以需要考虑扩展理论:

  • 同一场景两个独立含噪图像 --> 相似场景两张独立含噪声图像
  • 每个场景多张含噪图像–> 每个场景单张含噪图像

相似场景配对噪声图片进行去噪

将 Noise2Noise的概念拓展一下:假设有一张干净图片 x x x, 一张含噪图像是 y y y,另一张含噪图像z上还有一些别的偏差
ϵ : = E z ∣ x ( z ) − E y ∣ x ( y ) ≠ 0 \epsilon := E_{z|x}(z) - E_{y|x}(y) \neq 0 ϵ:=Ezx(z)Eyx(y)=0

第一个定理:用 y和z表示x上的两个噪声数据,并且考虑 ϵ ≠ 0 \epsilon \neq 0 ϵ=0 E y ∣ x ( y ) = x E_{y|x}(y) = x Eyx(y)=x E z ∣ x ( z ) = x + ϵ E_{z|x}(z) = x + \epsilon Ezx(z)=x+ϵ, 其中z的方差为 σ z 2 \sigma_z^2 σz2。那么有:
E x , y ∣ ∣ f θ ( y ) − x ∣ ∣ 2 2 = E x , y , z ∣ ∣ f θ ( y ) − z ∣ ∣ 2 2 − σ z 2 + 2 ϵ E x , y ( f θ ( y ) − x ) E_{x,y}||f_{\theta}(y) - x||_2^2 = E_{x,y,z}||f_{\theta}(y) - z||_2^2 - \sigma_z^2 + 2\epsilon E_{x,y}(f_{\theta}(y) - x) Ex,y∣∣fθ(y)x22=Ex,y,z∣∣fθ(y)z22σz2+2ϵEx,y(fθ(y)x)

  • 当噪声图片之间的偏差 ϵ ≠ 0 \epsilon \neq 0 ϵ=0的时候(也就是 E x , y ( f θ ( y ) − x ) ≠ 0 E_{x,y}(f_{\theta}(y) - x) \neq 0 Ex,yfθ(y)x=0),优化Noise2Noise网络的 E x , y , z ∣ ∣ f θ ( y ) − z ∣ ∣ 2 2 E_{x,y,z}||f_{\theta}(y) - z||_2^2 Ex,y,z∣∣fθ(y)z22不会得到和监督学习 E x , y ( f θ ( y ) − x ) E_{x,y}(f_{\theta}(y) - x) Ex,y(fθ(y)x) 相同的结果。
  • 但是当 ϵ → 0 \epsilon \rightarrow 0 ϵ0时, 2 ϵ E x , y ( f θ ( y ) − x ) → 0 2\epsilon E_{x,y}(f_{\theta}(y) - x) \rightarrow 0 2ϵEx,y(fθ(y)x)0, 也就是说Noise2Noise网络训练的结果和监督学习训练的结果是近似的。(这里需要注意一个点, σ z \sigma_z σz是一个常数,优化过程不影响)

上面其实是Noise2Noise工作的原理,但是需要一对噪声数据
  对于单张含噪图像而言,构造两张"相似但不相同"的图像的一种可行方法是采样。在原图的相邻但不相同的位置采样出来的子图很显然满足了相互之间的差异很小,但是其对应的干净图像并不相同的条件( ϵ → 0 \epsilon \rightarrow 0 ϵ0)。给定含噪图像y,我们从中采样两次得到噪声对( g 1 ( y ) , g 2 ( y ) g_1(y),g_2(y) g1(y),g2(y)),用Noise2Noise的方式训练有:
a r g m i n θ E x , y ∣ ∣ f θ ( g 1 ( y ) ) − g 2 ( y ) ∣ ∣ 2 \underset{\theta}{argmin} E_{x,y} ||f_{\theta}(g_1(y)) - g_2(y)||^2 θargminEx,y∣∣fθ(g1(y))g2(y)2

这种方法称为 Pseudo Noise2Noise ,但是由于 g 1 ( y ) , g 2 ( y ) g_1(y), g_2(y) g1(y),g2(y) 采样的位置不同,其偏差不等于0:
ϵ = E y ∣ x ( g 2 ( y ) ) − E y ∣ x ( g 1 ( y ) ) ≠ 0 \epsilon = E_{y|x}(g_2(y)) - E_{y|x}(g_1(y)) \neq 0 ϵ=Eyx(g2(y))Eyx(g1(y))=0

直接用Noise2Noise的方法训练得到的结果不是理想结果,且容易导致过度平滑。因此Neighbor2Neighbor考虑在其上加正则项进行约束。假设一个理想的降噪网络 f θ ∗ f_{\theta}^* fθ,其具有理想降噪能力
f θ ∗ ( y ) = x f_{\theta}^* (y) = x fθ(y)=x

f θ ∗ ( g l ( y ) ) = g l ( x ) f_{\theta}^* (g_l(y)) = g_l(x) fθ(gl(y))=gl(x)

这个理想的降噪网络满足:

E y ∣ x { f θ ∗ ( g 1 ( y ) ) − g 2 ( y ) − ( g 1 ( f θ ∗ ( y ) ) − g 2 ( f θ ∗ ( y ) ) ) } = g 1 ( x ) − E y ∣ x { g 2 ( y ) } − ( g 1 ( x ) − g 2 ( x ) ) = g 2 ( x ) − E y ∣ x { g x ( y ) } = 0 \begin{aligned} &E_{y|x} \{ f_{\theta}^* (g_1(y)) - g_2(y) - (g_1(f_{\theta}^*(y)) -g_2(f_{\theta}^*(y))) \}\\ &= g_1(x) - E_{y|x}\{ g_2(y)\} - (g_1(x) - g_2(x)) \\ &= g_2(x) - E_{y|x}\{ g_x(y)\} \\ &= 0 \end{aligned} Eyx{fθ(g1(y))g2(y)(g1(fθ(y))g2(fθ(y)))}=g1(x)Eyx{g2(y)}(g1(x)g2(x))=g2(x)Eyx{gx(y)}=0

因此考虑在 Pseudo Noise2Noise网络中添加一个约束
a r g m i n θ E y ∣ x ∣ ∣ f θ ( g 1 ( y ) ) − g 2 ( y ) ∣ ∣ 2 2 \underset{\theta}{argmin} E_{y|x} ||f_{\theta}(g_1(y)) - g_2(y)||_2^2 θargminEyx∣∣fθ(g1(y))g2(y)22

s . t .      E y ∣ x { f θ ( g 1 ( y ) ) − g 2 ( y ) − ( g 1 ( f θ ( y ) ) − g 2 ( f θ ( y ) ) ) } = 0 s.t. \;\; E_{y|x} \{ f_{\theta} (g_1(y)) - g_2(y) - (g_1(f_{\theta}(y)) -g_2(f_{\theta}(y))) \} = 0 s.t.Eyx{fθ(g1(y))g2(y)(g1(fθ(y))g2(fθ(y)))}=0

最后将带约束的优化转换为带正则的优化问题:
a r g m i n θ E y ∣ x ∣ ∣ f θ ( g 1 ( y ) ) − g 2 ( y ) ∣ ∣ 2 2 + γ E y ∣ x ∣ ∣ f θ ( g 1 ( y ) ) − g 2 ( y ) − ( g 1 ( f θ ( y ) ) − g 2 ( f θ ( y ) ) ) ∣ ∣ 2 2 \underset{\theta}{argmin} E_{y|x} ||f_{\theta}(g_1(y)) - g_2(y)||_2^2 + \gamma E_{y|x} || f_{\theta} (g_1(y)) - g_2(y) - (g_1(f_{\theta}(y)) -g_2(f_{\theta}(y))) ||_2^2 θargminEyx∣∣fθ(g1(y))g2(y)22+γEyx∣∣fθ(g1(y))g2(y)(g1(fθ(y))g2(fθ(y)))22

1.4 框架结构

具体而言:

  1. 从单张含噪图像上通过采样器G构造两个子图( g 1 ( y ) , g 2 ( y ) g_1(y),g_2(y) g1(y)g2(y)),通过着两个子图构建重构损失函数(1.3推导)
  2. 对原图进行推理降噪,得到的降噪图像再通过相同的采样方法得到两张子图,计算正则项

对于采样器G:设计了近邻采样,即将图像分为2*2的单元,再每个单元中随机选择两个紧邻像素分别划分到两个子图之中,这样构建处两个“相似但是不同”的子图。

2. 实验结果

  分别测试了Gaussian和Poisson噪声,每种噪声分别尝试了固定噪声水平和动态噪声水平两种情况。结果表明,在多个测试集上,本方法在性能上比使用配对数据训练的方法(N2C)低0.3dB左右,超越了现有的自监督降噪方法。在动态噪声水平的场景下,显著超越其他自监督方法,甚至与自监督+后处理的Laine19不相上下。

消融实验说明正则化的有效性:当权重为0时,Neighbor2Neighbor退化为pseudo Noise2Noise,此时模型的PSNR/SSIM水平较低,而网络输出的图像过于模糊而损失了大部分的细节信息;随着权重增加,模型的PSNR/SSIM开始提高,此时降噪的图像开始保留更多的细节,但是噪声也被更多地保留下来。而当权重太大的时候,模型的PSNR/SSIM开始降低,而降噪图像也变得更加Noisy。由此可见,正则项起到了平衡降噪能力和细节保留的作用。针对不同的场景,选择合适的权重,可以发挥出Neighbor2Neighbor的最佳效果。

3. 总结

  1. 提出了基于采样配对的 Noise2Noise去噪训练方法,使用添加正则化的方法消除不同采样之间的偏差( ϵ \epsilon ϵ
  2. 采样的策略后续也被应用到 Blind2Unblid工作之中了
  3. 强假设仍然存在,影响方法的泛化性
    • 噪声是零均值的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/839312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C数据结构与算法——哈希表/散列表创建过程中的冲突与聚集(哈希查找) 应用

实验任务 (1) 掌握散列算法(散列函数、散列存储、散列查找)的实现; (2) 掌握常用的冲突解决方法。 实验内容 (1) 选散列函数 H(key) key % p,取散列表长 m 为 10000,p 取小于 m 的最大素数; (2) 测试 α…

javaWeb项目--二级评论完整思路

先来看前端需要什么吧: 通过博客id,首先需要显示所有一级评论,包括评论者的头像,昵称,评论时间,评论内容 然后要显示每个一级评论下面的二级评论,包括,评论者的头像,昵称…

python:基于Kalman滤波器的移动物体位置估计

CSDN@_养乐多_ Kalman滤波器是一种经典的估计方法,广泛应用于估计系统状态的问题。本篇博客将介绍Kalman滤波器的基本原理,并通过一个简单的Python代码示例,演示如何使用Kalman滤波器来估计移动物体的位置。 通过运行代码,我们将得到一个包含两个子图的图像,分别展示了估…

数学知识(三)

一、容斥原理 #include<iostream> #include<algorithm>using namespace std;const int N 20;typedef long long LL; int n,m; int p[N];int main() {cin>>n>>m;for(int i 0;i < m;i ) cin>>p[i];int res 0;//从1枚举到2^m(位运算)for(int …

SpringBoot+vue 大文件分片下载

学习链接 SpringBootvue文件上传&下载&预览&大文件分片上传&文件上传进度 VueSpringBoot实现文件的分片下载 video标签学习 & xgplayer视频播放器分段播放mp4&#xff08;Range请求交互过程可以参考这个里面的截图&#xff09; 代码 FileController …

HTML|计算机网络相关

1.三次握手 第一次握手&#xff1a;客户端首先向服务端发送请求。 第二次握手&#xff1a;服务端在接收到客户端发送的请求之后&#xff0c;需要告诉客户端已收到请求。 第三次握手&#xff1a;客户端在接收到服务端发送的请求和确认信息之后&#xff0c;同样需要告诉服务端已…

python并发编程(多线程、多进程、多协程)

文章截图来源来源B站&#xff1a;蚂蚁学python 引入并发&#xff0c;就是为了提升程序运行速度 1、基础介绍 1-1 CPU密集型计算、IO密集型计算 1-2 多进程、多线程、多协程对比 2、全局解释器锁GIL 2-1 python速度慢的两大原因 2-2 GIL是什么 2-3 为什么有GIL这个东西 2-4 怎样…

Vue [Day3]

Vue生命周期 生命周期四个阶段 生命周期函数&#xff08;钩子函数&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale…

企业服务器数据库中了devos勒索病毒怎么办如何解决预防勒索病毒攻击

随着科学技术的不断发展&#xff0c;计算机可以帮助我们完成很多重要的工作&#xff0c;但是随之而来的网络威胁也不断提升。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器数据库遭到了devos勒索病毒攻击&#xff0c;导致系统内部的许多重要数据被加密无法正…

1310. 数三角形

题目链接&#xff1a;https://www.acwing.com/problem/content/1312/ 首先不考虑三点共线的情况一共有 种&#xff0c;现在来计算三点共线的情况 1.三点在一条直线上 2.三点在一条竖线上 3.三点在一条斜线上&#xff0c;正反斜线对称&#xff0c;仅需考虑一边的情况 如果…

考研数学Note1—划分框架

calculus 微积分教会我为什么椭圆的面积 π \pi πab. 隐函数求导Rule 如何理解Lagrange求函数极值&#xff1f; 万物可积&#xff08;所有的函数都能找到原函数?&#xff09;——数即宇宙 线性代数 It’s doubtless that Gitmind&Blog is best place for taking note…

Django Rest_Framework(二)

文章目录 1. http请求响应1.1. 请求与响应1.1.1 Request1.1.1.1 常用属性1&#xff09;.data2&#xff09;.query_params3&#xff09;request._request 基本使用 1.1.2 Response1.1.2.1 构造方式1.1.2.2 response对象的属性1&#xff09;.data2&#xff09;.status_code3&…

“三个高度”写作提纲30例

1.充分把握“三个高度” 全面推进全过程人民民主的基层实践 从坚定政治信仰的高度坚持正确方向 从坚定制度自信的高度把握完整链条 从确保落地见效的高度强化组织保障 2. “三个高度”扎实推进安全生产工作 一是着眼大局&#xff0c;高度负责。 二是立足长远&#xff0c;高…

macOS下Django环境搭建

1. macOS升级pip /Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip 2. 卸载Python3.9.5版本 $ sudo rm -rf /usr/local/bin/python3 $ sudo rm -rf /usr/local/bin/pip3 $ sudo rm -rf /Library/Frameworks/Python.framework 3. 安装P…

servlet接受参数和乱码问题

servlet接受参数和乱码问题 1、乱码问题 1&#xff09;get请求 传输参数出现中文乱码问题&#xff1a; 如果还存在问题&#xff1a; 2&#xff09;post请求 传输参数出现中文乱码问题&#xff1a; 2、接受参数&#xff1a; 3、登录注册案例

【瑞吉外卖项目复写】基本部分复写笔记

Day1 瑞吉外卖项目概述 mysql的数据源配置 spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/regie?serverTimezoneAsia/Shanghai&useUnicodetrue&characterEncodingutf-8&zeroDateTimeBehaviorconvertTo…

智慧工地云平台源码,基于微服务+Java+Spring Cloud +UniApp +MySql开发

智慧工地可视化系统利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术&#xff0c;通过工地中台、三维建模服务、视频AI分析服务等技术支撑&#xff0c;实现智慧工地高精度动态仿真&#xff0c;趋势分析、预测、模拟&#xff0c;建设智能化、标准化的智慧工地…

MySQL数据库面试题:如何定位慢查询?

MySQL数据库面试题&#xff1a;如何定位慢查询&#xff1f; 面试官&#xff1a;MySQL中&#xff0c;如何定位慢查询&#xff1f; 候选人&#xff1a;嗯~&#xff0c;我们当时做压测的时候有的接口非常的慢&#xff0c;接口的响应时间超过了2秒以上&#xff0c;因为我们当时的系…

【关于反馈电路的放电问题】2022-1-16

缘由关于反馈电路的放电问题 - 电源技术论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!图中的副绕组反馈给三极管基极&#xff0c;一般都是说通过三极管充电正反馈三极管导通&#xff0c;放电时负反馈三极管截止&#xff0c;负反馈时&#xff0c;电容C3是通过哪个回路放电的呢…

基于Open3D的点云处理15-特征点

Intrinsic shape signatures (ISS) 参考 ISS关键点: 基本原理是避免在沿主要方向表现出类似分布的点上检测关键点&#xff0c;在这些点上无法建立可重复的规范参考框架&#xff0c;因此后续描述阶段很难变得有效。在剩余点中&#xff0c;显着性由最小特征值的大小决定,以便仅包…