2024 ECCV | DualDn: 通过可微ISP进行双域去噪
文章标题:《DualDn: Dual-domain Denoising via Differentiable ISP》
论文链接: DualDn
代码链接: https://openimaginglab.github.io/DualDn/
本文收录于2024ECCV,是上海AI Lab、浙江大学、香港中文大学(薛天帆等人)联合发布的图像降噪方面的研究【薛老师2024年贡献了两篇和ISP挂钩的论文,均是跟上海AI Lab合作的,另一篇详见: AdaptiveISP】
【1】论文的主要motivation是解决当前RAW-denoise模型不能泛化不同ISP以及当前RGB-denoise不能泛化不同噪声的问题。
Abstract
图像去噪是相机ISP (Image Signal Processing)管道中的重要组成部分。向ISP管道中注入去噪器有两个经典的方式:把去噪器直接用于捕捉的raw帧图(raw域)或者把去噪器用于ISP输出的RGB图像(sRGB域)。然而,两类方法都有局限。
- raw域去噪后的残留噪声会被ISP管道随后的处理模块放大;
- 在sRGB域很难处理随空间位置变换的噪声,因为在该域中只能看到被ISP扭曲过的噪声(噪声变得复合了)。
因此,大多数raw/sRGB域去噪的工作仅适用于特定的噪声分布和ISP配置。
为了解决这个问题,本文提出了DualDN,一个新颖的基于学习的双域去噪器。与之前单域去噪工作不同,DualDn包含两个去噪网络,一个处理raw域噪声,一个处理sRGB域噪声。raw域去噪适配于传感器噪声和随空间位置变换的噪声,sRGB域去噪适配于ISP导致的噪声并且可以去除经过ISP放大的残余噪声。两个去噪网络都和一个可微ISP相连,该ISP通过端到端训练并且会在推理阶段被丢弃。基于这个设计,DualDn达到了可观的泛化性,优于其他大多数的基于学习的去噪方法,因为DualDn可以适配不同的不可见噪声、ISP参数、甚至是新颖的ISP管道。实验结果显示,DualDn达到了SOTA性能,并且可以适配不同的去噪架构。除此以外,DualDn可以在不用重复训练的前提下,被用作真实相机的即插即用去噪模块,效果甚至优于商业相机的在线去噪算法。

Introduction
引言中有一些很有意思的总结和实验现象,整合表述如下:
- 近年来的去噪方法发展得很好,但是泛化性能都不令人满意,遇到不同的相机模型/噪声分布往往就无法解决了。有些训练模式被提出以解决泛化性,但是要么处理得很慢,要么效果不如经典的去噪网络;
- 基于RAW域的去噪模型可以很好的泛化不同noise分布,因为学术界有一些噪声模型可以用来估计噪声分布(sRGB域的噪声被isp扭曲了,无法用这些模型估计)。但是,RAW域去噪留下的残余噪声/伪像在经过isp后往往会导致次优的RGB图像。例如,去马赛克操作经常在图像边缘产生高频伪像,色调映射会放大暗区的残余噪声。除此以外,由于isp行为对RAW域去噪算法是未知的,因此更换isp管道将导致算法性能骤降。
- 基于RGB域的去噪模型可以很好的泛化不同ISP。因为该类模型只学习去噪前的RGB图像和去噪后的RGB图像的对应关系,不关心isp管道。但是,大部分的基于RGB域的去噪网络都是用一个单一的噪声分布训练的,并且真实sRGB的噪声分布是复杂的(因为可用噪声模型进行准确估计的RAW域噪声在经过isp之后就被扭曲了,变得不可预测)。因此,在强噪下或低光下或有空间变换噪声时,基于RGB域的去噪模型的性能表现不佳。
总结:基于RAW域的去噪模型可以很好的泛化不同的噪声分布,但不能泛化不同的isp管道;基于sRGB域的去噪模型可以很好的泛化不同的ISP,但不能适应分布不同的噪声,尤其是强噪声条件。
Methods
数据集处理
- 准备好干净RAWpatch
- 根据EXIF元数据生成对应的clean的RGB数据作为GT
- 根据噪声模型生成对应的噪声(为了保证泛化性,噪声是多种多样的)以"污染"RAWpatch

图像泛化——如何处理数据集能让模型更有泛化性?
- 加噪声:使用一个噪声模型和不同的噪声参数(为了保证模型可以处理不同噪声)合成加噪RAW图。为了增强模型泛化性,本文主要考虑了shot noise和read noise。实验结果显示,使用这种人工设计噪声训练出来的模型可以很好的泛化到未知相机和未知噪声。
- 裁剪raw图以扩充数据集,但是裁剪的时候也保证了裁剪的图像块都是RGGB排列的模式。
噪声数学推导:shot noise服从泊松分布,read noise服从高斯分布。因此加噪RAW图为: R ∼ K ⋅ P ( R ∗ K ) + N ( 0 , σ r 2 ) , R\sim K\cdot \mathcal{P}(\frac{R^*}{K})+\mathcal{N}(0,\sigma^2_r), R∼K⋅P(KR∗)+N(0,σr2),其中, R ∗ R^* R∗是干净RAW图, K K K是Gain值, σ r 2 \sigma_r^2 σr2是高斯噪声方差。 P \mathcal{P} P和 N \mathcal{N} N分别代表泊松和高斯分布。
为了模拟不同的噪声水平,本文建模了噪声参数 ( K , σ r 2 ) (K,\sigma_r^2) (K,σr2)的联合分布,并且从如下分布中采样: l o g ( K ) ∼ U ( l o g ( K m i n ) , l o g ( K m a x ) ) , log(K)\sim \mathcal{U}(log(K_{min}), log(K_{max})), log(K)∼U(log(Kmin),log(Kmax)), l o g ( σ r 2 ) ∣ l o g ( K ) ∼ N ( α ⋅ l o g ( K ) + β , σ 2 ) , log(\sigma_r^2)|log(K) \sim \mathcal{N}(\alpha \cdot log(K) + \beta, \sigma^2), log(σr2)∣log(K)∼N(α⋅log(K)+β,σ2), U \mathcal{U} U表示均匀分布, K m i n K_{min} Kmin和 K m a x K_{max} Kmax代表噪声水平的最小/最大值。
从图3(a)左图可以看出, l o g ( σ r 2 ) log(\sigma_r^2) log(σr2)和 l o g ( K ) log(K) log(K)与 σ 2 \sigma^2 σ2线性相关【本博主没看出来】, α \alpha α和 β \beta β分别代表斜率和截距【这几句到底啥意思啊?难道是说 l o g ( σ r 2 ) = α l o g ( K ) + β + σ 2 log(\sigma^2_r) = \alpha log(K) + \beta + \sigma^2 log(σr2)=αlog(K)+β+σ2?但是图里又不是这么写的啊~】。好,但无论如何可以从图例中得到一个结论,K越大,noise的方差越大,会导致更多样的加噪RAW图。
本文中 α = 2.540 , β = 1.218 , σ = 0.268 \alpha = 2.540, \beta = 1.218, \sigma = 0.268 α=2.540,β=1.218,σ=0.268.

可微ISP管道——为了保证梯度传导以及模型可以泛化不同ISP我们做了哪些努力?
开源的ISP不可微(导致梯度流在中间会断掉,这个对DL范式是致命的问题)或不可变(参数上?结构上?),如果采用的话,会限制本模型的泛化能力。
如图2右侧,我们基于特定的次序实现了ISP的基本模块。由于色调映射可能会放大噪声并且不同的ISP-tuning方式会导致不同的色调映射风格,所以我们随机选择色调映射曲线,而不是固定某一条,以此来充分模拟真实场景。
双域去噪——模型框架主要内容及Loss设计
噪声图
由于噪声水平和传感器Gain值高度相关(场景越暗,给相机的增益应该越强,Gain值越大,但是这样就会放大一些场景中的噪声),所以噪声图最开始是为了RAW-denoise设计的。根据相关研究, P ( R ∗ k ) \mathcal{P}(\frac{R^*}{k}) P(kR∗)可以被视为高斯分布 N ( R ∗ K , R ∗ K ) \mathcal{N}(\frac{R^*}{K},\frac{R^*}{K}) N(KR∗,KR∗)的特例,因此上面的公式可以被改进为: R ∼ N ( R ∗ , K R ∗ + σ r 2 ) . \mathcal{R}\sim \mathcal{N}(R^*,KR^* + \sigma_r^2). R∼N(R∗,KR∗+σr2).本文使用干净raw图的标准差, K R ∗ + σ r 2 \sqrt{KR^*+\sigma_r^2} KR∗+σr2生成噪声图。注意实际场景中 R ∗ R^* R∗是获取不到的,所以我们用R来估计。我们引入了噪声融合模块(NFB),融合输入图像和噪声图。

之前的工作没有在框架中融合RGB噪声模式,因为预测RGB噪声模式很困难(在ISP的非线性放大操作后预测噪声水平是困难的)。但RGB噪声模式很重要,因为raw-denoise会损害细节并导致伪像,因此,随后的RGB去噪应该在给定噪声图(用于预测损害强度)的前提下还原丢失的信息。本文的做法也很直接,即把raw域的噪声图通过可微ISP,即得到了RGB域的噪声图。(直接的做法也有困难之处,这个做法要求RAW域的噪声图预测的很精准,要不然一毁俱毁了)。
Loss函数
L = λ ⋅ ∣ ∣ R − R ∗ ∣ ∣ 1 + ∣ ∣ I − I ∗ ∣ ∣ 1 L = \lambda \cdot ||R-R^*||_1+||I-I^*||_1 L=λ⋅∣∣R−R∗∣∣1+∣∣I−I∗∣∣1。尽管可微的ISP让我们双域去噪网络可以只基于RGB图像计算loss,但是消融实验显示,加入raw域图像的监督可以轻微的提升效果。消融实验如下图:

【思考1】图像泛化小节里有提到一个pixel-unshuffle操作,查了一下,是图像降采样使用的函数。函数名是nn.pixelunshuffle(α),当α取2时,可以作为raw-rgb的处理函数。同样的,nn.pixelshuffle(2)可以作为rgb-raw的处理函数。
【思考2】加噪图 R R R的公式没搞太清楚,可能只能接受了。同小节的超参数分析那里没太搞懂。
相关文章:
2024 ECCV | DualDn: 通过可微ISP进行双域去噪
文章标题:《DualDn: Dual-domain Denoising via Differentiable ISP》 论文链接: DualDn 代码链接: https://openimaginglab.github.io/DualDn/ 本文收录于2024ECCV,是上海AI Lab、浙江大学、香港中文大学(薛天帆等…...
Elasticsearch 和 Kibana 8.16:Kibana 获得上下文和 BBQ 速度并节省开支!
作者:来自 Elastic Platform Product Team Elastic Search AI 平台(Elasticsearch、Kibana 和机器学习)的 8.16 版本包含大量新功能,可提高性能、优化工作流程和简化数据管理。 使用更好的二进制量化 (Better Binary Quantizatio…...
Linux 抓包工具 --- tcpdump
序言 在传输层 Tcp 的学习中,我们了解了 三次握手和四次挥手 的概念,但是看了这么多篇文章,我们也只是停留在 纸上谈兵。 欲知事情如何,我们其实可以尝试去看一下具体的网络包的信息。在这篇文章中将向大家介绍,在 L…...
Vector Optimization – Stride
文章目录 Vector优化 – stride跳跃Vector优化 – stride跳跃 This distance between memory locations that separates the elements to be gathered into a single register is called the stride. A stride of one unit is called a unit-stride. This is equivalent to se…...
git config是做什么的?
git config是做什么的? git config作用配置级别三种配置级别的介绍及使用,配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级? 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…...
计算机网络(7) 数据链路层
数据链路层的内容不学不知道,一学真的是吓一跳哦,内容真的挺多的,但是大家不要害怕,总会学完的。 还有由于数据链路层的内容太多,一篇肯定是讲不完的所以我决定把它分为好几个部分进行学习与讲解。大家可以关注以后文…...
2024年秋国开电大《建筑结构试验》形考任务1-4
形考作业一 1.下列选项中,( )项不属于科学研究性试验。 答案:检验结构的质量,说明工程的可靠性 2.下列各项,( )项不属于工程鉴定性试验。 答案:验证结构计算理论的假定 3.按试验目的进行分类,可将结构试验分成( )。 答案:工程鉴定性试验和科学研究性试验…...
【MySQL】explain之type类型
explain的type共有以下几种类型,system、const、eq_ref、ref、range、index、all。 system:当表中只有一条记录并且该表使用的存储引擎的统计数据是精确的,比如MyISAM、Memory,那么对该表的访问方法就是system。 constÿ…...
Llama架构及代码详解
Llama的框架图如图: 源码中含有大量分布式训练相关的代码,读起来比较晦涩难懂,所以我们对llama自顶向下进行了解析及复现,我们对其划分成三层,分别是顶层、中层、和底层,如下: Llama的整体组成…...
Android onConfigurationChanged 基础配置
onConfigurationChanged 代替重建 0. **定义与基本用途**1. **具体使用场景 - 屏幕方向改变**2. **具体使用场景 - 键盘可用性改变**3. **具体使用场景 - 语言设置变更**4. **具体使用场景 - 屏幕密度变化**5. **具体使用场景 - 字体大小改变**6. **具体使用场景 - 屏幕尺寸变化…...
3. Sharding-Jdbc核⼼流 程+多种分⽚策略
1. Sharding-Jdbc 分库分表执⾏核⼼流程 Sharding-JDBC执行流程 1. SQL解析 -> SQL优化 -> SQL路由 -> SQL改写 -> SQL执⾏-> 结果归并 ->返回结果简写为:解析->路由->改写->执⾏->结果归并1.1 SQL解析 1. SQL解析过程分为词法解析…...
为什么财富的蓝图如此重要
我们生活在一个二元对立的世界里:上与下、明与暗、冷与热内与外、快与慢、左与右。这些还只是千百种对立之中的几个例子而已。 有了一个极端,表示一定同时有相对的另一端存在。有了右边不可能没有左边。 所以,在钱这件事上,有外…...
【云计算解决方案面试整理】1-2云计算基础概念及云计算技术原理
准备面云计算解决方案的岗位,整理了一些,也请大佬们指点。 文档分为 云计算基础概念、云计算技术原理、主流云计算平台(以天翼云为例)、云计算架构(弹性设计、高可用设计、高性能设计)、安全防护几个方面。 一、云计算基础概念 1.请简要解释一下什么是云计算? 简单说呢…...
循环语句 while()... 与 for()...(day11)
一、while()与do...while()... 循环语句: 通过循环语句可以反复执行一段代码多次 1、while循环: - 语法: while(①条件表达式){ ②语句... } - while语句在执行时, 先对条件表达式进行求值判断, 如果值为true&#…...
Mysql篇-三大日志
概述 undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。 redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现…...
MySQL的SQL书写顺序和执行顺序
老是忘记执行顺序,记录一下: 1. SQL语句的书写顺序 书写顺序通常是我们编写SQL查询时的顺序,主要包括以下关键字: SELECT:选择要查询的字段。FROM:指定数据来源表。JOIN(可选)&am…...
摄像机视频分析软件下载LiteAIServer视频智能分析软件抖动检测的技术实现
在现代社会中,视频监控系统扮演着至关重要的角色,其可靠性和有效性在很大程度上取决于视频质量。然而,由于多种因素,如摄像机安装不当、外部环境振动或视频信号传输的不稳定,视频画面常常出现抖动问题,这不…...
spring gateway 动态路由
##yml配置 spring:application:name: public-gateway # cloud: # gateway: # routes: # - id: mybatis-plus-test # 路由的唯一标识 # uri: http://192.168.3.188:9898 # 目标服务的地址 # predicates: # - Path/test/** # 匹配…...
除了 Postman,还有什么好用的 API 管理工具吗?
Postman在团队协作上的支持相对有限,且免费版本的功能较为基础,高级功能需要付费解锁。 为了寻找更加符合团队需求的解决方案,许多开发者开始探索其他API管理工具,其中Apifox便是备受推崇的选择之一。下面通过一个表格来简单了解…...
JAVA:探索 EasyExcel 的技术指南
1、简述 在 Java 开发中,Excel 文件的读写操作是一项常见的需求。阿里巴巴开源的 EasyExcel 提供了一种高效、简洁的解决方案,特别是在处理大规模数据时表现尤为突出。本文将详细介绍 EasyExcel 的优缺点、应用场景,并通过实例展示其基本用法…...
T/SCSIA0018-2025《四川省信息技术应用创新项目费用测算标准》标准解读
此前四川省存量信息系统信创适配改造项目长期面临费用测算无统一标准、议价争议多、成本虚高、重复计费等行业痛点,给项目估算、审计、结算带来诸多困扰。2025年12月29日发布的T/SCSIA0018-2025《四川省信息技术应用创新项目费用测算标准》,作为省内首个…...
UUID和Name不在同一条BLE广播报文里
概要通过在命令行窗口打印部分报文信息,发现:设备向外发送BLE蓝牙低功耗广播,设备的UUID和Name不在同一条广播报文里UUID是通用唯一标识符一、设备1、发送报文的设备能够发送BLE蓝牙低功耗广播的设备。本篇使用的是周围环境中的未知设备。2、…...
Vivado里SRIO IP核Basic模式配置详解:从链路宽度到Buffer深度,新手避坑指南
Vivado中SRIO IP核Basic模式配置全解析:从参数理解到实战避坑 第一次在Vivado中配置SRIO IP核时,面对密密麻麻的参数选项,大多数工程师都会感到无从下手。作为Xilinx FPGA中实现高速串行通信的关键IP,SRIO(Serial Rap…...
Verilog握手信号实战:如何用valid/ready搭建高效数据流水线(附完整代码)
Verilog握手信号实战:如何用valid/ready搭建高效数据流水线(附完整代码) 在FPGA开发中,数据流水线是实现高性能计算的关键架构。但当我们面对不同处理速度的模块时,如何确保数据既不丢失又不阻塞?valid/rea…...
3大核心挑战+5步完美防御:RevokeMsgPatcher让消息撤回彻底失效
3大核心挑战5步完美防御:RevokeMsgPatcher让消息撤回彻底失效 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://git…...
【系统分析师_知识点整理】 8.项目管理
核心考向:进度管理(计算 选择最高频):关键路径、ES/EF/LS/LF、总浮动时间、自由浮动时间、PDM 四种依赖、进度偏差分析;范围管理:WBS、范围确认、范围控制、范围边界定义;成本管理:…...
【异常】设备时间戳时区偏差问题分析与解决(实际应为上午11点,但数据库存储为晚上7点)
一、问题现象 在生产环境中发现,IoT 设备上报的对话记录时间存在异常。具体表现为: 实际时间:2026年3月30日 上午 11:00 数据库存储时间:2026年3月30日 晚上 19:00 时间偏差:约 8 小时 数据库查询示例: -- 实际应为上午11点,但数据库存储为晚上7点 dialog_time: 2026-…...
Cursor规则太多跑得慢?手把手教你优化.cursor配置,给VSCode插件‘减负’提速
Cursor性能优化实战:让智能编码助手重获流畅体验 当你的指尖在键盘上飞舞时,最令人沮丧的莫过于等待工具响应。作为深度集成AI能力的现代编码环境,Cursor在提供智能补全和代码建议的同时,也可能因为规则膨胀而逐渐变得迟缓。我曾见…...
DoubletFinder实战指南:精准识别单细胞测序中的双细胞干扰
1. 双细胞干扰:单细胞测序中的"隐形杀手" 做单细胞测序分析的朋友们应该都遇到过这种情况:明明细胞分群很清晰,但总有几个"奇怪"的cluster既表达A细胞标志物又表达B细胞特征。这种情况很可能就是遇到了双细胞干扰——两个…...
惠普暗影精灵性能优化新选择:OmenSuperHub完全解析
惠普暗影精灵性能优化新选择:OmenSuperHub完全解析 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否厌倦了官方Omen Gaming Hub的臃肿体验?想要一个纯净、高效且完全离线的惠普暗影精灵控制工具…...
