APP下载

基于双判别器生成对抗网络的遮挡人脸图像修复算法*

2023-08-02布安旭陈月乃

计算机与数字工程 2023年4期
关键词:散度泊松卷积

布安旭 马 驰 胡 辉 陈月乃 杨 乐

(1.辽宁科技大学计算机与软件工程学院 鞍山 114051)

(2.惠州学院计算机与工程学院 惠州 516007)

1 引言

图像修复[1]主要是先通过对未破损区域的信息进行分析,然后以此来推断破损区域的内容,从而对破损区域进行还原。它有着很多应用场景,例如文物修复、影视特技制作、老旧照片修复、公安刑侦面部修复等,因此图像修复有着重要的现实意义。在传统的图像修复方法中,主要包括基于结构和基于纹理的两种方法。前者适用于破损面积较小的情况,而使用最为广泛的就是BSCB模型,该模型由Betalmio[2]等提出,它主要是通过待修补区域的边界向待修补区域扩散的方法来实现图像修复的。基于纹理合成[3]的方法更适用破损面积较大的情况,而使用和讨论最广泛的就是Criminisi 算法,该算法由Criminisi[4]等提出,它通过寻找图像中的最优像素块,然后将其填充到图像中的破损区域来实现修复目标。

然而,传统的图像修复效果在内容和层次上缺乏连贯性,以及存在语义缺失等问题,所以修复效果不尽人如意,其主要原因是因为传统方法缺乏像人一样的图像理解力和感知力,而深度学习的出现则解决了这一问题。深度学习主要从众多数据集上学习并提取图像中的语义特征和纹理结构信息,从而得到良好的修复结果。上下文编码器(context-encoders)是一个包含很多层网络的图像修复模型,该模型由Pathak 等[5]提出,Pathak 将context-encoders 作为修复模型的主要组成部分,在破损图像编码后再经过解码器生成缺失区域的部分。然而,文献[5]中的网络模型会产生破损部分与未缺失部分不连续的现象,从而影响最终的修复结果。生成对抗网络(GAN)[6](GAN)是一种效果比较好的生成模型,在图像修复中也很常用,其中最流行的的就是深度卷积生成对抗网络[7](DCGAN),文献[7]将GAN 模型和卷积神经网络[8](CNN)进行了融合,把CNN 的理念应用到生成网络和判别网络中,以提高模型在训练时的性能,从而增强模型的修复能力。

本文在现有的方法上进行改进,以生成对抗模型为基础架构,在全局判别器的基础上引入局部判别,以保证局部修复结果与周围区域的一致性;将encoder-decoder作为生成模型,并在其层中添加跳跃连接[9](skip-connection);使用训练过程中更为稳 定 的Wasserstein 距 离[10](Wasserstein GAN,WGAN),来加快模型的收敛速度;利用泊松融合[11]获得更加真实自然的修复效果,这也是本文方法的特别之处。

2 相关内容

2.1 生成对抗网络

GAN[6]是由Goodfellow 在2014 年提出的模型,其中判别器D 和生成器G 会通过不断地进行对抗训练来得到增强。GAN 的网络结构如图1,GAN 包括生成模型G 和判别模型D 两个子网络,生成器可以实现对数据分布Pdata的高效拟合,不断生成与真实图像相似的图像。而判别器D 的主要任务是对输入数据进行判断,并将输出的结果反馈给G。

图1 GAN的网络结构

GAN 的训练任务是让生成器G 生成的图像与真实图像的概率分布的差距尽可能小,即让Pz 尽可能地接近Pdata,并且让判别器D 鉴别图像真假的能力最大化,即让判别器D的输出D(x)趋近于1,D(G(z))趋近于0。GAN 对抗学习的思想可以表示为

其中,E 表示数学期望值,z为随机噪声,x 为真实样本。判别器和生成器会不断交替进行训,在最理想的状态下,两者会达到“纳什均衡点”[12],而此时生成器生成的图片已经能骗过判别器了。

2.2 WGAN

WGAN[10]由Arjovsky 等提出,它主要解决了对抗网络在训练过程中出现的不稳定问题,它对先前对抗网络中的损失函数进行了替换,用Wassersteinr 距离替换先前的JS 散度和KL 散度来衡量两个分布之间的差距。这是因为Wasserstein 距离是一个连续的平滑函数,它更加平滑且无突变,在两个分布没有重叠的情况下仍然能反映它们的远近,这就是Wasserstein 距离的优势,而JS 和KL 散度则不具备这种特性。所以在训练的时候WGAN 可以保证梯度的有效性,从而能够有效解决原始GAN因使用JS/KL 散度出现的训练不稳定、模式崩溃等情况。

Wasserstein距离的计算方式如式(2):

式(2)中,||t||R≤H 为函数t需要满足Lipschitz条件限制,以限制函数t 改变的速度。Lipschitz 条件限制在本质上来说,其实就是让一个连续函数的局部最大变化幅度小于常数H。

WGAN的生成器损失函数为

判别器的损失函数为

3 网络结构及损失函数

本文采用的GAN模型的整体结构图2所示,由生成器G 和判别器D 构成。本文的大体思路:通过训练生成模型G 来学习真实样本的概率分布,采用内容损失和对抗损失相结合的方式来训练模型。然后,将待修复图像输入到经过训练后的模型中,经过模型修复后得到的生成图像,在视觉上会非常逼近真实图像。

图2 整体网络结构

3.1 生成器

GAN 的生成模型具有可以从任意分布中采样的优势,而且可采用的网络模型也有很多,例如自编码器[13]等。本文采用encoder-decoder 作为生成器G,它是一种基于编码解码的生成模型,且本质上也是卷积神经网络,图3 为G 的模型结构。生成器在执行时,先将待修复图像输入到编码器进行编码得到隐层表征,编码过程可看作是将待修复图像逐层抽象成隐层表征[14],然后在解码时把隐层表征输入到解码器生成预测图像。

图3 生成器结构

为了获得更高质量的输出图像,一般会在输入和输出之间共享信息。所以,本文在生成模型中添加了skip-connection,通过skip-connection 可以更好地利用各种解像度下的特征信息,从而把低级特征从低层直接传送到更高层,通过对编码器低级特征与相应解码器层得到的高级特征实现拼接,在拼接完成后,再将其传入到之后的网络中,以此尽最大可能地保留图像的底层结构。

生成模型G 的结构及网络参数如图3 所示。其中,Conv 表示卷积层,用来进行下采样;DeConv表示解卷积层,用来进行上采样;5*5 表示卷积核的大小。 并且在encoder-decoder 中添加了skip-connection,从而更好地对图像中的结构信息进行预测。至于激活函数,在下采样层中,使用的是Leaky-ReLu[10],可以防止出现梯度稀疏的问题;上采样层中,除了最后一层使用了Tanh[15]外,别的都用ReLu[15]。

3.2 判别器

判别模型包含两个子网络,如图4,分别为用来审查整张图像全局信息的全局判别模型和用来审查图像局部信息的局部判别模型,两者共同确保了最终的修复结果在全局和局部上保持结构信息的一致连贯性;且两者网络结构大致一样,都使用了CNN,并且两者也都是通过卷积层来提取图像中的特征信息;另外两者的输入包括真实图像和生成图像两种,最后将两者的结果汇合得到最终的评价结果。在全局判别模型中,采用了5 层卷积和1 个FC层,而局部判别模型中使用了5层卷积和1个FC层,两者卷积核大小均为5*5。局部判别模型以局部生成图像和局部真实图像作为输入,局部真实图像和局部生成图像是通过真实图像、生成图像与二进制掩码M 分别相乘产生的,此二进制掩码、真实图像以及生成图像三者尺寸相同但且都只包含0和1 两张数值,1 表示破损的部分,0 表示未破损的部分。由于本文使用了WGAN 来衡量两个分布之间的差距,所以在把样本输入到判别器后,要对其进行独立的梯度惩罚,而在同一批中的样本为了防止发生彼此依附的情况,就需要在判别模型的所有层中采用层规范化[16]。

图4 判别器结构

3.3 损失函数

3.3.1 生成器损失函数

GAN 作为近些年最为优秀的生成模型之一,它生成的样本要满足真实性、连续性、多样性等原则,以增强生成样本的质量,从而使判别器鉴定其为真实样本的概率大大提高。为了让生成图像与原始图像尽可能相似,这里不仅使用了WGAN 对抗损失,还添加了内容损失,对抗损失即真实图像和生成图像两者之间的差距,内容损失即待修复图像中未受损区域在修复后与真实图像之间的差距,将两个损失函数联合起来作为生成器最后的损失。

这里把受损图像作为条件添加到生成器中,所以,对抗损失函数为

在进行图像修复任务时,只需要生成破损区域的图像,而未破损区域的部分与原图保持一致就行,所以这里利用了L1 距离衡量修复后的图像中的未破损部分和原始图像中未破损部分的距离。这里用0 表示未破损的像素点,用1 表示已破损的像素点,则内容损失函数如下:

其中,M 为掩码,⊙表示矩阵逐元素相乘。把以上两个损失函数联合起来形成生成模型最终的损失函数为

其中,λ是权重系数。

3.3.2 判别器损失函数

判别器的目标就是识别出真实样本,在输入真实图像时,判别器会给其更高的评分,即让Ex~pr(x)D(x)尽可能大;在输入生成图像时,判别器会给其较低的评分,让Ex~pg(x)D(x)尽可能小。而不管什么类型的生成对抗网络,它们的判别器损失函数大致都一样,本文也一样,不过本文没有使用之前的JS 散度和KL 散度来衡量生成图像与真实图像之间的差距,而是使用了Wasserstein 距离来替代二者,此外还添加了梯度惩罚Ex~p∧x[‖ ∇xD(x)‖p-1]2来对判别器进行Lipschitz 限制。故判别器的损失函数为

此外,由于把破损图像作为条件加入到了判别器中,所以判别器最终的损失函数为

其中,α表示权重系数。

4 实验

4.1 实验环境

4.1.1 数据集

本文使用的是CelebA 数据集,该数据集是一个人脸数据集,包含了1万多个名人身份的20余万人脸图像。本实验采用CelebA 数据集中已经将人脸位置对齐并裁剪到128×128×3 大小且不戴眼镜的50k 张图像,并将该数据集按照2:8 的比例随机划分为测试集和训练集,人脸的中心掩码大小64×64。

4.1.2 实验细节

本实验基于TensorFlow 框架,在CentOS 7.0 下进行,使用内存为16G,显存为8G 的Nvidia RTX2080 GPU。相关训练参数的设置为epoch=10,batch_size=8,lr=0.0001,每 一 个epoch 迭 代 训 练20000次,实验参数β1和β2分别设置为20和90,优化器采用Adam,其中用来计算梯度和梯度平方的参数设置为0.5和0.9。

4.2 实验分析

4.2.1 算法稳定性分析

在对抗网络中使用JS/KL 散度度量原始图像和修复后的图像两者分布之间的距离时,由于损失函数会出现忽高忽低的情况,故而导致训练不稳定的问题,而此问题比较突出的的就是文献[7]中的DCGAN 模型。所以对于真实样本和生成样本二者分布之间的差异,这里使用Wasserstein 距离来衡量。图5 和图6 分别为WGAN 和DCGAN 的判别器的损失函数的变化过程,从图5可以看出WGAN 的训练过程比较稳定并且收敛的很快,而在图6 中DCGAN的训练过程中波动较大且较难收敛。

图5 WGAN判别器的损失函数

图6 DCGAN判别器的损失函数

4.2.2 修复结果对比分析

本文的修复效果对比如图7,从左到右分别是正常人脸、遮挡人脸、文献[5]、文献[7]、本文方法的修复结果。在图7 中,从视觉上可以直观地看到本文的修复效果相对较好,特别是修复的眉毛末端和眼睛以及嘴巴这些地方,虽然与原始图像相比还存在着一致性问题,但是相比文献[7]已经有着很大优势。而文献[5]之所以在这些部位的修复效果稍差,这是因为它使用了JS 和KL 散度训练模型,从而导致模型训练不稳定且收敛慢。

图7 修复效果对比图

图8 是对不同遮挡部位进行修复的结果,虽然修复后的图像在一些细节上与原图还会存在差异,但仍取得了不错的修复效果,说明对不同的破损区域和遮挡形状本文都能进行较好的修复。

图8 不同遮挡部位的修复效果

4.2.3 泊松融合

从图7 中可看到,本章方法虽然相较于文献[5]和文献[7]有着不错的修复效果,但还是有较为明显的修复边界,为了让修复后的图像衔接更加自然,要对修复图像进行泊松融合[11]。泊松融合主要是通过求解泊松方程来对衔接区域进行插值处理,从而能够让两张图像进行无缝混合,且混合后的图像会更加自然。添加了泊松融合的修复结果如图9 所示,从左到右分别是原始图像、遮挡图像、未添加泊松融合的结果、添加泊松融合的结果,可以看出,第三列未添加泊松融合的修复结果有较明显的修复边界,而第四列添加了泊松融合的修复结果则更加自然。

图9 泊松融合的结果

4.2.4 定量分析修复效果

在评估图像修复效果时,除了在直观上用肉眼辨别外,也可以用相应的评价指标定量地评估修复结果,常用的评价指标包括结构性相似(SSIM)、峰值信噪比(PSNR)等,而SSIM 和PSNR 是目前使用较多的、用来评估图像质量的指标。PSNR 是基于误差敏感的图像质量指标,该指标的值越大修复效果越好,与原始图像也越相似。SSIM 用来评估两个图像在整体上的相似性,它从三个方面衡量了图像相似性,即结构、亮度、对比度;SSIM 的取值区间是[0,1],值越大,说明修复图像的相似度越高。基于PSNR和SSIM的评价结果如表1。

表1 评价结果

5 结语

本文针对遮挡人脸图像的修复提出了一种基于生成对抗模型的方法,该模型的生成器基于编码器解码器结构,并在其中加入了跳跃连接以提高生成模型对结构信息的预测能力,而在判别模型中使用了WGAN,并且添加了梯度惩罚,从而使网络的训练更加稳定以获得更高质量的图像。通过与文献[5]以及文献[7]的修复结果进行比较,可以直观地发现本文在CelebA 数据集上的修复效果更好;另外用相应的评价指标PSNR 和SSIM 对本文方法和文献[5]以及文献[7]进行评估,本文方法也取得了不错的结果。最后,虽然本文的修复效果取得了不错的结果,但是在一些细节上仍然不太理想,下一步的研究将重点解决这个问题。

猜你喜欢

散度泊松卷积
基于泊松对相关的伪随机数发生器的统计测试方法
带势加权散度形式的Grushin型退化椭圆算子的Dirichlet特征值的上下界
基于3D-Winograd的快速卷积算法设计及FPGA实现
带有双临界项的薛定谔-泊松系统非平凡解的存在性
具有部分BMO系数的非散度型抛物方程的Lorentz估计
从滤波器理解卷积
H型群上一类散度形算子的特征值估计
基于傅里叶域卷积表示的目标跟踪算法
Hörmander 向量场上散度型抛物方程弱解的Orlicz估计
泊松着色代数