图像降噪:Zero-shot Blind Image Denoising via Implicit Neural Representations

本文主要是介绍图像降噪:Zero-shot Blind Image Denoising via Implicit Neural Representations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Zero-shot Blind Image Denoising via Implicit Neural Representations
    • 1.作者首先指出 blind-spot denoising 策略的缺点
    • 2.Implicit Neural Representations
      • 2.1 策略一:early stopping 标准
      • 2.2 策略二:Selective Weight Decay

Zero-shot Blind Image Denoising via Implicit Neural Representations

1.作者首先指出 blind-spot denoising 策略的缺点

在遇到噪声比较小的图像或者真实场景的图像容易失效,比如变模糊。

在这里插入图片描述

2.Implicit Neural Representations

INR(隐式神经表示)可以建立坐标到像素值的映射关系。之前的文章有介绍过。
INR也是一个深度学习网络,卷积或者全连接。输入是图像的坐标,输出是像素值,然后这个网络就是这个图像的一个表示。说白了就是拟合。

然后作者发现,拟合一个有噪声的图像,在前期会有一个阶段拟合的结果与 无噪声图像接近,然后最后训练完成与噪声图像接近。如下图a, 下图a还可以看出 在INR output与 clean最接近的时候,与 noisy的psnr 变化也更加平台。
在这里插入图片描述

图b说明 拟合clean image 速度更快。

那么既然INR拟合一个有噪声的图像,在前期会有一个阶段拟合的结果与 无噪声图像接近,那么是不是在这个时候让网络停止训练就可以了。如何确定这个停止训练的时机呢?

2.1 策略一:early stopping 标准

作者指定的策略是这样的:
在这里插入图片描述

当 output 和 noisy 的mse小于等于 估计的noise level,则停止。

noise level 估计,作者利用的是Chen, G., Zhu, F., and Heng, P. A. An efficient statistical method for image noise level estimation.(ICCV), 2015.

2.2 策略二:Selective Weight Decay

作者发现INR的前几层网络 主要学习 图像基础和低频信息,后面的layer主要学习更多细节和高频信息。并通过实验证实了这一点。
而且实验还表明 early stopping和 训练直到收敛 这2种方法得到的feature主要在后面的layer表现处更大差异。
在这里插入图片描述

因此作者提出的策略是:
we propose to apply weight decay selectively on the last two layers of INR. The main motivation comes from our observation that the atter INR layers contribute more to fitting the noise signal than earlier layers.

就是对后面2层 的weight 的更新不那么快。和前面的做一些平均。

额外话:
比如下面的类,可以对model的所有层的layer 进行 weight decay. 类似加权平滑操作。

class EMA():def __init__(self, model, decay):self.model = modelself.decay = decayself.shadow = {}self.backup = {}def register(self):for name, param in self.model.named_parameters():if param.requires_grad:self.shadow[name] = param.data.clone()def update(self):for name, param in self.model.named_parameters():if param.requires_grad:assert name in self.shadownew_average = (1.0 - self.decay) * param.data + self.decay * self.shadow[name]self.shadow[name] = new_average.clone()def apply_shadow(self):for name, param in self.model.named_parameters():if param.requires_grad:assert name in self.shadowself.backup[name] = param.dataparam.data = self.shadow[name]def restore(self):for name, param in self.model.named_parameters():if param.requires_grad:assert name in self.backupparam.data = self.backup[name]self.backup = {}

这篇关于图像降噪:Zero-shot Blind Image Denoising via Implicit Neural Representations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/647038

相关文章

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采