旷视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.mfbz.cn/a/363683.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin快速入门系列4

Kotlin的类与对象 类的定义 Kotlin使用关键字class来声明类。后面紧跟类名字: class LearnKotlin { //类名:LearnKotlin//... } Kotlin的类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。当然,也可以定义一…

vue实现查询搜索框下拉字典

字典表 前端页面显示 依据这个字典表实现动态查询 初始化数组 首先先在全局变量里定义一个数据存放查询出来的数据 data() {return {dicts: []};},生命周期 查询的时候是声明周期开始的时候,原本增删改查页面在生命周期开始的时候就查询了页面的数据获得了列表值…

IEEE| IceNet《IceNet for Interactive Contrast Enhancement》论文超详细解读(翻译+精读)

学习资料: 论文题目:《IceNet for Interactive Contrast Enhancement》(用于交互式对比度增强的IceNet)原文地址:export.arxiv.org/pdf/2109.05838v2.pdf 目录 ABSTRACT—摘要 翻译 精读 I. INTRODUCTION—简介 翻…

Thinkphp5.0.23远程代码执行漏洞复现

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、漏洞介绍 使用Thinkphp5.x远程代码执行漏洞&#xf…

26元/月起!腾讯云自动搭建4核16G雾锁王国服务器

腾讯云无需任何配置自动搭建雾锁王国4-8人联机服务器,游戏24小时在线,4核16G服务器低至26元/月起,一键搭建自己的雾锁王国联机服务器! 第一步:购买服务器 1、通过【腾讯云游戏服专属优惠】页面,选择“雾锁…

关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本

对于值类型b来说,就直接释放了其占用的内存,对于引用类型obj来说,销毁的只是变量obj对堆内存地址 1001 的引用,obj的值 { c: 3 } 依然存在于堆内存中。那么堆内存中的变量如何进行回收呢? V8的垃圾回收策略主要是基于…

YOLOv5改进系列(29)——添加DilateFormer(MSDA)注意力机制(中科院一区顶刊|即插即用的多尺度全局注意力机制)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2)——添加CBAM注意力机制 YOLOv5改进系列&…

Duplicate entry ‘2020045-2-1‘ for key ‘index_uid‘ 解决方案

项目场景: 今天小编在工作中编写接口对数据库增加相同的非主键数据的时候,突然出现了这样的一个错误: 下面我来给大家解答这个错误的出现原因以及解决办法。 问题描述 Duplicate entry 2020045-2-1 for key index_uid 这个错误大概意思就是…

Vue3-Composition-API(二)

一、computed函数使用 1.computed 在前面我们讲解过计算属性computed:当我们的某些属性是依赖其他状态时,我们可以使用计算属性来处理 在前面的Options API中,我们是使用computed选项来完成的; 在Composition API中&#xff0c…

Spring实现事务(一)

Spring事务 .什么是事务事务的操作Spring中事务的实现准备工作创建表创建项目,引入Spring Web, Mybatis, mysql等依赖配置文件实体类 编程式事务(手动写代码操作事务)声明式事务(利用注解自动开启和提交事务) . 什么是事务 事务是⼀组操作的集合, 是⼀个不可分割的操作 在我们…

基于布谷鸟搜索的多目标优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1. 布谷鸟搜索算法基础 2. 多目标优化问题 3. 基于布谷鸟搜索的多目标优化算法 4. 解的存储和选择策略 5.算法步骤 5.完整程序 1.程序功能描述 基于布谷鸟搜索的多目标优化,…

JavaScript基础(二)—— 运算符、表达式与语句(if、switch、循环)

学习目标: 掌握常见运算符,为程序“能思考”做准备 掌握分支语句,让程序具备判断能力 掌握循环语句,让程序具备重复执行能力 一、运算符 1. 赋值运算符 对变量进行赋值的运算符,能够使用赋值运算符简化代码。 …

【解决视网膜长尾数据】关系子集学习、射击法、加权知识蒸馏

长尾分布下的视网膜:关系子集学习、射击法、加权知识蒸馏 核心思想问题:类别分布的不平衡问题问题:共现标签问题:特定区域和特征的类别关联解法:划分子集解决样本不平衡问题解法:射击法解决共现标签问题解法…

【缓存周总结】Redis缓存的使用以及数据安全的处理

前言 Redis非关系型数据库已经是很常见的工具了,项目中用到的也很多,这篇文章系统的分析下使用过程中可能会遇到的问题 一、缓存 缓存是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。 我们项目中引用的Redis目的就是…

Unity - 调节camera物理相机参数(HDRP)

在 “Hierarchy” 右键 -> Volume -> Global Volume new 一个 profile, 设置Mode为Pysical Camera 再点击camera组件,这时候设置 ISO、Shutter Speed、Aperture等参数值还会有效。

深入了解如何对IPA包进行有效的混淆处理

1、安装混淆工具 首先电脑上要安装ipagurad工具,官网链接:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具 2、生成混淆文件 由于混淆需要首先 打开要处理的IPA文件 第一项,填写我们需要重签名的 ipa 路径(当前导入的路径跟导…

跟着pink老师前端入门教程-day16

二十七、CSS3进阶 1、CSS3 2D转换 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 转换(transform)可以简单理解为变形 移动:translate;旋转&#xff…

【LVGL源码移植】

LVGL源码移植 ■ LVGL源码移植一:下载LVGL源码二:修改LVGL文件夹1: 将这5个文件,复制到一个新的文件夹2: 简化文件,减少内存消耗(去除不必要的文件)3: 为了规范化,我们将下列文件进行重命名 三&…

nodejs+vue+ElementUi宠物领养救助网站0w6wc

宠物领养救助平台采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写,使用了vue框架。该系统从两个对象:由管理员和用户来对系统进行设计构建。主要功能包括:个人信息修改,对用户、宠物类别、宠物…

七、并发工具(上)

一、自定义线程池 1)背景: 在 QPS 量比较高的情况下,我们不可能说所有的访问都创建一个线程执行,这会导致内存占用过高,甚至有可能出现 out of memory另外也要考虑 cpu 核数,如果请求超过了cpu核数&#…
最新文章