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

news2024/11/26 10:43:48

文章目录

    • 1. 方法原理
      • 1.1 动机与贡献
      • 1.2 方法细节
        • (1) Noise2Void
        • (2) re-visible without identity mapping
        • (3) 综合说明
    • 2. 效果
    • 3. 总结

1. 方法原理

1.1 动机与贡献

摘要要点:基于盲点去噪的网络受网络设计和/或输入数据的影响会丢失部分信息 --> 有价值的信息损失会降低去噪的上限, 改进的方向:

  • 引入一个全局感知的掩码映射,加速训练
  • 使用一种 re-visible 的损失函数训练网络

改进的一些难点

  • 盲点占据数据的很大部分,预测像素点的感受野会丢失很多有价值的信息,降低网络性能
  • 每次迭代中只优化部分像素会导致收敛变慢
  • 很多工作对噪声对进行训练,要求噪声的分布是相同的

Blind2Unblind具体内容:

  • 将每个噪声图像分块,并将每个快中的特定像素设置为盲点,得到了一个全局蒙版作为输入
  • 将这些全局蒙版作为一个batch输入到网络之中
  • 全局映射器对盲点位置的噪声体进行采样,投影到同一个平面上进行去噪

小结

  • 动机:Noise2Void 盲点网络可以避免恒等映射,但是会损失信息,从而影响去噪的效果

  • 挑战:如何将不可见的盲点转换为可见的盲点?既能利用盲点结构去噪,也能利用全部的信息提高性能

  • 贡献

    1. 提出了一种新的自监督去噪框架,使盲点位置像素可见,无需子样本,噪声模式先验和恒等映射。
    2. 提供了re-visible 损失的理论分析,给出了这种损失收敛的上限和下限

1.2 方法细节

(1) Noise2Void

N2V目标是最小化 a r g m i n θ E y ∣ ∣ f θ ( y R F ( i ) ) − y i ∣ ∣ 2 2 \underset{\theta}{argmin} E_y ||f_{\theta}(y_{RF(i)}) - y_i||_2^2 θargminEy∣∣fθ(yRF(i))yi22

这里的 f θ ( . ) f_{\theta}(.) fθ(.)就是去噪网络, y R F ( i ) y_{RF(i)} yRF(i)是去噪中心i附近的patch, y i y_i yi是中心像素点。

注意该方法的强假设条件

  • 信号是不相互独立的
  • 给定信号的条件下,噪声是相互独立的
  • 噪声的均值是0

(2) re-visible without identity mapping

从多任务中借鉴其优化目标
a r g m i n θ E y ∣ ∣ h ( f θ ( Ω y ) ) − y ∣ ∣ 2 2 + λ . ∣ ∣ f θ ( y ) − y ∣ ∣ 2 2 \underset{\theta}{argmin} E_y ||h(f_{\theta}(\Omega_y)) - y||_2^2 + \lambda . ||f_{\theta}(y) - y||_2^2 θargminEy∣∣h(fθ(Ωy))y22+λ.∣∣fθ(y)y22

其中, Ω y \Omega_y Ωy表示掩码体; h ( . ) h(.) h(.)是一个全局感知掩码映射器,用于对盲点所在的去噪像素进行采样,λ 是一个常数。

用L1范数表示
a r g m i n θ ∣ ∣ h ( f θ ( Ω y ) ) − y ∣ ∣ 1 + λ . ∣ ∣ f ^ θ ( y ) − y ∣ ∣ 1 \underset{\theta}{argmin} ||h(f_{\theta}(\Omega_y)) - y||_1 + \lambda . ||\hat{f}_{\theta}(y) - y||_1 θargmin∣∣h(fθ(Ωy))y1+λ.∣∣f^θ(y)y1

其中, f ^ θ ( y ) \hat{f}_{\theta}(y) f^θ(y) 不需要求梯度,对梯度没有贡献。

那么优化目标可以构建为
a r g m i n θ ∣ ∣ ∣ h ( f θ ( Ω y ) ) − y ∣ + λ . ∣ f ^ θ ( y ) − y ∣ ∣ ∣ 2 2 \underset{\theta}{argmin} || |h(f_{\theta}(\Omega_y)) -y | + \lambda . |\hat{f}_{\theta}(y) - y| ||_2^2 θargmin∣∣∣h(fθ(Ωy))y+λ.∣f^θ(y)y∣∣22

转换一下变为损失函数的形式
T ( y ) = ∣ ∣ ∣ h ( f θ ( Ω y ) ) − y ∣ + λ . ∣ f ^ θ ( y ) − y ∣ ∣ ∣ 2 2 = ∣ ∣ h ( f θ ( Ω y ) ) − y ∣ ∣ 2 2 + λ 2 ∣ ∣ f ^ θ ( y ) − y ∣ ∣ 2 2 + 2 λ ∣ ∣ ( h ( f θ ( Ω y ) ) − y ) . ( f ^ θ ( y ) − y ) ∣ ∣ 1 \begin{aligned} \Tau(y) &= || |h(f_{\theta}(\Omega_y)) -y | + \lambda . |\hat{f}_{\theta}(y) - y| ||_2^2 \\ &= ||h(f_{\theta}(\Omega_y)) -y||_2^2 + \lambda ^2 ||\hat{f}_{\theta}(y) -y||_2^2 + 2\lambda ||(h(f_{\theta}(\Omega_y)) - y) . (\hat{f}_{\theta}(y) -y) ||_1 \end{aligned} T(y)=∣∣∣h(fθ(Ωy))y+λ.∣f^θ(y)y∣∣22=∣∣h(fθ(Ωy))y22+λ2∣∣f^θ(y)y22+2λ∣∣(h(fθ(Ωy))y).(f^θ(y)y)1

然后又根据一些推导分析,得到了 re-visible的最大似然形式(没太仔细推导

a r g m i n θ E y ∣ ∣ h ( f θ ( Ω y ) ) + λ f ^ θ ( y ) − ( λ + 1 ) y ∣ ∣ 2 2 \underset{\theta}{argmin} E_y ||h(f_{\theta}(\Omega_y)) + \lambda \hat{f}_{\theta}(y) - (\lambda+1)y||_2^2 θargminEy∣∣h(fθ(Ωy))+λf^θ(y)(λ+1)y22

最后化的去噪结果是

x ^ = h ( f θ ∗ ( Ω y ) ) + λ f ^ θ ∗ ( y ) λ + 1 \hat{x} = \frac{h(f_{\theta}^*(\Omega_y)) + \lambda \hat{f}_{\theta}^*(y)}{\lambda+1} x^=λ+1h(fθ(Ωy))+λf^θ(y)

(3) 综合说明

具体说明:
将一个含有噪声的输入图片y分为两个分支进行处理

  1. 上面一个分支

    • 上面的分支将y输入到 Global masker中,该模块将图像都划分为2*2的小块(示例),然后在每个小块中分别mask 左上、左下、右上、右下的像素,形成4个盲点图像(即每张图片被mask掉25%的区域)
    • 将mask的图像输入到U-Net网络之中,预测被mask掉的区域
    • 经过Global mask mapper,把每张图被mask的25%区域的聚合形成一张去噪后的图像
  2. 下面一个分支:

    • 直接将又噪声的数据输入到U-Net之中,用来弥补网络信息确实的问题。
    • 为了避免网络学到恒等映射,这个部分不进行梯度反传。

需要注意的是,存粹的re-visible损失只有一个变量,可以用来反传优化盲点项和visible项目,其优化过程非常不稳定,所以作者在实现的实现的时候加入了一个正则项约束这个过程。用损失函数来看就是下面着两个部分
L = L r e v + η . L r e g = ∣ ∣ h ( f θ ( Ω y ) ) + λ f ^ θ ( y ) − ( λ + 1 ) y ∣ ∣ 2 2 + η . ∣ ∣ h ( f θ ( Ω y ) ) − y ∣ ∣ 2 2 \begin{aligned} L &= L_{rev} + \eta. L_{reg} \\ &= ||h(f_{\theta}(\Omega_y)) + \lambda \hat{f}_{\theta}(y) - (\lambda+1)y||_2^2 + \eta . ||h(f_{\theta}(\Omega_y)) - y||_2^2 \end{aligned} L=Lrev+η.Lreg=∣∣h(fθ(Ωy))+λf^θ(y)(λ+1)y22+η.∣∣h(fθ(Ωy))y22

2. 效果

不同方法对比

3. 总结

  1. 在Noise2Void 盲点网络的基础上实现了既要又要:既要盲点网络,又要被盲点位置上的原始信息
  2. 零均值噪声独立等假设仍然限制这一流派在实际噪声数据应用时的泛化性

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

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

相关文章

UNIX 系统概要

UNIX 家族UNIX 家谱家族后起之秀 LinuxUNIX vs LinuxUNIX/Linux 应用领域 UNIX 操作系统诞生与发展UNIX 操作系统概要内核常驻模块shell虚拟计算机特性 其他操作系统 LinuxRichard StallmanGNU 项目FSF 组织GPL 协议Linus Torvalds UNIX 家族 有人说,这个世界上只有…

优维低代码实践:对接数据

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

CS 144 Lab Five -- the network interface

CS 144 Lab Five -- the network interface TCP报文的数据传输方式地址解析协议 ARPARP攻击科普 Network Interface 具体实现测试tcp_ip_ethernet.ccTCPOverIPv4OverEthernetAdapterTCPOverIPv4OverEthernetSpongeSocket通信过程 对应课程视频: 【计算机网络】 斯坦福大学CS144…

Gradle Run with --stacktrace option to get the stack trace

IDEA中使用Gradle的时候遇到以下异常: * Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 解决办法: IDEA中File-Settings-Build&#…

比特鹏哥2-数据类型和变量【自用笔记】

比特鹏哥2-数据类型和变量【自用笔记】 1.数据类型介绍字符,整型,浮点型,布尔类型 2.signed 和unsigned3.数据类型的取值范围sizeof 展示字节大小--- 计算机中单位:字节 4.变量 常量4.1 变量创建变量(数据类型 变量名&…

awk基础知识和案例

文章目录 awk1 awk用法入门1.1 BEGIN和END语句块1.2 awk语法1.2.1 常用命令选项1.2.2 awk变量内置变量自定义变量 1.3 printf命令1.3.1 格式1.3.2 演示 1.4 操作符 2 awk高阶用法2.1 awk控制语句(if-else判断)2.2 awk控制语句(while循环)2.3 awk控制语句(do-while循环)2.4 awk控…

PingCAP 入选 Gartner 《Hype Cycle for Data Management 2023》代表厂商

日前,全球科技咨询与研究机构 Gartner 发布了《Hype Cycle for Data Management 2023》(2023 年数据管理技术成熟度曲线报告),PingCAP 凭借技术积累和产品优势,入选报告“用于数据管理的生成式人工智能”(G…

Win10下webots2020b闪退

下载安装完之后打开软件就会停留在这个界面几秒钟,什么都点不了,然后就会闪退回桌面 原因: webots安装路径中有中文 解决方案: 安装路径下的中文改为英文

真的不想知道录音转文字怎么弄才简单吗

哇哦!听说你想知道如何将录音转成文字?这简直是一个超酷的技能,让我来为你揭开这个神奇的面纱吧!想象一下,当你有一堆录音文件需要处理时,你不再需要费尽心思地一遍遍倾听、抄写。现在,你只需要…

【Go 基础篇】开发环境搭建与开发工具选择

介绍 Go语言,也被称为Golang,是由Google开发的一门开源编程语言。它以其简洁高效、并发性能优异而备受开发者青睐。若想开始Go语言的学习和开发,首先需要搭建适合的开发环境,并选择合适的开发工具来提高效率。本篇博客将详细介绍…

迭代器模式(C++)

定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示。 应用场景 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代…

kafka:java client使用总结塈seek() VS commitSync()的区别(三)

最近一段日子接触了kafka这个消息系统,主要为了我的开源中间件项目simplemq增加kafka支持(基于kafka-client【java】),如今总算完成,本文是对这个过程中对kafka消息系统的使用总结 线程安全 关于线程安全&#xff0c…

04-2_Qt 5.9 C++开发指南_SpinBox使用

文章目录 1. SpinBox简介2. SpinBox使用2.1 可视化UI设计2.2 widget.h2.3 widget.cpp 1. SpinBox简介 QSpinBox 用于整数的显示和输入,一般显示十进制数,也可以显示二进制、十六进制的数,而且可以在显示框中增加前缀或后缀。 QDoubleSpinBox…

无人车沿着指定线路自动驾驶与远程控制的实践应用

有了前面颜色识别跟踪的基础之后,我们就可以设定颜色路径,让无人车沿着指定线路做自动驾驶了,视频:PID控制无人车自动驾驶 有了前几章的知识铺垫,就比较简单了,也是属于颜色识别的一种应用,主要…

Vue + Cesium快速搭建,全流程(最新总结)

方式一&#xff1a;直接引入&#xff08;最简单&#xff09; 1.安装Cesium&#xff08;Vue搭建可以看我上一期的文章&#xff09; npm i cesium -save2.将node_modules\cesium\Build\Cesium文件夹拷贝到项目的public文件中 3.在public\index.html引入Cesium <!DOCTYPE h…

1466. 重新规划路线

题目描述&#xff1a; 主要思路&#xff1a; 将所有有向边抽象为无向边&#xff0c;将原有的方向权重置为1&#xff0c;其余置为0。 从0开始遍历所有城市&#xff0c;ans权重和。 class Solution { public:vector<vector<int>> a,w;int ans0;bool book[500010];v…

Node.js |(一)Node.js简介及计算机基础 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;关于Node.js&#x1f407;为什么要学Node.js&#x1f407;Node.js是什么&#x1f407;Node.js的作用&#x1f407;Node.js下载安装&#x1f407;命令行工具&#x1…

【Linux】多路转接 -- poll函数

文章目录 1. poll函数原型2. poll服务器3. poll的优点和确定 1. poll函数原型 poll函数和与我上一篇文章介绍的select函数一样&#xff0c;都是系统提供的多路转接接口&#xff0c;允许进程或线程在同一时间监听多个文件描述符。 本篇文章的一部分内容与上一篇介绍select函数…

Report Sharp-Shooter Lite Edition Crack

Report Sharp-Shooter Lite Edition Crack 报告Sharp Shooter™ 是为.NET Framework设计的&#xff0c;使用C#编写&#xff0c;并且只包含100%的托管代码。Report Sharp Shooter能够从多个数据源生成任何复杂的报告&#xff0c;并将生成的报告导出为大多数格式&#xff0c;包括…

UNIX 入门

与 UNIX 建立连接启动会话登录命令提示符修改口令退出系统 简单的 UNIX 命令命令格式ls 命令who 命令虚拟终端 tty伪终端 ptywho am i 命令 cal 命令help 命令man 命令 shell 概述shell 命令更换 shell临时更改 shell永久更改 shell 登录过程 与 UNIX 建立连接 启动会话 要启…