旷视low-level系列(二):Practical Deep Raw Image Denoising on Mobile Devices

在这里插入图片描述

论文:ECCV 2020
代码:https://github.com/MegEngine/PMRID

文章目录

  • 1. Motivation
  • 2. Contribution
  • 3. Methods
    • 3.1 噪声建模&参数估计
    • 3.2 k-Sigma变换
    • 3.3 移动端友好的网络结构
  • 4. Experiments
  • 5. Comments

1. Motivation

业内周知,基于深度学习的去噪算法在效果上已经甩传统算法几条街了,但是由于模型计算量太大和设备算力不够等因素导致落地困难。为了解决上述问题,旷视的这篇论文提出了一个轻量级的、高效的神经网络去噪模型,能够在移动设备上流畅运行,并且能够获取高质量的去噪结果。

2. Contribution

  • 提出了一种噪声估计和构造合成数据用于训练传感器特定的去噪神经网络的系统方法;
  • 提出了一种新颖的k-Sigma变换,将不同ISO下的噪声图像映射到ISO不变的信号-噪声空间。在该空间中能够训练一个单一的小网络来处理具有不同噪声水平的图像,而不是针对每个ISO单独训练一个小网络或者训练一个能够覆盖所有ISO的大网络;
  • 提出了一种用于高效去噪的移动端友好的网络结构。

3. Methods

3.1 噪声建模&参数估计

在噪声建模部分,作者首先回顾了入射光子到数字信号的转换过程,该过程包含多个阶段,每个阶段都会引入特定的噪声。
在这里插入图片描述
考虑一个没有噪声的理想系统,光子到数字信号的转换可以由一个简单的线性模型表示: x ∗ = g α μ ∗ (1) x^*=g\alpha\mu^*\tag{1} x=μ(1)其中, μ ∗ \mu^* μ为探测器接收到的期望光子数,即不考虑光的量子性质; α \alpha α为量子效率,其定义为光电探测器等设备将其受光表面接收到的光子转换为电子-空穴对的百分比,即量子效率等于光生电子除以入射光子数,通常用QE(quantum efficiency)表示; g g g为模拟增益。

考虑各个阶段引入噪声的情况下,转换过程如下 x = g ( α μ + n d ) + n r (2) x=g(\alpha\mu+n_d)+n_r\tag{2} x=g(αμ+nd)+nr(2) μ \mu μ为探测器实际接收到的光子数,服从泊松分布: μ ∼ P ( μ ∗ ) (3) \mu\sim\mathcal{P}(\mu^*)\tag{3} μP(μ)(3)另外,根据Poisson-Gaussion噪声模型,可以假设 n d ∼ N ( 0 , σ d 2 ) n_d\sim\mathcal{N}(0, \sigma_d^2) ndN(0,σd2) n r ∼ N ( 0 , σ r 2 ) n_r\sim\mathcal{N}(0, \sigma_r^2) nrN(0,σr2)

结合公式 (1)~(3),有: x ∼ ( g α ) P ( x ∗ g α ) + N ( 0 , g 2 σ d 2 + σ r 2 ) (4) x\sim(g\alpha)\mathcal{P}(\frac{x^*}{g\alpha})+\mathcal{N}(0,g^2\sigma_d^2+\sigma_r^2)\tag{4} x()P(x)+N(0,g2σd2+σr2)(4)
形式上与Poisson-Gaussion噪声模型是一致的。令 k = g α k=g\alpha k= σ 2 = g 2 σ d 2 + σ r 2 \sigma^2=g^2\sigma_d^2+\sigma_r^2 σ2=g2σd2+σr2,则有: x ∼ k P ( x ∗ k ) + N ( 0 , σ 2 ) (5) x\sim k\mathcal{P}(\frac{x^*}{k})+\mathcal{N}(0,\sigma^2)\tag{5} xkP(kx)+N(0,σ2)(5)可以看到, k k k σ 2 \sigma^2 σ2都与模拟增益 g g g有关,即都是由ISO决定的。

建立的噪声模型需要估计参数 k k k σ 2 \sigma^2 σ2 ,这里采用的是经典的光子转移曲线,即均值-方差曲线:
在这里插入图片描述

论文中通过采集多张灰阶卡的方式计算均值和方差:
在这里插入图片描述
Reno-10x在不同ISO设置下 k k k σ 2 \sigma^2 σ2参数标定的结果:
在这里插入图片描述
获取ISO- k k k和ISO- σ 2 \sigma^2 σ2的关系后,可以很容易地计算出任何ISO设置下的噪声参数,因此合成噪声数据时可选的ISO是连续而非离散的。

3.2 k-Sigma变换

在实际应用中,相机会根据场景照度自动调整ISO,因此在训练去噪网络时需要考虑不同的噪声水平。通常会训练单个网络来覆盖宽泛的ISO,这对网络的学习能力有一定的要求,需要一个大网络才能hold住。为了让小网络具备与大网络相当的去噪能力,作者提出了k-Sigma变换,将网络的输入噪声图像与ISO解耦,降低映射复杂度。

作者这里定义了一个k-Sigma变换,经过变换后网络的输入(即带噪声图像)和输出(即干净图像)之间的映射仅由高斯分布即可表示,并且与ISO无关,对于网络来说拟合难度大大降低。
在这里插入图片描述

3.3 移动端友好的网络结构

在这里插入图片描述
ISO独立去噪pipline:原始噪声图像先进行k-sigma变换,输入网络中去噪,输出再做一个逆变换得到最终的去噪图像。在训练阶段,计算逆变换后的去噪图像与无噪声图像的MAE作为loss。
在这里插入图片描述
作者也设计了一个轻量级的网络,为了降低计算量,只在输入和输出阶段使用正常卷积,其他层都使用深度可分离卷积。

4. Experiments

训练集的构造方式:基于SID的干净图像,从建立的噪声模型中采样噪声,加在干净图像上得到噪声图像。
训练设置:随机裁剪1024x1024的patch,使用BayerAug进行随机翻转,然后打包成512x512x4,随机调整亮度和对比度。
在这里插入图片描述
从实验结果中可以看到,基于k-sigma变换的方法在不同ISO下都表现良好。

5. Comments

亮点:通过k-sigma变换降低数据映射复杂度,小网络的去噪效果就能媲美在普通数据上训练的大网络
局限:k-sigma变换依赖于Poisson-Gaussion噪声模型,低光环境下大概率不适用。

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

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

相关文章

Python程序设计 基础数据类型

1.1 编程规范 注释 python注释也有自己的规范,在文章中会介绍到。注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。 在说规范…

SpringBoot实现动态数据源配置

场景描述: 前一阵子接手的新项目中需要使用2个数据源。 一个叫行云数据库,一个叫OceanBase数据库。 就是说,我有时候查询要查行云的数据,有时候查询要查 OceanBase 的数据,咋办? 废话不多说&#xff0c…

【go】延迟执行和定时器实现

目录 time.Sleep time.After time.NewTimer time.NewTicker time.Sleep time.Sleep可以实现延时执行 func TestSleep(t *testing.T) {fmt.Println("start time:", time.Now().Format("2006-01-02 15:04:05.000"))time.Sleep(2 * time.Second)fmt.Pri…

微任务与宏任务

微任务和宏任务都是 JavaScript 中的任务队列,用于处理异步代码。 微任务是指在当前任务执行完成后立即执行的任务。常见的微任务包括 Promise 的回调函数、MutationObserver 的回调函数等。微任务会在浏览器的重绘前执行。 宏任务是指需要在当前任务队列执行完毕…

信息安全管理体系

本文已收录至《全国计算机等级考试——信息 安全技术》专栏 信息安全管理体系(Information Security Management Systems)是组织在整体或特定范围内建立信息安全方针和目标,以及完成这些目标所用方法的体系。它是直接管理活动的结果&#xff…

JavaScript基础之运算符详解

运算符 算术运算符 算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等。算术运算符接收数值作为操作数并返回单个数值。数值可以是文字或变量。 运算符举例说明42 //返回6求和-4-2 //返回2求差*4*2 //返回8求积…

力扣经典题:用栈表示队列

1.在元素入栈完成时,再出栈进入到另一个栈的时候,另一个栈的栈顶元素就是队列的队尾元素 2.初始化操作完全与上一题相同 3.peek函数的实现:将1的思路写出来,再返回第二个队列的栈顶元素 4.pop函数就是将peek函数进行实现后将to…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现SPI控制OLED屏幕

上一篇: [嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 [嵌入式软件][启蒙篇][仿真平台]STM32F103实现定时器 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕 文章目…

HIS预约挂号系统源码 看病挂号快人一步

提到去大型医院机构就诊时,许多人都感到恐惧。有些人一旦走进医院的门诊大厅,就感到迷茫,既无法理解导医台医生的建议,也找不到应该去哪个科室进行检查。实际上,就医也是一门学问,如何优化时间分配&#xf…

AIGC专题:从0到1精益创新 AIGC产品应用及商业化落地实践

今天分享的是AIGC系列深度研究报告:《AIGC专题:从0到1精益创新 AIGC产品应用及商业化落地实践》。 (报告出品方:易点天下) 报告共计:38页 企业内部增效-AI知识库 企业内部IT、运维、人力资源、行政等等日…

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业?

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业? 1)程序员的难处2)程序员专业方向3)大数据3.1.大数据开发涉及到哪些技术3.2.大数据开发涉及到的…

C语言assert断言详解指针(3)

各位少年,大家好,我是博主那一脸阳光,今天分享assert法官的断言,指针宝箱的使用。 前言:如果你在计算机的世界中触犯了语法法规,那么编译器就要上线了,就会出现报错。然而想想我们在现实中设计到…

OpenAI Gym 中级教程----深入解析 Gym 代码和结构

Python OpenAI Gym 中级教程:深入解析 Gym 代码和结构 OpenAI Gym 是一个用于开发和测试强化学习算法的工具包。在本篇博客中,我们将深入解析 Gym 的代码和结构,了解 Gym 是如何设计和实现的,并通过代码示例来说明关键概念。 1.…

仰暮计划|“一周一顿的玉米面和白面蒸的糕点,是当时所能吃到的极好的食物”

平淡又记忆深刻的一生 口述人:元奶奶 整理人:宋佳音 口述人基本信息:女 出生于1958年,今年65周岁,祖籍东北,现定居于上海,已从制药厂退休十余年。 元奶奶的自述: 我出生于1958年…

B样条基函数

​定义:令U{u0,u1,…,um}是一个单调不减的实数序列,即ui≤ui1,i0,1,…,m-1。其中,ui称为节点,U称为节点矢量,用Ni,p(u)表示第i个p次(p1阶)B样条基…

asp.net core通过读取配置文件来动态生成接口

如果希望接口是每次通过配置文件生成的,这样设计一些低代码的方式来获得接口。 系统目录结构: 启动配置代码: using Microsoft.AspNetCore.Hosting; using System.Configuration; using System.Data.Entity; using Swashbuckle.AspNetCore.…

算法训练营day19,二叉树8-1

type TreeNode struct { Val int Left *TreeNode Right *TreeNode } 235. 二叉搜索树的最近公共祖先 //本题比昨天236二叉树的最近公共祖先 要容易一些,因为二叉搜索树是有序的 func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode { if root nil {…

[Python] 什么是PCA降维技术以及scikit-learn中PCA类使用案例(图文教程,含详细代码)

什么是维度? 对于Numpy中数组来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维。索引以外的数据,不分行列的叫一维(此时shape返回唯一的维度上的数据个数),有行列…

【学网攻】 第(14)节 -- 动态路由(EIGRP)

系列文章目录 目录 系列文章目录 文章目录 前言 一、动态路由EIGRP是什么? 二、实验 1.引入 实验步骤 实验拓扑图 实验配置 看到D开头是便是我们的EIGRP动态路由 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学…

day36WEB攻防-通用漏洞XSS 跨站MXSSUXSSFlashXSSPDFXSS

本章知识点不是很重要,涉及到的漏洞也不是常见的,所以没有过多的阐述。 配套资源(百度网盘) 链接:https://pan.baidu.com/s/1xTp14wE-mqEr7EHU9nSCrg?pwdnlsg 提取码:nlsg MXSS突变型XSS漏洞 MXSS参考链接…