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.mzph.cn/bicheng/60581.shtml

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

相关文章

计算机视觉 ---图像模糊

1、图像模糊的作用: 减少噪声: 在图像获取过程中,例如通过相机拍摄或者传感器采集,可能会受到各种因素的干扰,从而引入噪声。这些噪声在图像上表现为一些孤立的、不符合图像主体内容的像素变化,如椒盐噪声&…

串口DMA接收不定长数据

STM32F767—>串口通信接收不定长数据的处理方法_stm32串口超时中断-CSDN博客 STM32-HAL库串口DMA空闲中断的正确使用方式解析SBUS信号_stm32 hal usart2 dma-CSDN博客 #define USART1_RxBuffSize 100 extern DMA_HandleTypeDef hdma_usart1_rx; //此处声明的变量在…

web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面

创建配置文件: 创建那几个目录及文件,并且写内容: 为网卡ens160添加一个 IPv4 地址192.168.234.199/24: 再重新激活一下网卡ens160: 重启服务: 关闭防火墙、改宽松模式: 查看nginx端口监听情况:…

Jmeter中的监听器(二)

5--JSR223 Listener 用途 自定义数据处理:使用脚本语言处理测试结果,实现高度定制化的数据处理和分析。实时监控:实时处理和显示测试结果。集成外部系统:将测试结果发送到外部系统进行进一步处理和分析。日志记录:记…

计算机组成原理——进位计数制

1.认识不同进制 通常的我们日常生活中用到的都是十进制,比如买东西或者期末成绩等等,当然肯定不止这一种进制方法,相关的还有二进制、八进制、十六进制,还有古罗马数字,通常古罗马数字近似可以看作是五进制的数&#x…

function and task

任务和函数 在Verilog语言中提供了任务和函数,可以将较大的行为级设计划分为较小的代码段,允许设计者将需要在多个地方重复使用的相同代码提取出来,编写成任务和函数,这样可以使代码更加简洁和易懂。 1.1任务 任务的定义 任务定义…

【C++】用红黑树封装set和map

在C标准库中,set容器和map容器的底层都是红黑树,它们的各种接口都是基于红黑树来实现的,我们在这篇文章中已经模拟实现了红黑树 ->【C】红黑树,接下来我们在此红黑树的基础上来看看如何封装set和map。 一、共用一颗红黑树 我…

类与实例

1 问题如何理解类与实例? 2 方法 类与实例 类(class)的概述:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类是一类事物,实例是具体的一个事物。 编程与生活是相通的&#xff0…

2024/11/4 计网强化

10: 17: 22: 09: 11: 12: 13: 14: 15: 18: 19: 20: 21: 16:

力扣104 : 二叉树最大深度

补:二叉树的最大深度 描述: 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 何解? 树一般常用递归:递到叶子节点开始倒着处理

机器情绪及抑郁症算法

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月12日17点02分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17230869054974 计算机来理解你的情绪&a…

JAVA学习日记(十五) 数据结构

一、数据结构概述 数据结构是计算机底层存储、组织数据的方式。 数据结构是指数据相互之间以什么方式排列在一起的。 数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。 二、常见的数据结构 (一)栈 特点&…

i春秋-SQLi(无逗号sql注入,-- -注释)

练习平台地址 竞赛中心 题目描述 后台有获取flag的线索应该是让我们检查源码找到后台 题目内容 空白一片 F12检查源码 发现login.php 访问login.php?id1 F12没有提示尝试sql注入 常规sql注入 //联合注入得到表格列数 1 order by 3 # 1 union select 1,2,3 #&#xff08…

sql注入之二次注入(sqlilabs-less24)

二阶注入(Second-Order Injection)是一种特殊的 SQL 注入攻击,通常发生在用户输入的数据首先被存储在数据库中,然后在后续的操作中被使用时,触发了注入漏洞。与传统的 SQL 注入(直接注入)不同&a…

nginx 部署2个相同的vue

起因: 最近遇到一个问题,在前端用nginx 部署 vue, 发现如果前端有改动,如果不适用热更新,而是直接复制项目过去,会404 因此想到用nginx 负载两套相同vue项目,然后一个个复制vue项目就可以了。…

MySQL:CRUD

MySQL表的增删改查(操作的是表中的记录) CRUD(增删改查) C-Create新增R-Retrieve检查,查询U-Update更新D-Delete删除 新增(Create) 语法: 单行数据全列插入 insert into 表名[字段一,字段…

centos7 node升级到node18

使用jenkins发布vue3项目提示node18安装失败 错误日志: /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node18/bin/node: /lib64/libm.so.6: version GLIBC_2.27 not found (required by /var/lib/jenkins/tools/jenkins.plugins.node…

万字长文解读深度学习——ViT、ViLT、DiT

文章目录 🌺深度学习面试八股汇总🌺ViT1. ViT的基本概念2. ViT的结构与工作流程1. 图像分块(Image Patch Tokenization)2. 位置编码(Positional Encoding)3. Transformer 编码器(Transformer En…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件:若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类,对Excel大…

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个: 1. npm (Node Package Manager) 简介: npm 是 Node.js 的默认包管理器,也是最广泛使用的包…