王萌萌,彭敦陆
(上海理工大学 光电信息与计算机工程学院,上海 200093)
在信息化时代,图像已经成为人们日常生活和工作中的重要角色.对很多计算机视觉任务来说,高质量的图像是非常重要的.但是由于受到拍摄环境和设备的限制,会导致亮度不足、清晰度大大降低、颜色失真等问题,从图像中获取的有效信息也会减少.所以提高低光照图像的质量,设计出有效的低光照图像增强器是非常必要的.这种增强技术具有广泛的应用范围,例如,可以用于各种智能系统中,视频监控、自动驾驶和智能手机中,以在低光照条件下获得高质量的图像.
在过去的几十年间,很多研究者已经注意到这个问题并力求找出有效的解决方法.基于直方图均衡化(HE)[1]的方法通过简单地约束输出图像像素值的动态范围来增加对比度,基于去雾算法的模型也被尝试用于增强低光照图像,基于Retinex[2]理论的传统方法通过使用调整的亮度图来恢复对比度.这些方法用来处理低光照图像的效果并不是非常好.因为它们通常专注于恢复亮度和对比度,往往忽略了噪声对图像质量的影响.由于对低光照图像的增强不仅需要有效地处理亮度、对比度,还需要考虑去除噪声和均衡颜色等问题,因此低光照图像增强仍然是一项艰巨的任务,开发一个实用的低光照图像增强系统也仍具有极大的挑战.
Retinex是一种很有效的低光照图像增强理论,所以本文以该理论为基础,同时注意到该理论和卷积神经网络相结合的一些方法在低光照图像增强领域也取得了不错的效果,认为这是一个值得进一步探索的方向,于是对其中一个性能优异的模型-Retinex-Net进行了分析,针对该模型的一些不足之处做出了一定的改进.经过Retinex-Net增强之后的输出结果,虽然亮度相比原始的低光图像得到了调整,但是噪声没有被有效降低,导致图像失真.本文结合Retinex理论和卷积神经网络,构建了一个用于低光照图像的增强系统,叫做Retinex-ADNet.实验表明可以较好地解决上述问题,本文的主要贡献可以总结为以下4个部分:
1)设计了一个编解码模块,引入了残差连接和空洞卷积,作为分解图像的子网络,能够尽可能地减少分解过程中的细节信息丢失,得到更准确的亮度图和反射图;
2)引入注意力机制设计了一个降噪模块,处理亮度图得到注意力图用来指导降噪,可以更有效地降低反射图上的噪声;
3)设计了一个新的损失函数,综合考虑了分解重建、降噪和亮度调整等因素;
4)构建了一个有效的针对低光照图像的增强系统.
近年来,低光照图像的增强越来越被人们重视,研究者对此进行了大量的研究,领域内已经涌现出了很多方法.直方图均衡化,通过控制变换后的图像直方图,使像素值服从均匀分布,来增强图像的对比度,使得细节更加清晰,这是一个全局过程,并没有考虑亮度的变换,会导致过度增强或者增强不足的问题.动态直方图均衡化(DHE)[3]将直方图分为若干部分,并对每个子直方图进行均衡化处理.对比限制自适应直方图均衡化(CLAHE)[4]自适应地限制了HE的对比度增强程度.使用这些方法,往往会出现严重的颜色失调问题,而且在很多情况下,较暗区域的细节没有得到足够的增强.伽马校正(GC)也常用来调整光照,以非线性的方式在每个像素上单独执行,虽然可以提高图像的亮度,但是这种方法没有考虑到每个像素与它周围相邻像素的关系.这些传统方法的主要缺点是它们几乎不考虑真实的光照因素,这通常会导致增强之后的结果在视觉上很不稳定,与真实场景不一致.
还有一类基于Retinex理论的方法,该理论假设图像可以分解成两个部分,即反射图和亮度图.早期的尝试有单尺度Retinex(SSR)[5]方法,通过高斯滤波约束亮度图使其平滑.后来提出的多尺度Retinex(MSR)[6]方法是对单尺度Retinex方法的扩展,使用了多尺度高斯滤波和颜色修复.这些方法一般假设图像是无噪声并且颜色均衡的,也不考虑图像退化问题.最近一些新方法被提出来,通过估计亮度图和反射图来增强低光照图像.SRIE[7]使用了一个带权的模型同时对反射图和亮度图进行处理,对亮度图处理后,可以恢复一些细节.与之不同的是,LIME[8]仅仅用结构化的先验知识处理了亮度图,将反射图作为最后增强后的结果.虽然这些方法已经在一些场合产生了不错的效果,但是它们的表现性能仍会被模型分解反射图和亮度图的能力所限制,还需要手动调整参数,甚至依赖于精细化的参数调整.而且这类方法通常不考虑去除噪声,有些甚至会放大噪声.
基于去雾的方法如DeHz[9]观察到低光照图像和有雾图像之间具有相似的特点,采用成熟的去雾算法来对低光照图像进行增强,但是该方法通常会对图像过度增强.基于大气散射模型的方法[10],在低光区进行去雾操作,但是存在块状效应,影响图像的质量.
随着深度学习的快速发展,卷积神经网络也已被广泛地应用在一些低级的视觉任务中,比如降噪、超分辨率、去除伪影和去雾等任务,在低光照图像处理和夜间场景理解领域也取得了巨大成功.LLNet[11]是较早用于低光照图像增强的深度学习方法,基于合成数据训练了一个堆叠稀疏降噪自编码器,能够同时增强图像和降噪.HDRNet[12]学习局部、全局和依赖内容的决策,近似得到想要的图像变换.Retinex-Net[13]受Retinex理论的启发,和卷积神经网络相结合,通过调整亮度图达到增强低光照图像的目的.SID[14]设计了基于CNN的模型可以直接处理原始的传感器图像.Chen[15]等人提出了一个双向GAN框架,可以在训练数据不成对的情况下有效增强低光图像.DeepUPE[16]通过估计出亮度图来增强低光照图像,但是没有考虑噪声.Lv等[17]分离图像的可见光和近红外线产生高质量的图像.这些基于深度学习的方法,在性能上相比传统方法有很大的提升,但它们大多在降噪方面的效果不是很好,有些甚至不考虑降噪处理,在这方面仍然有很大的改进空间.本文的方法考虑了噪声的影响,并使用经过亮度图处理后得到的注意力图来指导降噪.所以,本文设计的方法是对现有的基于深度学习方法的补充.
在计算机视觉、多媒体和图像处理领域,图像降噪也一直备受关注.对于高斯噪声,基于滤波的BM3D[18]是一种代表性的传统方法,有一定的降噪效果,但是也有不容忽视的缺点——丢失细节信息.后来出现了基于深度学习的降噪方法,DnCNN[19]使用了残差学习和批归一化,能够减少计算开销,但是直接使用这类方法增强图像会导致模糊.对于泊松噪声,NLPCA[20]将字典学习和基于稀疏块的图像表示结合起来,并采用了自适应的主成分分析.Azzari[21]等人提出了一种结合VST变换和BM3D的迭代算法.针对泊松-高斯混合噪声,CBDNet[22]针对真实图像提出了一种融合非对称学习的盲卷积降噪网络.TWSC[23]提出了一种三边加权稀疏编码的方法.但是将这些方法直接融合到图像增强中会导致模糊,这也是它们的不足.为了避免这个问题,本文提出的模型是先对亮度图处理,得到的注意力图能够更合理地关注噪声的分布,可以作为指导降噪的先验信息,这是本文的模型对比其他方法的优势.
本文提出的用于低光照图像的增强系统,是基于Retinex理论构建的一个深度神经网络.Retinex-Net模型在低光照图像增强任务中存在的两个问题:
1)分解子网络主要由卷积层构成,会造成图像细节信息的丢失,也会间接地影响最终输出图像的清晰度,难于辨识细节信息.针对这个缺点,本文对分解子网络做了改进,利用空洞卷积扩大感受野以获取更多的上下文信息,并且加入了残差连接来减少细节信息的丢失;
2) 经过分解子网络得到光照图和反射图之后,反射图上的噪声没有得到有效处理,会导致重建后的预测图像非常模糊.
实际上,在低光照图像中,噪声是不可避免的,也是不能忽略的,但很多方法都忽略了这一点.所以本文设计了一种降噪方法,可以有效降低噪声.此外,图像的噪声强度和亮度分布有很大的关系,因此,本文在降噪处理中融入了注意力机制,对亮度图处理后得到一个注意力权重图,更关注曝光不足的区域,以便更准确地指导降噪.
下面先阐释该模型的理论知识.
Retinex是一种常用的图像增强方法,该理论认为一张图片可以分解为两个不同的分量:反射分量和光照分量(也可以叫做反射图和亮度图),其原理如图1所示.
图1 Retinex理论Fig.1 Retinex theory
其中,S表示原始图像,R为反射图像,描述了观测图像的固有属性,它可以被视为常量而与光照无关;L代表亮度图像,表示了观测图像的不同光照程度.
基于Retinex的图像增强就是从原始图像S中估计出光照分量L,从而分解出R,消除光照不均的影响,以改善视觉效果.
一个理想的低光照图像增强器应该能够有效地调整图像的光照亮度以及降低噪声,基于Retinex理论构建了一个网络模型,来增强低光照图像.这一部分会介绍模型的整体框架,从整体的角度对系统进行解释.如图2所示,整个网络由3个子模块组成,分解模块(Decomposition Module)、注意力降噪模块(Attention Denoising Module)和亮度调整模块(Illumination Adjustment Module),分别用于分解图像、去除噪声和调整亮度.网络的输入是一个包含了低光照和正常光照的图像对,先经过分解模块,将一张图像分解为反射图和亮度图,反射图和亮度图送入注意力降噪模块进行降噪处理,输出降噪后的反射图,同时将亮度图送入亮度调整模块,得到调整后的亮度图,最后将这两个模块产生的输出相乘得到增强后的图像.在接下来的小节中,将详细阐述组成该模型的各个子模块以及模型中的创新部分.
图2 Retinex-ADNet模型结构Fig.2 Architecture of our Retinex-ADNet network
在3.1节中讨论了基于Retinex理论的方法关键在于获取到准确的光照分量,设计的分解模块承担了此作用.分解模块如图3所示,包括两条分支.分支1中,输入同时被送入一个编解码结构和空洞卷积层中处理,编解码结构包括4层卷积层和上采样层,在第2层卷积后加入了空洞卷积层的处理结果,这个融合后的结果之后还被送入第4层卷积后的输出做再次融合,之后经过上采样操作恢复图像分辨率,输出反射图.分支2中,将第1次融合之后的结果和分支1的输出拼接到一起,再次卷积,然后输出光照图.其中,不同于其他依赖Retinex理论构建的简单网络,如Retinex-Net,在这个模块中引入了空洞卷积和残差连接.使用空洞卷积可以扩大卷积操作的感受野,获取到更多的上下文信息,加入残差连接的目的在于减少分解过程中的细节损失.该模块的输入也是整个网络的输入,即一个包含了低光照条件下和正常光照下的图像对,经过分解模块输出的是反射图和亮度图.
图3 分解模块Fig.3 Decomposition module
此模块的损失函数设计为Ldc,如式(1)所示:
Ldc=Lrec+λrsLrs+λisLis
(1)
其中λrs和λis是平衡反射图的一致性和平滑亮度图的系数.
Lrec表示重建损失,具体形式是Lrec=‖Il-Rl·Ll‖1+‖Ih-Rh·Lh‖1,其中Il和Ih分别代表低光照和正常光照条件的图像,Rl、Rh、Ll和Lh分别代表低光照和正常光照下的图像分解出的反射图和亮度图,‖·‖1表示采取的是l1损失,重建损失约束了分解产生的反射图和亮度图重建之后应尽量和分解前保持一致.
对于光照分量,假设一个理想的光照分量应该在纹理细节上尽可能地平滑,同时在整体结构上应该得到较好的保留.所以加入了Lis这一项,具体是:
Lis=‖▽Lh·exp(-λs▽Rh)‖1
+‖▽Ll·exp(-λs▽Rl‖1
(2)
▽表示梯度,包含水平和垂直方向的梯度,λs是平衡结构感知强度的系数.这项平滑损失通过对反射分量求梯度来为光照分量的梯度图分配权重,使反射分量上较为平滑的区域对应到光照分量上也应该尽量平滑,保证在平滑约束的同时不破坏纹理细节和边界信息.
在低光照图像增强任务中,基于Retinex理论构建的模型几乎都忽略了降噪处理或者处理效果并不好,因此设计了一个新的降噪模块,并且结合了注意力机制,具体结构如图2中的Attention Denoising Module所示.
经过分解模块处理之后,输出反射图和亮度图,其中,反射图上的噪声分布情况非常复杂,并且高度依赖亮度图的亮度分布,所以这两种信息都应该融入到降噪模块中进行降噪处理.在分解过程中,噪声也会被放大.因此本文提出用一个注意力图来指导降噪.首先对亮度图做了一个处理,得到具有亮度分布信息的注意力权重图,用来指导反射图的降噪.降噪模块主要由一个5层的编解码结构构成,可以提取到大范围的上下文信息,尽可能地去除噪声且不会造成细节信息的大量丢失.注意力权重图的计算方式如式(3)所示:
(3)
其中,max(x)返回三颜色通道中的最大值,Lh、Ll分别表示正常光照和低光照情况下图像分解得到的亮度图.
为了有效地降噪,设计了该模块的损失函数如式(4)所示:
(4)
该模块旨在调整亮度图的亮度.如图3中的Illumination Adjustment Module所示,输入是分解模块输出的亮度图,模块由4层卷积组成,可以充分获取到亮度图的光照信息,最后为了避免有效信息的损失,将输入拼接到最后一层,输出调整后的亮度图.式(5)是亮度调整模块的损失函数:
(5)
使用LOL数据集作为训练数据集.训练样本先经过数据预处理,做旋转、裁剪等操作,以像素块的形式送入网络中进行训练.对于分解模块,批处理大小为10,像素块尺寸为48×48.在注意力降噪模块和亮度调整模块中,批处理大小为4,像素块尺寸为384×384.使用随机梯度下降法来对整个系统进行优化.整个网络在NVIDIA GTX 1080Ti GPU和Inter Core i7-8700 3.70GHz CPU上使用Tensorflow框架进行训练.
在LOL数据集上评估了本文提出的方法.
对于低光照图像增强任务,LOL数据集是第一个在真实场景采集的图像对数据集.该数据集分为两部分:真实场景和合成的图像对.真实场景下的数据,由正常光照和低光照图像组成,其中的正常光照图像作为标签使用,低光照和正常光照图像对是通过改变曝光时间和相机感光度得到的,共500对图片,包括多个场景如房屋、街道、家具等.其中485对作为训练集,其余15对作为验证集.合成图像对是从RAISE[24]中选了1000张图像作为正常光照图像,并将这1000张图像合成低光图像.
采用PSNR和SSIM两个指标来评价模型的性能.
PSNR:峰值信噪比,常用作图像处理等领域中信号重建质量的衡量标准,数值越大表示图像失真越小;
SSIM:结构相似性,用来衡量两幅图像的相似度,分别从亮度、对比度和结构3方面度量图像相似性,数值越大表示图像失真越小.
为了更有效地去除噪声和调整亮度,设计了一种新的损失函数,如式(6)所示:
L=Ldc+Ldn+Lia
(6)
其中,Ldc表示分解模块中的损失,Ldn表示注意力降噪模块中的损失,Lia表示亮度调整模块中的损失,具体含义已经在模型部分阐述.
和其他的低光照图像增强方法进行了对比实验,比较的方法包括基于Retinex理论的SRIE和LIME,基于深度学习的LLNet、RRM[25]、GLAD[26]、DeepUPE和Retinex-Net.
表1展示了和其他方法在LOL数据集的真实场景图像上的对比结果.从数据上可以看出,在PSNR和SSIM指标上的方法比其他方法略有优势,这说明了本文的模型对低光照图像的增强效果较好.还给出了一些可视化结果,能够更直观地展示本方法的效果,如图4所示.
表1 在LOL真实数据和其他方法对比Table 1 Comparison with other methods on real images of LOL dataset
表2 在LOL合成数据和其他方法对比Table 2 Comparison with other methods on synthetic images of LOL dataset
图4中前3列分别是GLAD、Retinex-Net、DeepUPE方法处理的结果,可以发现,图像比较模糊,降噪的效果并不理想.第4列是本文的方法,对比第1列,图像更加清晰,这也说明了构造的降噪模块是有效的.最后一列是真实的图像,相比之下,的模型在亮度提升和噪声去除方面都能达到较好的性能.
图4 在LOL上和Reintex-Net的可视化对比结果Fig.4 Visual comparison with Retinex-Net on LOL dataset
为了进一步说明本模型的有效性,在LOL数据集中的合成数据上也进行了对比实验,结果如表2所示.的模型依然优于其他方法,说明了本文提出的模型对于低光照图像增强任务是适用的.
针对低光照图像增强任务,以Retinex为理论基础,在分析了Retinex-Net方法的缺陷后,设计了一个深度神经网络---Retinex-ADNet,包括3个子模块,分解子模块中采用了残差连接以减少细节丢失,引入空洞卷积以获取更多上下文信息,输入的原始图像经过分解得到反射图和亮度图,亮度图经过处理得到一个具有亮度分布信息的注意力图,用来指导反射图降噪,亮度图同时也被送入亮度调整模块中进行增强,对注意力降噪模块和亮度调整模块的输出进行重建,得到最终的预测结果.在LOL数据集上,本文和其他的一些经典方法做了对比实验,数据表明本文的方法在PSNR和SSIM指标上要胜过其他方法.此外,在直观的可视化结果中,本文的方法要比Retinex-Net的输出结果更清晰,这也说明了本文的模型对于低光照图像增强任务能够取得更好的效果.