一种基于生成对抗网络的多姿态人脸图像正面化方法与流程

文档序号:19351330发布日期:2019-12-06 21:25阅读:359来源:国知局
一种基于生成对抗网络的多姿态人脸图像正面化方法与流程

本发明涉及图像处理的技术领域,尤其是指一种基于生成对抗网络的多姿态人脸图像正面化方法。



背景技术:

目前,人脸识别技术已经广泛应用于门禁安保、网络社交和金融等诸多领域。但是,在绝大多数的实际场景中,人脸识别技术需要在严格标准的环境下才能高效使用。通常,被检测人需要身处光照充足均匀的场景,保持平静的表情,配合图像采集装置调整标准的姿态。然而在不少的实际应用领域,如嫌犯追踪,以上的条件往往很难满足,这导致了不少人脸识别技术的性能大幅度下降,人脸识别技术难以在这些领域推广。在影响人脸识别技术性能的不利因子中,照片人脸的姿态是最重要的。处理好姿态问题,人脸识别技术在非限制环境下的应用将会跨出一大步。

处理姿态问题的其中一种方法是对输入的侧脸图像做正面化矫正,即把一张侧脸图像矫正成为同一人物的正脸图像,然后对合成的正脸图像进行人物身份的识别。目前大部分的多姿态人脸图像正面化方法缺乏对偏转角超过60°人脸图像的处理能力,它们合成的人脸图像具有严重的形变并且会丢失人物的身份特征,导致后续的人脸识别工作难以进行。目前效果较好的多姿态人脸图像正面化方法基本上是以生成对抗网络为基础的。

相比于其他基于生成对抗网络的多姿态人脸图像正面化方法,本发明采用了不同的网络结构和损失函数。即使输入了偏转角超过60°的人脸图像,本模型也能够合成逼真的人脸图像并且保留更多的人物身份信息,大幅度提高了后续人脸识别工作的效率。



技术实现要素:

本发明目的在于克服现有多姿态人脸图像正面化方法的不足,提出了一种基于生成对抗网络的多姿态人脸图像正面化方法,解决同类方法在输入人脸偏转角超过60°的情况下效果不佳的问题,提高了合成人脸的逼真度,保留了更多图像人脸的身份信息。

为了实现上述目的,本发明提供的技术方案为:一种基于生成对抗网络的多姿态人脸图像正面化方法,包括以下步骤:

1)收集各个姿态的人脸图像作为训练集和测试集,必须确保输入的每一张任意姿态的人脸图像ia,都能在数据集中找到同一人物非合成的正脸图像ig

2)在训练阶段,把训练集中的任意姿态的人脸图像ia输入生成器g,得到修正编码x2和合成的正脸图像if,把非合成的正脸图像ig输入生成器g,得到正脸编码x3;

3)把合成的正脸图像if或非合成的正脸图像ig输入判别网络d,判别网络d判断输入的人脸图像是合成的还是非合成的,再把合成的正脸图像if或非合成的正脸图像ig输入人脸身份特征提取器f,通过f提取人脸图像的人物身份特征;

4)把步骤3)的判别结果和提取的人物身份特征、合成的正脸图像if、非合成的正脸图像ig、修正编码x2和正脸编码x3带入各个预先设计好的损失函数,交替训练生成器g和判别网络d直至训练结束;

5)在测试阶段,把任意姿态的人脸图像ia输入已经训练完成的生成器g,能够得到一张合成的正脸图像if,通过直接观测合成的正脸图像if的质量来验证效果。

在步骤1)中,所述数据集使用的各个姿态的人脸图像全部来源于数据集multi_pie;数据集中的图片数目超过75万,包含了337个人的20种光照和15种姿态下的图像;图片的光照由光照标号01到20从暗变亮,其中光照标号07为标准光照条件;把数据集所有人脸图像标记为ia,对每一张图像ia,在数据集中找到同一个人、人脸偏转角为0°并且光照标号为07的图像,把它们标记为ig

在步骤2)中,所述生成器g由姿态估算器p、编码器en,编码残差网络r和解码器d组成;所述姿态估算器p采用了pnp算法估算人脸姿态,进而求取人脸在yaw方向上的偏转角,由开源的opencv库的函数cv2.solvepnp()实现;所述编码器en是卷积神经网络,所述编码残差网络r是两层全连接神经网络,所述解码器de是反卷积神经网络;

所述生成器g合成图片的过程为:对生成器g输入任意姿态的人脸图像ia,编码器en把它转化为初始编码x1,编码残差网络r通过初始编码x1估算出编码残差r(x1),姿态估算器p求取输入图像中人脸在yaw方向上的精确偏转角度γ,偏转角γ输入函数y,得到编码残差的权重y(γ),初始编码x1和编码残差融合得到修正编码x2,其中x2=x1+y(γ)×r(x1),把修正编码x2输入到解码器de,通过反卷积生成正脸图像if

在步骤3)中,所述判别网络d是一个以卷积神经网络为基础的二分类器,用来判断输入的图像来源于生成器g还是原始图像数据;所述人脸身份特征提取器f采用已经开源的light-cnn-29,light-cnn29是一个轻量级卷积神经网络,深度为29层,参数数量有1200万。

在步骤4)中,所述损失函数的目标是最小化合成的正脸图像if和非合成的正脸图像ig之间的差异,从而使合成的正脸图像if能够保留更多输入人脸图像的身份信息;步骤4)中用到的损失函数除了同类型方法常用的像素损失函数、身份损失函数、对称损失函数和对抗损失函数,还包括了自创的编码损失函数,所述编码损失函数的第一个目标是让输入人脸图像ia和非合成的正脸图像ig分别通过编码器en所得到的编码更加接近,因为目前的人脸姿态矫正法在输入人脸偏转角度越小的情况下效果越好,所以输入人脸图像的编码越接近同一人脸在0°偏转角情况下的编码,合成的正脸效果就越好;因此,编码损失函数的第一部分公式如下:

式中,n是各个编码的维数,en是编码器,en(ia)i是初始编码en(ia)的第i维的值;r是编码残差网络,r(en(ia))i是编码残差r(en(ia))的第i维的值;en(ia)i+r(en(ia))i等于修正编码的第i维的值;是非合成的正脸图像通过编码器所得到的正脸编码x3的第i维的值;所述编码损失函数的第一部分是指修正编码和正脸编码之间的曼哈顿距离;

所述编码损失函数的第二个目标是让不同人物之间的修正编码得到区分,在修正编码en(ia)+r(en(ia))的后面构建一个全连接层c,全连接层c的神经元个数等于训练集中的人物个数m,编码损失函数的第二部分采用了交叉熵损失函数:

式中,m是训练集的人物个数;yi是one-hot向量y的第i维的值,向量y表明了输入人脸图像ia属于训练集中的哪一个人物,若图像ia属于第j个人,那么向量y的第j维的值为1,其余的维度的值为0,y的维度为m;en(ia)+r(en(ia))是修正编码;c(en(ia)+r(en(ia)))i是修正编码经过全连接层c所的到的特征向量c(en(ia)+r(en(ia)))的第i维的值;

因此,完整的编码损失函数为:

lcode=lcode1+λlcode2

式中,λ是一个值为0.1的常数,表示权重。

在步骤4)中,交替地训练生成器g和判别网络d能够让两者对抗中互相优化提升;在初始阶段,生成器g生成的人脸图像模糊不清,判别网络d能够轻易判断输入图像的来源,从而激励生成器g生成更加清晰的图像,提高生成器g的质量;在后续阶段,生成器g生成的图像更清晰并且接近原始图像数据了,从而激励判别网络对输入图像做出更加精确的判断,提高判别网络d的判别能力。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明充分利用了输入人脸图像的旋转角信息,并且定义了相关的编码损失函数,有助于合成质量更高的正脸图像。

2、本发明在输入的人脸图像偏转角超过60°的时候,也可以生成清晰逼真的正脸图像,并且不会产生形变。

3、本发明合成的正脸图像能够保留输入人脸图片的身份信息,因而它有助于减少人脸姿态变换给人脸识别带来的不利影响,为后续的人脸身份识别工作带来便利。

4、从现实应用场景分析,本发明有望推动嫌犯追踪等领域的发展。通过把目标人物的侧脸图像矫正为正脸图像,从而提高相关工作的效率。

附图说明

图1是本发明方法的流程图。

图2是生成器合成图像流程图。

图3是编码器神经网络结构图。

图4是解码器神经网络结构图。

图5是判别网络结构图。

图6是本发明合成效果展示图。

具体实施方式

为了更为具体地描述本发明,下面结合步骤、附图和具体实施方式对本发明的技术方案进行详细说明。

如图1所示,本实施例所提供的基于生成对抗网络的多姿态人脸图像正面化方法,包括以下步骤:

1)收集各个姿态的人脸图像作为训练集和测试集,必须确保输入的每一张任意姿态的人脸图像ia,都能在数据集中找到同一张脸并且人脸偏转角为0°的非合成的正脸图像ig

所用数据集的图像来源于multi_pie人脸数据集,它包含了337个人的20种光照和15种姿态下的图像,数据集中的图片数目超过75万,包含了337个人的20种光照和15种姿态下的图像;图片的光照由光照标号01到20从暗变亮,其中光照标号07为标准光照条件;把数据集所有人脸图像标记为ia,对每一张图像ia,在数据集中找到同一个人、人脸偏转角为0°并且光照标号为07的图像,把它们标记为ig。数据集在使用前已经进行了人脸检测,人脸截取等预处理步骤。选取偏转角90°以内的13种姿态,所有光照条件下的图像作为数据集,并把其中前200人的图像划分为训练集,把剩余137人的图像划分为测试集。对数据集所有图像进行归一化和resize操作。其中归一化是指把图像的所有像素的值除以255.0,使图像所有像素的取值范围为[0,1],resize是指用双线性插值法把数据集中的所有图像的维度调整在128×128×3。

2)在训练阶段,把训练集中的任意姿态的人脸图像ia输入生成器g,得到修正编码x2和合成的正脸图像if。把非合成的正脸图像ig输入生成器g,得到正脸编码x3。

生成器g的作用是把输入的人脸图像ia转化为合成的正脸图像if,由姿态估计器p,编码器en,编码残差网络和r和解码器de组成。如图2所示,生成器g合成图片的过程为:对生成器g输入任意姿态的人脸图像ia,编码器en把它转化为初始编码x1,编码残差网络r通过初始编码x1估算出编码残差r(x1),姿态估算器p求取输入图像中人脸在yaw方向上的精确偏转角度γ,偏转角γ输入函数y,得到编码残差的权重y(γ),初始编码x1和编码残差融合得到修正编码x2,其中x2=x1+y(γ)×r(x1),把修正编码x2输入到解码器de,通过反卷积生成正脸图像if

姿态估计器p的作用是求出输入人脸图像在yaw方向上较为精确的人脸偏转角度γ,进而得到编码残差的权重:姿态估计器p采用pnp算法估算人脸的姿态。在实现的时候直接使用了opencv库中的cv2.solvepnp()函数。此函数所需要的参数包括人脸图像的2d特征点和各个特征点对应的3d位置。其中人脸的2d特征点用开源的dlib库所提供的人脸特征点检测算法直接求取。各个特征点的3d位置采用平均人脸模型上特征点的位置,这些3d位置是固定的,由dlib库中2d特征点检测算法的相关文档提供。

编码器en是卷积神经网络,其网络结构如图3所示,它的作用是将输入的人脸ia转化为初始编码x1。其中输入图像ia的维度是128×128×3,编码器最后一层的激活函数为maxout,输出的初始编码x1维度是256。

编码残差网络r是一个两层的全连接神经网络,两层的神经元个数都是256。设非合成的正脸图像ig通过编码器所得到的编码为x3,编码残差网络r的作用就是估算初始编码x1和正脸编码x3之间的编码残差r(x1)。编码残差乘以权重并且融合初始编码x1,得到修正编码x2,其中x2=x1+y(γ)×r(x1)。

解码器de属于反卷积神经网络,其网络结构如图4所示。它的作用则是将修正编码x2解码,通过反卷积步骤得到合成的正脸图像if。对目前的以生成对抗网络为基础的人脸矫正法,输入的人脸偏转角度越小,合成人脸图像的质量就越高,图像中能够保留的人物身份信息就越多。由于修正编码x2比初始编码x1更加接近正脸编码x3,用修正编码x2代替初始编码x1输入解码器,能够合成质量更高的人脸图像。

3)合成的正脸图像if或非合成的正脸图像ig输入判别网络d,判别网络d判断输入的人脸图像是合成的还是非合成的。再把合成的正脸图像if或非合成的正脸图像ig输入人脸身份特征提取器f,得到输入人脸图像的人物身份特征。

判别网络d是一个以卷积神经网络为基础的二分类器,其网络结构如图5所示,它的作用是判断输入的图像来源于生成器g还是原始图像数据,判别网络的最终输出一个值,用来表示输入图像来源于生成器g的可能性,这个值越大说明输入图像来源于生成器g的可能性越大。

人脸身份特征提取器f采用已经开源的light-cnn-29。light-cnn29是一个轻量级卷积神经网络,深度为29层,参数数量大约1200万,能够提取出输入人脸图片的身份特征,最后提取的身份特征维度为256。

4)把步骤3)的判别结果和提取的人物身份特征、合成的正脸图像if、非合成的正脸图像ig、修正编码x2和正脸编码x3带入各个预先设计好的损失函数,交替训练生成器g和判别网络d直至训练结束。

训练生成器的损失函数除了同类型方法常用的像素损失函数、身份损失函数、对称损失函数和对抗损失函数,还包括了自创的编码损失函数。

首先是像素损失函数,它表示合成的正脸图像if和非合成的正脸图像ig之间的像素差距,公式如下:

其中w和h分别代表图像的宽和高。分别表示合成的正脸图像if和非合成的正脸图像ig在坐标(x,y)下的像素值。

然后是对称损失函数,鉴于人脸具有对称的特点,合成的正脸图像if应该和它经过左右翻转后得到的图像isym尽可能接近,对称损失函数公式如下:

其中w和h分别代表图像的宽和高。分别表示合成的正脸图像if和它经过左右翻转后得到的图像isym在坐标(x,y)下的像素值。

然后是身份损失函数,人脸身份特征提取器f能够高效地求出正脸图像的身份特征。分别将合成的正脸图像if和非合成的正脸图像ig分别输入f,得到它们的身份特征f(if)和f(ig)。为了确保合成的正脸图像if能够包含非合成的正脸图像ig的身份信息,需要最小化把它们输入f后所得到的最后两层身份特征图之间的曼哈顿距离。身份损失函数公式如下:

wi和hi分别代表倒数第i层的人脸身份特征图的宽和高。f是人脸身份特征提取器。分别表示正脸图像if和非合成的正脸图像ig在倒数第i层的身份特征图上的坐标(x,y)的值。

最后是对抗损失函数,它的目标是使合成图像能够混淆判别网络d,从而让合成的图像更加接近真实图像,增强了合成图像的逼真程度。对抗损失公式如下:

其中n是当前训练批次的大小,g和d分别是生成器和判别网络,ia和g(ia)分别代表输入人脸图像和生成器合成的正脸图像。d(g(ia))的值反映了合成图像g(ia)被判别网络d判断为合成图片的可能性。最小化损失函数ladv的目的是让生成器合成的正脸图像g(ia)能够通过判别网络的检测,从而提高合成的正脸图像g(ia)的逼真程度。

编码损失函数的第一个目标是让输入人脸图像ia和非合成的正脸图像ig分别通过编码器en所得到的编码更加接近,因为目前的人脸姿态矫正法在输入人脸偏转角度越小的情况下效果越好,所以输入人脸图像的编码越接近同一人脸在0°偏转角情况下的编码,合成的正脸效果就越好;因此,编码损失函数的第一部分公式如下:

式中,n是各个编码的维数,en是编码器,en(ia)i是初始编码en(ia)的第i维的值;r是编码残差网络,r(en(ia))i是编码残差r(en(ia))的第i维的值;en(ia)i+r(en(ia))i等于修正编码的第i维的值;是非合成的正脸图像通过编码器所得到的正脸编码x3的第i维的值;所述的编码损失函数的第一部分是指修正编码和正脸编码之间的曼哈顿距离。

所述编码损失函数的第二个目标是让不同人物之间的修正编码得到区分,在修正编码en(ia)+r(en(ia))的后面构建了一个全连接层c,全连接层c的神经元个数等于训练集中的人物个数m,编码损失函数的第二部分采用了交叉熵损失函数:

式中,m是训练集的人物个数;yi是one-hot向量y的第i维的值,向量y表明了输入人脸图像ia属于训练集中的哪一个人物,若图像ia属于第j个人,那么向量y的第j维的值为1,其余的维度的值为0,y的维度为m;en(ia)+r(en(ia))是修正编码;c(en(ia)+r(en(ia)))i是修正编码经过全连接层c所的到的特征向量c(en(ia)+r(en(ia)))的第i维的值。

因此,完整的编码损失函数为:

lcode=lcode1+λlcode2

式中,λ是一个值为0.1的常数,表示权重。

综上,训练生成器的损失函数为:

ltotal=lpixel+λ1lsym+λ2lid+λ3ladv+λ4lcode

其中lpixel、lsym、lid、ladv和lcode分别代表像素损失函数,对称损失函数,身份损失函数,对抗损失函数和编码损失函数。λ1、λ2、λ3和λ4代表不同损失函数的权重。

参考同类型方法的参数设置以及大量实验经验,各个损失函数的权重λ1、λ2、λ3和λ4分别被设置为0.2、0.003、0.001和0.002。训练生成器的同时需要训练判别网络d,训练d的目标是使判别网络能够分辨出输入的正脸图像是来源于生成器g还是原始数据集,训练判别网络的损失函数如下:

其中n是当前训练批次的大小,g和d分别是生成器和判别网络,ia是输入图像。g(ia)和ig分别代表合成的正脸图像和非合成的正脸图像。logd(g(ia))和logd(ia)的值分别反映了合成的正脸图像g(ia)和非合成的正脸图像ig被判别网络d判断为合成的正脸图像的可能性。最小化ladv2的目的就是让判别网络d能够准确地反映出输入图片为合成图片的可能性。

交替地训练生成器g和判别网络d能够让两者对抗中互相优化提升。在初始阶段,生成器g生成的人脸图像模糊不清,判别网络d能够轻易判断输入图像的来源,从而激励生成器g生成更加清晰的图像,提高生成器g的质量。在后续阶段,生成器g生成的图像比较清晰并且接近原始图像数据了,从而激励判别网络对输入图像做出更加精确的判断,提高判别网络d的判别能力。

生成器g和判别网络d的损失函数设计完成后,通过adam下降法最小化生成对抗网络的参数,设置学习率为0.0002,设置批的大小为12。每一次训练生成器g后,就训练一次判别网络d。随着训练次数的增加,生成器生成的图像质量不断提高,判别网络判别输入图像的能力不断加强,最终完成训练。本实验所用的深度学习框架为tensorflow,计算机的显卡为1080ti,训练到2万批的时候停止训练。

5)在测试阶段,对输入的任意姿态的人脸图像ia,用训练完成的生成器g可以合成同一张人脸的正脸图像if,而后通过直接观测合成的正脸图像if的质量可以验证本发明的效果,生成图像的效果如图6所示,对每行图片,第一张是输入的偏转角超过45°的人脸图像,第二张是生成器合成的正脸图像,第三张是数据集中同一人的非合成的正脸图像。由图可见,对偏转角超过45°的人脸图像,本发明都可以合成它们的正脸图像,并且能够保留原始人脸的身份信息。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

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