APP下载

基于循环生成对抗网络的图像风格迁移*

2020-05-04彭晏飞王恺欣梅金业訾玲玲

计算机工程与科学 2020年4期
关键词:灰度损失像素

彭晏飞,王恺欣,梅金业,桑 雨,訾玲玲

(辽宁工程技术大学电子与信息工程学院,辽宁 葫芦岛 125105)

1 引言

图像风格迁移技术的发展可以追溯到图像纹理生成技术,由于当时科研水平有限,需要繁琐的公式和复杂的数学模型来学习如何生成纹理,且数学模型的建立耗时耗力,因此图像风格迁移的发展十分缓慢[1]。Gatys等人[2]在2015年提出了基于神经网络的图像风格迁移算法,该算法是将图像的内容和风格分开的算法。算法通过计算Gram矩阵得到图像的风格特征,再通过卷积神经网络给图像的内容和纹理建模,然后再计算图像的内容特征,约束输入图像与目标域图像的内容特征保持一致。利用梯度下降,通过误差反向传播的方式训练输入的图像完成图像的风格化,得到经过风格迁移的图像,这种算法虽然可以得到输出,但生成的图像并不清晰。Gatys等人[2]提出的算法使用一对一映射方法,训练时需要大量成对图像,图像的类型需要涵盖各个方面,例如将黑夜的图像转换为白天的图像,需要来自相同位置的大量的黑夜和白天的图像,耗费了大量的时间和精力,输出的图像存在噪声、分辨率低等问题,因此该算法在实际中应用的范围很窄。基于神经网络的迁移方法在迭代上也存在问题,每生成1幅质量高的图像需要经过多次迭代,程序运行速度十分缓慢,占用了极大的内存,还可能导致程序崩溃等问题[3]。基于以上的问题,本文使用生成对抗网络GAN(Generative Adversarial Networks )[4]来完成图像风格的迁移。

自提出以来,GAN在自然语言处理[5]、文本到图像的生成[6]、图像分割[7]、图像风格迁移[8]和图像超分辨率[9]等领域得到了广泛应用,但还存在训练不稳定、梯度消失、模式崩溃问题。Zhu等人[10]结合GAN和对偶学习的思想,提出了循环生成对抗网络CycleGAN(Cycle Generative Adversarial Networks)的无监督学习方法,其基本思想是使用生成器和判别器完成图像不同域之间的转换,再添加循环一致项保留图像的内容信息。L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,在一定程度上还可以防止过拟合,因此,Luan等人[11]在CycleGAN中加入L1正则化,进一步提高了生成图像的质量。虽然工作取得了一定的进展,但也存在提取的图像内容忽略了很多细节,输出的图像存在噪声等问题。为了更好地解决以上问题,本文提出了结合LBP算法和改进损失函数的方法,将LBP算法加入CycleGAN的生成器中,可以更好地提取原图像的内容特征。同时,本文改进了CycleGAN的损失函数,在损失函数中加入Total Variation Loss来约束噪声。实验结果表明,本文提出的图像风格迁移方法生成的图像质量更好。

2 相关理论

2.1 生成对抗网络

Goodfellow等人[4]提出的GAN是一种比较好的无监督学习模型,具有很强的建模能力,可以获得高维且真实的数据分布。GAN的结构由生成器和判别器组成,其中生成器输入的是随机噪声,通过随机噪声生成图像,判别器用来判断生成器生成的图像是否和真实样本接近或者相似,判断出的结果反馈给生成器,然后再训练生成器,使其能生成更好的图像,达到以假乱真的效果。生成器提高生成能力,判别器提高判别能力,二者同时训练,一代一代地进化,最后达到一种动态平衡[12]。具体过程如图1所示。其中,NN GeneratorVn是一代一代不断进化的生成器,DiscriminatorVn是一代一代不断进化的判别器。

GAN的生成器G与判别器D之间的关系如式(1)所示:

EZ~PZ(Z){log[1-D(G(Z))]}

(1)

其中,Pdata(x)是真实数据分布,PZ(Z)是用于Z采样的先验分布。

判别器D的损失函数如式(2)所示:

JD=-∑x~Pdata(x)[logD(x)]-

EZ~PZ(Z){log[1-D(G(Z))]}

(2)

生成器G的损失函数如式(3)所示:

JG=-EZ~PZ(Z){logD[G(Z)]}

(3)

Figure 1 Process diagram图1 过程示意图

GAN存在训练不收敛、不稳定、周期长、训练损失与训练的关联性不强,需要判断生成器和判别器何时达到动态平衡来防止梯度消失等问题。针对这些问题,本文使用比GAN效果更好的模型CycleGAN来完成图像风格迁移。

2.2 CycleGAN

CycleGAN是在2017年由Zhu等人[13]提出的,它是由2个镜像对称的生成对抗网络组合形成的环形网络,分别由2个生成器和2个判别器组成。CycleGAN的训练过程简单,采用无监督的学习方法,只需使用生成器和判别器完成图像域的转换,然后用循环一致性来约束和保证图像的内容信息,因此CycleGAN不需要一对一地训练,只需要训练2类图像就可以训练出1个模型,应用十分广泛。

Figure 2 Structure of CycleGAN图2 CycleGAN结构图

Figure 3 Schematic diagram of LBP principle图3 LBP原理示意图

CycleGAN的工作原理如图2所示,存在2个域:风景图像所在的域是源域X域,油画风格产生的图像所在的域是目标域Y域。图2是由X域转换为Y域的X2Y生成对抗模型。其中,Input_X是输入X域的图像,Generate_Y是生成的Y域图像,Cyc_X是循环一致性生成的图像;GeneratorGX2Y和GeneratorGY2X分别是生成X域到Y域和生成Y域到X域图像的生成器;Discriminator是判别器,Decision[0,1]是判别器的判别结果。

CycleGAN的作用是实现图像不同域的转换,先学习从X域到Y域的一种映射关系,这个映射关系的含义是生成器GX2Y可以将图像转换为Y域的图像Generate_Y,生成完图像后需要把图像放进判别器DY来判断生成的图像是否是真实的图像。

同理,CycleGAN在训练中也需要把Y域的图像转换为X域的图像,过程也与上述描述过程类似,反向工作原理图也与图2类似,只需交换X和Y字母。这样的循环就形成了一个环形的网络[14]。

2.3 LBP算法

局部二值模式LBP是由Ojala等人[15]提出的一种提取图像纹理特征的算法,该算法简单有效且具有旋转不变性等优点。

LBP算法是在3*3的窗口内定义的,它以窗口中心像素灰度值为阈值,将其与相邻的其他8个像素的灰度值进行比较。如果相邻像素的灰度值小于最中心像素的灰度值,该位置就被标记为0;如果相邻像素值大于中心像素灰度值,该位置就被标记为1。运用这个原理可以得到一个8位的二进制数。然后再将二进制数转换为十进制数,得到LBP值(LBP码一共有256种),将得到的LBP值作为3*3窗口中心像素的LBP值,以反映3*3区域的纹理信息。具体原理示意图如图3所示[16]。

因为LBP算法记录的是中心像素和与它相邻的8个像素的灰度值差值,该值只是固定尺寸区域内的值,所以当图像的尺寸发生变化时,LBP算法可能出现错误,不能正确地体现相邻像素点的纹理信息[17]。因此,本文选择使用圆形LBP算法来实现图像风格迁移。

3 本文方法

3.1 圆形LBP算法

为了更好地提取图像的纹理特征,满足旋转不变性的要求,Ojala等人[18]对LBP算法进行了改进,将固定的3*3空间改进为任意空间,用圆形来代替传统的正方形,改进后的LBP算法允许在半径为R的圆形空间内存在多个像素点。圆形LBP算法特征点如图4所示,其中,R为采样半径,P为采样数目。

Figure 4 Feature points of circular LBP algorithm图4 圆形LBP算法特征点

因为光照、旋转、噪声等因素的影响,圆形LBP算法把中心像素和它相邻像素的差值分成符号分量和梯度分量,即CLBP_S和CLBP_M,再将得到的结果相乘。CLBP_M分量的值是连续的,为了与CLBP_S分量的编码统一,需要将CLBP_M分量计算出来的值化为二进制编码[19]。CLBP_M编码如式(4)~式(6)所示:

(4)

(5)

其中,mp为中心像素灰度值,c是自适应阈值。这里的c是取整幅图像的mp的均值。p个采样点的坐标为:

(6)

Figure 5 Flow chart of circular LBP algorithm图5 圆形LBP算法流程图

Figure 6 Generator structure图6 生成器结构

中心像素代表该局部区域的灰度级和灰度判别信息,为了使CLBP_M和CLBP_S更好地结合,对整幅图像进行平均编码,如式(7)所示:

CLBP_C=t(gc,cI)

(7)

其中,gc表示中心像素的灰度值,cI表示整幅图像中像素灰度的平均值(通过比较中心像素和整幅图像平均像素值的大小进行二进制编码)[20]。

圆形LBP算法的流程图如图5所示,其中LDSMT为局部差分处理器,可以通过串联、并联或者串并联其直方图的形式来对3个特征值CLBP_S、CLBP_M和CLBP_C进行融合[21]。

3.2 网络结构

3.2.1 生成器结构

本文的生成器结构如图6所示,是由LBP算法、4个卷积层(Conv1~Conv4)、9个残差模块层(ResNet1~ResNet9)和2个转置卷积层(Deconv1、Deconv2)组成的。生成器的工作步骤:先经过LBP算法提取输入图像的纹理信息;再经过3个卷积层提取图像的其它特征,经过9个残差模块层进行图像转换,即图像风格的迁移,经过1个转置卷积还原图像的低级特征 ,再经过1个卷积层生成图像;最后再输出图像。本文生成器输入和输出的图像大小都是256*256像素。

每个残差模块层都由2个卷积层组成。残差模块层的工作就是将上一个卷积层的一部分输出作为输入和一部分经过残差模块层的输入一起添加到残差模块层的输出中,具体结构如图7所示。使用残差模块层可以更好地保护原始图像信息的完整性,解决传统神经网络的网络层越深梯度消失越明显的问题,网络随深度的增加而不退化,可加快模型的训练速度,改善模型的训练效果[22]。

Figure 7 Structure of residual network layer图7 残差模块层结构

3.2.2 判别器结构

本文的判别器结构如图8所示,是由5个卷积层(Conv1~Conv5)组成的。判别器首先用前4个卷积层提取输入图像的特征,然后用第5个卷积层将其转换为一维特征向量后输出,实现判别的目的。

Figure 8 Discriminator structure图8 判别器结构

生成器和判别器互相博弈,先由判别器训练生成器,目的是训练CycleGAN的生成器使其能生成更清晰且真实的图像。然后由生成器训练判别器,目的是让判别器不断地提高判别能力,然后再根据循环一致性得到的图像来验证生成器是否能生成更真实的图像[23]。

当模型训练完成后,输入1幅图像,生成器就能提取图像的特征,生成具有其他风格的图像,也就是将X的图像风格转换成Y的图像风格。CycleGAN是一个环形的网络,也存在反向的将Y的图像风格还原成X的图像风格的输出结果,但出于缩短模型训练时间等的实际需要,本文只保存了X向Y转换的输出结果。实验表明,经过这样的循环,最终能实现图像的风格迁移。

3.3 损失函数

CycleGAN的损失函数由3部分组成:X域到Y域的损失函数、Y域到X域的损失函数和循环一致性的损失函数。

Rudin等人[24]发现受噪声污染的图像的总变分比没有噪声的图像的总变分大,最小化Total Variation Loss就可以最小化噪声,如式(8)所示:

(8)

其中,xi,j为每个像素的坐标,xi,j+1为纵向下一个像素的坐标,xi+1,j为横向下一个元素的坐标,β为权值,取值为2.75。通过计算像素的坐标可以得到图像相邻像素的差异,这样就可以降低函数值,降低Total Variation Loss。

Total Variation Loss可以去除噪声,使图像平滑,和其他损失函数配合使用可以约束噪声,常用于图像处理中[25]。因此,本文在CycleGAN的损失函数中加入了Total Variation Loss来减小生成图像的噪声。

对于X域到Y域的映射,CycleGAN的损失函数如式(9)所示:

LG(GX2Y,DY,X,Y)=Ey~pdata(y)[logDY(y)]+

Ex~pdata(x)[1-logDY(GX2Y(x))]+RVβ

(9)

其中,X,Y为源域X域和目标域Y域;x和y分别是X域图像和Y域图像,GX2Y(x)为X域到Y域映射的生成器 ,DY为判别X域到Y域生成的图像判别器。

对于Y域到X域的映射,CycleGAN的损失函数如式(10)所示:

LG(GY2X),DX,X,Y)=Ey~pdata(x)[logDX(y)]+

Ey~pdata(y)[1-logDX(GY2X(y))]+RVβ

(10)

其中,GY2X(y)为Y域到X域映射的生成器 ,DX为判别Y域到X域的判别器。

CycleGAN同时训练2个映射,一个是X域的图像x经过生成器GX2Y生成Y域图像,一个是生成的Y域图像经过反向生成器GY2X能变回X域的图像x。后一个映射如式(11)所示:

GY2X(GX2Y(x))≈x

(11)

同理,Y域的图像y可经过生成器GY2X生成X域图像,生成的X域图像经过反向生成器GX2Y能变回Y域的图像y,如式(12)所示:

GX2Y(GY2X(y))≈y

(12)

式(11)和式(12)就是CycleGAN中循环一致性的体现。

循环一致性的损失函数如式(13)所示:

Lcyc=(GX2Y,GY2X,X,Y)=

Ex~X[‖GY2X(x)-x‖1]+

Ey~Y[‖GX2Y(y)-y‖1]

(13)

CycleGAN由2组生成器和判别器构成(图2只给出正向X域到Y域的结构,反向Y域到X域的结构与之类似只需交换X、Y字母)。损失函数中每组GAN的生成网络和判别网络的损失类似, 公式相同。总损失函数是整个网络的损失函数,包括生成网络和判别网络,由生成器的损失函数(Total Variation Loss在生成器损失函数内)、判别器的损失函数和循环一致的损失函数组成。本文方法的总损失函数如式(14)所示:

L=LG(GX2Y,DY,X,Y)+LG(GY2X,DX,X,Y)+

Lcyc(GX2Y,GY2X,X,Y)

(14)

4 实验结果与分析

4.1 实验设置

实验所使用的计算机配置:处理器为Intel®CoreTMi7-8565U CPU @ 1.80 GHz,运行内存为8 GB,显卡为NVIDIA GeForce MX250。开发环境是TensorFlow,数据集的处理在PyCharm平台上实现。

本文选取的是scenery2painting数据集,风景图像和油画图像2种类别作为实验对象,最终使用的风景图像2 000幅,油画图像400幅,其中训练集中风景图像1 900幅,油画图像300幅,测试集中的风景图像100幅,油画图像100幅。

实验图像的尺寸均为256*256像素,训练使用Adam优化器,学习率设置为0.000 2,保持学习率不变的epoch数量为200。

4.2 主观评价

CycleGAN常用于实现图像迁移,因此为了验证本文方法的有效性,实验选取基于CycleGAN的图像风格迁移、在CycleGAN上加入L1正则化的图像风格迁移方法进行对比实验,使用相同的数据集,训练和测试的图像完全相同,对进行多次迭代后得出的结果进行比较。

由于油画图像数量有限,风景图像和油画图像的数量不可能相同,所以实验中如果风景图像的训练图像数量大于油画图像的训练图像数量,就从油画数据集中随机选取图像进行训练,实验结果如图9所示。

Figure 9 Contrast diagram before and after style conversion图9 风格转换前后对比图

由图9可以看出,CycleGAN虽然完成了图像风格的转换但得到的图像十分模糊,加入L1正则化的CycleGAN虽然可以得到清晰的图像轮廓,也能完成基本的图像风格迁移,但是效果不是最好的,而本文方法可以实现图像风格的转换,效果清晰,质量明显高于其他2种对比方法。

4.3 客观评价

为了进一步验证本文方法的有效性,客观评价CycleGAN、加入L1正则化的CycleGAN与本文方法之间的差异,本文使用对比度、结构相似性SSIM(Structural Similarity Index)、信息熵、峰值信噪比PSNR(Peak Signal to Noise Ratio)和均方误差MSE(Mean Square Error)进行评估。

对比度反映了一幅图像中明暗区域之间的不同亮度层级,如式(15)所示:

C=∑δδ2(i,j)Pδ(i,j)

(15)

其中,δ(i,j)=|i-j|,表示相邻像素之间的灰度差;Pδ(i,j)表示相邻像素的灰度差为δ的像素的分布概率。对比度值越大代表对比度越大,图像更生动、更丰富。

结构相似性SSIM反映了2幅图像的相似度,如式(16)所示:

(16)

信息熵是信息含量的量化指标,如式(17)所示:

(17)

其中,xi表示第i幅图像,XC表示图像的集合;p(xi)表示输出为xi的概率函数,n为图像数量。信息熵值越大代表包含的信息越多,图像更生动更丰富。

PSNR是图像处理中信号重建质量的测量评价指标,通常会通过均方误差(MSE)来定义。MSE是参数估计值与参数真值的差的期望值,如式(18)所示:

(18)

PSNR是峰值信噪比,是信号最大功率和影响信号精度噪声功率的比值,是到达噪音比率顶点的信号,如式(19)所示:

(19)

其中,MAXI表示图像点颜色的最大数值。PSNR的值越大,说明图像失真越小,图像的重建质量越好。

评估结果如表1所示。

Table 1 Evaluation results of each method表1 各方法评估结果

由表1可以看出,CycleGAN的对比度值最小,说明CycleGAN迁移效果最差;而本文方法的对比度高于其他2种方法的,说明使用本文方法产生的图像内容更生动、更丰富。从SSIM来看,本文方法生成的图像与原图像的结构最相似,这是因为本文方法可以充分学习和融合样本的有效信息。由信息熵的数据可以看出,CycleGAN产生的图像信息量是最低的,本文方法产生的图像包含的信息量要高于其他方法的。由PSNR和MSE可以看出,本文方法与CycleGAN相比,PSNR值提高了1.2,MSE值减小了296.3,说明本文方法产生的图像质量高于其他方法的。

通过以上客观评价指标可以看出,本文方法在图像风格迁移上的各项客观评价指标的数据要优于对比方法,产生的图像优于对比方法产生的图像,验证了本文方法的可行性。

5 结束语

针对CycleGAN迁移后的图像纹理不清晰问题,本文提出了在CycleGAN的生成器中加入LBP算法来进一步提取图像的纹理特征的方法。针对生成图像存在噪声的问题,本文提出了在损失函数中加入Total Variation Loss来约束噪声的方法。实验的结果表明,本文方法生成的图像具有一定的实用性,可以满足基本的要求,但也存在训练时间太长、油画图像数据集数量不能满足风景图像数据集的需要等问题。

因此,在未来的工作中,将寻求一种新的算法来提高运行速度,采用更多的数据集进行训练和测试,使产生的图像内容更生动、更丰富,质量更高。

猜你喜欢

灰度损失像素
采用改进导重法的拓扑结构灰度单元过滤技术
像素前线之“幻影”2000
胖胖损失了多少元
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
“像素”仙人掌
玉米抽穗前倒伏怎么办?怎么减少损失?
ÉVOLUTIONDIGAE Style de vie tactile
基于最大加权投影求解的彩色图像灰度化对比度保留算法
高像素不是全部
菜烧好了应该尽量马上吃