这篇文章是哈深和香港理工大学合作的文章,来自CVPR2019,任务是去噪。上周看的Noise2Void针对高斯噪声改进方法减少了训练所需数据,CBDNet这篇文章针对的则是模型在真实噪声上效果差的问题,使得去噪不再局限于较理想化的高斯噪声。
CNN去噪模型的效果很大程度上取决于合成噪声和实际噪声的分布是否匹配,于是本文的去噪模型分为两阶段——第一阶段进行噪声估计,第二阶段将噪声估计结果与噪声图一并作为输入进行非盲去噪。
噪声建模
对噪声进行建模是为了生成去噪网络的训练集,建模越趋近真实噪声后续去噪效果也便越好。
如下图两式,本文用的是异方差高斯分布,方差分成了依赖于信号的 和平稳噪声部分 ,其中 就是之前模型中独立于信号,建模成高斯白噪声那部分。公式中的L是辐照度图。
其次,进一步考虑了相机的处理流程,在L+n(L)加噪声后,DM是一种原本用于去马赛克的插值方法,用它的目的是使噪声空间和颜色相关,从而增加噪声的复杂性,f则是相机响应函数,负责将辐照度转换为像素值,最后还考虑了JPEG图像的压缩。
网络结构
如图,本文的模型是两阶段的,整个去噪网络分为噪声估计和去噪网络两部分。
噪声估计网络CNNE由5个FCN组成,没有池化层或BN。
首先,噪声估计子网络将输入噪声图转换为估计的噪声水平图(noise level map)σ^(y) 。使用FCN进行噪声估计后,输出的noise level map与噪声图尺寸一致,加上简单起见所以没再对其进行调整,直接作为噪声估计结果送至下阶段网络。这部分网络是通过已知噪声水平的合成图像进行监督训练的。非盲去噪网络CNND采用的则是U-Net+残差的结构。
损失函数
如上图,损失函数主要分三部分。
(1)Lrec是重建损失(Reconstruction Loss),最简单最常用的模型输出与标签的L2。
(2)非对称损失(Asymmetric Loss)。定义如下式。
这个损失的用意在于:作者通过实验发现非盲去噪方法(如BM3D、FFDNet等)对噪声估计的误差具有“非对称敏感性”。具体来说,实验上分别用BM3D和FFDNet使用不同的输入噪声标准差去噪(标准差依次设为5、10、15、25、35、50),当估计噪声的标准差与真实噪声的标准差一致时,去噪效果最好。当预估噪声标准差低于真实值时,去噪结果就含有可察觉的噪声;但是预估噪声标准差高于真实值时,去噪结果仍能保持较好的结果。总结下来就是,非盲去噪方法对低估误差比较敏感,而对高估的误差处理得较好。
回到损失公式,前半部分绝对值号以内是条件权重,根据我们前面的讨论,网络估计出的噪声水平小于Ground Truth真实噪声水平即 时,误差较大,因此这个条件权重就是噪声水平小得越多权重越大,loss越大;后半部分就是预估噪声水平矩阵和Ground Truth的MSE。
(3)全变分损失(Total Variation Loss)。全变分模型本身是去噪任务中依靠梯度下降流对图像进行平滑的模型,motivation是要在图像内部尽可能对图像进行平滑(相邻像素的差值较小),而在图像边缘(图像轮廓)尽可能不去平滑。这里是用在噪声level map上,个人认为是通过使临近区域保持相近的噪声程度的方法来提升增强结果质量。因为反过来想,临近区域存在噪声程度突变的话,这种突兀会带来明显的视觉效果降低。
实验
值得关注的是噪声建模方面的对比,同样使用CBDNet的网络结构,相对于只考虑较理想化的高斯白噪声(CBDNetG),将其拓展为非均匀高斯模型(HG),再加上考虑相机的内置处理流程(ISP)、JPEG压缩影响,效果更好比较合理。
上图为Nam数据集上的测试结果,从表上看效果最佳。另一个列表展示效果的测试数据集只有50对,说服力不算强。
总结
文章最大的亮点是提升了真实噪声图的处理效果,为达到这个目的,主要采用了三个策略:
(1)噪声建模方面,不再采用简单的白高斯噪声模型,用了异方差高斯分布,又考虑了相机内置处理流程和JPEG压缩过程,使得噪声模型更复杂、更接近实际。
(2)针对之前的非盲去噪方法误差上有“非对称敏感性”这一点,通过非对称损失进行了改进。
(3)使用合成图像和真实噪声图交替进行训练。
缺点:相较于新一些的模型效果提升不算特别大。另外有一个用于单独列表评价的数据集含量是50对,数据量不算大说服力不够强。