基于人脸关键点引导式生成对抗网络的人脸修复方法与流程

文档序号:21699692发布日期:2020-07-31 23:01阅读:314来源:国知局

本发明属于计算机视觉技术领域,主要涉及一种在大面积区域缺失情况下利用人脸关键点引导式生成对抗网络完成人脸修复任务的方法。



背景技术:

人脸修复是一种利用已知人脸信息修补缺失区域从而获得完整人脸的技术。生成对抗网络的提出进一步提高了人脸修复结果的真实性。文献“semanticimageinpaintingwithdeepgenerativemodels.inproceedingsoftheieeeconferenceoncomputervisionandpatternrecognition,2017:5485-5493”利用深度卷积生成对抗网络,结合上下文和先验损失来搜索最接近已知信息的编码,将该编码输入生成器推断出缺失区域信息,较好地完成了在结构相对简单的人脸图像上的修复任务。然而,在严重遮挡等条件下,人脸大面积区域信息缺失,该方法由于缺少有效的上下文和先验信息,导致修复结果并不理想,尤其表现在修复得到的人脸面部轮廓等关键部位失真方面。人脸面部轮廓、眉毛、眼睛、鼻子等关键点定位任务称为人脸关键点预测。针对上述问题,在人脸大面积区域信息缺失的情况下,确定一个最佳结构的生成对抗网络,利用人脸关键点预测结果引导生成的人脸面部轮廓等不断接近真实值,从而更好地完成人脸修复任务是极具研究意义和价值的。



技术实现要素:

要解决的技术问题

本发明所要解决的技术问题在于克服现有技术问题,提供一种基于人脸关键点引导式生成对抗网络的人脸修复方法,使用一个深度神经网络模型完成大面积区域缺失情况下的人脸修复任务,获得更为真实和连贯的人脸修复图像。

技术方案

一种基于人脸关键点引导式生成对抗网络的人脸修复方法,其特征在于步骤如下:

步骤1:构建人脸关键点引导式生成对抗网络,该网络包括人脸修复模块和人脸关键点预测模块;

所述的人脸修复模块由一个生成器和一个判别器组成,生成器包括输入、10个卷积层、2个空洞卷积层、2个反卷积层、输出;输入是大小为64×64×3的带随机二进制掩膜的人脸图像,如下:

im=i⊙m(1)

式中,im为带随机二进制掩膜的人脸图像,i为用于训练网络的人脸数据集中的原始人脸图像,m为随机生成的大小为64×64的二进制掩膜;

第一层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出64个大小为64×64的特征图;第二层卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出128个大小为32×32的特征图;第三层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出128个大小为32×32的特征图;第四层卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出256个大小为16×16的特征图;第五层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图;第六层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图;第七层空洞卷积层,卷积核大小为3×3,空洞率为2,激活函数为lrelu,输出256个大小为16×16的特征图;第八层空洞卷积层,卷积核大小为3×3,空洞率为4,激活函数为lrelu,输出256个大小为16×16的特征图;第九层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图;第十层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图;第十一层反卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出128个大小为32×32的特征图;第十二层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出128个大小为32×32的特征图;第十三层反卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出64个大小为64×64的特征图;第十四层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出32个大小为64×64的特征图;第十五层输出层,是生成器生成的大小为64×64×3的人脸图像;

判别器包括输入、4个卷积层、1个全连接层、输出;输入是大小为64×64×3的人脸图像;第一层卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出64个大小为64×64的特征图;第二层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出128个大小为32×32的特征图;第三层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图;第四层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出512个大小为4×4的特征图;第五层全连接层,激活函数为sigmoid,输出一个范围为[0,1]的单个数值,代表输入判别器人脸为真实人脸的概率值;

所述的人脸关键点预测模块包括输入、4个卷积层、1个全连接层、输出;除输出外,该模块结构与上述判别器结构相同;该模块输出为一个136维的向量,代表人脸68个关键点x、y坐标预测结果;

步骤2:训练人脸关键点引导式生成对抗网络,该网络的训练包含两个步骤,第一步训练人脸关键点预测模块,第二步固定人脸关键点预测模块,训练人脸修复模块;

第一步使用带有人脸关键点标签的人脸数据集训练人脸关键点预测模块,训练过程使用的人脸关键点损失函数定义如下:

lld=||h(ix)-pgt||1(2)

式中,lld为人脸关键点损失函数,ix是人脸关键点预测模块的输入人脸图像,在训练人脸关键点预测模块时,ix=i,h(·)代表人脸预测模块的输出,pgt代表输入人脸图像对应的人脸关键点标签值,||·||1表示l1范数;

第二步使用带有人脸关键点标签的人脸数据集训练人脸修复模块,训练由交替更新生成器和判别器参数完成,训练使用的人脸修复模块损失函数由三个部分组成,第一部分为传统的对抗损失函数,定义如下:

式中ladv为对抗损失函数,d(·)代表判别器的输出,g(·)代表生成器的输出,e[·]代表期望值;

第二部分为人脸重构损失函数,定义如下:

lmse=||i-g(im)||2(4)

式中,lmse为人脸重构损失函数,||·||2表示l2范数;

第三部分为人脸关键点损失函数,定义如公式(2)所示,其中,在训练生成器时,ix=g(im);

最终确定人脸修复模块损失函数:

lfim=αlmse+βladv+γlld(5)

式中,lfim为人脸修复模块损失函数,α,β和γ为超级参数;

步骤3:人脸修复

将待修复的人脸输入到模型中的生成器中,生成器输出一张完整的人脸,然后将输出人脸对应待修复区域剪贴到待修复人脸上,最终得到人脸修复结果:

ic=g(im)⊙(1-m)+im(6)

式中,ic为人脸修复结果。

有益效果

本发明提出的一种基于人脸关键点引导式生成对抗网络的人脸修复方法,包括:

人脸关键点引导式生成对抗网络构建、人脸关键点引导式生成对抗网络训练、人脸修复步骤。本发明使用人脸关键点引导式生成对抗网络生成完整人脸,在人脸大面积区域缺失的情况下,结合人脸关键点损失函数辅助网络的训练,引导生成人脸的轮廓不断接近于真实人脸的轮廓,使得修复后的人脸轮廓连贯、真实。解决了严重遮挡等条件导致的大面积区域缺失的人脸修复结果失真的问题。

具体实施方式

现结合实施例对本发明作进一步描述:

以300vm公开人脸数据集为人脸修复模块和人脸关键点预测模块训练集,facescrub公开人脸数据集为测试集为例,基于人脸关键点引导式生成对抗网络的人脸修复方法步骤如下:

(1)构建人脸关键点引导式生成对抗网络

该网络包括两个模块,即人脸修复模块和人脸关键点预测模块。

人脸修复模块由一个生成器和一个判别器组成。生成器包括输入、10个卷积层、2个空洞卷积层、2个反卷积层、输出。输入是大小为64×64×3的带随机二进制掩膜的人脸图像,如下:

im=i⊙m(1)

式中,im为带随机二进制掩膜的人脸图像,i为用于训练网络的人脸数据集中的原始人脸图像,m为随机生成的大小为64×64的二进制掩膜。

第一层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出64个大小为64×64的特征图。第二层卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出128个大小为32×32的特征图。第三层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出128个大小为32×32的特征图。第四层卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出256个大小为16×16的特征图。第五层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图。第六层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图。第七层空洞卷积层,卷积核大小为3×3,空洞率为2,激活函数为lrelu,输出256个大小为16×16的特征图。第八层空洞卷积层,卷积核大小为3×3,空洞率为4,激活函数为lrelu,输出256个大小为16×16的特征图。第九层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图。第十层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图。第十一层反卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出128个大小为32×32的特征图。第十二层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出128个大小为32×32的特征图。第十三层反卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出64个大小为64×64的特征图。第十四层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出32个大小为64×64的特征图。第十五层输出层,是生成器生成的大小为64×64×3的人脸图像。

判别器包括输入、4个卷积层、1个全连接层、输出。输入是大小为64×64×3的人脸图像。第一层卷积层,卷积核大小为5×5,步长为2,激活函数为lrelu,输出64个大小为64×64的特征图。第二层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出128个大小为32×32的特征图。第三层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出256个大小为16×16的特征图。第四层卷积层,卷积核大小为5×5,步长为1,激活函数为lrelu,输出512个大小为4×4的特征图。第五层全连接层,激活函数为sigmoid,输出一个范围为[0,1]的单个数值,代表输入判别器人脸为真实人脸的概率值。

人脸关键点预测模块,包括输入、4个卷积层、1个全连接层、输出。除输出外,该模块结构与上述判别器结构相同。该模块输出为一个136维的向量,代表人脸68个关键点x、y坐标预测结果。

(2)训练人脸关键点引导式生成对抗网络

该网络的训练包含两个步骤,第一步训练人脸关键点预测模块,第二步固定人脸关键点预测模块,训练人脸修复模块。

第一步使用带有人脸关键点标签的人脸数据集300vm训练人脸关键点预测模块。确定人脸关键点预测模块的损失函数:

lld=||h(ix)-pgt||1(2)

式中,lld为人脸关键点损失函数,ix是人脸关键点预测模块的输入人脸图像,在训练人脸关键点模块时,ix=i,h(·)代表人脸预测模块的输出,pgt代表输入人脸图像对应的人脸关键点标签值,||·||1表示l1范数。

第二步使用带有人脸关键点标签的人脸数据集300vm训练人脸修复模块。训练由交替更新生成器和判别器参数完成。确定损失函数由三个部分组成,第一部分为传统的对抗损失,定义如下:

式中,ladv为对抗损失函数,d(·)代表判别器的输出,g(·)代表生成器的输出,e[·]代表期望值。

第二部分为人脸重构损失,定义如下:

lmse=||i-g(im)||2(4)

式中,lmse为人脸重构损失函数,||·||2表示l2范数。

第三部分为人脸关键点损失,定义如公式(2)所示,其中,在训练生成器时,ix=g(im)。

最终确定人脸修复模块损失函数:

lfim=αlmse+βladv+γlld(5)

式中,lfim为人脸修复模块损失函数,α,β和γ为超级参数,分别取值1,0.0001和0.0001。

(3)人脸修复

使用步骤(2)训练完毕的模型完成人脸修复任务。在人脸数据集facescrub上生成随机二进制掩膜作为待修复人脸输入到模型的生成器中,生成器输出一张完整的人脸,然后将输出人脸对应待修复区域剪贴到待修复人脸上,最终得到人脸修复结果:

ic=g(im)⊙(1-m)+im(6)

式中,ic为人脸修复结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1