面向人脸数据对不完整的网纹人脸修复方法、系统及存储介质与流程

文档序号:22074851发布日期:2020-09-01 19:00阅读:503来源:国知局
面向人脸数据对不完整的网纹人脸修复方法、系统及存储介质与流程

本发明涉及人脸识别领域,特别是一种面向人脸数据对不完整的网纹人脸修复方法、系统及存储介质。



背景技术:

人脸加网纹是一种简单且成本低廉的保护人脸信息的方法,如图1所示,网纹的设计具有很大的随机性,它们的波形、粗细、灰度值、以及网纹的数量会有所差异,这样的构造的目的性在于不法分子不能随意的生成网纹图像,相当于一种加密手段。图2中,在干净的人脸上添加模拟生成的网状条纹,这样的网纹可以把干净的人脸腐蚀,同时它会丢失一些信息,从而达到保护人脸图像数据的目的。这些人脸网纹图像大多是由公安部发行,很好地保护了用户的人脸数据。在实际应用中,公安部会发放给合法企业一些人脸网纹图像集使企业用来进行人证对比或其他认证用途。在人脸识别中的人脸数据绝大部分都是人脸图像无缺失的,但现在人脸网纹腐蚀严重,使得人脸的一些重要特征或信息丢失,严重影响了人证对比的成功率,目前的人脸修复方法精度不高。



技术实现要素:

本发明所要解决的技术问题是,针对现有技术不足,提供一种面向人脸数据对不完整的网纹人脸修复方法、系统及存储介质,提高人脸图像修复的精度。

为解决上述技术问题,本发明所采用的技术方案是:一种面向人脸数据对不完整的网纹人脸修复方法,包括以下步骤:

1)模拟生成干净人脸图像的网纹图像,人脸网纹图像和对应的人脸中的网纹图像形成数据对;

2)使用由多个所述数据对组成的训练集训练基于u-net的神经网络,得到训练后的分割模型;利用干净人脸图像组成的数据集训练基于gan的神经网络,得到修复模型;

3)将待修复人脸网纹图像输入所述分割模型,确定所述待修复人脸的网纹区域;将待修复人脸网纹图像输入所述修复模型,得到与待修复人脸近似的干净人脸;将所述与待修复人脸近似的干净人脸对应所述网纹区域的像素填充到待修复人脸的网纹区域,得到修复后的人脸图像。

1)通过上述方法:形成丰富的训练数据对,有利于unet网络能够提取多样的网纹特征,更够更准确的分割出网纹人脸中的网纹。

2)多种不同层的unet网络可以更加多样化的提取到网纹特征,同时将不同的网纹分割结果做投票可以得到更准确的网纹位置。

3)使用gan生成人脸的方式做修补使得修复后的人脸与待修复的网纹区域更加平滑、自然,达到更好的修复效果。

所述基于u-net的神经网络包括n个不同数量卷积层的u-net,所述u-net的每个卷积层的每个卷积核后均设置elu激活函数,每个卷积层后均设置下采样层;将所述待修复人脸网纹图像分别输入所述n个不同层数的u-net后,得到n个语义分割图,对所述n个语义分割图进行融合投票,得到新的语义分割图。采用不同层的u-net可以增加提取网纹的多样性,更精确地提取出网纹。

本发明中,n=4;4个不同数量卷积层的u-net分别为三卷积层u-net网络、四卷积层u-net网络、五卷积层u-net网络、六卷积层u-net网络。虽然使用了四个不同结构的u-net模型,但是在计算量上依然比更高层的模型的计算量级低,且模型之间没有交互关系,可以同时进行训练,大大缩短了训练时间。

为进一步提高模型的准确性,对所述4个语义分割图进行融合投票的具体实现过程包括:将所述4个语义分割图对应像素点位置上二值化的数值相加,得到一个总的语义分割图,即新的语义分割图;判断所述新的语义分割图的每个像素值是否小于投票阈值,若是,则将相应位置的像素值设置为0,即设置为空白像素。步骤2)中,所述基于gan的神经网络为hr-dcgan判别网络;所述hr-dcgan判别网络包括三个依次连接的卷积层,最后一个卷积层与反卷积层连接;所述hr-dcgan判别网络的激活函数为selu激活函数。采用hr-dcgan,其中前馈神经网络中将elu激活函数替换为selu激活函数,增加了生成人脸的稳定性。使用gan生成人脸的方式做修补使得修复后的人脸与待修复的网纹区域更加平滑、自然。

一种面向人脸数据对不完整的网纹人脸修复系统,其特征在于,包括:

数据获取模块,用于模拟生成干净人脸图像的网纹图像,人脸网纹图像和对应的人脸中的网纹图像形成数据对;

分割模型,由多个所述数据对组成的训练集训练基于u-net的神经网络获得;

修复模型,由干净人脸图像组成的数据集训练基于gan的神经网络获得;

处理模型,将待修复人脸网纹图像输入所述分割模型,确定所述待修复人脸的网纹区域;将待修复人脸网纹图像输入所述修复模型,得到与待修复人脸近似的干净人脸;将所述与待修复人脸近似的干净人脸对应所述网纹区域的像素填充到待修复人脸的网纹区域,得到修复后的人脸图像。

所述处理模块包括:

网纹区域获取单元,用于将待修复人脸网纹图像输入所述分割模型,确定所述待修复人脸的网纹区域;

近似干净人脸获取单元,用于将待修复人脸网纹图像输入所述修复模型,得到与待修复人脸近似的干净人脸;

修复单元,用于将所述与待修复人脸近似的干净人脸对应所述网纹区域的像素填充到待修复人脸的网纹区域,得到修复后的人脸图像。

本发明另一种面向人脸数据对不完整的网纹人脸修复系统,包括计算机设备,该计算机设备被配置或编程为用于执行上述方法的步骤。

作为一个发明构思,本发明还提供了一种计算机存储介质,其存储有程序;该程序用于执行上述方法的步骤。

与现有技术相比,本发明所具有的有益效果为:

1、本发明在模型训练的阶段不需要使用网纹人脸图像及对应的干净人脸图像数据对进行训练,只需要一些干净的人脸图像和网纹人脸中网纹的标注样本即可,可以形成丰富的训练数据对,有利于unet网络能够提取多样的网纹特征,能够更准确的分割出网纹人脸中的网纹,大大降低收集训练数据的难度,提高了人脸修复的精度;

2、多种不同层的unet网络可以更加多样化的提取到网纹特征,同时将不同的网纹分割结果做投票可以得到更准确的网纹位置;本发明的方法采用不同层的u-net可以增加提取网纹的多样性。图中虽然四个模型的生成的语义分割图都不全对,但做了阈值为2的投票后就得到了与测试用例相同的语义分割图,提高了模型的准确率。虽然使用了四个不同结构的u-net模型,但是在计算量上依然比更高层的模型的量级低,且模型之间没有交互关系,可以同时进行训练,大大缩短了训练时间;

3、使用gan生成人脸的方式做修补使得修复后的人脸与待修复的网纹区域更加平滑、自然,达到更好的修复效果;在生成人脸的过程中采用hr-dcgan,其中前馈神经网络中将elu激活函数替换为selu激活函数,增加了生成人脸的稳定性;大多数网纹人脸图片的分辨率为178×96,在人脸修复的过程中需要使用同样分辨率的图像,传统的dcgan生成的图像的分辨率为64x64,转化为178×96会严重失真。本发明中,在dcgan的基础上增加了一个上采样层,使得生成网络生成的图像大小为128×128,保持与178×96分辨率同一个等级上,即使转化为178×96也不会失真严重。

附图说明

图1为常用的网纹图;

图2为在干净的人脸上添加模拟生成的网状条纹示意过程图;

图3为本发明方法流程图;

图4为上采样的过程示意图;

图5为的u-net网络进行人脸和网纹的分割任务示意图;

图6为卷积核的大小为3×3的u-net网络结构;

图7为6层u-net网络结构;

图8为四个模型(u-net)的预测结果;

图9为本发明多任务人脸网纹修复方法的原理图;

图10为使用基于gan的神经网络模型对空白像素区域进行修复过程示意图;

图11为本发明改进后的生成网络模型;

图12为阈值0.7-0.9上每隔0.01的细粒度选取实验结果图;

图13为多任务人脸修复方法实际应用图

图14为对四种不同的阈值做f1得分对比结果图;

图15为mla-u-net的识别结果与不同层u-net的识别结果;

图16为hr-dcgan10、20、50轮生成的人脸的图像;

图17为不同层u-net训练损失变化图;

图18为mla-u-nets阈值设置;

图19为mla-u-nets与不同层u-net网纹识别对比;

图20为hr-dcgan10轮生成的人脸;

图21为hr-dcgan20轮生成的人脸;

图22为hr-dcgan50轮生成的人脸;

图23为hr-dcgan与dcgan不同训练轮次的mse评分;

图24为hr-dcgan与dcgan不同训练轮次的psnr评分。

具体实施方式

本发明旨在提出一种面向人脸数据对不完整的网纹人脸修复方法,方法过程如图3所示,该方法首先对带有网纹的人脸进行人脸与网纹的分割,得到去除网纹后的人脸图像。由于网纹分割后的人脸图像,原有网纹的位置变成了空白像素区域,然后本方法需要对空白像素区域进行图像修复,得到完整的人脸图像。

主要可分为三个步骤:(1)人脸网纹图像的网纹识别;(2)生成与人脸网纹图像中相似的人脸;(3)使用生成的人脸对识别的网纹区域进行填补。

u-net网络虽然具有较强的语义分割能力,但对于人脸网纹图像中的网纹识别还是有一定的难度。人脸网纹图像不同于其他生物方面的分割任务。人脸图像本身就具有独特性,不仅细节较多且这些细节都不可缺失,如果缺失一些细节就会明显失真。人脸网纹中识别网纹的难点有以下三点:

(1)与人脸网纹特征相似覆盖区域的识别。网纹的特征与部分人物的头发、唇线、耳郭等面部器官的边缘特征会相似。有一定的概率分割网络会误判,导致精准度下降。

(2)网纹识别残余问题,网纹未完全识别,可能出现完全不识别及部分不识别。完全不识别并不是所有的网纹都不识别,而是在单条网纹中某一截未被识别。部分不识别是一条网纹的中间部分被识别而边缘部分未被识别,这样都会出现不完全修复问题,使修复后的人脸图像中间有网纹残余,看起来十分突兀。

(3)单个u-net网络对网纹准确率有限。无论是三层、四层、五层、六层u-net网络对网纹的识别准确率都不太理想。但不考虑比六层u-net网络更高层的网络结构,因为计算量过大,对计算资源要求过高。

人脸网纹中的网纹识别仍然是语义分割问题,是在像素级上对人脸和网纹的分类。因为图像修复的特殊性,识别出来的网纹,后期要将这个区域作为掩膜,可以理解为指导修复区域的位置所在。只要有网纹识别残余和误判都会严重影响修复的质量。针对以上三个问题,需要设计一种对网纹特征识别性能好,对不同语义的像素分类效果明显,且计算开销较小的网络。

在人脸网纹修复的任务中,我们设计了一种mla-u-net用来识别网纹,在识别网纹后的空洞需要进行填补。这些空洞的填补的要求是使修补后的人脸尽量不失真,使修复后的人脸的数据分布与真实人脸的数据分布类似。dcgan可以将输入的噪声数据经过对抗式训练生成符合真实数据分布的数据。但dcgan只能输出64×64分辨率的图像。对于人脸修复问题来说,一般使用的都是公安部提供的人脸网纹图片,大小一般在178×96,如果将dcgan生成的图片从64×64放大到178×96,人脸近放大了4倍。人脸本来就具有许多独特的信息,如果直接放大4倍,会使人脸图像严重失真,无法用于修补任务。因此,如何把dcgan生成的小分辨率图像转化为生成大分辨率的图像,且图像的信息更充足是一个重要的研究课题。

基于以上对生成模型的需求,确立了本发明所要研究的主要内容:基于dcgan,使用噪声数据生成128×128的人脸图像。我们将尺寸定为128×128的意义在于它与178×96的像素量在同一水平上,后期重新调整图片的大小也不容易失真。因为经典的dcgan生成大于64×64的图像就容易失败,所以本发明重新设计了dcgan的结构以及一些内部函数的细节。使得重新设计的对抗神经网络可以生成更高分辨率的图像的同时,还可以使训练更加稳定。

id人脸数据对完整与否是指人脸网纹和与之对应的干净人脸数据是否完整,单有人脸网纹图片或单有干净人脸图片都称为id人脸数据不完整,两者全都具备称为id人脸数据完整。根据人脸数据对的充足与否考虑使用不同的修复方法。如图4所示,虚线左侧是人脸网纹图像,右侧是干净人脸图像。本发明所使用的人脸网纹数据模拟了公安部发行的人脸网纹数据,干净的人脸图像比较容易获取,但与之匹配的人脸网纹就比较难获得,我们模拟了网纹生成,使这些网纹具有多样性,随机性。将干净的人脸上加上模拟的网纹作为人脸网纹数据,匹配上与之对应的网纹图像,就形成了id人脸数据对。

由于人脸图像对不完整,本方法使用具有良好分割性能的u-net网络进行人脸和网纹的分割任务,执行过程如图5所示。本方法首先将人脸图像数据处理成网纹区域和人脸网纹图像(即有网纹的人脸图像)的数据对,使用基于u-net的神经网络对该训练图像对进行学习。然后通过训练好的神经网络模型,带有网纹的人脸图像就被模型分割成了无网纹的人脸图像。

针对单个u-net在人脸网纹识别任务中的缺点,本发明设计了multi-layerapproximationu-nets。它利用了3、4、5、6层u-net网络的分割图(segmentationmap),把不同层的u-net网络看做不同的语义分割模型,最后再将不同层的分割图做投票融合,取出大于设置阈值的不同层u-net的分割结果,将小于设置阈值的不同层u-net的分割结果去除。在单个的u-net的结构设计上与经典的u-net有些差异。

如图6所示,输入的图像大小为192×192且通道数为3,conv2d代表卷积操作,其中卷积核的大小为3×3。在图中左侧大虚线矩形框表示降采样过程,与经典的u-net不同之处在于本发明在3×3的卷积核后面加入了elu激活函数并非是原有的relu激活函数。得到的结果会经过batchnormalization(bn)层。之后,会跟一个2×2的最大池化层,它的步长为2。在每一次降采样的过程中,特征图的通道数就会增加一倍。每次降采样的卷积核的大小以及通道数、所得特征图的尺寸都在图中标出。

输出概率的分割图要想和原图的大小一致必须对下采样的特征进行上采样来恢复尺寸,就需要对特征图进行上采样。在图6右侧表示上采样的过程,上采样前的输入的维度是48×48×128。首先使用大小为2×2卷积核向上采样,通道数不变,但特征图的大小变为原来的二倍,此时的特征图大小为96×96×128,它的大小和第二次降采样(图中的黑色虚线小矩形框部分)所得的特征图的大小相同,为了以最大程度的保留前面降采样过程的一些重要的特征信息,需要与上采样得到的特征图进行融合,在图中用紫色的箭头表示。

在融合特征图后还需要卷积操作对特征图进行降维,使用的卷积核的大小仍然是3×3,激活函数也是elu,但不同的是本发明加入了dropout层,在图中用蓝色的矩形框表示。最后一次的上采样(图中红色虚线小矩形框部分)中比之前的上采样多一个卷积操作,最上层的卷积使用的是1×1的卷积核,它的主要作用是对特征图进行推断,得到分割图是图中黑底白纹图。在得到它之前,它是像素级的概率分布图,每个位置上的值代表对应位置上的像素属于网纹的概率大小,在实际操作中会设置一个阈值,当该值大于阈值的时候令其为1,否则为0。图8中黑色的部分就是0值区域,白色部分就是1值区域。所得的分割图就是人脸网纹的预测图。

4、5、6层u-net随着层数的增加,相应会增加降采样和上采样的次数,5层的u-net比4层的u-net多一次上采样和降采样。同理,6层的u-net比5层的u-net多一次上采样和降采样。如图7所示,在图中黑色虚线矩形框内表示降采样过程,在此过程中所使用的结构与3层的结构相同。但6层的u-net比3层的u-net多了3次将采样过程,这直接使特征图的通道数由128上升到了1024。与此同时,它的计算量消耗也巨幅增加,所以考虑到计算量的大小以及计算资源的有限性,本发明就使用这四种网络做投票融合。图中右侧虚线矩形框内表示上采样过程,无论上采样的深度如何,它仍然使用了降采样与上采样的同大小特征图的特征通道融合,这样的结构可以保证降采样过程一些重要的特征信息可以最大限度的保留。在图7中可以看出没有使用全连接层,这样就可以减少大量的训练参数,还加快了训练的速度。

因为不同层的u-net结构不同,他们提取特征及分类的能力也不同,所以他们的分割图也不同。所得的分割图有4个,它们虽然在一些细节上不同,但大部分是相同的。我们可以用众多个不同能力的分类器组合成一个强大的、容错率更高的分类器。这里本发明将四个不同层的u-net组合在一起,将他们的分割图进行投票融合,就可以取长补短。如图8所示,假设测试样例是图中的test,result1、result2、result3、result4分别表示四个模型的预测结果。测试结果中的阴影网格代表预测位置结果与测试样例位置相同,表示预测命中,记为1。灰色网格则代表预测位置与测试样例中的位置不同,表示预测失败,记为0。四个结果都没有全部预测成功,将四种结果进行融合投票,设投票的阈值为2。可以用式1表示:

其中(x,y)表示位置的坐标,t表示分类器的数量,ft(x,y)表示位置上的值。如果的和大于等于2,则f(x,y)为1,表示预测此位置与测试样例中的位置相同。反之,如果的和小于2,则f(x,y)为0,表示预测此位置与测试样例中的位置不同。图中虽然四个模型的结果都不全对,但做了阈值为2的投票后就得到了与测试用例相同的结果,提高了模型的准确率。

multi-layerapproximationu-nets算法的流程如图9所示。改动了经典u-net的结构后,本发明将不同层的u-net看做是不同的模型,可以得到四种不同的语义分割图。虽然四个语义分割图各不相同,但它们代表了各自模型所提取特征的映射。不同层的u-net模型较单u-net模型可以提取更加丰富的特征,再将不同层的u-net的语义分割图进行融合投票,得到新的语义分割图。虽然使用了四个不同结构的u-net模型,在计算量上依然比更高层的模型的量级低,且模型之间没有交互关系,可以同时进行训练,大大缩短了训练时间。

改进后的u-net在降采样过程中的卷积核尺寸大小和池化层的步长参数都没有改变。卷积核依然为3×3大小,步长为1,它的主要作用是提取原图的某些特征,一般使用多个卷积核,得出的特征图也不同,进而使网络学到更多的特征。在池化层方面本发明选择了最大池化,它可以减少卷基层参数误差造成估计均值的偏移,可以更多的保留纹理信息。而均值池化会更多的保留图像的背景信息。本发明是对网纹信息进行提取,使用最大池化更为合理。在不同的u-net的降采样的过程中,激活函数均使用了elu,且在下游路径中加入了bn层(batch-normalization)。在神经网络中,为了使得它可以逼近任何非线性函数,引入了激活函数。在经典的u-net中使用的是relu激活函数,在输入的信号小于零的时候,输出都是零,在输入大于零的时候,输入与输出恒等。它的收敛速度要大于sigmoid和tanh函数,但relu的缺点也十分明显,在训练的时候一个大的梯度经过relu函数的时候,经过参数更新后,这个神经元就不会对任何数据再有激活的功能,梯度也就会永远都是零。但学习率很大的时候,也会大概率出现上述的问题,导致训练失败。这时本发明引入了elu激活函数代替了relu函数,它结合了sigmoid和relu共有的优点,在函数的左侧具有软饱和性,在函数的右侧则没有饱和性。这样的性质可以使得在函数的左侧可以对输入变化或者噪声数据更加鲁棒,在函数的右侧可以缓解梯度消失。elu输出的均值接近于零,在收敛方面较relu有更快的速度。加了bn层使得每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,这大大提升了训练速度。另外一点,bn层使得调参过程简单化,降低了初始化的要求,且可以使用大的学习率。

在上采样的过程中,每一步都会有一个2×2和两个3×3的卷积核。2×2的卷积核做2倍上采样,可以补足一些图片信息,但补充的信息还不足。在下采样的过程中我们得到的特征图相对同层降采样特征图有较高分辨率,需要把同层降采样的特征图剪裁到与上采样特征图相同大小,然后直接复制到上采样的特征图上,这相当于在中和了高分辨率和更抽象的特征。上采样过程中3×3的卷积核有抽象上采样后的特征的作用,同时随着卷积次数的增多,所得的特征的维度越来越低,但却更加有效,更加抽象。最终,将合并后且经过上采样后的特征图用1×1的卷积核进行降维,将维度降到与原图像的维度相同。它还可以得出每个像素对应二分类的得分,再将得分作为softmax函数的输入,通过计算二进制交叉熵进行反向传播训练。

本方法通过基于u-net的神经网络模型得到了网纹位置的语义分割图,通过语义分割图锁定人脸网纹图像中的网纹位置,将原有网纹区域设置为空白像素,本方法需要使用基于gan的神经网络模型生成的与网纹人脸相似的干净人脸,执行过程如图10所示。本方法首先使用其他干净人脸图像训练基于gan的神经网络模型,得到训练好的模型后,然后将带有网纹的人脸图像作为输入,最后基于gan的神经网络模型输出与待修复人脸相似的干净人脸。

基于dcgan模型,本发明重新设计了一种新型的网络模型hr-dcgan(highresolutiondeepconvolutiongenerativeadversarialnetworks)。相对于经典的dcgan本发明重点对生成网络、判别网络、判别网络和生成网络中的激活函数做了改进。图11是改进后的生成网络模型,它的输入是一个100维的噪声数据。使用5×5的卷积核以步长为2做反卷积操作,生成特征图的维度为4×4×1024。每经过一次反卷积特征图的大小就扩大为之前的4倍,特征通道数降为原来的2倍。直到生成的特征图的大小与目标图像的大小一致,才结束反卷积操作。因为我们所需要的人脸图像是128×128×3,所以最终的特征图的大小也是128×128×3,这样我们就得到了与目标图像一样尺寸的图像。为了可以使训练更加稳定,使用了步长为2的卷积而没有使用池化操作。在卷积特征之上消除了全连接层,这种操作不仅大大降低了计算量,同时也提高了模型的稳定性,但模型的收敛速度却降低了,不过还是在可以接受的范围之内。每一层的反卷积中本发明取消了批量归一化的操作和relu激活函数,取而代之的是selu(scaledexponentiallinearunits)激活函数。在生成网络的输出层中本发明使用了tanh激活函数。相对于经典的dcgan本发明把生成网络中所改进的结构已详细的列出。

在判别网络中,dcgan判别网络是一个多层的卷积神经网络结构。原本判别网络的输入大小只有64×64,现在生成网络生成的图像大小为128×128,输入的图像扩大到了原来的4倍,为了使提取的特征图的大小与原来的一致,在三层的普通卷积网络结构上我们又增加了一层卷积结构,使最终所得的特征图的大小依然是4×4。特征图大小相同但多了一次卷积操作,hr-dcgan的判别网络所得的特征图的通道数比dcgan所得通道数高两倍,这意味着hr-dcgan的判别网络具有更加优异的特征提取能力,这就提升了判别网络的判别能力。判别网络的输出层是把最后卷积层展开的向量送到了sigmoid函数中进行分类,如果判别网络鉴定为真,那么返回值“1“,反之返回”0“。

在hr-dcgan生成模型方面,我们可以定义人脸图片集的分布为ptrain(x),生成样本数据集的分布为pmodel(x),最终的目标是使pmodel(x)=ptrain(x),两者理论上讲可以无限逼近,也就是说生成的图片符合了真实图片的数据分布,生成网络生成的图片就会比较真实。在判别网络方面,判别网络根据生成网络所生成的数据判定输出真假标签。在训练生成人脸的过程中,其实需要hr-dcgan模型学到像训练数据集中人脸的数据分布,这样给出人脸网纹图片的时候,模型可以把人脸网纹图片当做噪声数据处理,再根据已学到的分布去生成与输入的人脸最相近的人脸数据。

在hr-dcgan的损失函数方面,生成网络的损失函数定义如下:

鉴别网络的损失函数定义如下:

在公式2和3中,lnd(x(i))表示判别网络判定为真实图片的概率,g(z(i))表示生成网络生成的假图像,d(g(z(i)))表示判别网络判定生成网络生成图像为假图像的概率。生成网络希望生成的图像能够骗过判别网络,所以d(g(z(i)))越大说明生成网络生成的图像的质量越高,但在式中用1-d(g(z(i)))表示,这样转化求最小值在计算上更为方便。判别网络也希望自己的能力更强,所以d(g(z(i)))对于一个优良的判别网络来说应该是一个比较小的值,且d(x(i))应当是一个比较大的值,优良的生成网络产生的图像经过判别网络判别才更有意义。因此判别网络和生成网络存在着博弈的关系,他们在训练的过程中都会变得更强。但当学习率参数设置不当的时候,很有可能判别网络或生成网络其中一个特别强而另外一个比较普通,这样训练的意义就不大,所以在选择学习率参数方面需要格外注意。

假设单单更改了dcgan的生成网络结构,多加一个反卷积层,理论上是可行的,可以产生128×128分辨率的图像。但是实际训练的过程中,根本无法成功训练。但是,用selu代替批标准化(batchnormalization)和relu之后,速度变慢了许多,但是在训练的过程中不会再出现训练失败的问题,而是开始收敛了。selu是自归一化的,因此不需要批标准化,这种归一化效果可以在许多层级的训练中都保持鲁棒性。在[]中引入了自规范化神经网络(snns)。本发明考虑一个具有激活函数f的神经网络,它通过一个权重矩阵w连接到下一层,其输入是前一层x的激活,可以表示为y=f(wx)。可以定义一个映射g,它将一个层的均值和方差映射到下一层的均值和方差。

常见的规范化策略确保映射g保持(μ,θ)和接近期望值,通常为(0,1)。在前馈神经网络中,使用了selu激活函数,构建了具有snn属性的映射g,selu的表示如下:

从形式上来看,selu与elu很相似,selu就是elu乘上一个λ,只不过这个λ的值要大于1。不同于relu、prelu、elu,这些激活函数在负半轴的斜率比较平缓,激活的方差比较大的时候可以减缓它的趋势,有效的抑制梯度爆炸的发生。在正半轴,selu由于乘了一个比1大的λ,在方差过于小的时候又可以让它增大,有效的抑制梯度消失的发生。selu激活函数有个优良的性质,它可以使网络变深后每层的输出都是均值为0,方差为1。hr-dcgan的激活函数引进了selu,因此它的方差稳定化可以很好的防止梯度消失或梯度爆炸。所以说,selu增强了hr-dcgan的稳定性。

hr-dcgan的判别网络是一个普通的卷积神经网络,它的任务是输出生成网络生成的数据是否为真。dcgan的判别网络有四层卷积结构,使用5×5的卷积核对输入x进行二维卷积操作,随后进行非线性leakyrelu变换,,得到输出y。使用相同的卷积操作把得到的输出y作为下一次卷积的输入,重复三次相同的卷积操作,所得的最终输出做一次线性变换,输出维度为1的数据。最后将一维数据经过sigmoid非线性变换后得到真假的概率分布。因为改进后的生成网络的目标输出大小为128×128的图像,所以判别网络的输入为128×128,如果还是使用dcgan的判别网络,那么经过四次卷积,得到的特征图的大小为8×8,相较与64×64的输入所得的4×4的特征图不够抽象,所包含的信息量也不足。增加一层卷积层可以提取更多的图片信息,能够使hr-dcgan的判别网络判别能力更强。在hr-dcgan的激活函数方面,使用selu激活函数替代了leakyrelu激活函数。selu在判别网络中使用的原因和生成网络中使用的原因相同,selu是自归一化的,因此不需要批标准化,这种归一化效果可以在许多层级的训练中都保持鲁棒性。它增强了hr-dcgan的稳定性。

由于id数据对不完整,无法使用直接生成修复后的人脸图像。我们可以分两个步骤做人脸网纹修复。首先使用mla-u-nets识别模型识别人脸网纹中的网纹,然后再使用hr-dcgan网络模型生成与之对应的干净人脸,由于hr-dcgan的训练集单单是一些干净的人脸,只是让hr-dcgan学会了关于生成干净人脸的分布功能,由于训练集不是id人脸数据对,所以它不能很好的输出修复后的人脸图像,它的输出结果只是和输入的人脸网纹图像中的人脸比较相似的一张干净的人脸。多任务人脸网纹修复方法的原理如图9所示,假定输入的数据是图中hr-dcgan生成的3×3×3尺寸的人脸图像。掩膜代表的是需要修复的区域,它的大小、维度与生成的人脸相同,在图中binarymask中的1代表的是需要修复的地方。图中⊙表示的是两张相同大小的图像每个像素上做乘法运算,公式如下:

generatedface⊙binarymask=repaireddomain(公式6)

repaireddomin代表修复区域的结果。在得到修复区域的结果后将它作为输入与人脸网纹图像做像素级的加法,公式如下:

在meshface中“0“值代表的是需要进行修复的区域,将修复区域结果加在meshface指定的位置就得到了repairedface,就完成了图像修复的任务。

在实际的人脸网纹修复任务中,网纹识别的效率不会达到百分之百,但要求模型识别的效率尽可能高。mla-u-nets的效率高于3、4、5、6层的单模型u-nets,所以选择mla-u-nets模型作为人脸网纹图像的网纹识别模型。本发明设计的生成模型hr-dcgan相比与dcgan可以生成分辨率更高的图片,适用于本发明的修复任务。在图10中,虚线下方最左边的是生成模型hr-dcgan生成的人脸图像,虚线下方中间的是mla-u-nets模型识别人脸网纹图像中所得的网纹,将所得的网纹作为binarymask引导对人脸网纹图像的修复,虚线下方最右边是修复后所得结果,虚线上方左侧是输入的待修复图片,虚线上方右侧是期望修复目标图片。在图中我们发现修复后的人脸图像中还会有少量的修复痕迹,但相对于未修复的人脸网纹图片可用性已经大大提升,而且非网纹区域仍保留了真实人脸信息,这使得多任务修复后的图片的真实性得到了保障。。

本发明把实验设为4个部分。第一部分,3、4、5、6层u-net的识别结果和f1得分与mla-u-net识别结果和f1得分对比。第二部分,将3、4、5、6层u-net与mla-u-net训练所需时间消耗对比。第三部分,mla-u-net中投票阈值设置为1、2、3、4的f1得分对比。第四部分,将mla-u-net最终得到的分割图的二分类的阈值设置到0.1-0.9进行对比f1的得分。其中f1(定义为精确率和召回率的调和平均数)得分的定义如下:

本发明的实验所使用的实验设备的cpu为12核心的intel(r)xeon(r)cpue5-2630v4@2.20ghz,一张内存12gb的teslak40mgpu显卡。在人脸网纹识别的实验中训练集使用了2500张128×128尺寸的人脸网纹图片,验证集为300张128×128尺寸的人脸网纹图片,与之对应的标签是加在干净人脸上的经过二值化的网纹图片。测试集使用了100张人脸网纹图片,需要识别出其中的网纹的位置。实验中,设置adam优化器的学习率为0.0001,损失函数是二进制交叉熵函数,不同层的u-net的训练轮数都是30轮。如图14,训练后的不同层的u-net模型中的输入是图中的测试集的人脸网纹图片,不同的模型的识别结果总体比较相似,但在一些小的细节上会有差异。对图中文联网纹图片中所加网纹可以看出,随着u-net模型的层数的增加,识别的结果效果越来越好。

为了进一步对比不同模型对人脸网纹图片的网纹的识别能力,本发明使用f1得分对不同层u-net模型对100张测试图的结果进行了对比。在对比f1得分之前,需要设置u-net输出概率的阈值。比如,3层的u-net模型输出的概率分布是[0.81,0.63,0.32,0.13,0.10,0.25,0.67,...,0.93,0.85,0.99,0.88],这些概率是255与预测像素值的比值。因为最终的输出是“0”或“1”的标签,所以需要设置一个阈值使得这些转化为0,1值。阈值的设定会直接影响到输出结果的f1得分,所以需要寻找一个最适合转化概率值为0,1值的阈值。固定了阈值之后,就可以对比出不同层u-net的f1得分结果。如图15所示,图中红色、绿色、黄色、蓝色的线分别表示不同层u-net在阈值为0.1-1.0上的f1得分。在图中,可以看出当阈值为0.1-0.8时f1得分程递增状态,原因是在输出的图像转概率的时候的依据是输出的像素值,像素值越接近255,它的概率就越低,因为网纹都是黑色的,像素值接近于0,越接近0它的概率就越大。当阈值为0.8-1.0时,可以看出f1得分急速递减,原因是越靠近1.0,它的像素越接近于255,误判标签就越多,f1得分就越低。

在图15中我们所得到的阈值是0.1-1.0上每隔0.1的粗粒度,为了设置更精确的阈值,设置了阈值0.7-0.9上每隔0.01的细粒度选取实验。实验结果如图16所示,四种不同的结构的u-net在0.76附近取到了最大的f1得分,可以将阈值设置为0.76。从图15和图16中我们可以看出,阈值对f1得分影响非常大。当阈值设为0.1-0.3时,f1得分接近于0,不合理的阈值选择会导致网纹识别的失败。当选择合理的阈值时,可以最大化不同层u-net模型的性能。设置阈值为0.76时,6层的u-net的f1得分达到了0.904,这个结果要优于3、4、5层的0.868、0.902、0.897。虽然5层的u-net在此处未取得最优的f1得分,但综合其它3个u-net模型的表现力,仍将阈值设为0.76。

在实验中,四个不同层的u-net设置adam优化器的学习率均为0.0001。从图17中可以看出,3、4、5、6层的u-net在训练10个轮次之前的损失下降比较快,说明3、4、5、6层的u-net在训练的前10轮学到的特征比较丰富。在训练10个轮次之后,损失函数下降的比较缓慢,说明模型学习的特征比较充足,在验证集上的表现达到了比较好的效果。在训练20个轮次之后,损失函数基本保持不变,此时不需要再过多的训练,如果过多训练很可能导致模型过拟合,影响了模型的泛化能力,所以选择30个训练轮次对于特征的学习、模型的泛化和训练时间消耗都有益。

在mla-u-nets中需要将四个不同的模型的输出结果进行投票。在实验6.1中选取了最优的阈值,四个不同的模型达到理想的性能。概率图经设置的阈值后转化为了“0,1”图,我们再对四个模型输出的不同结果在“0,1”图的相同位置进行投票。投票的阈值设为,1、2、3、4,分别代表四张图中有1、2、3、4个正分类标签(“0,1”图中的“1”)才将该位置上的设为正分类标签。使用f1得分作为投票阈值设置的根据。如图18,分别对四种不同的阈值做了f1得分对比,在投票阈值设置为2的时候所得的f1得分最高,达到了0.9187,相比与不同层的单模型u-net,比表现最好的6层u-net的f1得分约高出0.015。由此可以得出,mla-u-net在投票阈值设为2的时候有最佳性能。同时,mla-u-net的最佳性能较3、4、5、6层u-net有5.84%、1.85%、2.42%、1.63%的提升。当投票阈值设为2时,mla-u-net的识别结果与不同层u-net的识别结果如图19。总体来说,mla-u-net综合了四个模型的优点,提升了正例的分类准确率。同时它对噪声的影响有一定的消除作用,抵抗了一些噪声的影响。

在本章的实验中,训练数据使用了10000张尺寸为128×128的人脸图片。

设置hr-dcgan判定网络与生成网络的学习率为0.0005和0.0002,训练轮次均设置为50轮。hr-dcgan10、20、50轮生成的人脸的图像如图20至22所示。

从图20中可以看出在刚训练的第10个轮次时模型产生了基本具有人脸结构的图像。此时,hr-dcgan产生128×128的图片在初始的训练阶段会学到人脸的特征相对比较慢,所以在训练的第10个轮次时hr-dcgan产生的人脸信息不够丰富。

从图21中可以看出在训练的第20个轮次时模型产生的人脸大多已经具备可辨识的五官结构,但依然不够清晰,人脸的上的杂色比较多,有些人脸尚不成形。如果使用这些人脸去填补网纹空洞,修复结果会比较突兀。

从图22中可以看出在训练的第50个轮次时两个模型产生的人脸大多五官结构已经比较清晰,人脸的色彩也接近真实人脸的色彩。此时可以看出,hr-dcgan产生的人脸图像已经比较清晰,原因在于hr-dcgan模型相对稳定,达到一定的训练轮次后生成网络和判别网络不容易崩溃。在图像生成的研究中,生成高分辨率的人脸图像本来就是一个难题,人脸结构的复杂性,以及模型的稳定性,都决定了生成图像的质量上限。但针对修复问题来说,除了网纹区域,大部分人脸还是真实人脸,需要填补的人脸的区域面积要少得多,且hr-dcgan已经可以产生较清晰的人脸,所以它产生的人脸图像能够完成网纹区域的修复。

hr-dcgan生成的人脸图像的质量虽然可以用人眼观察出来,但缺少定量指标分析。我们使用均方误差(mse)和峰值信噪比(psnr)来评价生成人脸的质量。使用dcgan作为对比两个指标的对象。图23是dcgan与hr-dcgan每隔10轮生成人脸图像与真实图像之间的mse对比图。从图中可以看出从整个过程mse评分程递减趋势,在10到40轮之间下降比较快,主要是因为两个模型在10到40轮模型未收敛,生成的人脸越来越逼近真实人脸图像。在40到50轮之间mse评分基本变化不大,主要原因是模型已经收敛,人脸的主要特征已经很相似,在一些细节上会更加相似。

与mse评分趋势恰好相反,psnr评分一直呈递增趋势,psnr评分越高说明生成图像与原图的的质量越相似。从图24可以看出,hr-dcgan在10到50轮的psnr评分都比dcgan要高,说明hr-dcgan生成的人脸图像比dcgan生成的人脸图像的真实度和质量都更高,其主要的原因在于hr-dcgan在结构上更合理,使用了selu代替了relu可以使训练更加稳定,说明自归一化到0均值和单位方差在训练的时候有一定的抗梯度爆炸或消失的作用。但无论是dcgan还是hr-dcgan的psnr评分都不算高,主要的原因在于在求mse的时候对图像的像素的值进行了归一化,把值域从0到255归一化到了0到1之间,这样做可以使对比效果更加明显。

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