旷视科技|商用端侧Raw图像降噪方案

时间:2022-07-24
本文章向大家介绍旷视科技|商用端侧Raw图像降噪方案,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

标题&作者团队

【Happy导语】该文是旷视科技的研究员提出的一种“商用端侧RAW图像降噪”方法,相应方法已被广泛应用到OPPO、小米等手机中。从笔者角度来看,该文最大的创新点当属噪声参数参数估计部分的推导,它将噪声可变模型转换成了噪声固定模式,这样就可以做到“一个模型处理不同噪声水平”;当然作者所设计的端侧友好网络架构也是非常有启发性的。想想笔者前两个月还跟小伙伴提到可以做一个传感器相关的图像复原模型呢,所以这个思路不单单适用于降噪,其他图像复原任务同样适合哦,对此感兴趣的同学可以后台与Happy一起讨论哈。

Abstract

近年来,基于深度学习的图像降噪方法取得了前所未有的成功,同时在多个公开数据集上“霸榜”。然而,这些SOTA方法往往存在计算量过大,难以直接部署在手机端。为解决上述问题,该文作者提出一种轻量型、高效网络用于RAW图像降噪,它可以很好的在主流手机设备上运行,同时生成高质量的降噪结果。该文方法成功的关键有两点:

  • 通过度量与估计传感器的噪声水平,传感器相关的合成数据上训练的小模型即可取得超越通用数据上的大模型的效果;
  • 不同ISO下的噪声方差可以通过一种新颖的k-Sigma变换移除,这使得小模型可以处理更宽范围的噪声。

作者通过充分的实验验证了所提方法的有效性,所提方法在可以高通骁龙855平台上以约70ms的速度处理百万像素图像,它也是2019年几款智能机中超级夜景的核心算法。

Method

在这部分内容中,我们首先来看一下通用ISO相关噪声模型,然后描述如何估计给定传感器的噪声参数,接下来再介绍一下如何采用k-Sigma变换制作ISO独立训练数据,并用之训练轻量型模型。

The Noise Model

上图给出了传感器成像示意图,它包含多个阶段,每个阶段均会引入特定的噪声。首先我们来看一下理想无噪情况,此时有这样的线性变换关系:

x^{*} = g alpha u^{*}

其中

u^{*}, alpha

分别表示单位面积上的期望光子数与转换因子。接下来,我们再看一下系统噪声模型:

x = g(alpha u + n_d) + n_r

其中

u

表示实际接收到的光子,

n_d, n_r

分别表示增益前高斯噪声与增益后高斯噪声。已有研究表明:

u

服从泊松分布:

组合上述公式即可得到如下公式:

上式还可以进行更进一步的简化如下:

其中

k, sigma^2

均与g相关,受ISO设置影响。

Parameter Estimation

为更好的进行噪声采样,我们需要对上述参数

k, sigma

进行精确估计(注:特定传感器)。幸运的是,作者将上述问题转换成了如下线性回归问题:

有了上述关系,我们可以对raw图像数据进行统计(见下图a),统计不同亮度下的

E(x)

;然后统计相同亮度下的像素值(见下图b),计算方差

Var(x)

,最后进行线性回归建模(见下图c)得到噪声参数

k, sigma

The k-Sigma Transform

在实际应用中,相机会根据场景亮度自动调整ISO,因此我们有必要考虑不同噪声水平的降噪问题。一种直接的方案是单模型处理所有ISO设置的噪声,但这个模型会非常大。

为解决上述问题,作者提出一种新颖的k-Sigma变换。我们定义线性变换公式如下:

按照前述噪声模型,此时有:

为更好的分析上述分布,一种常用的简化方法是将泊松分布视作高斯分布

N(lambda, lambda)

。因此,

组合上述公式即可得到

f(x)

的近似分布:

简化后的分布意味着

f(x)

的分布仅与

f(x^{*})

有关。因此,正如下图所示,我们可以采用一个简单的ISO特定的降噪模型+k-Sigma变换达成ISO可变的降噪过程。

Learning to Denoise

接下来,我们就要介绍一下该文所提出的轻量型降噪网络了,见下图。很明显,作者所设计的降噪模型就是一种简单但带残差连接的UNet架构,其中UNet部分包含4个encode以及4个decoder。

为确保降噪模型可以更好的运行在手机端,作者采用分离卷积以降低计算量,常规卷积仅在网络的头和尾部应用。在encoder部分,作者采用

5 times 5

卷积提升感受野并降低网络深度,下采样模块则采用stride=2的卷积;在decoder部分,作则会采用

3times 3

分离卷积,上采样模块则采用

2times 2

反卷积。对应的encoder与decoder通过残差连接方式进行特征融合,在融合之前先对encoder特征采用

3times 3

分离卷积进行通道维度对齐。最后,将所学习到的残差与输入图像相加即可得到降噪结果。

Experiments

为训练所提降噪模型,需要成对的RAW图像数据。作者采用SID的子集作为GT,然后按照前述噪声模型制作合成噪声数据(注:在合成数据之前需要先进行传感器参数估计)。对生成的数据随机crop成

1024times 1024

大小的块,同时采用了bayer-aug数据增光方法。在训练过程中,损失函数为

l_1

,优化器为Adam,最大学习旅为0.001,采用cyclical学习调整机制。Batch=1,合计训练8000x214迭代。

在真实数据方面,作者选用OPPO Reno-10x智能手机主摄拍摄图像进行测试。该传感器为索尼IMX586,分辨率为4800W(注:该传感器是2019年旗舰手机主流传感器,包含OPPO的Reno系列,小米9等)。

上图给出了ISO-4800时的传感器参数估计信息,可以看到理论噪声模型可以与真实传感器信息很好的拟合。基于此,我们可以更好的合成噪声数据进行模型训练。

由于所提降噪方法与传感器相关,所以无法直接采用公开数据集(SIDD)进行模型训练。因此,作者构建了一个测试集一测试所提降噪方案。下图给出了测试集的场景示意图,更多关于测试集制作方法建议查阅原文,这里略过不计。

在模型评价方面,作者选用了PSNR、SSIM指标(注:在进行评价指标先进行了简单的后处理,包含白平衡校正、去马赛克、颜色校正、伽马校正等,这些校正信息丛RAW数据中获取)。

上图给出了该文所提方法与旷视科技2019年冠军方法的对比。可以看到:精确的噪声模型辅助下,轻量型降噪模型可以去的媲美大型网络的性能。下表还给出了不同降噪模型在高通骁龙855GPU上的推理耗时对比,所提方法可以以70ms的速度处理

1024times 1024

大小的输入;而其他同性能的方法则需要更多的耗时,这使得相应方法难以真正的部署到手机端。

最后,作者给出了所提方法在真实场景的降噪效果对比。全文到此结束,更多实验结果与分析建议查看原文。

Conclusion

该文的关键洞察在于:特定传感器的噪声特性具有一致性,可以进行精确估计。基于此,作者制作了传感器相关的合成数据用于轻量型模型训练,所得模型可以有效的处理同类型传感器采集的图像梳理。

在此基础上,作者还推导出一种亮度空间的线性变换(k-Sigma变换),它可以将不同ISO设置下的噪声映射到ISO不变信号-噪声空间,进而使得单模型可以处理不同噪声水平的不同场景。

总而言之,该文的主要贡献包含以下几点:

  • 提出了一种传感器相关合成数据制作方案,并用于训练轻量型降噪模型;
  • 提出一种新颖的k-Sigma变换用于将不同ISO设置下的噪声映射到ISO不变信号-噪声空间;
  • 提出一种端侧友好的轻量型模型用于图像降噪。