张媛媛,张红英,2
1.西南科技大学 信息工程学院,四川 绵阳 621010
2.西南科技大学 特殊环境机器人技术四川省重点实验室,四川 绵阳 621010
相比于普通的低动态范围(low dynamic range,LDR)图像,高动态范围(high dynamic range,HDR)图像具有更大的动态范围,包含更多的图像细节[1]。而由于目前成像设备的限制,直接捕获HDR 图像是十分困难的。因此,目前HDR 图像的获取方式主要是通过计算机图像处理技术生成,主要有多曝光图像融合和单曝光图像生成两种[2]。多曝光生成的方式需要同一场景的不同曝光程度的图像,对场景静态性要求较高。单曝光生成方法只需要构建合适的映射就能完成图像动态范围的扩展,没有此限制,并可以将现有的LDR资源转换成HDR 资源,已逐渐成为研究热点。本文主要研究单曝光生成的方法。
单曝光图像产生HDR图像是指通过对单幅低动态范围图像进行一定的处理过程以及动态范围的扩展来产生HDR图像[3]。目前主流的单曝光HDR生成方式主要是反色调映射和伪多曝光融合。反色调映射是指通过对色调映射过程求逆构建反色调映射函数,以此对图像的动态范围进行扩展的过程[4]。伪曝光融合是指对正常曝光的LDR 图像进行处理,生成多幅伪多曝光的图像,然后对其进行融合产生HDR图像[5]。反色调映射模型算法通常计算较为简单,对高质量的LDR 图像表现较好,但通常存在一定的色彩偏移和细节损失的情况。伪多曝光模型算法能够较好地保留图像细节,但通常计算复杂,所需时间较长。
随着深度学习在计算机领域的发展,卷积神经网络在图像处理方面表现出强大的分析处理能力,图像生成网络开始发展,能够根据不同的信息产生不同的图像,卷积神经网络开始被应用HDR图像的生成[6]。Eilertsen等[7]利用VGG16 网络结构将卷积神经网络用于单幅LDR图像产生HDR图像。通过两个去除全连接层的VGG16网络构建一个U型结构的网络,完成从低动态到高动态的编码。同时在网络中加入跳跃连接,充分保留原始图像的细节信息。该方法主要针对图像中的过曝光区域进行重建,在图像的明亮区域表现较好,但在其他区域采用了简单的反伽马变换扩展,当图像整体较暗的时候可能会出现伪影。Endo等[8]提出一种全自动推理网络,通过模拟相机响应函数从HDR 数据库中创建LDR 图像,通过网络学习图像的曝光变化,再从单个LDR图像估算不同曝光的LDR图像,最后再合成HDR图像。Lee等[9]提出一种基于扩张卷积的网络结构。从同一个场景的单个LDR图像中推断出不同曝光和光照条件下的LDR图像,再融合生成LDR 图像来产生HDR 图像。该两种方法都类似于伪曝光融合的方法,能够较好地扩展图像的黑暗区域,但图像整体有点偏白,使图像亮区域的颜色不如原始LDR鲜亮。产生该结果的原因在于生成图像堆时,随着曝光程度的增加,损失了原始图像明亮区域的细节,出现了整体为白的图像,且由于要生成多幅图像,算法的运行时间也较长。Marnerides 等[10]提出一种具有三个分支的扩展网络,分别为局部分支、扩张分支、全局分支,每个分支负责一个特定的方面,最后将三个分支的结果融合得到最终HDR图像。该网络的局部分支和扩张分支避免了下采样再上采样的过程,能够在很大程度上减少背景信息缺失的区域产生伪像的可能,但在复制全局分支结果的时候产生了平滑作用,可能会造成图像在一定程度上的模糊。
现存的用于单曝光HDR图像生成的网络结构都是从其他图像生成任务的网络结构延伸出来的,都不够完善,存在很多缺点。针对欠曝光区域的细节恢复和图像色彩偏移的问题,本文提出一种基于pix2pix 网络结构的单曝光HDR 图像生成方法。采用pix2pix 网络结构,完成LDR 图像至HDR 图像的转换,通过卷积之后反卷积的方式恢复图像细节信息,并采用绝对误差和余弦相似度函数结合的方式构建损失函数对网络进行训练。该方法能够有效地恢复图像阴暗区域的细节信息,并尽可能保留明亮区域的信息,同时避免图像泛白的情况,能够产生质量较好的HDR图像。
本文所提方法的整个处理流程如图1所示,通过一一对应的LDR 图像和HDR 图像对网络进行训练,训练过程中网络接收LDR 图像作为输入,通过网络输出与对数压缩后的HDR图像之间的差异优化参数。训练完成后,输入测试LDR 图像,经过网络处理得到输出,然后对网络的输出做一个指数变换就能得到最终的HDR图像。
图1 算法处理流程图Fig.1 Algorithm processing flow chart
在图像生成算法中使用最多的是自编码网络的结构,本文采用pix2pix网络结构[11]。它是自编码网络的结构的一种,用以从给定的特征图生成与真实环境相似的图像。该结构包含8 个卷积层和8 个反卷积层,每个卷积层之后都有一个归一化层。其基本结构如图2所示。
图2 网络结构Fig.2 Network structure
该网络在卷积编码阶段,只进行8 次卷积,每一层卷积都采用3×3的卷积核,卷积步长设置2,每一卷积后图像的尺寸都减小一半,最终将特征图像的尺寸减小至一个像素值。然后采用卷积核大小为4×4 的反卷积对特征图像进行扩展,逐步恢复矩阵尺寸,卷积步长设置为2。每一次反卷积后都通过跳跃连接的方式与卷积过程对应尺寸的特征层链接,此时特征层的宽度扩展为原来的两倍,然后再进行下一次反卷积。
在常用图像生成网络结构中,通常采用卷积然后池化的方式来进行下采样,然后再采用反卷积的方式上采样,并且在上采样的过程中需要使用1×1的卷积方式实现与跳跃连接层的线性结合,因此会增加网络的深度,在图像生成任务中,容易产生梯度消失的情况,使生成的图像中存在伪像。如图3 所示,(a)为一个存在伪像的原始U-Net 网络结构实验结果,(b)为该图像伪像局部放大图像。
图3 原始U-Net实验结果Fig.3 Results of original U-Net experiment
而pix2pix网络结构在卷积过程中通过设置卷积步长为2使特征图尺寸每次减小一半,以此方式来代替池化过程,在上采样过程中也只通过反卷积的方式来融合上一次反卷积的结果和跳跃连接层,不需要进行1×1的卷积来进行线性组合,以此简化了网络结构,减少因网络过深产生梯度消失的可能。并且该网络在每一个卷积层和反卷积后都进行标准归一化,以增加训练速度,防止过拟合。
在自编码网络结构中,通常采用ReLU函数作为激活函数,ReLU 函数是一个分段线性函数,如图3 所示,主要进行单侧抑制操作,将输入的所有负值都取0,正值保持不变。其表达式如下:
在HDR图像生成任务中,经过归一化的图像,特别是在像素值较低的区域,包含很多细微的变化。在卷积过程中这些值可能会使结果中包含负值,如果采用ReLU函数,则可能直接损失掉该部分的特征信息。为了保留这部分信息,采用Leaky ReLU函数作为卷积过程中的损失函数。其表示式如下:
区别于ReLU 函数,它通过乘以一个小值的方式,使负值部分具有一定的斜率,不直接映射为0,如图4所示。将这部分负值保留下来,能够尽可能地保留图像的细节。
图4 激活函数对比图Fig.4 Comparison chart of activation function
在反卷积过程中,除最后一层外仍然采用ReLU激活函数,以保证输出没有负值。在最后一层采用Sigmoid激活函数,将输出的值转换到[0,1]以内。
如图5所示,为只使用ReLU激活函数和使用Leaky ReLU激活函数的结果对比。可以看出只使用ReLU函数损失了天空黑暗区域的细节,且产生了一些伪像。
图5 不同激活函数结果对比Fig.5 Comparison of different activation functions
损失函数是用来估量模型的预测值与真实值的不一致程度,是一个非负实值函数。它是生成网络模型学习优化的必备条件。它定义的是生成网络模型的学习目标与学习模式。在图像生成任务中通常需要根据不同的需求来设计不同的损失函数,以保证有效性和提高收敛速度。
在图像生成任务中,最常用的损失函数是均方误差(mean square error,MSE)函数,它是真实值与预测值的差值的平方然后求平均值,表示为:
而HDR 图像包含很丰富的细节信息,像素之间的变化很小,归一化之后这种差异会变得更小,特别是在图像较为黑暗的区域,可能数据变化十分微小,如果采用MSE 函数则可能忽略掉这些细微的变化,会造成图像在一定程度上的模糊。因此,本文采用一个绝对误差来代替,直接计算真实值与预测值的差值的绝对值,公式如下:
但只是使用绝对误差作为损失函数,无法保证图像颜色的准确性。因此,本文引入余弦相似度来确保图像颜色不发生改变。
余弦相似度是指用向量空间中两个向量的夹角的余弦值作为衡量两个个体差异的标准,余弦值越接近1就表示夹角越接近0度,也就是两个向量越相似。其计算公式为:
将单幅LDR图像扩展为HDR图像最关键的就是对图像亮度的扩展,因此可以通过计算图像亮度再计算绝对误差。最后将损失函数确定为:
式中,L表示图像的亮度,通过图像亮度计算公式得到:
λ为调整余弦相似度贡献值的常数因子,本文取值为5;Ii表示图像第i位置的R、G、B分量组成的向量;k为向量的个数。这样可以确保每个像素指向三维RGB空间的同一方向,从而保证颜色的稳定性,特别是对于HDR图像中经常出现的低亮度值。因为这些分量的微小变化对绝对损失没有太大的贡献,但却会引起颜色的明显偏移。
如图6 所示,为采用不同损失函数的对比实验结果。从图中可以看出采用均方误差损失函数时所得的图像十分模糊,采用绝对损失函数时所得的图像虽然比较清晰,但颜色与原始图像相差较大,而采用本文损失函数所得的结果能够在扩展图像亮度的同时保证图像色彩的准确性。
图6 不同损失函数对比结果Fig.6 Comparison of different loss functions
1.4.1 数据获取
训练卷积神经网络需要大量的数据集,但目前公开的用于HDR图像生成的数据集大多数都是针对多曝光融合的,直接用于单曝光HDR 图像生成还较少。这样的数据集通常包含从欠曝光到过曝光的一系列图像,本文通过对Fairchild[12]、Kalantari[13]、Cai[14]等提供的多曝光图像数据集进行筛选,从中选取明暗差异较大,但包含大部分场景信息的图像作为重建HDR 图像的输入,最终整理出600对LDR-HDR图像对。
在其他图像处理任务中,为了获取更多的数据,通常会采用对图像进行随机色彩、亮度、旋转、镜像等方式进行数据集的扩充。在HDR 图像生成任务中,生成的图像会受输入图像色彩和亮度的影响,如果图像色彩和亮度偏移过多,可能会造成在训练时模型不稳定无法收敛的情况。因此本文只通过旋转和镜像的方式扩充数据集,对图像进行随机角度的旋转与水平和垂直方向的镜像。
卷积神经网络模型的输入通常是固定,而人们所获得的图像的大小往往是不统一的,因此还需要将图像裁剪至人们需要的大小。考虑到网络训练效率,将训练图像的大小设置为256×256。图像经过旋转后周围可能会出现黑边,如果直接进行裁剪可能会剪切到黑边部分,这样不利于网络的学习,因此对这样的图像采用双线性差值法进行填充,保证旋转后的图像没有黑边,然后再进行随机位置裁剪。
1.4.2 图像归一化
将图像作为神经网络的输入还需要进行归一化操作,将其像素值转化到[0,1]以内。通常普通的LDR 图像包含255 个灰度级,归一化时将像素值除以255 就可以。但在HDR 图像中,其储存类型可能包含的数据范围十分广泛,无法采用此方式进行归一化。因此,本文直接用图像像素值除以该图像像素中的最大值进行归一化操作,计算公式如下:
采用这种方式归一化,能够使LDR 图像和HDR 图像像素值最大的地方归一化后值都为1。
1.4.3 HDR图像压缩
HDR图像包含的细节层次丰富,数据间差异微小,与LDR 图像的数据类型不同,通常都采用高精度数据类型储存。直接通过将LDR图像转换成HDR图像是十分困难的,网络难以分辨差异。因此,本文对HDR图像进行一个可逆的对数变换,将数据进行转化,方便网络学习。计算公式如下:
式中,μ代表压缩量,通常取值为5 000;H是原始HDR图像。在网络训练完成后,对网络的输出结果做该函数的反变换就可以得到最终的HDR图像。
1.4.4 训练环境
整个模型使用的基本环境为Python3.6.5、TensorFlowgpu1.10.0、OpenCV4.2.0、numpy1.14、cudnn7.6.5、cuda9.0。在模型的训练过程中,使用Adam反向传播算法来优化参数,将初始学习率设置为0.000 1,指数衰减速率分别设置为0.99 和0.999。将训练的batchsize 设置为8。在GPU 为NVIDIA RTX2080Ti 的计算机上训练100 万次得到结果,训练时间约为2天。
现实世界中场景信息复杂,包含的信息多种多样,面对不同的场景,算法预测的结果可能会出现差异。本文通过对不同场景的图像进行实验,并与Eilertsen 算法[7]和Endo 算法[8]进行对比,并从主观感受和客观指标两方面对算法性能进行分析。
HDR 图像与普通图像不同,它拥有更大的动态范围和更丰富的细节信息,虽然可以通过色调映射的方式在普通的显示器上进行显示,但很多HDR 图像的差异信息在进行压缩后会弱化,使肉眼无法分辨。同时,主观视觉感受可能受到多种因素的影响,使不同的人有不同的视觉感受。因此需要一些客观的评价指标来进行对比分析。
本文采用常用的图像质量评价指标峰值信噪比(peak signal to noise ratio,PSNR)[15]、结构相似度函数(structural similarity index measure,SSIM)[16]以及专门用于HDR图像质量评价的可见差异预测器(visible differences predictor,VDP)[17]对算法结果进行测评。其中PSNR 与SSIM 由于数据类型的原因,不适合直接使用HDR图像进行对比,使用这两个指标时,将算法生成的HDR 图像和标准的HDR 图像都经过色调映射之后再进行对比。
PSNR 是一种基于误差敏感的图像质量评价,只计算图像对应像素点的差异,不考虑人眼的视觉特性,而人眼对图像的感知会受亮度对比差异和临近域的影响,因此PSNR 的结果经常会出现与人眼主观感受不一致的情况。PSNR 通过简单的均方误差进行定义,单位为dB,表示为:
式中,MAX_I表示测试图像像素的最大值;I为测试图像;I′为参考图像;M和N表示图像的宽和高。
SSIM的理论基础是人眼视觉系统场景中结构的自适应调整,通过比较图像结构信息的改变来判断图像相似程度,从而得到客观的质量评价。SSIM 衡量的是图像亮度、对比度和结构变化三个量的复合效果,简化计算公式为:
式中,μx和μy分别表示测试图像和标准图像的均值;σx和σy是标准偏差;σxy是两个图像的协方差;c1、c2分别为小常数,以避免分母为0而出现错误。SSIM函数计算的结果在[0,1]之间,两幅图像越相似,计算结果就越接近于1。
HDR-VDP-2是基于人类视觉差异来评估两幅图像之间的相似性。该方法认为两幅图像的差异是由不同的噪声输入引起的,首先模拟人眼的光学特性和视网膜通路,再通过噪声模拟以及多尺度分解算法模拟光在人眼内部的散射过程,以此来模拟人眼对场景动态范围的处理过程。对结果打分,最高值为100,表示两幅图像完全相同。HDR-VDP-2 是专门针对HDR 图像质量评价的标准,注重于衡量图像的动态范围特征,对图像的其他特征的改变不能很好体现,如色度和结构特征等。虽然它存在一定的局限性,但依旧被广泛应用于HDR 图像质量的评价。
为了证明本文在损失函数、网络结构上的改进带来的性能增益,进行如下消融实验。
表1所示为采用不同网络结构训练100万次所需的训练时间。从表中可以看出原始U 型神经网络所需的训练时间最久,远超过pix2pix网络,而采用Leaky ReLU函数会在一定程度上增加训练时间,大约每增加1 000次训练平均增加2 s的时间。
表1 不同网络训练时间对比Table 1 Comparison of different network training time
表2所示为只采用ReLU 激活函数和Leaky ReLU激活函数实验结果的客观指标对比结果。从表中可以看出使用LeakyReLU激活函数后,在PSNR值、SSIM值和HDR-VDP上都有更好的表现。
表2 不同激活函数对比Table 2 Comparison of different activation functions
表3所示为采用不同损失函数实验结果的客观指标对比。从表中可以看出只使用均方误差损失函数的结果并不理想,而使用绝对误差损失函数在SSIM 值和HDR-VDP 上的表现都优于均方误差函数,但PSNR 值却较低。而使用绝对误差结合余弦相似度作为损失函数所得的结果在PSNR值、SSIM值和HDR-VDP上都有明显的提高。
表3 不同的损失函数对比Table 3 Comparison of different loss functions
同时将本文结果与现有两种较经典的基于卷积神经网络算法的实验结果进行比较分析。
图7展示了一个有建筑物背光面的场景的实验结果(示例1)。其中图(a)为原始LDR图像,图(b)为Endo算法结果,图(c)为Eilertsen 算法结果,图(d)为本文算法结果。图中对欠曝光区域和过曝光区域都进行了标注。通过对比可以看出,Endo 算法能够较好地恢复图像的欠曝光区域,但图像整体存在一个偏白的情况。Eilertsen算法结果图像颜色较为鲜亮,但欠曝光区域信息恢复不足,且图像过曝光区域存在一定的细节损失。本文算法产生的结果图像颜色鲜亮并且能够较好地恢复图像欠曝光区域的细节信息,同时较好地保留过曝光区域的信息。
表4为图7对应的客观评价指标的计算结果。从表中可以看出本文算在PSNR和HDR-VDR指标上高于其他两种算法,SSIM结果高于Endo算法,略低于Eilertsen算法,整体表现较好。
图7 示例1实验结果对比图Fig.7 Comparison of experimental results of example 1
表4 示例1客观评标指标对比Table 4 Comparison of objective evaluation indexes of example 1
如图8所示,展示的是一个既具有室外明亮区域又具有室内阴暗区域的场景图像(示例2)。从图中可以看出三种算法都能够较好地恢复图像中欠曝光区域的细节信息,但在图像中的过曝光区域Endo算法和Eilertsen算法都存在颜色偏白的现象,视觉效果不如原始LDR图像。本文算法不仅能够较好地恢复欠曝光区域细节信息,还能较好地还原图像色彩信息,产生颜色鲜亮的HDR图像。
图8 示例2实验结果对比图Fig.8 Comparison of experimental results of example 2
表5为图8所对应的客观评价指标的计算结果。从表中可以看出本文算法结果的PSNR、SSIM、HDR-VDP值均高于其他两种算法。
表5 示例2客观评标指标对比Table 5 Comparison of objective evaluation indexes of example 2
为了体现算法的有效性,本文还统计了100幅测试图像的PSNR、SSIM、HDR-VDP 结果的平均值,本文算法的PSNR平均值为25.564 5 dB,SSIM平均值为0.919 3,HDR-VDP 平均值为70.150 2。Endo 算法的PSNR 平均值为20.452 4 dB,SSIM平均值为0.908 0,HDR-VDP平均值为63.944 9。Eilertsen算法的PSNR平均值为20.733 1 dB,SSIM 平均值为0.842 4,HDR-VDP 平均值为67.506 1。本文算法的结果均高于其他几种算法。
针对HDR图像生成过程中欠曝光区域的细节恢复和图像色彩偏移的问题,本文提出一种使用pix2pix 网络结构生成单曝光HDR 图像的生成结构,相比于普通的图像生成网络结构,pix2pix结构取消了池化层,简化了网络结构,在卷积过程中采用Leaky ReLU 激活函数,能够有效地保留图像的细节信息。为保证图像的色彩不发生偏移,采用绝对误差和余弦相似度函数结合的方式构建损失函数,选取了明暗差异较大的图像构建数据集对网络进行训练。然后通过不同场景的图像进行实验,并与其他几种算法做了比较。通过对比分析,本文算法能够在扩展图像动态范围的同时有效地恢复图像阴暗区域的细节信息,并尽可能保留明亮区域的信息,同时避免图像泛白的情况,但由于网络结构的限制,对于一些特殊的图像依旧会出现伪像的情况。