基于循环生成对抗网络的光照补偿方法

2020-09-29 08:08亮,张鸿
计算机工程与设计 2020年9期
关键词:原图光照卷积

赵 亮,张 鸿

(1.武汉科技大学 计算机科学与技术学院,湖北 武汉 430065;2.武汉科技大学智能信息处理与实时工业系统湖北省重点实验室,湖北 武汉 430065)

0 引 言

随着互联网时代的来临和信息技术的发展,在网络中充斥着越来越多的图像内容。但使用者在观看这些图像和使用这些图像进行一些相关工作时,会发现这些图像的质量良莠不齐,而复杂、多样的光照条件是影响这些图像质量的重要因素。本文将注意力放在设计一种方法,能以较好的效果,较高的鲁棒性解决一些常存在的光照相关问题,亦即对图像进行光照补偿。通过光照补偿,本身光照条件不佳而过暗、过曝,或反光、具有阴影的图像,能获得一个较为均衡的光照条件,从而显示出更多的细节,或使图像观感更佳。另外,在人工智能领域,进行人脸识别、图像分类等工作时,往往也对光照有较高的要求,此时对图像进行光照补偿的预处理能极大提高这些智能识别工作的效率。

本文提出了一种基于循环生成对抗网络的光照补偿方法。该方法使用类似风格迁移的思路,以分别处在正常光照和复杂光照下的同类事物或场景的图像作为对抗训练集训练CycleGAN,以解决光照问题。在此基础上,由于用于风格迁移的CycleGAN所使用的Instance Normalization(IN)在处理光照问题时效果不佳,将其替换成了能够自我训练参数的Switchable Normalization,得到了更好的效果。这种方法只要数据集的数据足够丰富,就能很好平衡各种光照条件下的图像光照,相较传统方法具有更高的鲁棒性。

1 生成对抗网络介绍

1.1 生成对抗网络

生成式对抗网络(generative adversarial networks,GANs)是由Goodfellow提出的一种采用对抗的思路来生成数据的网络模型[1],其优点在于先验假设少、模型设计简单、无监督。Radford等[2]提出的深度卷积生成网络(DCGAN)将卷积神经网络(CNN)引入到了生成模型和判别模型当中,大幅提升了生成性能。Arjovsky等[3]利用Wasserstein距离代替JS散度提出了Wasserstein GAN,这种模型缓解了梯度消失的问题,也大幅提升了训练稳定性。Mirza等[4]提出的条件GAN(conditional GAN, CGAN)为生成器添加了约束条件,使得GAN能有目标的学习,根据提供的类别标签来生成图像数据。Isola等[5]提出了pixtopix模型,该模型利用生成目标和条件输入之间的对抗来优化损失函数,增加条件约束,能够实验逼真的图像风格迁移。Goodfellow等提出了条件生成对抗网络(Defense-GAN),能在原始GAN的基础上引入条件判定,对生成的图像进行约束[6]。Zhu等[7]提出了循环生成对抗网络(CycleGAN),作为一种常规GAN的变形,能够在不使用成对图片的前提下,有效完成图到图的转化与生成。

生成式对抗网络的基本网络流程如图1所示。

图1 GAN的网络流程

G表示生成器,用于生成所需图片;D代表的判别器,用于判断图片的真实性,以此来评估生成器的性能。生成器G、判别器D之间存在的对抗关系,可以用下式表示

(1)

式中:真实数据用Pdata(x) 表示,随机噪声用Pz(z) 表示,用于为生成器模拟真实数据中的扰动; D(x) 表示其经由判别器判断,认为是真实样本的概率; G(z) 表示由随机噪声经由生成器生成的样本, D(G(z)) 表示该样本经由判别其判断,认为是真实样本的概率。

在GAN的训练过程中,生成器需要使生成样本更接近真实样本,也即要令D(G(z)) 接近1;判别器与之相对,要能判断出真实样本和生成样本的真实性,也就是使D(x) 接近1,而D(G(z)) 更接近0。通过这样一个对抗的过程,生成器和判别器的性能在该过程中交替提升,最终就能利用生成器生成近似于真实样本的图片。

1.2 循环生成对抗网络

循环生成对抗网络(CycleGAN)是由Zhu等[7]提出的一种常规GAN的变形。

相比基础GAN网络,CycleGAN是由两个镜像的GAN网络构成一个环形网络,其中每一个单向的GAN网络都有2个生成器与1个判别器。这样的结构,使得其训练不依赖成对的图像,从而在应用上有更好的适应性。

CycleGAN中,其中一个单向GAN的判别器loss和生成器loss分别由以下式(2)与式(3)表示

LGAN(GXY,DY,X,Y)=Εy~Y[logDY(y)]+
Εx~X[log(1-DY(GXY(x)))]

(2)

(3)

其中,X与Y分别表示要进行转换的两个类中的真实输入, G(XY) 与G(YX) 分别表示两个生成器; D(Y) 表示该单向网络的判别器。

完整的CycleGAN网络由两个上述的单向网络以图2的方式组成,它们共用2个生成器,各自有1个判别器。

图2 CycleGAN单向网络组合方式

如图2所示,G、 F分别是由X类真实样本转换成Y类样本和由Y类真实样本转换成X类样本的生成器,在生成样本之后,分别通过D(X) 和D(Y) 对生成的样本的真实性进行判断,通过这个过程训练判别器,并将判断结果反馈到生成器对生成器进行进一步的训练。

2 基于循环生成对抗网络的光照补偿方法

2.1 基于循环生成对抗网络的光照补偿方法

传统的光照补偿方法,例如retinex算法或直方图均衡法,通常是根据图像的某种特性,使用固定的方法处理图像。这些方法在其适合的特定情况下,能发挥较好的效果;但在实际应用中,图像的特征往往是复杂、多样化的,这些算法适用情况单一、鲁棒性差的缺点就会暴露出来。

本文通过建立一个特定结构的改进CycleGAN网络来解决复杂光照下的光照补偿问题。

原理上,本方法参照利用CycleGAN进行风格迁移的思路,将光照情况作为一种特殊的风格进行光照情况的迁移,从而达到将复杂光照图像转化为正常光照图像的效果。

这种方法的原理参考了CycleGAN的一些特性,在 CycleGAN 中,整个网络的损失可以总结为下式

L(G,F,DX,DY)=ΕX~Pdata(X)[(1-DY(G(x)))2]+
ΕY~Pdata(y)[(DY(y)-1)2]+ΕX~Pdata(X)[(DX(X)-1)2]+
ΕY~Pdata(y)[(1-DX(F(y)))2]+

(4)

式中:G代表通过正常光照图像生成复杂光照图像的生成器,F表示通过复杂光照图像生成正常光照图像的生成器,DX、DY分别表示复杂光照图像判别器和正常光照图像的判别器,整个函数的目的是令整个循环网络的损失最小化。根据该loss函数进行训练,就能有效优化CycleGAN的网络参数,从而使生成的正常光照图像或复杂光照图像与真实的图像越来越接近,最终达到通过真实的复杂光照图像生成最大程度接近真实的正常光照图像的目的。

本文方法实现光照补偿的具体算法流程如图3所示。

图3 基于循环生成对抗网络的光照补偿方法流程

其中一个单向网络的训练流程如下:

(1)将真实的正常光照图像输入网络,首先用于训练判别器;

(2)经过用于生成复杂光照图像的生成器,将其转换为复杂光照图像;将生成的图像送入判别器,并将判断结果反馈至生成器中,以训练生成器生成图像的真实性,使得复杂光照图像生成器生成的图像向真实的复杂光照图像一步步靠近;

(3)将生成的图像送入正常光照图像的生成器,生成正常光照的验证图像,反过来影响另一个生成器的相关参数。

以上是其中一个单向网络的运行逻辑,将这个过程逆转,输入复杂光照图像,并通过另一个单向网络进行类似的操作,并使两个单向网络的训练循环交替进行,就能形成一个完整的闭环生成网络,并不断训练网络中的两个生成器与两个判别器,达到使网络生成的图像“以假乱真”的效果。

在训练中,最终会得到两个生成器模型:将正常光照图像转换为复杂光照图像的模型和将复杂光照图像转换为正常光照图像的模型。实际上,在使用时只需如图3左部所示,提取将复杂光照图像转换为正常光照图像的模型,并将复杂光照图像使用该模型进行光照的转换,就能将复杂光照图像中的光照均匀化,得到相应的正常光照图像。

2.2 循环生成对抗网络的生成器、判别器结构

在本文中使用的生成器结构如图4所示。

图4 生成器结构

如图4所示,图像输入格式为256×256的三通道彩色图像。输入的图像先被送入3层卷积层进行提取特征,在特征提取完毕后,会经由一个包含11层的残差块来进行转换操作,以保证在风格转换的过程中不会对其它的特征产生影响。在此之后,转换后的特征被送入两层反向卷积层,以将高维特征重新复原成低级特征;最后,将获得的特征送入一层卷积层以生成新图像。

对于生成器而言,其损失可表示为式(5)

(5)

式中:G、F表示两个生成器,x、y分别表示两个生成器的输入,即待转换的正常光照/复杂光照图像矩阵,Lcyc表示两个生成器的循环损失,该值越小,则表示生成器输入与输出越相似。

与生成器相比,判别器的结构更为简洁。图5是本文所使用的判别器结构。

图5 判别器结构

判别过程中,将256×256的图像输入4层卷积层进行特征提取,然后用一个卷积层进行判断。判别器的损失函数与生成器有所不同,两个判别器的误差需要分开计算。为了判别器训练的稳定性,这里选择了均方误差作为损失函数,则其中一个判别器的误差可以表示为式(6)

LLSGAN=ΕX~Pdata(X)[(1-DY(G(x)))2]+
ΕY~Pdata(y)[(DY(y)-1)2]

(6)

式中:DY表示用于判别正常光照图像真假的判别器, G(x) 是由生成正常光照图像的生成器生成的图像,y表示真实的正常光照图像,LLSGAN表示该判别器的均方误差,该值越小,则表示判别器分辨真实图像与生成图像的能力越强。

在整个网络中综合计算生成器、判别器的误差,就可以得到全局损失函数,即前文式(4),从而有效优化整个网络的参数。

此外,所有卷积层的激活函数选用Relu函数以更好拟合图像特征,防止梯度消失;优化器选用Adam优化器,以提高训练效率,获得更好的训练效果。

2.3 适用于光照补偿的自适配归一化方式

归一化是在神经网络的各层中,为了降低分布变化的影响,在进行实际操作之前就把数据分布根据特定规则映射到一个确定的区间的策略。简单的说,归一化就是要把原始数据通过某种方法处理后,限制在一定范围内,以减少神经网络的运算量,加速神经网络收敛,是神经网络中常用的一种结构。

在神经网络中,比较常用的归一化方式有Batch Normalization(BN)[8]、Instance Normalization(IN)[9]、Layer Normalization(LN)[10],Group Normalization(GN)[11]等。

由于在CycleGAN中,Batch size一般较小甚至为1,Batch Normalization效果欠佳,因此在进行风格迁移等工作时,常常使用Instance Normalization来进行归一化的工作。但在本文的光照补偿工作中,发现IN的效果并不理想。由于IN过于注意图像的独立特征,保持图像的独立性,很多时候会把一些非光照的图像特性也进行迁移,对图像本身的一些细节造成破坏,进而影响光照补偿的最终效果。

因此,本文考虑采用适用性更强的Switchable Normalizaton来解决这个问题。Switchable Normalizaton是一种能够通过可微分学习自行学习归一化相关参数的归一化方式,它统一了现有的IN、BN、LN等归一化方式的各个维度,并在训练的同时优化自身相对不同归一化方式的权重系数,使自身结构靠近效果最佳的归一化方式。

在SN的归一化过程中,同时计算了BN,LN,IN这3种归一化方式的统计量,然后引入6个分别与均值和方差对应的权值参数计算加权的均值和加权的方差作为SN的均值和方差,并对加权系数使用SOFTMAX来进行归一化。SN的计算方式如式(7)所示

(7)

式中:与其它标准化方式类似的,γ与β分别代表缩放系数和偏移系数;Ω是一个包含BN、IN、LN的集合;μ和σ2分别表示均值和方差;wk和w′k分别是相应统计量对应的权重系数。

图6体现了引入SN后的卷积层结构。

图6 引入SN后的卷积层结构

如图6所示,随着卷积层的训练,SN部分也在随之优化自己的权重系数,使自己更加接近最适合的归一化方式。这样,每一层可以以各不相同的归一化方式适应其需求,从而在训练中获得更好的效果。通过使用SN来进行归一化,生成对抗网络能更好地捕捉到所需求的光照特征,并加快其收敛速度;另一方面,使用SN来进行归一化也省去了对归一化步骤的参数设定工作,能提高网络的工作效率。

3 实验结果与分析

3.1 数据集介绍

本文所使用的数据集是针对本文实验,从真实航运过程中收集的关于船舶的正常光照-复杂光照对抗数据集。该数据集包含两类,即正常光照分类与复杂光照分类,每类有2000张各不相同的图像,皆是从不同船舶的航行监控视频中截取的单帧,且统一为256×256的三通道彩色图像。其中,正常光照分类中的图像是在一般情况下的船舶主体图像,保证图像中无模糊、不反光、不过暗,且包含棚架船、盖雨布的船、未盖雨布的船等多种船型。复杂光照类中的图像是相似船只、相似角度,在光照不正常的情况下的航行图像,其中,光照不正常的类型包括:船只雨布反光、水面反光严重;整体背景较暗,船只细节不清晰;光线条件不佳,船只颜色失真等。

3.2 参数设置与评价指标

在本实验中,网络里的各种参数比较繁琐,这里取一些比较重要的参数以供参考:

网络输入格式为256×256×3,对应本文数据集所使用图像的分辨率;误差使用的是均方误差;batchsize限于网络需求和机器性能限制,设定为1;学习率为0.0002;优化器采用Adam优化器,其动量项为0.5;激活函数采用Relu函数;第一个卷积层中的gen过滤器数为64个。

为了评价光照补偿效果的好坏,应当引入一定的评价指标来进行比较。由于单纯通过主观判断或者客观数据去评价光照补偿的效果,都会有失偏颇,所以本文将同时从这两个角度出发,来评判实验效果,具体评价方式如下:

在主观判断的层面,主要通过对比原图和通过不同光照补偿算法处理后的图像来进行,从清晰度、失真情况、可视细节、光照均匀程度等方面,全面评价每种光照补偿方式的优劣。

在客观数据的层面,通过计算不同图像的亮度、对比度等数据来判断对光照的处理情况;通过计算原图与补偿后图像的峰值信噪比数据、均方误差,来判断光照补偿方法对原图特征的保留情况。其中,亮度取图像像素的均值;对比度取图像各像素的标准差,峰值信噪比由式(8)计算

(8)

式中:I、K分别表示原图像和光照补偿后的图像,m、n是图像的长、宽,MAXI表示图像点颜色的最大数值。该数值用于体现补偿后图像与原图像相比的失真程度,该值越高说明失真程度越低。

除此之外,为了保证评价指标的准确性,测试用图像将分别选取过暗图像和反光图像这两种特征差异较大的复杂光照图像,以更全面的分析各种光照补偿方法在不同情况下的可靠性,和面对复杂光照的鲁棒性。以及,为了进一步说明本文算法的应用价值,还展示了一组实际情况下使用本文算法进行光照补偿的效果图。此外,为了比较实验中使用的标准化方式SN相对于IN的效果,还将对训练过程中两种标准化方式的loss变化趋势进行可视化比较。

3.3 实验结果分析

为了验证本文中光照补偿方法的可行性和优越性,选取一些传统的光照补偿方法来进行对比实验,这些方法包括:Retinex[12]算法、MSRCP(彩色恢复多尺度Retinex)[13]算法、Gamma矫正法[14]。同时,为了体现本文所使用的改进的归一化方法的有效性,将传统的使用IN的CycleGAN也加入了对比实验的范围,以更加全面对比各种方法的优劣。

图7是一组过暗的图像和其经过各种算法处理后得到的光照补偿后图像的对比效果。

图7 过暗图像光照补偿效果对比

图7可以直观比较各种光照补偿方法在对较暗图像进行光照补偿时的效果。可以看出,Retinex算法虽然提高了图像的亮度,但也使得整张图像偏灰,效果不佳;MSRCP算法相较Retinex而言有一个色彩恢复的过程,因而不会偏灰,但相比原图又过于明亮,还原度不佳。Gamma 矫正法取Gamma值为1.5,在图中前两张图像里效果较佳,但在最后一张图像中,同时也加强了水面反射的强度,与实验的目的不符;并且,Gamma矫正需要手动针对图像调整Gamma值,不适合作为一种普适性的方法使用。使用IN归一化方式的CycleGAN虽然对光照进行了一定程度的补偿,但在图像一些边角位置,如船的雨布边缘、阴影处出现了不同程度的失真、模糊。本文所使用方法既保留了图像的原始细节,也一定程度上加强了光照,并且平衡了水面的反射与船体之间的亮度,效果最佳。

表1以图7中的第一行图像为例,体现了在过暗图像光照补偿中各算法的一些相关指标。在处理前,原图的亮度偏低,而对比度偏高,这体现了原图船体背光而显得过暗的特点。Retinex算法处理过的图像虽然亮度大大提升,但对比度降低,PSNR值也较低,说明图像与原图差距较大;MSRCP算法处理的图像同样亮度过高,而且对比度接近原图,PSNR值较低,说明对于光照的平衡没有做好,丢失了原图的一些特征。Gamma校正法处理过的图像对比度也较高,因为Gamma矫正对于亮度的增强是针对整张图像的,同时也提高了没有背光处如水面等位置的亮度。使用IN进行归一化的CycleGAN对于亮度的增强幅度不够,图像偏灰偏暗。相较而言,本文方法提高了亮度、降低了对比度,说明该方法真正对光照进行了平衡,针对性的提高了背光偏暗部分的光照;同时较高的PSNR说明本图保留了更多原图中的特征,没有出现严重失真的情况。

表1 不同算法对过暗图像光照补偿效果比较

图8是一组有较严重反光的图像在各种算法处理后的效果对比。如图8所示,在处理有反光的图像时,大部分光照补偿算法的效果不佳。Retinex算法会使整张图像偏灰,而且对于反光几乎没有影响;MSRCP算法反而使反光相对于背景更加刺眼,而且改变了图像的风格,使图像与原图相距甚远。Gamma算法这里取Gamma值为0.8进行处理,但即使根据图像特性选取了适合的Gamma值,图像虽然一定程度上减轻了反光,却也使其整体过暗,与原图差异明显。使用IN归一化的原始CycleGAN对这些图进行处理的结果,则将雨布的颜色作为光照的一部分进行了迁移,致使雨布部分大面积失真。本文方法则较好地减弱了反光,且并未对原图其它部分造成较大影响,视觉效果较为柔和,也能够看清雨布、棚架的纹理。

类似的,表2展示了图8中第一列反光图像的各项相关指标。相对于原图,Retinex算法和MSRCP算法的亮度都大幅提升,区别在于Retinex算法对比度过小,说明图像细节不够清晰;MSRCP算法对比度又过高,说明反光处与其它部分颜色反差较大,没有起到预想中的减弱反光的效果。Gamma矫正法亮度过低,破坏了图中原本较暗处的细节;原始的CycleGAN对比度也较低,这可能也是由于雨布颜色发生较大变化的缘故。本文算法相对原图亮度略微提升,对比度略微降低,PSNR值最高,说明光照处理的效果较佳,且对原图保留了更多细节。

图9利用同一条船从早晨9∶30开始、下午17∶30结束的5张不同时间下、光照各有特点的图像,体现了本文方法在光照处理上的鲁棒性,展示了本文方法在实际使用情况下的效果。

可以看出,本文算法在实际使用中,对在不同时刻、不同光照的5张图像处理之后,使其光照统一化,并且没有破坏图像本身的细节。处理之后的图像相对于原图,可见度上升、阴影面积减小,过强的光源被削弱,可以很轻易看出是同一条船。这说明本文算法能显著减弱光照造成的负面影响,对复杂光照图像做出有效的光照补偿,从而使其适应深度学习或其它任务的需求。

图8 反光图像光照补偿效果对比

表2 不同算法对反光图像光照补偿效果比较

图9 本文算法实际应用效果对照

图10将通过网络模型训练过程中循环误差值loss的变化趋势来比较SN和IN在训练中对于模型训练速度、训练精度等训练性能指标造成的影响。

图10 模型训练收敛速度对比

如图10所示,在同样60 000余步的训练过程中,本文提出的使用SN作为归一化方式的网络比原始的以IN为归一化方式的网络收敛速度更快、最终误差更小、震荡幅度更平稳。这说明,使用SN作为归一化方式在用CycleGAN进行光照补偿的过程中,能降低训练时间、提高最终模型的效果,是比IN更为优秀的选择。

4 结束语

本文提出了一种基于经过优化的CycleGAN的光照补偿方法,通过一个以SN为归一化方式替换原本IN归一化方式的CycleGAN网络,对光照条件不佳的图像进行光照补偿使其光照均衡。本文方法通过复杂光照、正常光照两个数据集的对抗训练,实现了将光照作为一种风格进行迁移的效果,也通过更换归一化方式解决了原本CycleGAN存在的容易把非光照因素一并进行迁移的问题。本文通过实验中的图像对比和亮度、对比度、峰值信噪比的比较证明,本文使用方法在过暗图像和强反光图像上的光照补偿效果均高于传统算法如Retinex算法、Gamma校正法等,也大幅优于原本的CycleGAN算法,训练速度快于该方法。由于本文方法暂时还只能应用于事件、事物类似的数据集,下一步的工作是将该方法泛化,使其针对大部分常见场景都能进行效果较好的光照补偿。

猜你喜欢
原图光照卷积
节能环保 光照万家(公益宣传)
基于3D-Winograd的快速卷积算法设计及FPGA实现
当幻想的光照进童心世界
卷积神经网络的分析与设计
隐蔽的力量
从滤波器理解卷积
完形:打乱的拼图
基于傅里叶域卷积表示的目标跟踪算法
找一找
大家来找茬