2024AAAI | DiffRAW: 利用扩散模型从手机RAW图生成单反相机质量的RGB图像

文章标题:《DiffRAW: Leveraging Diffusion Model to Generate DSLR-Comparable Perceptual Quality sRGB from Smartphone RAW Images》

原文链接:DiffRAW

本文是清华大学深圳研究院联合华为发表在AAAI-2024上的论文(小声bb:华为这个方向做的不少啊…)。

【1】论文的主要motivation是解决Smartphone Raw to DSLR images的难点(小声bb:工业界的论文就是切实)。

  • 智能手机拍摄相关的硬件本身就不如数码单反相机,硬件相关的限制导致了RAW图采集时在细节上必定会有损失。所以从智能手机感知到的RAW图推导出单反相机画质的图像本身就是一个困难的任务;
  • 用手机采集RAW图,单反相机采集RGB图像,不同的设备拍摄同一个场景势必导致RAW-sRGB图像对空间位置不精确对齐的问题
  • 由于RAW-sRGB数据对是在不同的环境条件和相机参数下分别采集的,这会导致颜色差异以及不稳定的颜色映射关系

【2】论文的主要贡献在于以下四点:

  • 设计了一个新颖高效的前馈和逆向过程,即DTDM(Domain Transform Diffusion Method)。该方法减少了推理期间所用的迭代步数。DTDM是一个对于基于扩散模型的图像恢复/增强方法通用的加速算法,可以灵活的被迁移到其他基于扩散模型的图像恢复/增强方法中;
  • 第一次使用RAW图作为扩散条件,在生成图像中保留了RAW图的轮廓和纹理信息;
  • 通过设计的颜色-位置保留条件,本文缓解了由于颜色/空间不对齐导致的训练干扰;
  • DiffRAW拥有一个颜色即插即用特征,使用不同的颜色条件作为颜色信息注入可以灵活的调整生成图像的颜色风格

Preliminary

扩散模型

关于扩散模型的相关知识这里就不展开了,推荐看一下b站上李宏毅老师的扩散模型课程:扩散模型-李宏毅。

基于扩散模型的图像修复/增强

定义 x x x y y y分别表示低质量和高质量的图像。经典的图像修复/增强算法都会先构建一个关于高质量图像的图像序列作为扩散模型的前馈过程: { y t = α ‾ t y + 1 − α ‾ t ϵ } t = 1 T \{y_t = \sqrt{\overline{{\alpha}}_t}y + \sqrt{1-\overline{\alpha}_t}\epsilon\}_{t=1}^T {yt=αt y+1αt ϵ}t=1T

在训练过程中,低质量图像的信息会作为条件被注入到U-Net网络 f θ ( y t , x , t ) f_{\theta}(y_t,x,t) fθ(yt,x,t)中,网络最后会学到未知的条件分布 p ( y ∣ x ) p(y|x) p(yx)
p θ ( y t − 1 ∣ y t ) = N ( y t − 1 ; μ θ ( y t , x , t ) , σ t 2 I ) p_\theta(y_{t-1}|y_t) = \mathcal{N}(y_{t-1};\mu_\theta(y_t,x,t),\sigma_t^2I) pθ(yt1yt)=N(yt1;μθ(yt,x,t),σt2I)

μ θ ( y t , x , t ) = 1 α t ( y t − 1 − α t 1 − α ‾ t f θ ( y t , x , t ) ) \mu_\theta(y_t,x,t) = \frac{1}{\sqrt{\alpha_t}}(y_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha}_t}}f_\theta(y_t,x,t)) μθ(yt,x,t)=αt 1(yt1αt 1αtfθ(yt,x,t))

在推理过程中, y T ∼ N ( 0 , I ) y_T\sim\mathcal{N(0,I)} yTN(0,I)通常被用于生成过程的起始点,通过应用上述公式,目标图像 y y y会在T个迭代步以后被生成。

Abstract

由于明显的细节差异(discernible detail disparity)不稳定的颜色映射关系RAW-sRGB pair的空间尺寸不对齐从智能手机RAW图推导出数码单反相机(DSLR,Digital Signal Lens Reflex Camera)质量的RGB图像已经成为了一个很吸引人的挑战。本文提出了DiffRAW,一个第一次把扩散模型用于学习RAW-to-sRGB映射的新颖的方法。本方法利用扩散模型学习到了DSLR图像的高质量细节分布,进而增强了输出图像的细节。同时,本文使用RAW图作为扩散模型的输入条件以保持图像结构信息(例如,轮廓和纹理)。为了减轻由训练数据对中颜色和空间不对齐带来的干扰,本文在DiffRAW中嵌入了一个颜色-位置保持条件,以确保输出图像没有颜色和像素偏差问题。为了加速DiffRAW的推理速度,本文设计了域变换扩散方法,一个高效的扩散过程及其逆过程(reverse process)。域变换扩散方法在减少基于扩散模型的图像恢复/增强算法所需推理步数的同时,还提高了生成图像的质量。通过在ZRR数据集上的评估,DiffRAW在所有的感知质量评估指标(例如,LPIPS,FID,MUSIQ)上都展示了sota的性能,并且在SSIM和PSNR指标上达到了还不错的结果。

Methodology

img

图1. DiffRAW模型架构
 

颜色-位置保持条件

定义 w w w 为智能手机捕获到的RAW图,定义 y y y为数码单反相机捕捉到的目标RGB图像,定义颜色-位置保持条件为符号 c c c

在训练过程中, c t r a i n c^{train} ctrain是使用一个高阶退化模型 D 2 D^2 D2 (Wang et al. 2021)对 y y y做退化处理得到的结果,即 c t r a i n = D 2 ( y ) c^{train}=D^2(y) ctrain=D2(y)。本方法对该模型进行了微调,以确保 c t r a i n c^{train} ctrain y y y的颜色一致性。

在测试过程中,使用lightweight ISPNet (Zhang et al. 2021)处理 w w w 得到 c t e s t c^{test} ctest

img

图2. 实验结果可视化
 

这里把实验结果可视化搬过来,以更好说明颜色-位置保持条件的作用。可以看到,图2(a)是用简单isp pipeline处理后的rgb图像;图2(b)没有加入任何条件,失去了轮廓、纹理、颜色信息(颜色映射和空间映射都学乱了);图2(c)加入了 w w w ,保持了原RAW图的轮廓和纹理信息;图2(d)基本保持了图2(a)的颜色信息。这里注意,图2(d)不要跟图2(f)比,因为这是测试过程,是要看跟 c t e s t c^{test} ctest,即图2(a)的关系;图2(e)是单反相机图像退化后得到的可视化结果。

DTDM (Domain Transform Diffusion Method)

这一小节的逻辑比较复杂,作者写得很乱,我尽量讲的详细一点。

在这一小节,作者指出,在forward过程中,其实没必要把 y y y 一直加噪到纯噪声,只要加噪到 y s y_s ys 就好了。这样在reverse过程中,从 y s y_s ys 往回倒,推出 y y y所需要的步数自然就少了。

那么这里有一个问题:在测试集中, y s y_s ys 怎么获得?(注:因为在测试集里,我们只有手机拍的raw图 w w w ,需要得到DSLR-qualified images y y y

你可能已经想到了,我们既然有 w w w ,就可以用一个神奇的数学魔法 x t e s t = I S P ( w ) x^{test}=ISP(w) xtest=ISP(w)【文中用一个函数G替代ISP,但其实是一样的】,如果我们大概能证明 x s t e s t x_s^{test} xstest y s y_s ys差不多,是不是就可以了?

不太令人满意的是, x s t e s t x_s^{test} xstest y s y_s ys稍微有点区别。因为前者在图像质量差的域里面,后者在图像质量好的域里面,两者并不能完全等价。讲到这里,你或许已经发现了为什么这个方法叫做"域变换扩散方法"。

没错!聪明的作者朋友们指出了如下公式:

x t e s t x^{test} xtest相对应,有 x t r a i n = D 2 ( y ) x^{train}=D^2(y) xtrain=D2(y),作者试图在forward过程中,把 y y y变成 x s t r a i n x_s^{train} xstrain 。这不仅涉及到加噪过程,还在每一个微小步中涉及到一点点的域移动,域总体移动量大概可以认为是 ( y − x t r a i n ) (y−x_{train}) (yxtrain) 。继而又有 x s t r a i n = α ‾ s x t r a i n + 1 − α ‾ s ϵ x_s^{train}=\sqrt{\overline{\alpha}_sx^{train}}+\sqrt{1-\overline{\alpha}_s}\epsilon xstrain=αsxtrain +1αs ϵ

到此为止,DTDM的核心思想就算是讲完了。总结如下:作者通过精巧的设计,令高质量的图像 y y y 在forward过程中,不仅做了加噪退化,还做了域偏移处理,最后得到了位于另一个域中的加噪数据点 x s t r a i n x_s^{train} xstrain (而非高斯纯噪声)。

因此,在测试过程中,作者使用了两个数学魔法, x t e s t = I S P ( w ) x^{test}=ISP(w) xtest=ISP(w) x s t e s t = α ‾ s x t e s t + 1 − α ‾ s ϵ x_s^{test}=\sqrt{\overline{\alpha}_s}x^{test}+\sqrt{1-\overline{\alpha}_s}\epsilon xstest=αs xtest+1αs ϵ直接得到了另一个域中的数据点,再通过上述过程的逆过程,即可转移回数据点 y y y

本小节的剩余部分,作者对forward、train、reverse三个过程做了精细的数学推导。我们大致可以理解为:经典的扩散都是只加噪声,DTDM却还做了域偏移,那每次的微小偏移是偏移多少?作者要给出证明推导。此外,在新的模型框架下,原有的关于噪声预测的Loss也需要修正。总而言之,在推理阶段,DTDM不仅对 x s x_s xs 做了去噪,还执行了一个从 x x x y y y 的域迁移,允许DTDM在很短的步数内把 x s t e s t x_s^{test} xstest 转换成 y y y ,同时提高了生成图像的质量。

Conclusion

本文提出了一个新颖的可以自适应解决smartphone raw to DSLR-quality sRGB图像的方案。融合RAW图信息保持轮廓,提出了高效的diffusion过程加强图像质量、减少推理步骤。

【思考1】思考了一下本文提出颜色注入特征的过程,可能是如下所述的这种情况。①CNN版本: 相关研究者发现训练数据集中的pair对颜色是不对齐的,这可能导致网络需要学习对应的颜色映射关系,但是映射关系也不稳定,这导致网络对于颜色的拟合效果不好,用CNN做这件事情就不太行了。②扩散模型基础版本: 用raw图信息注入,消除纯高斯噪声,得到对应的RGB图像,但是也存在映射不稳定的问题(因为raw图注入也会产生一些颜色信息的注入),会干扰网络训练。③DiffRAW: 干脆将颜色信息剥离出来,直接作为一个输入,模型学raw输入的轮廓和纹理,学注入的rgb信息的颜色特征,而且还能通过这个模块改变颜色风格,一举两得。空间注入特征的推导同理。

【思考2】感觉本文公式好多,有些变量对齐起来比较麻烦。比如在原文Methodology的第二小节中的 c t r a i n = D 2 ( y ) c^{train}=D^2(y) ctrain=D2(y) 到了第三小节又变成了 x x x

【思考3】关于DTDM小节,本文写得不甚详细,望广大读者朋友批评指正。

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

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

相关文章

【Linux系统编程】第四十五弹---线程互斥:从问题到解决,深入探索互斥量的原理与实现

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、线程互斥 1.1、见一见多线程访问问题 1.2、解决多线程访问问题 1.2.1、互斥量的接口 1.2.2、互斥量接口的使用 1.2.3、…

【GVN】AWZ算法

AWZ算法的例子依旧来自于RKS的这篇文章《Detecting Equalities of Variables: Combining Efficiency with Precision》。 上面两个图,进行的是如下图所示的循环结构的等价类计算。 为什么得到的结果不是上图而是下图呢?这里其实是因为用到的AWZ的算法…

HBuilder使用虚拟机

按文档的连接一直不成功 没找到Simulator,原来是因为我电脑之前没安装过虚拟机版本 安装模拟器Simulator | uni-app官网 找到settings,左下角安装需要的对应版本的虚拟机就好了,然后重启hb

ubuntu下安装 git 及部署cosyvoice(2)

上一节已经可以了一部分。这一节&#xff0c;主要是让他动起来。 1.第一个错误 (cosyvoice) duyichengduyicheng-computer:~/gitee/CosyVoice$ python webui.py Traceback (most recent call last): File "webui.py", line 17, in <module> import grad…

16S,18S引物覆盖度测试:SILVA和PR2

16S 进入网站&#xff1a;https://www.arb-silva.de/search/testprime/ 填写引物和错配阈值 结果进入&#xff1a;Inspect Results inTaxonomy Browser 18S 进入网站&#xff1a;Primer database 进入&#xff1a;Test your primer set 可选择感兴趣的物种group&#xff0c;红…

【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

middleware中间件概述

中间件定义 中间件&#xff08;middleware&#xff09;是基础软件的一大类&#xff0c;属于可复用软件的范畴。顾名思义&#xff0c;中间件处在操作系统、网络和数据库之上&#xff0c;应用软件的下层&#xff08;如图 15-1 所示&#xff09;​&#xff0c;也有人认为它应该属…

大模型 | 2024年中国智能算力行业白皮书 | 附PDF免费下载

智能算力&#xff0c;是数字经济发展的重要基础性资源。由于美国的科技禁运政策与国内人工智能技术差距&#xff0c;我国在实现智算资源完全国产化的道路上仍需努力。为了谋求可用算力资源在物理空间的释放和高效利用&#xff0c;国家层面持续推进“东数西算”工程&#xff0c;…

面试题之---解释一下原型和原型链

实例化对象 和普调函数一样&#xff0c;只不过调用的时候要和new连用&#xff08;实例化&#xff09;&#xff0c;不然就是一个普通函数调用 function Person () {} const o1 new Person() //能得到一个空对象 const o2 Person() //什么也得不到&#xff0c;这就是普通的…

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况&#xff08;拓展&#xff09;1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…

飞凌嵌入式FET527N-C核心板现已适配Android 13

飞凌嵌入式FET527N-C核心板现已成功适配Android13&#xff0c;新系统的支持能够为用户提供更优质的使用体验。那么&#xff0c;运行Android13系统的FET527N-C核心板具有哪些突出的优势呢&#xff1f; 1、性能与兼容性提升 飞凌嵌入式FET527N-C核心板搭载了全志T527系列高性能处…

Java static静态变量 C语言文件读写

1. &#xff08;1&#xff09; public class test1 {public static void main(String[] args) {javabean1.teachername"jianjun";//直接在类调用&#xff0c;方便一点点javabean1 s1 new javabean1();s1.setName("liujiawei");s1.setAge(18);s1.setGend…

Linux驱动开发(4):Linux的设备模型

在前面写的驱动中&#xff0c;我们发现编写驱动有个固定的模式只有往里面套代码就可以了&#xff0c;它们之间的大致流程可以总结如下&#xff1a; 实现入口函数xxx_init()和卸载函数xxx_exit() 申请设备号 register_chrdev_region() 初始化字符设备&#xff0c;cdev_init函数…

MYSQL隔离性原理——MVCC

表的隐藏字段 表的列包含用户自定义的列和由系统自动创建的隐藏字段。我们介绍3个隐藏字段&#xff0c;不理解也没有关系&#xff0c;理解后面的undo log就懂了&#xff1a; DB_TRX_ID &#xff1a;6 byte&#xff0c;最近修改( 修改/插入 )事务ID&#xff0c;记录创建这条记…

鸿蒙next打包流程

目录 下载团结引擎 添加开源鸿蒙打包支持 打包报错 路径问题 安装DevEcoStudio 可以在DevEcoStudio进行打包hap和app 包结构 没法直接用previewer运行 真机运行和测试需要配置签名,DevEcoStudio可以自动配置, 模拟器安装hap提示报错 安装成功,但无法打开 团结1.3版本新增工具…

计算机毕业设计Python+大模型斗鱼直播可视化 直播预测 直播爬虫 直播数据分析 直播大数据 大数据毕业设计 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【Vue】Vue3.0(二十)Vue 3.0 中mitt的使用示例

上篇文章 【Vue】Vue3.0&#xff08;十九&#xff09;Vue 3.0 中一种组件间通信方式-自定义事件 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月11日12点23分 文章目录 一、mitt 在…

显示器接口种类 | 附图片

显示器接口类型主要包括VGA、DVI、HDMI、DP和USB Type-C等。 VGA、DVI、HDMI、DP和USB Type-C 1. 观察 VGA接口:15针 DP接口&#xff1a;在DP接口旁&#xff0c;都有一个“D”型的标志。 电脑主机&#xff1a;DP(D) 显示器&#xff1a;VGA(15针) Ref https://cloud.tenc…

什么是数据平台?10 个值得了解的大数据平台示例

目前尚不清楚普通的 “数据” 是何时变成了 “大数据”。后一个术语可能起源于 20 世纪 90 年代的硅谷推介会和午餐室。更容易确定的是数据在 21 世纪是如何爆炸式增长的&#xff08;据估计&#xff0c;到 2025 年&#xff0c;人类每天将产生 463 EB的数据&#xff09;&#xf…

2024最新版JavaScript逆向爬虫教程-------基础篇之Chrome开发者工具学习

目录 一、打开Chrome DevTools的三种方式二、Elements元素面板三、Console控制台面板四、Sources面板五、Network面板六、Application面板七、逆向调试技巧7.1 善用搜索7.2 查看请求调用堆栈7.3 XHR 请求断点7.4 Console 插桩7.5 堆内存函数调用7.6 复制Console面板输出 工欲善…