Learning to Restore Low-Light Images via Decomposition-and-Enhancement

Learning to Restore Low-Light Images via Decomposition-and-Enhancement

  • 论文链接:CVPR链接
  • 期刊/会议:CVPR 2020
  • 是否有code: Code

关键词

暗光图像增强,卖问题;

问题简述

Motiviation

这篇paper卖的问题很直接:作者认为目前大多数做暗光增强的方法,基本都无法同时完成提亮去噪这两个任务,这导致暗光增强的算法很难投入实际应用中,因为实际的低光照图像信噪比很低,其实受噪声影响很大。
同时,作者指出,简单地在前处理或者后处理步骤中加入降噪的缓解并不能很好的解决这个问题,因为降噪模型难以从极低的信噪比(即使先提亮,信息量也不会增加,即不能改善信噪比)中提取出有效的信息。(注:这句话是作者在原文中的意思,但笔者感觉有点牵强,因为笔者曾经尝试过MPR-Net与NB-Net等降噪方法,其实对于较暗的图像(环境照度5lux左右)仍有较好的降噪效果。)

Abstract

本文的作者从两个发现入手,设计了一个基于频域的两阶段(先频域分解decomposition,再增强enhancement)方法,同时完成了提亮和降噪两个任务。这两个观察是:

  • 对于图像来说,低频部分往往保存了更多的有效信息(例如颜色、物体轮廓等),而且相对高频信息来说,低频信息受噪声的干扰程度更少。这意味着,图像的低频部分的信噪比高于整张图像(整张图象会受到高频部分的拖累)。因此,对图像的低频部分进行降噪会更加容易;
  • 图像本征维数(intrinsic dimensionality,物理意义) 是很低的,图像的像元(image primitives,可以简单理解成图像的基本组成部分,像元是我乱翻译的:-) ) 本身种类并不多。这句话的意思作者没有详细讲,笔者尝试简单理解一下:我们以“纹理”这种像元举例,他本身的种类比较少,例如只有横条纹、竖条纹等几种,之所以能组成万千不同的图像,是因为他们的组合非常多。因此,网络经过训练之后,是可能把这些基本像元的类型全部都学习到的。此时,在低频信息的引导下,网络能够“无中生有”似的把高频信息给还原回来。(这其实很抽象,称之为“观察“倒不如说是“假设”,不过作者找了几篇文献作为背书,效果拔群。)

本文核心的主打的点就是这些,剩下的就是文章作者开始介绍本文所提出的方法,先来看看算法流程图:
Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第1张图片
核心的部分在ACE(Attention to Context Encoding)和CDT(Cross Domain Transformation)两个模块上,下面我们分别简单介绍。

方法介绍

Attention to Context Encoding Module

第一点观察提到对图像的低频部分信噪比相对较高,因此是有希望同时完成降噪和提亮两个任务的。因此ACE模块的目的就是模拟图像的频域分解过程,将图像特征中的低频特征高频特征的特征分离出来。先来看看ACE模块的框图:
Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第2张图片

如何进行“特征分解”

我们按照上面的框图进行解释。输入的特征 X i n X_{in} Xin,先经过了两个感受野不同的膨胀卷积的差分操作生成 C a C_a Ca
C a = s i g m o d ( f d 1 ( x i n ) − f d 2 ( x i n ) ) . (3) C_{a} = \mathit{sigmod}(f_{d1}(x_{in})-f_{d2}(x_{in})). \tag{3} Ca=sigmod(fd1(xin)fd2(xin)).(3)
这个操作的用以是用不同的感受野的卷积之间差分操作来模拟对比度的计算。一般来说,高对比度的像素或者小区域,更加可能属于图像的高频部分,例如一些明显的边缘等。因此, C a C_{a} Ca可以被认为代表了指出了图像特征中的高频部分的位置,用 C a C_a Ca去和 x i n x_in xin做元素乘法获得的 x c x_c xc,就可以理解为特征的高频部分,那么很自然的,用 C a ‾ = 1 − C a \overline{C_{a}}=1-C_{a} Ca=1Ca则能获取特征中低频部分 x c ‾ \overline{x_{c}} xc

是不是感觉有点扯?为了证明 x c x_{c} xc x c ‾ \overline{x_{c}} xc真的分别代表图像特征的高频和低频部分,作者用了几张图例来说明:
Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第3张图片
看上去确实是ok的,但是作者没有提到是如何从特征可视化为图例的,有点可惜。光提取出 x c ‾ \overline{x_{c}} xc还不够,为了增强特征的表示能力,ACE模块还引入了类似于Non-Local的结构(详情可以去看Non-Local文章,在此不做赘述)。

值得一提的是,本文所提出的方法有两个stage。每个stage都有一个ACE模块。其中stage1中的ACE模块所使用Mask是 C a ‾ \overline{C_{a}} Ca,stage2则是 C a C_a Ca.

Cross Domain Transformation Module

作者指出,对于低光照图像的全局属性对于后续的提亮任务来说非常重要。因此,这这设计了CDT模块,如下图所示:
Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第4张图片
图中 X e n X_{en} Xen X d e X_{de} Xde分别是U-Net网络中的Encoder和Decoder所对应的特征。那CDT模块到底有什么用呢?作者给出的解释是CDT模块是专门用来解决domain gap的。什么是domain gap呢,作者举了个例子,原文如下:
Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第5张图片
好吧,我必须得承认我还是没看懂。。。期待有缘人给我解释解释 。
与ACE模块类似,stage1中的CDT模块所使用Mask是 C a ‾ \overline{C_{a}} Ca,stage2则是 C a C_a Ca.

损失函数

损失函数部分,本文使用了L2损失(为什么不是L1损失?)+感知损失。其中L2损失引入了一个额外的监督信息:
L a c c = λ 1 ∣ ∣ C − I f g t ∣ ∣ + λ 2 ∣ ∣ I c − I g t ∣ ∣ (3) L_{acc} = \lambda_{1}||C-I_{f}^{gt}||+\lambda_{2}||I^c-I^{gt}|| \tag{3} Lacc=λ1CIfgt+λ2IcIgt(3)
式中 C , I c , I f g t , I g t C,I^c,I_f^{gt},I^{gt} C,Ic,Ifgt,Igt分别是重建的图像内容(reconstructed image content,其实就是重建的"低频信号"),最终得到的完整图像,重建的“低频信号”的真值以及完整图像的真值。 I f g t I_f^{gt} Ifgt是通过 I g t I^{gt} Igt用引导滤波获取的。

数据集

除了上面所述方法之外,本文的另外一个贡献点就是提出了一个数据集。有点特殊的是,这个数据集源数据来自SID数据集。但是作者指出,SID数据集训练数据是Raw数据对。而本文则在SID的基础上,对SID的Raw数据对上通过“Exposure Compensation”,“White balance”,“De-linearization”三个步骤,将Raw数据对转化为了sRGB数据对。

实验结果

与其他的暗光增强方法之间的主观对比

这真是没什么可解释的了,直接看下图就可以了

定量分析

Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第6张图片

Component Analysis

Learning to Restore Low-Light Images via Decomposition-and-Enhancement_第7张图片
作者分贝分析了ACE模块和CDT模块的重要性。除此之外,还对比了将ACE模块替换成原始Non-Local模块的效果以及将CDT模块替换成ACE模块的效果。

总结

这篇paper的质量相对来说一般。
优点

  • 指出了暗光增强方法无法处理带噪图像的事实。提出了一个能够同时进行提亮和降噪的暗光增强新方法;

缺点

  • 作为一篇CVPR的文章,主打的“故事”有点牵强。
  • 没有对比计算量或者计算计算速度。

参考文献

本文基本均为原创

你可能感兴趣的:(CV算法,计算机视觉,人工智能,深度学习)