Unprocessing Images for Learned Raw Denoising

今天介绍谷歌发表在 2019 CVPR 上的一篇文章,Unprocessing Images for Learned Raw Denoising,这篇文章主要为了解决数据构造的问题,简单来说,就是将 ISP 的流程逆过来,从 sRGB 图像变到 RAW 图,然后进行模型训练,从而达到降噪的过程。

我们都知道,基于机器学习的图像处理技术,比如降噪,超分等,对数据的分布比较敏感,如果测试数据和训练数据的分布类似,那么效果会很理想,反之,如果测试数据的分布和训练数据差别比较大,那么效果就会出现差异,所以,现在基于深度学习的图像处理技术,对数据的构造是非常重要的一个环节,一个模型好不好,很多时候,依赖于训练数据的质量。文章也指出,很多 paper 由于只训练了理想的数据,或者说和实际环境偏差很大的数据,往往导致这样的模型,遇到实际场景的时候,不能很好的 work。

这篇文章主要讲去噪,在深度学习成为越来越主流的今天,这篇文章也不能免俗,不过这篇文章的重点不在于讲如何构造网络模型,这篇文章的重点在于介绍如何构造符合实际环境的训练数据,之前的方法,都是直接对 RGB 图像进行加噪,然后训练模型,这篇文章,不仅仅对 RGB 图像进行噪声模拟,而是对全 ISP 通路进行了分析,然后将 RGB 图像,沿着逆 ISP 通路,直接生成 RAW 图,文章作者指出,这样构造的训练数据,更加贴近真实场景拍摄的数据,利用这些数据训练的模型,会得到更好的降噪效果。

RAW Image Pipeline

现在的手机或者单反,都力图在图像中将真实世界还原地和人眼感知的一样,为了达到这个目的,需要将 sensor 获取的 RAW 图,进行一系列的变化处理,这个过程一般称为 ISP,这篇文章也是对 ISP 中的每个流程进行分析,并且力图找到每个变换的逆变换,如果从 RAW 图到最终的 RGB 图的每一步变换都已知,那么理论上来说,应该存在一个相应的逆变换,能将 RGB 图变换回 RAW 图, 这样就达到了将 RGB 图构造成相应的 RAW 图,从而进行训练网络训练的目的。

Shot and Read Noise

首先,降噪一般来说在 ISP 中都是比较重要的一个环节,降噪的前提是对噪声模型要有一个准确的估计,虽然说图像中的噪声模型一般是比较复杂,但是在 RAW 域中,噪声的分布还是有规律可循的,噪声在 RAW 域中主要有两大类,一类是 shot noise, 一类是 read noise,shot noise 主要和环境光照有关,read noise 主要和 sensor 中的电路系统有关,shot noise 一般是满足泊松分布的,而 read noise 一般是满足高斯分布的,这篇文章将这两种噪声结合在一起,并且假设 RAW 图的像素值满足如下的分布:

y∼N(μ=x,σ2=λread+λshotx)y \sim \mathcal{N}(\mu = x, \sigma^2 = \lambda_{read} + \lambda_{shot}x) y∼N(μ=x,σ2=λread​+λshot​x)

其中,参数 λread,λshot\lambda_{read}, \lambda_{shot}λread​,λshot​ 由 sensor 的数字增益和模拟增益决定,对于给定的数字增益 gdg_dgd​ 和模拟增益 gag_aga​,以及固定的 sensor 读出电路的方差 σr2\sigma_{r}^2σr2​,我们可以得到如下的关系:

λread=gd2σr2λshot=gdga\lambda_{read} = g_{d}^2 \sigma_{r}^2 \quad \lambda_{shot} = g_d g_a λread​=gd2​σr2​λshot​=gd​ga​

数字增益和模拟增益,一般是由 ISO 以及用户选择的曝光参数来确定的。

构造数据的时候,需要选择参数来模拟噪声,这篇文章将参数 λread,λshot\lambda_{read}, \lambda_{shot}λread​,λshot​ 写成某种分布的形式,

log⁡(λshot)∼U(a=log⁡(0.0001),b=log⁡(0.012))log⁡(λread)∣log⁡(λshot)∼N(μ=2.18log⁡(λshot)+1.2,σ=2.6)\log(\lambda_{shot}) \sim \mathcal{U}(a=\log(0.0001), b=\log(0.012)) \\ \log(\lambda_{read}) | \log(\lambda_{shot}) \sim \mathcal{N} (\mu = 2.18 \log(\lambda_{shot}) + 1.2, \sigma = 2.6 ) log(λshot​)∼U(a=log(0.0001),b=log(0.012))log(λread​)∣log(λshot​)∼N(μ=2.18log(λshot​)+1.2,σ=2.6)

从上面的分布中,抽取参数,进而构造噪声。

Demosaicing

ISP 流程中,去马赛克也是一个重要环节,因为绝大多数的 sensor 都是 Bayer 模式的,所以每个像素在 RAW 图上只有一个通道,一般来说,是按照 R, G, G, B 的方式排列,为了得到彩色图像,需要对 RAW 图进行去马赛克的操作,所以马赛克的逆操作,就是一个降采样的过程,这个相对来说比较简单,就是对每个通道进行降采样。

Digital Gain

ISP 中,会有一个数字增益,对整体的图像亮度乘以一个 gain 值,以提升图像的整体亮度,这个增益在不同的相机 ISP 中,值会不一样,很难找到普适规律,文章作者认为可以寻找一个全局的 scale 值来代替这个 gain 值,假设图像的像素值服从如下的指数分布:

p(x;λ)=λe−λxp(x; \lambda) = \lambda e^{-\lambda x} p(x;λ)=λe−λx

对 λ\lambdaλ 的最大似然估计,就等于样本均值的倒数,文章统计了一些数据集,定下了一个 gain 值为 1.25,那么其倒数为 0.8,不过为了体现一定的鲁棒性,文章没有用一个定值,而是利用了一个高斯分布,均值为 0.8, 方差为 0.1,对这个分布进行采样,最后得到的 scale 值范围在 [0.5,1.1][0.5, 1.1][0.5,1.1] 之间。

White Balance

白平衡也是 ISP 流程中比较重要的一个环节,sensor 记录的是环境的照度,人类视觉经过漫长的进化,对环境的光线感知有一套自己的适应系统,为了让最后的成像能符合人眼的感知,一般需要做一个白平衡校正,简单来说就是 R,G,B 三个通道分别乘以不同的 gain 值,不过一般 G 通道 gain 值 为 1,所以主要是看R,B 通道的概念值,一般相机系统的白平衡也是很难估计的,这为构造数据也带来了调整,不过文章提到所用的数据库记录了白平衡的 gain 值,文章用到的数据库,其 R 通道的gain值范围是 [1.9,2.4][1.9, 2.4][1.9,2.4],B 通道的 gain 值是 [1.5,1.9][1.5, 1.9][1.5,1.9] , 构造数据的时候,从 digital gain 和白平衡 gain 值进行采样,将两者的乘积作为逆向变换的系数,不过作者发现,这样设置的参数一般乘积都小于 1,这样导致构造的数据都是不饱和的,不符合实际,文章作者构造了一个函数,以模拟饱和截断,

α(x)=(max⁡(x−t,0)1−t)2f(x,g)=max⁡(xg,(1−α(x))(xg)+α(x)x)\alpha(x) = \left( \frac{\max(x-t, 0)}{1-t} \right)^2 \\ f(x, g) = \max \left( \frac{x}{g}, (1-\alpha(x))(\frac{x}{g}) + \alpha(x)x \right) α(x)=(1−tmax(x−t,0)​)2f(x,g)=max(gx​,(1−α(x))(gx​)+α(x)x)

其中 t=0.9t=0.9t=0.9,从上式可以看到,当 $ x \leq t $ 的时候,f(x,g)=xgf(x, g) = \frac{x}{g}f(x,g)=gx​,当 x=1x = 1x=1 的时候,f(1,g)=1f(1, g) = 1f(1,g)=1

Color Correction

色彩校正,就是将 RAW-RGB 变成 sRGB 的过程,一般都是通过一个 3×33 \times 33×3 的矩阵来实现的,文章也是基于数据库提供的 CCM 来实现的。

Gamma Compression

gamma 校正,就是一个非线性的变换的过程,因为人眼视觉对暗区的对比度变化比较敏感,所以一般会有一个对暗区像素提升的过程,文章里用到的 gamma 变换是一个标准的变换式:

Γ(x)=max⁡(x,ϵ)1/2.2\Gamma(x) = \max(x, \epsilon )^{1/2.2} Γ(x)=max(x,ϵ)1/2.2

那么构造训练数据,就是应用一个反变换:

Γ−1(y)=max⁡(y,ϵ)2.2\Gamma^{-1}(y) = \max(y, \epsilon)^{2.2} Γ−1(y)=max(y,ϵ)2.2

Tone Mapping

tone mapping 算法,就是进一步调整图像的对比度,一般 ISP 里面,都会用到比较复杂的 tone mapping 算法,这篇文章做了一个简单 tone mapping 算法,其逆变换也会相对简单:

S(x)=3x2−2x3S−1(y)=12−sin⁡(sin⁡−1(1−2y)3)S(x) = 3x^2 - 2x^3 \\ S^{-1}(y) = \frac{1}{2} - \sin \left( \frac{\sin^{-1}(1 - 2y)}{3} \right) S(x)=3x2−2x3S−1(y)=21​−sin(3sin−1(1−2y)​)

到这一步的时候,ISP 里面的主要步骤都已经做了,那么构造数据的时候,就是将上面的过程反过来走一遍,如下图所示:


文章指出,由于 RAW 图最终要经过 ISP 得到 sRGB 图像,所以 RAW 图经过降噪之后,也会经过 ISP,最终才和 ground truth 的 sRGB 进行比较,简单来说,这个模型不是在 RAW 域进行比较的,而是在 sRGB 域进行 loss 比较的。

RAW 域的降噪模型是典型的 U 型网络结构,不过输入除了 RAW 图的四个通道之外,还带有噪声估计的图,如下所示:

文章里面提到,用到的是 MIR Flickr extended dataset,预留了 5% 做 validation,5% 做 test,剩下的都用来训练了,为了减少其它的 artifacts,文章对图像先做了一个高斯模糊加 2X 的下采样,然后再进行数据的构造。

最后作者也在 Github 上发布了自己的仿真代码,有兴趣的可以去看看:

https://github.com/google-research/google-research/tree/master/unprocessing

论文解读:Unprocessing Images for Learned Raw Denoising相关推荐

  1. 《Unprocessing Images for Learned Raw Denoising》论文阅读

    摘要 当用于训练的数据与用于评估的数据相似时,机器学习技术最有效.这对于学习过的单图像去噪算法来说是正确的,这些算法应用于真实的原始相机传感器读数,但由于实际的限制,通常在合成图像数据上进行训练.虽然 ...

  2. Unprocessing Images for Learned Raw Denoising

    Abstract 当用于训练的数据与用于评估的数据相似时,机器学习技术最有效.这对于学习过的单图像去噪算法来说是正确的,这些算法应用于真实的原始相机传感器读数,但由于实际的限制,通常在合成图像数据上进 ...

  3. 【文献阅读与想法笔记13】 Unprocessing Images for Learned Raw Denoising

    想法核心 通过对相机图像处理管道的每一步进行建模和反转,将普通图像"未处理"成类似于真实相机传感器捕获的原始测量值的数据 "unprocessing" gene ...

  4. A Physics-based Noise Formation Model for Extreme Low-light Raw Denoising论文学习理解

    A Physics-based Noise Formation Model for Extreme Low-light Raw Denoising论文学习 Author: Kaixuan Wei Li ...

  5. 论文解读:High Dynamic Range and Super-Resolution from Raw Image Bursts

    论文解读:High Dynamic Range and Super-Resolution from Raw Image Bursts 今天介绍一篇发表于 2022 年 ACM Tranaction o ...

  6. 论文解读《Evaluating the visualization of what a Deep Neural Network has learned》–阅读笔记

    本文属于原创,转载请注明出处 *本论文解读的初衷: 1.由于某些原因,最近有关注到神经网络可解释性与可视化方向的发展. 2.本人习惯阅读优秀的博文后直接点赞收藏,而这篇却没有搜到相关解读,不知道是不是 ...

  7. 【论文解读】基于关系感知的全局注意力

    一.论文信息 标题:<Relation-Aware Global Attention for Person Re-identification> 作者:Zhizheng Zhang et ...

  8. CVPR 2018 论文解读集锦(9月26日更新)

    本文为极市平台原创收集,转载请附原文链接: https://blog.csdn.net/Extremevision/article/details/82757920 CVPR 2018已经顺利闭幕,目 ...

  9. CVPR 2018 论文解读 | 基于GAN和CNN的图像盲去噪

    作者丨左育莘 学校丨西安电子科技大学 研究方向丨计算机视觉 图像去噪是low-level视觉问题中的一个经典的话题.其退化模型为 y=x+v,图像去噪的目标就是通过减去噪声 v,从含噪声的图像 y 中 ...

  10. Nature论文解读:用于改善加权生物网络信噪比的网络增强方法

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

最新文章

  1. shell按长度排序
  2. 使用Cordova打包Vue项目为IOS并使用XCode提交到AppStore
  3. Inherits、CodeFile、CodeBehind
  4. AI入门:不用任何公式把推荐系统讲清楚
  5. c语言继续程序指令,C语言预处理程序
  6. 【NOI 2018】归程(Kruskal重构树)
  7. 2010年安大计算机录取名单,2021安徽大学考研拟录取名单已公布
  8. java2的7次方怎么表示_静态市盈率要怎么看?
  9. 京东方将首次向华为供应on-cell OLED面板 用于Mate 40系列
  10. Netty-1-一个简单的服务器实例
  11. HDU 4508 湫湫系列故事——减肥记I (2013腾讯编程马拉松初赛第一场)
  12. Linux下source ./bashrc出现的command not found: shopt问题
  13. java 基础--类与对象的创建,引用,static静态方法的创建与使用,static变量
  14. GHOST重装系统后分区丢失只剩C盘的数据恢复方法
  15. linux上复制文件命令是什么,Linux复制文件用什么命令怎么用
  16. International Journal of Intelligent Systems投稿经验分享
  17. c语言:输入三角形的边长求面积
  18. 如何利用亚马逊的底层逻辑是什么 寻找爆品搜索词排名?算法 it
  19. 蔡维德:区块链应用落地不是狼来了,而是老虎来了
  20. 即将发布个人网站大家呱唧呱唧

热门文章

  1. 千万不要用中文名当系统用户名,如果你用了,建议重置电脑
  2. RC时间常数 积分微分 耦合
  3. 通过修改环境变量修改当前进程使用的系统 Temp 文件夹的路径
  4. 项目不同阶段的风险特征
  5. php excel 公式,excel基本公式
  6. Boost Asio介绍
  7. html5播放音乐 wav,使用HTML5播放wav
  8. 树莓派linux led字符设备驱动(新字符设备)
  9. SOPC Builder failed to refresh PTF file
  10. MFC建立简单绘图板