论文阅读:DualDn Dual-domain Denoising via Differentiable ISP

这篇文章是 2024 ECCV 的一篇文章,介绍的是降噪相关的工作。

Abstract

图像去噪是相机图像信号处理 (ISP) 流程中的一个关键组成部分。将去噪器融入 ISP 流程有两种典型方式:直接对拍摄的原始帧(RAW域)应用去噪器,或者对 ISP 输出的 sRGB 图像(sRGB 域)应用去噪器。然而,这两种方法都有其局限性。原始域去噪产生的残留噪声可能会被后续的 ISP 处理放大,而且 sRGB 域很难处理空间变化的噪声,因为它只能看到被 ISP 扭曲的噪声。因此,大多数原始域或 sRGB 域的去噪方法仅适用于特定的噪声分布和 ISP 配置。为了应对这些挑战,我们提出了 DualDn,一种新颖的基于学习的双域去噪方法。与之前的单域去噪不同,DualDn 由两个去噪网络组成:一个在原始域,一个在 sRGB 域。原始域去噪可适应传感器特有的噪声以及空间变化的噪声水平,而 sRGB 域去噪可适应 ISP 变化并去除被 ISP 放大的残留噪声。这两个去噪网络都与一个可微的 ISP 相连,该 ISP 经过端到端训练,并在推理阶段被舍弃。通过这种设计,与大多数基于学习的去噪方法相比,DualDn 具有更强的通用性,因为它可以适应不同的未知噪声、ISP 参数,甚至新的 ISP 流程。实验表明,DualDn 达到了最先进的性能,并且可以适应不同的去噪架构。此外,DualDn 可以作为即插即用的去噪模块用于真实相机,无需重新训练,而且性能仍优于相机上的商业去噪功能。

  • 图 1
    在这里插入图片描述

Introduction

近年来,基于 AI 模型的降噪算法在真实拍摄的图像和合成图像上都展现出了惊人的质量。通常,为了训练这些去噪网络,首先要为具有已知噪声水平的特定相机型号收集一个训练集。在该数据集上训练的网络通常在这种设置下表现良好,但当应用于其他相机型号或不同噪声水平时,性能会下降。研究人员试图通过通用的训练计划来缓解这个问题,但是以这种方式训练的去噪网络要么速度很慢,要么表现比传统去噪网络差,尤其是在处理严重噪声时。因此,设计一个普遍适用的去噪框架,适用于各种传感器噪声和相机 ISP,仍然是一项具有挑战性的任务。

我们的关键观察结果是,有限的泛化能力与去噪算法所应用的域有关。如图 2 所示,在典型的相机流程中,传感器噪声在原始域中引入,并在原始图像由图像信号处理器(ISP)流程处理后传播到最终的 sRGB 图像。因此,有两种典型的应用去噪的方式:在原始域和在 sRGB 域。原始域去噪通常对不同的噪声分布具有良好的泛化能力,因为有相关工作研究表明,这些模型将噪声分布与一些可以通过校准获得的参数相关联。然而,原始域去噪后的轻微残留噪声或伪影可能会被 ISP 处理放大,导致最终的 sRGB 图像不是最优的(图 2 的第一行)。例如,去马赛克处理通常会在图像边缘周围产生高频伪影,而色调映射可能会放大暗区域中的残留噪声。此外,原始域去噪不知道 ISP 处理过程,因此当切换到不同的 ISP 流程时,其性能会下降。

  • 图 2
    在这里插入图片描述
    比较单域和双域去噪。原始域中的噪声是特定于传感器且与 ISO 相关的,而 ISP 是与设备相关且由用户偏好决定的。只有双域去噪才能分别妥善处理噪声和 ISP 的变化。

另一方面,sRGB 域去噪直接应用于由 ISP 生成的最终 sRGB 图像,因此可以泛化到不同的 ISP 流程。尽管如此,大多数 sRGB 域去噪网络是用单一噪声分布进行训练的。另一方面,实际的 sRGB 噪声分布很复杂,主要是因为可校准的原始噪声被 ISP 处理扭曲了,使得它在 sRGB 域中不可预测(图 2 的第二行)。因此,当应用于低光照条件下或具有空间变化噪声的强噪声时,sRGB 去噪的性能会下降。

因此,在这项工作中,为了同时考虑传感器噪声和 ISP 处理的变化,我们提出了一种新颖的双域去噪流程,它由一个 RAW 去噪器和一个 sRGB 去噪器组成,如图 2 的底部所示。利用原始去噪可以使网络处理空间变化的噪声,并在经过校准的噪声水平的帮助下泛化到不同的传感器。在经过去噪的原始信号由 ISP 处理后,第二个 sRGB 去噪器进一步消除由 ISP 引入的放大和相关的残留噪声。与单域去噪相比,我们的双域去噪能生成具有精细细节的视觉上令人愉悦的图像。为了训练这些双域去噪网络,我们还提出了一种训练方案,其中包括增强的噪声分布和 ISP 参数,以及可微的 ISP 流程,以支持同时对两个去噪器进行联合训练。

据我们所知,虽然传统的 ISP 流程通常在原始域和 sRGB 域都放置噪声滤波器,但我们是第一个提出基于学习的可端到端训练的双域去噪框架的人。为了实现这一目标,我们使用可微的 ISP 和噪声图机制作为 “桥梁”。此外,我们在训练期间为原始域生成不同的噪声,为 sRGB 域生成不同的 ISP,使原始去噪器和 sRGB 去噪器能够共同处理噪声和 ISP 的变化。而且,我们在合成图像和真实图像上的实验结果显示,与单域基线相比有显著的改进,特别是在应用于未知的 ISP 或噪声分布时。此外,尽管我们的模型仅在合成图像上进行训练,但它可以应用于商业智能手机中的黑盒 ISP,甚至优于为其相机精心设计的去噪算法,如图 1 所示。

Method

对于来自未知相机的具有广泛噪声的原始图像,我们的目标是使用经过训练的去噪网络和目标 ISP 恢复出干净的 sRGB 图像。我们的去噪网络不与任何特定的 ISP 绑定,只是替换其去噪模块。在本节中,我们首先介绍我们的 DualDn 的总体框架。然后,我们详细描述 DualDn 的每个部分的设计。

  • 图 3
    在这里插入图片描述
    DualDn 的总体流程。它由三个关键组成部分组成:(a)具有各种噪声的图像泛化;(b)具有噪声图融合的双域去噪;(c)具有相应 EXIF 数据和可变 ISP 参数的可微 ISP。

DualDn 的总体流程如图 3 所示。给定一个干净的原始图像块,我们根据其 EXIF 元数据生成相应的干净 sRGB 图像块,并基于噪声模型合成一个有噪声的原始图像块。然后,有噪声的原始图像块经过原始去噪和 sRGB 去噪处理,以产生最终的 sRGB 图像块。这个过程采用可微的 ISP 来模拟原始域和 sRGB 域之间的中间 ISP 处理,利用 EXIF 元数据并保持其他参数可调整。

Image Generalization

我们使用一个噪声模型和大量的模型参数集从干净的原始图像合成有噪声的原始图像。为了增强我们方法的泛化能力,我们主要考虑类似于散粒噪声和读出噪声,而忽略设备特定的噪声,如固定模式噪声。后续实验表明使用这个有效的噪声模型进行训练可以很好地泛化到来自未知相机的真实图像上,虽然这些相机具有未知的噪声分布。

散粒噪声和读出噪声分别符合泊松分布和高斯分布,所以有噪声的 RAW 图像 R 被合成如下:

R ∼ K ⋅ P ( R ∗ K ) + N ( 0 , σ r 2 ) (1) R \sim K \cdot \mathcal{P}(\frac{R^{*}}{K}) + \mathcal{N}(0, \sigma_{r}^{2}) \tag{1} RKP(KR)+N(0,σr2)(1)

其中 R ∗ R^{*} R 表示干净的原始图像, K K K 是整体的 gain 值,与 ISO 设置有关。

为了模拟一个更大范围的噪声水平,让 K , σ r 2 K, \sigma_{r}^{2} K,σr2 从某个分布中进行采样:

log ⁡ ( K ) ∼ U ( log ⁡ ( K m i n ) , log ⁡ ( K m a x ) ) log ⁡ ( σ r 2 ) ∣ log ⁡ ( K ) ∼ N ( α ⋅ log ⁡ ( K ) + β , σ 2 ) (2 ) \log(K) \sim \mathcal{U}(\log(K_{min}), \log(K_{max})) \\ \log(\sigma_{r}^{2}) | \log(K) \sim \mathcal{N}(\alpha \cdot \log(K) + \beta, \sigma^{2}) \tag{2 } log(K)U(log(Kmin),log(Kmax))log(σr2)log(K)N(αlog(K)+β,σ2)()

U \mathcal{U} U 表示均匀分布, K m i n , K m a x K_{min}, K_{max} Kmin,Kmax 分别表示最小与最大的噪声水平。 α , β , σ \alpha, \beta, \sigma α,β,σ 是高斯分布中的超参,文章中 α = 2.540 , β = 1.218 , σ = 0.268 \alpha = 2.540, \beta = 1.218, \sigma = 0.268 α=2.540,β=1.218,σ=0.268

此外,我们使用全尺寸图像的裁剪块进行训练。在裁剪过程中,我们在随机位置周围的 R-G-G-B 拜耳模式下搜索最近的原始块。因此,在经过像素解交织操作 pixel unshuffle 处理后,得到的打包原始块具有固定的通道配置(RGGB),这进一步提高了模型的性能。

  • 图 4
    在这里插入图片描述
Differentiable ISP

为了端到端地训练我们的双域网络,我们基于 PyTorch 设计了一个可微的 ISP。虽然有一些开源的 ISP ,但它们不可微或不可变,如果我们采用它们,会限制去噪网络的性能和泛化能力。在我们的框架中,我们按照特定的顺序实现 ISP 的基本部分,如图 3 的右列所示。与大多数实际的 ISP 不同,我们排除了某些模块并设计了一个通用的 ISP,原因有二:(1)商业 ISP 通常是黑盒函数,完全模拟它们可能会导致过拟合;(2)某些 ISP 模块,如颜色风格化,对噪声影响不大,在训练期间可以忽略,我们只选择对噪声有影响的必要模块。为了测试我们的可微 ISP 与实际 ISP 相比的稳健性,我们以著名的 RawPy 作为参考。在一组 50 张图像上,我们的 ISP 实现了平均 41.7dB 的 PSNR。

首先,我们从原始的原始文件中提取 EXIF 数据,包括黑电平、白平衡增益、颜色校正矩阵和拜耳模式,并将它们输入到可微的 ISP 中。对于颜色滤波阵列(CFA)插值模块,我们特别修改了经典的 AHD 算法以减轻边缘周围的拉链图案。对于全局色调映射模块,我们在训练期间在可微的 ISP 中采用可变曲线。由于色调映射可能会放大噪声并且根据所需的调整而在风格上有所不同,我们随机改变曲线而不是固定它,以更充分地模拟实际情况。该曲线应满足两个约束:首先,它应通过点(0,0)和(1,1);其次,它应单调递增且二阶导数为负。因此,我们使用深度曲线,定义如下:

R n = R n − 1 + α ⋅ R n − 1 ( 1 − R n − 1 ) (3) R_{n} = R_{n-1} + \alpha \cdot R_{n-1} (1 - R_{n-1}) \tag{3} Rn=Rn1+αRn1(1Rn1)(3)

其中 Rn 表示图像 R 经过第 n 次迭代处理后的值,α 是控制色调映射曲线形状的放大比率。在这里,我们设置 n = 2 并从范围 [0,1] 中随机采样 α,得到的曲线如在图 4b 中可视化的那样,足以覆盖大多数情况。

Denoising in Dual-domain

Noise Map 噪声图最初是为 RAW 域去噪而设计的,因为噪声水平与传感器增益高度相关。虽然噪声图并不是新的概念,但我们是第一个在原始域和 sRGB 域中都使用它的人。根据之前的研究工作,泊松分布可以被视为高斯分布的一种特殊情况,因此公式 (1) 可以近似如下:

R ∼ N ( R ∗ , K R ∗ + σ r 2 ) (4) R \sim \mathcal{N}(R^{*}, KR^{*} + \sigma_{r}^{2}) \tag{4} RN(R,KR+σr2)(4)

我们使用干净原始图像的标准差,即 K R ∗ + σ r 2 \sqrt{KR^{*} + \sigma_r^{2}} KR+σr2 来生成噪声图,并通过比较不同的噪声图(包括方差等)进行消融实验以验证其有效性。标准差被证明是作为我们噪声图的最佳选择。需要注意的是,在实际中没有无噪声的 R ∗ R^{*} R,所以我们使用原始图像 R R R 来预测它。此外,我们引入了一个噪声图融合块(NFB),它采用卷积、拼接和切换机制来融合输入图像和噪声图。

以前的工作没有在 sRGB 域中纳入噪声图,因为很难准确预测经过 ISP 非线性放大后的噪声水平。然而,在我们的方法中,我们设法为 sRGB 去噪器估计一个 sRGB 噪声图。由于原始去噪不可避免地会损害细节并产生伪影,所以在给定预测损害强度的噪声图的情况下,后续的 sRGB 去噪有望修复这种损害。我们将原始去噪的噪声图通过可微的 ISP,就像图像信号被处理一样,以获得用于 sRGB 去噪的噪声图,这充分考虑了进入 sRGB 域之前的处理步骤。

Dual-denoising Framework 我们的目的是将双去噪网络插入到目标 ISP 流程中,并且在部署之前,双去噪网络在如图 3 所设计的框架中进行训练。在原始域去噪中,每个 2×2 的拜耳模式最初使用像素解交织操作 pixel-unshuffle 被打包成四个通道,并使用像素交织操作 pixel-shuffle 进行解包。在 sRGB 域去噪中,三个颜色通道直接映射到第一层和最后一层的通道。如前所述,可微的 ISP 和噪声图机制作为双网络之间的 “桥梁”,所以我们在两个域的去噪网络中采用长跳跃连接,使得双网络的协同训练成为可能。

Loss Functions 我们在原始域和 sRGB 域中纳入两个阶段的有监督学习,使用下面定义的损失函数:

L = λ ⋅ ∥ R − R ∗ ∥ 1 + ∥ I − I ∗ ∥ 1 (5) L = \lambda \cdot \left \| R - R^{*} \right \|_1 + \left \| I - I^{*} \right \|_1 \tag{5} L=λRR1+II1(5)

尽管可微的 ISP 使我们的双域模型能够仅使用 sRGB 图像计算损失并优化网络,但添加原始域的监督可以稍微提高去噪性能。在所有实验中我们采用 λ \lambda λ = 1.0。

最后看看文章在实际手机上的降噪效果。
在这里插入图片描述

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

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

相关文章

从文本到图像:AIGC 如何改变内容生产的未来

从文本到图像:AIGC 如何改变内容生产的未来 在过去的几年里,人工智能生成内容(AIGC)技术迅速崛起,从基础的文本生成到更复杂的图像、音频甚至视频生成。如今,AIGC 已经不仅仅是技术研究中的一个概念&#…

运维智能化转型:AIOps引领IT运维新浪潮

1. AIOps是什么? AIOps(Artificial Intelligence for IT Operations),即人工智能在IT运维中的应用,通过机器学习技术处理运维数据(如日志、监控信息和应用数据),解决传统自动化运维…

Spring Boot 与 Vue 共筑航空机票预定卓越平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

2024 第五次周赛

A: 直接遍历即可 #include<bits/stdc.h> using namespace std;typedef long long ll; typedef pair<ll, ll>PII; const int N 2e6 10; const int MOD 998244353; const int INF 0X3F3F3F3F;int n, m; int main() {cin >> n;int cnt 0;for(int i 0; i …

斐波那契数的第n个数代码分享(c基础)

1&#xff1a;迭代 //斐波那契数的第n个数 #include<stdio.h> //unsigned long long Fib(n) //{ // // if (1 n || 2 n) // return 1; // else return Fib((n - 1) Fib((n - 2); // // //} unsigned long long Fib(n) {if (n 1 || n 2)return 1;else{int j 3;u…

STM32单片机WIFI语音识别智能衣柜除湿消毒照明

实践制作DIY- GC0196-WIFI语音识别智能衣柜 一、功能说明&#xff1a; 基于STM32单片机设计-WIFI语音识别智能衣柜 二、功能介绍&#xff1a; STM32F103C系列最小系统板LCD1602显示器ULN2003控制的步进电机&#xff08;柜门开关&#xff09;5V加热片直流风扇紫外消毒灯DHT11…

qt QShortcut详解

1、概述 QShortcut是Qt框架中的一个类&#xff0c;它提供了一种创建键盘快捷键的方式。通过QShortcut&#xff0c;开发者可以将特定的键盘组合&#xff08;如CtrlC、AltF4等&#xff09;与应用程序中的动作&#xff08;如复制、关闭窗口等&#xff09;关联起来。当用户在应用程…

C语言笔记(字符串函数,字符函数,内存函数)

目录 前言 1.字符串函数 1.1.strlen 1.2.strcpy 1.3.strcat 1.4.strcmp 1.5.strncpy 1.6.strncat 1.7.strncmp 1.8.strstr 1.9.strtok 1.10.strerror 2.字符函数 2.1字符分类函数 2.2字符转换函数 3.内存函数 3.1.mencpy 3.2.memmove 3.3.memcmp 前言 本文重…

Debian 12环境里部署nginx步骤记录

前言 浅记录一下 在Debian 12环境里安装nginx的过程&#xff0c;这个过程并没有特别顺利&#xff0c;有遇到各种报错&#xff0c;这些报错&#xff0c;我也会记录进来&#xff1b;方便自己后续查看以及供需要的小伙伴参考吧~~ 主要参考资料&#xff1a;https://blog.csdn.ne…

详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送

在C#中&#xff0c;SendMessage方法是一个强大的工具&#xff0c;它允许我们与Windows API交互&#xff0c;模拟键盘和鼠标事件。本文将详细介绍如何使用SendMessage方法来发送鼠标和键盘消息。 1. SendMessage方法概述 SendMessage是Windows API中的一个函数&#xff0c;它用…

单片机入门知识

1单片机系统的int是16位 计算机系统的int是32位&#xff08;数据总线&#xff09; 2的16次方是65536 所以在单片机中&#xff0c;如果表示一个正整数&#xff0c;这个数字的范围是0~65535&#xff0c;总共有65536种可能 2内存条用于存储计算机运行时的数据&#xff0c;是连接…

ABAP:SET CURSOR FIELD设置鼠标焦点

SET CURSOR FIELD <字段名>&#xff1a;设置鼠标焦点到该字段 SET CURSOR 设置到鼠标焦点列还是行 SET CURSOR LINE 设置鼠标焦点到行 GET CURSOR field <字段名> &#xff1a;这个相对应的获取鼠标焦点得到的字段

ArcGIS从Excel表格文件导入XY数据并定义坐标系与投影的方法

本文介绍在ArcMap软件中&#xff0c;从Excel表格文件中批量导入坐标点数据&#xff0c;将其保存为.shp矢量格式&#xff0c;并定义坐标系、转为投影坐标系的方法。 已知我们有一个Excel表格文件&#xff08;可以是.xls、.xlsx、.csv等多种不同的表格文件格式&#xff09;&#…

三周精通FastAPI:38 针对不同的编程语言来生成客户端

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/advanced/generate-clients/ 生成客户端 因为 FastAPI 是基于OpenAPI规范的&#xff0c;自然您可以使用许多相匹配的工具&#xff0c;包括自动生成API文档 (由 Swagger UI 提供)。 一个不太明显而又特别的优势是&#…

Linux【基础篇】T

--已经不知道幸福是什么味道了 Linux命令行 linux命令提示符 linux目录结构 Windows的目录结构是N个顶点&#xff0c;可以是C盘 可以是D盘 可以是E盘 往下。 linux的目录结构是只有一个订单 &#xff0c;像一颗倒状的树木一样的。 linux常用目录含义 /etc目录下一些重要的配置…

Mesh网格

Mesh(网格) 定义&#xff1a;Mesh 是一个包含顶点、三角形、顶点法线、UV坐标、颜色和骨骼权重等数据的对象。它定义了3D模型的几何形状。 功能&#xff1a; 顶点&#xff08;Vertices&#xff09;&#xff1a;构成3D模型的点。 三角形&#xff08;Triangles&#xff09;&…

【从零开始的LeetCode-算法】540. 有序数组中的单一元素

给你一个仅由整数组成的有序数组&#xff0c;其中每个元素都会出现两次&#xff0c;唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 示例 1: 输入: nums [1,1,2,3,3,4,4,8,8] 输出: 2示例…

传输协议设计与牧村摆动(Makimoto‘s Wave)

有一条活鱼和一条死鱼&#xff0c;你准备怎么做&#xff0c;你会将活鱼红烧或将死鱼清蒸吗&#xff1f;好的食材只需要最简单的烹饪&#xff0c;不好的食材才需要花活儿。 我此前的文字几乎都在阐述一个观点&#xff0c;广域网就是那条死鱼&#xff0c;数据中心则是那条活鱼。…

【AI学习】Mamba学习(十五):关于S4模型计算优化的再学习

前面理解了S4模型&#xff0c;但是对于具体的优化算法&#xff0c;还是没有完全理解透彻。现在补充学习。 S4 SSM HiPPO Structured Matrices 具体方案&#xff1a;Structured State Spaces (S4) 简单总结&#xff1a;用HiPPO-LegS的矩阵形式初始化SSM&#xff0c;解决训…

【C++】新手入门指南

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…