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

摘要

当用于训练的数据与用于评估的数据类似时,机器学习技术最有效。这对于学习过的单图像去噪算法来讲是正确的,这些算法应用于真实的原始相机传感器读数,但因为实际的限制,一般在合成图像数据上进行训练。虽然从合成图像推广到真实图像须要仔细考虑相机传感器的噪声特性,图像处理管道的其余方面(如增益、颜色校订和色调映射)经常被忽略,尽管它们对原始测量数据如何转换成最终图像有重要影响。为了解决这个问题,咱们提出了一种经过反转图像处理管道的每一个步骤来反处理图像的技术,从而使咱们可以从广泛可用的互联网照片合成现实的原始传感器测量。此外,在评估咱们的损失函数时,咱们还对图像处理管道的相关组件建模,这使得训练可以意识到去噪后将发生的全部相关光度处理。经过对训练数据和模型输出进行反处理和处理,咱们能够训练出一个简单的卷积神经网络,它的错误率在Darmstadt Noise数据集上比以前的技术低14%-38%,快9-18,也适用于这个数据集以外的传感器数据。git

1、引言

传统的单图像去噪算法一般是对图像的性质及其要去除的噪声进行分析建模。相比之下,现代的去噪方法一般使用神经网络来学习从噪声图像到无噪声图像的映射。深度学习可以表示图像和噪声的复杂属性,可是训练这些模型须要大的成对数据集。所以,大多数基于学习的去噪技术依赖于合成训练数据。尽管在设计用于去噪的神经网络方面作了大量的工做,最近的基准测试代表,在对真实的噪声原始图像进行评估时,深度学习模型每每比传统手工设计的算法表现得更好。咱们认为,形成这种差别的部分缘由是不现实的合成训练数据。因为噪声是加性的、白噪声和高斯噪声的假设,许多经典算法对真实数据的推广效果不好。最近的工做已经发现了这种不许确性,并转移到更复杂的噪声模型,更好地匹配物理图像造成。可是,这些技术没有考虑典型图像处理管道的许多步骤。为了改善人工训练数据与真实原始图像之间的不匹配,一种方法是利用降噪算法所针对的同一摄像机捕获有噪声和无噪声的图像对。然而,捕捉噪声和无噪声的图像对是困难的,须要长时间曝光或多摄图像,以及后处理来应对相机的运动和照明变化。获取这些图像对既昂贵又耗时,而在训练神经网络时,为了防止过分拟合,须要大量的训练数据,这又加重了这个问题。此外,因为不一样的相机传感器表现出不一样的噪声特征,将一种学习去噪算法应用到新的相机传感器可能须要捕获新的数据集。算法

图1 来自Darmstadt噪声数据集的图像,其中咱们给出(a)噪声输入图像,(b)地面真值无噪声图像,(c)先前最早进算法的输出,以及(d)模型的输出。四幅图像均由原始Bayer空间转换为sRGB进行可视化。每一个结果旁边是三个裁剪的子图像,用最近邻插值渲染。更多结果见补充。编程

当适当建模时,合成数据是简单和有效的。数字传感器的物理特性和成像管道的步骤已经获得了很好的理解,能够利用它们从几乎任何图像中生成训练数据,只须要使用目标摄像机传感器的基本信息。提出了一种对图像处理管道关键部件建模的系统方法,对通常的互联网图像进行反处理以生成真实的原始数据,并将传统的图像处理操做集成到神经网络的训练中。在Darmstadt Noise数据集中对真实的噪声原始图像进行评估时,咱们的模型的错误率下降了14%-38%,比之前的技术水平快了9 -18个百分点。模型输出的可视化结果如图1所示。咱们的反处理和处理方法还能够在生成咱们的综合训练数据时,泛化没有明确建模设备捕获的图像。本文从如下几个方面展开:第2节对相关工做进行了回顾。在第3节中,咱们详细介绍了原始图像处理管道的步骤,并定义了每一个步骤的逆过程。在第4节中,咱们提出了将通常的网络图像处理为合成原始数据的反处理程序,修改训练损失以适应原始处理,训练咱们简单有效的去噪神经网络模型。在第5节中,咱们展现了咱们的模型在Darmstadt噪声数据集上的改进性能,并提供了一个消融研究,隔离了咱们方法的各个方面的相对重要性。网络

2、相关工做

单幅图像去噪一直是计算机视觉和图像处理领域的研究热点。经典的技术,如各向异性扩散、全变差去噪和小波核取心,在信号和噪声都表现出特定统计规律的前提下,使用手工设计的算法从噪声输入中恢复干净的信号。这些参数化模型虽然简单有效,但其容量和表达能力有限,这使得人们对BM3D和非局部均值等非参数、自类似性驱动的技术愈来愈感兴趣。从简单的分析技术向数据流方法的转变继续以词典学习和KSVD和专家领域等基本搜索算法的形式进行,这些算法经过查找稀疏性保持或统计规律建模良好的图像表示形式进行操做。在现代,大多数单图像去噪算法彻底是数据驱动的,由深度神经网络组成,通过训练能够从噪声图像回归到去噪图像。最经典的去噪工做是在图像噪声为加性、白噪声和高斯噪声的假设下进行的。该模型虽然方便、简单,但并不现实,光子到达传感器的随机过程更适合描述为“拍摄”和“读取”噪声。总体噪声能够更准确地建模为包含高斯和泊松信号相关份量或者从一个方差是强度函数的异方差高斯分布中采样。分析建模图像噪声的一种替代方法是使用真实的噪声和无噪声图像的例子。这能够经过捕捉由一对真实照片组成的数据集来实现,其中一张照片是短曝光,所以会产生噪声,而另外一张照片是长曝光,所以基本上没有噪声。这些数据集能够观察到,使用合成数据训练的最新技术被老模型(如BM3D)所超越。所以,最近的工做经过收集这些真实的、成对的数据显示出了进展,这些数据不只用于评估,并且用于训练模型。这些方法显示了巨大的但愿,但将这种技术应用于特定的相机须要大量的艰苦的收集与仅须要合成训练数据或校准参数的老技术相比,该摄像机的训练数据须要彻底对齐,大大增长了从业者的负担。此外,还不清楚该数据集采集程序如何用于捕捉小运动无处不在的对象,如水、云、树叶或生物。最近的研究代表,可使用同一场景的多个噪声图像做为训练数据而不是成对的噪声和无噪声图像,但这并无很大程度上减轻这些大型真实照片数据集的局限性或劳动要求。虽然人们广泛认为,在图像造成过程当中对噪声进行正确的建模是学习有效去噪算法的关键,一个较少被深刻探讨的问题是用于将原始传感器读数转换成最终图像的图像处理管道的影响。现代图像处理管道由几个步骤组成,这些步骤转换图像强度,从而影响输入噪声如何缩放或修改,以及最终呈现的图像如何做为原始传感器测量的函数出现。在这项工做中,当为咱们的模型合成训练数据时,咱们对这些步骤进行建模和反求,并证实这样作能够显著提升去噪性能。架构

3、方法

这部分描述了传统的图像处理流程,从传感器测量到最终成像的过程。app

3.1 :Shot and Read Noise

因为非线性和像素值之间的相关性,processed image中的噪声具备很是复杂的特性,可是raw sensor data(就是raw image)中的噪声就很是简单,主要是两种:框架

(1)“shot” noise:photon arrival statistics(光子到达统计)机器学习

Shot noise是一个泊松随机变量,其均值为真实光强(以光电子测量)函数

(2)“read” noise:imprecision in the readout circuitry (读出电路中的不精确)性能

Read noise是一个近似高斯随机变量,均值为零,方差固定。

将两种noise共同近似为单个异方差高斯分布,强度y视为随机变量,方差是真实信号x的函数:

 

 

是由传感器的模拟和数字增益决定( sensor’s analog and digital gains)。

gd: 数字增益。ga:模拟增益。σr2:就是read noise的固定方差。

为了选择合成图像的噪声水平,文中模拟了真实原始图像中不一样的shot/read noise参数对和来自该分布的样本的联合分布。

以Darmstadt Noise Dataset数据集为例,shot/read noise因子的合理采样程序是:

 

3.2:Demosaicing

传统相机传感器中的每一个像素由单个红色,绿色或蓝色滤色器覆盖,以Bayer模式排列,例如R-G-G-B。恢复图像中每一个像素的全部三种颜色测量的过程是一个去马赛克问题。

例如:Darmstadt数据集遵循双线性插值来执行去马赛克方式。

反转在这一步骤能够忽略,对于图像中的每一个像素,根据Bayer滤波器模式省略三个颜色值中的两个。

3.3:Digital Gain

相机一般会对图像强度应用数字增益,其中每一个图像的特定增益由相机的自动曝光算法选择。这些自动曝光算法一般是专有的“黑匣子”,而且对任意图像很难进行逆处理。可是要将这一步反转为一对合成和真实数据集。方法是找到一个全局缩放,它能匹配两个数据集中全部图像强度的边际统计。

为了产生这种缩放,假设真实和合成图像强度都来自不一样的指数分布:

对于x>0。尺度参数λ的最大似然估计简单地是样本均值的倒数,而且缩放x等于λ的逆缩放。这意味着能够经过使用两组样本均值的比率来匹配两组指数均为指数分布的强度。

使用合成数据和达姆施塔特数据集时,此缩放比率为1.25。

为了更全面的数据加强并确保咱们的模型在训练期间观察整个[0,1]的像素强度,,而不是应用这种恒定的缩放, 选择1/1.25=0.8为中心的正态分布中采样反向增益,标准差为0.1,致使反向增益大体跨越[0.5, 1.1]。

3.4:White Balance(WB白平衡)

相机记录的图像是场景中灯光颜色和物体的材料颜色的乘积。

相机管道的一个目标是消除一些照明效果,让图片看起来更加天然。

这是经过白平衡算法执行的,该算法使用启发式或统计方法估计图像的红色和蓝色通道的每通道增益。

从合成数据中反转此过程具备挑战性,由于与自动曝光同样,相机的白平衡算法是未知的,所以难以进行逆向工程。

然而,原始图像数据集(如达姆施塔特)记录了他们图像的白平衡元数据,所以能够经过简单地从该数据集中的白平衡增益的经验分布中采样来合成一些实际数据:[1.9,2.4]之间的红色增益和[1.5 , 1.9]中的蓝色增益,而后均匀,独立地采样便可。

当合成训练数据时,对inverse digital white balance gain进行采样,并将它们的乘积来得到每条通道的反向增益,这个反向增益就应用于合成的训练数据。反向增益的值是小于1,意味着,合成图像数据集缺乏高亮度(highlights)和没有剪切像素(clipped pixels)。

这是有问题的,由于正确处理饱和图像强度在去噪方面是很是重要的。

为了解决这个问题,应用一个高亮度保留变化函数f(x,g),其中当g≤1或对于一些阈值t = 0.9 x≤t时是线性的,可是当g > 1,x > t时是一个立方变换:

 

这个变换被设计成当x<=t时f(x,g) = x/g,当g<=1时f(1,g) =1,f(x,g)是连续可微的。这个函数用图形4表示。

图4 函数f(x,g)(定义在公式6中)咱们用于在保持高光的同时下降合成图像的强度x,获得一组具备表明性的增益{g}。

 

 

3.5:Color Correction

一般,相机传感器的颜色滤镜与sRGB颜色空间所指望的光谱不匹配。为了解决这个问题,相机将应用3x3色彩校订矩阵(CCM)将其本身的相机空间”RGB颜色测量值转换为sRGB值。达姆施塔特数据集由四个摄像头组成,每一个摄像头在执行色彩校订时都使用本身的固定CCM为了生成咱们的合成数据以便它将推广到数据集中的全部相机,本文对这四个CCM的随机凸组合进行采样,而且对于每一个合成图像,咱们应用采样CCM的逆采样以撤消颜色校订的效果。

3.6: Gamma Compression

因为人类对图像黑暗区域的渐变动加敏感,伽玛压缩一般用于将更多动态范围的比特分配给低强度像素。本文使用标准gamma曲线,同时注意将输入钳位到ε=10-8的伽马曲线,以防止训练期间数值不稳定:

在生成合成数据时,咱们应用此运算符的(略微近似,因为)逆。

图5 (a)来自MIR Flickr数据集的sRGB图像的每一个颜色通道的直方图;(b)按照第4.1节列举并在第3节详细说明的过程建立的未处理图像;(c)来自Darmstadt数据集的真实原始图像。注意,真实原始强度的分布和咱们的未加工强度是类似的。

 

3.7: Tone Mapping

高动态范围的图像须要极端的色调映射,即便是标准的低动态范围的图像,也常用s形曲线来处理,以匹配电影的特征曲线。能够执行更复杂的具备边缘感知的本地音调映射,可是对这种操做进行反向工程是困难的。所以,咱们假设色调映射是用一个简单的平滑步长曲线执行的,而且在生成合成数据时使用该曲线的逆。

其中,二者仅在[0,1]中的输入上定义。

4、训练

输入和GT是使用第三部分提出的相机管道逆处理过程获得的,

4.1:Unprocessing Training Images

为了生成真实的合成RAW数据,本文经过对图像处理转换顺序逆变来对图像进行反处理,如图2所示。这包括的逆变有,按顺序,色调映射(3.7节),应用伽玛解压(3.6节),将sRGB应用到相机RGB色彩校订矩阵(3.5节),以及逆变白平衡增益(3.4节)和数字增益(3.3节)。获得的合成RAW图像在训练期间用做无噪声真实情况,而且添加了shot和read噪声(第3.1节)以建立嘈杂的网络输入。咱们合成的RAW图像更接近真实的原始强度,如图5所示。

6.咱们模型的网络结构。网络输入是4通道噪声马赛克图像,与4通道噪声水平图链接,输出为4通道去噪马赛克图像。

 

4.2:Processing Raw Images

因为RAW图像在被查看以前最终要通过一个图像处理管道(ISP),所以咱们模型的输出图像在评估任何损失以前也应该受到这个管道的约束。所以咱们RAW处理应用到咱们的模型的输出,依次由应用白平衡收益(3.4),双线性去马赛克(3.2),应用色彩校订矩阵从相机RGB转换到sRGB(3.5),和gamma压缩(3.6)。这个简化的图像处理管道与Darmstadt噪声数据集基准中使用的管道相匹配,对于通常的图像管道是一个很好的近似。在计算损失以前,咱们将此处理应用于网络输出和地面真值无噪声图像。将这个管道合并到训练中,可让网络推断出下游处理将如何影响所需的去噪行为。

 

4.3:Architecture

输入:Bayer域中的噪声原始图像

输出:raw格式降噪图像

添加噪声:根据图像的shotread噪声参数,经过网络对输入图像中的噪声标准差进行逐像素估计。

输入为4通道,每一个通道对应于R-G-G-B拜耳平面

网络框架:U-Net。在编码器和解码器块之间具备相同规模的skip connect(详见图6),编码时采用盒下采样(box downsampling),解码时采用双线性上采样,PReLU激活函数。

网络预测:噪声残差。

4.4:Training

本文中的训练数据是本身合成的。从MIR Flickr扩展数据集的100万张照片开始,留出5%的数据集用于验证,5%用于测试。

使用高斯2x内核(σ= 1)下采样

训练图像尺寸为128x128

使用unprocessing steps来合成噪声和干净的原始训练对。

Adam,学习率为10^{-4}

本文训练了两个模型,一个针对sRGB错误度量的性能,另外一个针对RAW错误度量的性能。对于咱们的sRGB模型,在计算损失以前,网络输出和合成地面真值都被转换到sRGB空间,如4.2节所述。咱们“RAW”模型直接计算咱们的网络输出和咱们的RAW合成地面真值之间的损失,没有这个处理。对于这两种实验,本文都将输出图像与地面真值图像之间的L1损耗最小化。

5、结果

一、评估数据集:用了Darmstadt噪声数据集。

VST:方差稳定转换。表中为何有些算法没有+VST。文中给的解释是,由于这些算法加了VST比没加的效果更好,因此这里只列出效果好的形式。

由于在PSNR和SSIM上的相对改进很难判断,由于这两个指标都被设计成在错误变得很小时达到饱和。因此添加了括号中的指标

括号中是报告性能最好的模型相对于该模型的错误的相对减小,即经过将PSNR转换为RMSE,RMSE\alpha \sqrt{10^{-PSNR/10}}和SSIM到DSSIM ,(DSSIM = (1-SSIM)/2)

 

消融实验:

无CCM、WB、增益代表,在生成合成训练数据时,咱们没有执行sRGB对相机RGB CCM反演的反处理步骤,也没有对白平衡和数字增益进行反演。没有色调映射,Gamma表示咱们没有执行逆色调映射或Gamma解压缩的反处理步骤。没有反处理表示咱们没有执行任何反处理步骤,4 bigger表示咱们将每一个conv层的通道数量增长了3倍。Noise-blind是指没有将噪声电平做为输入提供给网络。AWGN代表,不使用咱们更现实的噪声模型当合成训练数据时,咱们使用的加性高斯白噪声σ在0.001~0.15之间均匀取样。没有残差输出代表咱们的模型架构直接预测输出图像,而不是预测添加到输入中的残差。

消融实验结果:

移除任何模型组件都会下降质量。性能对咱们的噪声建模最为敏感,由于使用高斯噪声会显著下降性能。反处理(Unprocessing)也有很大的贡献,尤为是在使用sRGB度量进行评估时,尽管它比实际的噪声模型稍微小一些。值得注意的是,增长网络大小并不能弥补unprocessing steps的缺失。惟一有效的消融研究是删除了神经网络架构的一个组件(残留输出块),致使最小的性能降低。

最后运行时间:能够看到运行时间很是快。

二、可视化效果

为了验证本文的方法是否适用于其余数据集和设备,文中对HDR+数据集的RAW图像去噪方法进行了评估。

 

图7 来自HDR+数据集图像,与图1相同的格式表示(a)有噪声的输入图像和(b)模型的输出。更多结果见补充。

 

6、总结

通俗的说,本文提出了一种方法,将普通的图片能够处理成相似于真实相机传感器捕获的原始测量数据(经过建模和反转相机图像处理管道的每一步)。神经网络对raw图像进行处理。这样就能够从互联网中获取大量的训练数据。

注:rRAW的原意就是“未经加工”。能够理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,能够把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。RAW格式的全称RAW Image Format,在编程中称之为原始。

其优点:

·RAW文件几乎是未通过处理而直接从CCD或CMOS上获得的信息,经过后期处理,摄影师可以最大限度地发挥本身的艺术才华。

·RAW文件并无白平衡设置,可是真实的数据也没有被改变,就是说做者能够任意的调整色温和白平衡,而且是不会有图像质量损失的。

·颜色线性化和滤波器行列变换在具备微处理器的电脑上处理得更加迅速,这容许应用一些相机上所不容许采用的、较为复杂的运算法则。

·虽然RAW文件附有饱和度、对比度等标记信息,可是其真实的图像数据并无改变。用户能够自由地对某一张图片进行个性化的调整,而没必要基于1、两种预先设定好的模式。

·也许RAW最大的优势就是能够将其转化为16位的图像。也就是有65536个层次能够被调整,这对于JPG文件来讲是一个很大的优点。当编辑一个图像的时候,特别是当你须要对阴影区或高光区进行重要调整的时候,这一点很是重要。