基于Triplet Loss的人脸认证方法、装置、计算机设备和存储介质转让专利

申请号 : CN201711436879.4

文献号 : CN108009528B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许丹丹梁添才章烈剽龚文川

申请人 : 广州广电运通金融电子股份有限公司

摘要 :

本发明涉及一种基于Triplet Loss的人脸认证方法、装置、计算机设备和存储介质,该方法包括:基于人脸认证请求,获取证件照片和人物的场景照片;对场景照片和证件照片分别进行人脸检测、关键点定位和图像预处理,得到场景照片对应的场景人脸图像,以及证件照片对应的证件人脸图像;将场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取卷积神经网络模型输出的场景人脸图像对应的第一特征向量,以及证件人脸图像对应的第二特征向量;计算第一特征向量和第二特征向量的余弦距离;比较余弦距离和预设阈值,并根据比较结果确定人脸认证结果。该方法提高了人脸认证的可靠性。

权利要求 :

1.一种基于Triplet Loss的人脸认证方法,包括:

基于人脸认证请求,获取证件照片和人物的场景照片;

对所述场景照片和所述证件照片分别进行人脸检测、关键点定位和图像预处理,得到所述场景照片对应的场景人脸图像,以及所述证件照片对应的证件人脸图像;

将所述场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取所述卷积神经网络模型输出的所述场景人脸图像对应的第一特征向量,以及所述证件人脸图像对应的第二特征向量;其中,所述卷积神经网络模型基于三元组损失函数的监督训练得到;所述三元组损失函数包括对同类样本的余弦距离的限定,以及对异类样本的余弦距离的限定;

计算所述第一特征向量和所述第二特征向量的余弦距离;

比较所述余弦距离和预设阈值,并根据比较结果确定人脸认证结果;

所述三元组损失函数为:

其中,cos(·)表示余弦距离,其计算方式为 N是三元组数量, 表

示参考样本的特征向量, 表示同类正样本的特征向量, 表示异类负样本的特征向量,[·]+的含义如下: α1为类间间隔参数,α2为类内间隔参数;所述类间间隔参数的取值范围为0~0.2,所述类内间隔参数的取值范围为0.8~1.0。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

获取带标记的训练样本,所述训练样本包括标记了属于每个标记对象的一张证件人脸图像和至少一张场景人脸图像;

根据所述训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素;所述三元组元素包括参考样本、正样本和负样本;

根据各训练样本的三元组元素,基于三元组损失函数的监督,训练所述卷积神经网络模型;该三元组损失函数,以余弦距离作为度量方式,通过随机梯度下降算法来优化模型参数;

将验证集数据输入所述卷积神经网络模型,达到训练结束条件时,得到训练好的用于人脸认证的卷积神经网络模型。

3.根据权利要求2所述的方法,其特征在于,根据所述训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素的步骤,包括:随机选择一个图像作为参考样本,选择属于同一标签对象、与参考样本类别不同的图像作为正样本;

根据OHEM策略,利用当前训练的卷积神经网络模型提取特征之间的余弦距离,对于每一个参考样本,从其它不属于同一标签对象的图像中,选择距离最小、与所述参考样本属于不同类别的图像,作为该参考样本的负样本。

4.根据权利要求2所述的方法,其特征在于,所述同类样本包括所述参考样本和所述正样本,所述异类样本包括所述参考样本和所述负样本。

5.根据权利要求2所述的方法,其特征在于,所述方法还包括:利用基于海量开源人脸数据训练好的基础模型参数进行初始化,在特征输出层后添加归一化层及改进后的三元组损失函数层,得到待训练的卷积神经网络。

6.根据权利要求2所述的方法,其特征在于,所述方法还包括:利用基于海量开源人脸数据训练好的基础模型参数进行初始化,在特征输出层后添加归一化层及三元组损失函数层,得到待训练的卷积神经网络模型。

7.一种基于Triplet Loss的人脸认证装置,包括:图像获取模块、图像预处理模块、特征获取模块、计算模块和认证模块;

所述图像获取模块,用于基于人脸认证请求,获取证件照片和人物的场景照片;

所述图像预处理模块,用于对所述场景照片和所述证件照片分别进行人脸检测、关键点定位和图像预处理,得到所述场景照片对应的场景人脸图像,以及所述证件照片对应的证件人脸图像;

所述特征获取模块,用于将所述场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取所述卷积神经网络模型输出的所述场景人脸图像对应的第一特征向量,以及所述证件人脸图像对应的第二特征向量;其中,所述卷积神经网络模型基于三元组损失函数的监督训练得到;所述三元组损失函数包括对同类样本的余弦距离的限定,以及对异类样本的余弦距离的限定;

所述计算模块,用于计算所述第一特征向量和所述第二特征向量的余弦距离;

所述认证模块,用于比较所述余弦距离和预设阈值,并根据比较结果确定人脸认证结果;

所述三元组损失函数为:

其中,cos(·)表示余弦距离,其计算方式为 N是三元组数量, 表

示参考样本的特征向量, 表示同类正样本的特征向量, 表示异类负样本的特征向量,[·]+的含义如下: α1为类间间隔参数,α2为类内间隔参数;所述类间间隔参数的取值范围为0~0.2,所述类内间隔参数的取值范围为0.8~1.0。

8.根据权利要求7所述的装置,其特征在于,所述装置还包括:样本获取模块、三元组获取模块、训练模块和验证模块;

所述样本获取模块,用于获取带标记的训练样本,所述训练样本包括标记了属于每个标记对象的一张证件人脸图像和至少一张场景人脸图像;

所述三元组获取模块,用于根据所述训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素;所述三元组元素包括参考样本、正样本和负样本;

所述训练模块,用于根据各训练样本的三元组元素,基于三元组损失函数的监督,训练所述卷积神经网络模型;该三元组损失函数,以余弦距离作为度量方式,通过随机梯度下降算法来优化模型参数;

所述验证模块,用于将验证集数据输入所述卷积神经网络模型,达到训练结束条件时,得到训练好的用于人脸认证的卷积神经网络模型。

9.根据权利要求7所述的装置,其特征在于,还包括模型初始化模块,用于利用基于海量开源人脸数据训练好的基础模型参数进行初始化,在特征输出层后添加归一化层及三元组损失函数层,得到待训练的卷积神经网络。

10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述的基于Triplet Loss的人脸认证方法的步骤。

11.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现权利要求1至6任一项所述的基于Triplet Loss的人脸认证方法的步骤。

说明书 :

基于Triplet Loss的人脸认证方法、装置、计算机设备和存储

介质

技术领域

[0001] 本发明涉及图像处理技术领域,特别是涉及一种基于Triplet Loss的人脸认证方法、装置、计算机设备和存储介质。

背景技术

[0002] 人脸认证,是指对比现场采集的人物场景照片以及身份信息中的证件照片,判断是否为同一个人。人脸认证的关键技术为人脸识别。
[0003] 随着深度学习技术的兴起,人脸识别的相关问题不断突破传统的技术瓶颈,性能水平得到较大的提升。在运用深度学习解决人脸识别问题的研究工作中,主要有两派主流的方法:基于分类学习的方法和基于度量学习的方法。其中,基于分类学习的方法主要是在深度卷积网络提取特征之后计算样本的分类损失函数(比如softmax loss、center loss及相关变体)来对网络进行优化,网络最后一层是用于分类的全连接层,其输出节点的数量往往要与训练数据集的总类别数保持一致,该类方法适用于训练样本较多,尤其是同一类别的训练样本比较丰富的情况,网络可以得到较好的训练效果和泛化能力。但当类别数达到数十万或更高数量级时,网络最后的分类层(全连接层)参数量会呈线性增长而相当庞大,导致网络难以训练。
[0004] 另一类方法是基于度量学习的方法,该方法以元组的方式组织训练样本(比如二元组pair或者三元组triplet),在深度卷积网络之后无需通过分类层,而是直接基于卷积特征向量计算样本间的度量损失(比如contrastive loss、triplet loss等)来对网络进行优化,该方法不需要训练分类层,因此网络参数量不受类别数增长的影响,对训练数据集的类别数无限定,只需要根据相应策略选取同类或异类样本构造合适的元组即可。相比分类学习方法,度量学习方法更适用于训练数据广度较大但深度不足(样本类别数多,但同类样本少)的情况,通过样本之间的不同组合,可以构造相当丰富的元组数据用于训练,同时度量学习方式更加关注元组内部关系,对于1:1人脸验证这类判断是与不是的问题有其先天的优势。
[0005] 在实际应用中,许多的机构都要求实名制登记,例如,银行开户,手机号码登记、金融账号开户等等。实名制登记要求用户携带身份证到指定的地点,由工作人员验证本人与身份证的照片对应后,方可开户成功。而随着互联网技术地发展,越来越多的机构推出了便民服务,不再强制要求客户到指定网点。用户的地理位置不受限制,上传身份证,并利用移动终端的图像采集装置采集现场的人物场景照片,由系统进行人脸认证,并在人脸认证通过后,即可开户成功。而传统地基于度量的学习方法,使用欧式距离来度量样本之间的相似度,而欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关,这并不符合人脸特征空间的分布属性,导致人脸识别的可靠性较低。

发明内容

[0006] 基于此,有必要针对传统的人脸认证方法可靠性低的问题,提供一种基于Triplet Loss的人脸认证方法、装置、计算机设备和存储介质。
[0007] 一种基于Triplet Loss的人脸认证方法,包括:
[0008] 基于人脸认证请求,获取证件照片和人物的场景照片;
[0009] 对所述场景照片和所述证件照片分别进行人脸检测、关键点定位和图像预处理,得到所述场景照片对应的场景人脸图像,以及所述证件照片对应的证件人脸图像;
[0010] 将所述场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取所述卷积神经网络模型输出的所述场景人脸图像对应的第一特征向量,以及所述证件人脸图像对应的第二特征向量;其中,所述卷积神经网络模型基于三元组损失函数的监督训练得到;
[0011] 计算所述第一特征向量和所述第二特征向量的余弦距离;
[0012] 比较所述余弦距离和预设阈值,并根据比较结果确定人脸认证结果。
[0013] 在一个实施例中,所述方法还包括:
[0014] 获取带标记的训练样本,所述训练样本包括标记了属于每个标记对象的一张证件人脸图像和至少一张场景人脸图像;
[0015] 根据所述训练样本训练卷积神经网络模块,通过OHEM产生各训练样本对应的三元组元素;所述三元组元素包括参考样本、正样本和负样本;
[0016] 根据各训练样本的三元组元素,基于三元组损失函数的监督,训练所述卷积神经网络模型;该三元组损失函数,以余弦距离作为度量方式,通过随机梯度下降算法来优化模型参数;
[0017] 将验证集数据输入所述卷积神经网络模型,达到训练结束条件时,得到训练好的用于人脸认证的卷积神经网络模型。
[0018] 在另一个实施例中,根据所述训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素的步骤,包括:
[0019] 随机选择一个图像作为参考样本,选择属于同一标签对象、与参考样本类别不同的图像作为正样本;
[0020] 根据OHEM策略,利用当前训练的卷积神经网络模型提取特征之间的余弦距离,对于每一个参考样本,从其它不属于所述标签对象的图像中,选择距离最小、与所述参考样本属于不同类别的图像,作为该参考样本的负样本。
[0021] 在另一个实施例中,所述三元组损失函数包括对同类样本的余弦距离的限定,以及对异类样本的余弦距离的限定。
[0022] 在另一个实施例中,所述三元组损失函数为:
[0023]
[0024] 其中,cos(·)表示余弦距离,其计算方式为 N是三元组数量,表示参考样本的特征向量, 表示同类正样本的特征向量, 表示异类负样本的特征向量,[·]+的含义如下: α1为类间间隔参数,α2为类内间隔参
数。
[0025] 在另一个实施例中,所述方法还包括:利用基于海量开源人脸数据训练好的基础模型参数进行初始化,在特征输出层后添加归一化层及三元组损失函数层,得到待训练的卷积神经网络模型。
[0026] 一种基于Triplet Loss的人脸认证装置,包括:图像获取模块、图像预处理模块、特征获取模块、计算模块和认证模块;
[0027] 所述图像获取模块,用于基于人脸认证请求,获取证件照片和人物的场景照片;
[0028] 所述图像预处理模块,用于对所述场景照片和所述证件照片分别进行人脸检测、关键点定位和图像预处理,得到所述场景照片对应的场景人脸图像,以及所述证件照片对应的证件人脸图像;
[0029] 所述特征获取模块,用于将所述场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取所述卷积神经网络模型输出的所述场景人脸图像对应的第一特征向量,以及所述证件人脸图像对应的第二特征向量;其中,所述卷积神经网络模型基于三元组损失函数的监督训练得到;
[0030] 所述计算模块,用于计算所述第一特征向量和所述第二特征向量的余弦距离;
[0031] 所述认证模块,用于比较所述余弦距离和预设阈值,并根据比较结果确定人脸认证结果。
[0032] 在另一个实施例中,所述装置还包括:样本获取模块、三元组获取模块、训练模块和验证模块;
[0033] 所述样本获取模块,用于获取带标记的训练样本,所述训练样本包括标记了属于每个标记对象的一张证件人脸图像和至少一张场景人脸图像;
[0034] 所述三元组获取模块,用于根据所述训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素;所述三元组元素包括参考样本、正样本和负样本;
[0035] 所述训练模块,用于根据各训练样本的三元组元素,基三元组损失函数的监督,训练所述卷积神经网络模型;该三元组损失函数,以余弦距离作为度量方式,通过随机梯度下降算法来优化模型参数;
[0036] 所述验证模块,用于将验证集数据输入所述卷积神经网络模型,达到训练结束条件时,得到训练好的用于人脸认证的卷积神经网络模型。
[0037] 一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的基于Triplet Loss的人脸认证方法的步骤。
[0038] 一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述的基于Triplet Loss的人脸认证方法的步骤。
[0039] 本发明所述的基于Triplet Loss的人脸认证方法、装置、计算机设备和存储介质,利用预先训练的卷积神经网络进行人脸认证,由于卷积神经网络模型基于三元组损失函数的监督训练得到,而场景人脸图像和证件人脸图像的相似度根据场景人脸图像对应的第一特征向量和证件人脸图像对应的第二特征向量的余弦距离计算得到,余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,从而更符合人脸特征空间的分布属性,提高了人脸认证的可靠性。

附图说明

[0040] 图1为一个实施例的基于Triplet Loss的人脸认证系统的结构示意图;
[0041] 图2为一个实施例中基于Triplet Loss的人脸认证方法的流程图;
[0042] 图3为一个实施例中训练得到用于人脸认证的卷积神经网络模型的步骤的流程图;
[0043] 图4为在类间间隔一致、类内方差较大情况下,样本错分的概率示意图;
[0044] 图5为在类间间隔一致、类内方差较小情况下,样本错分的概率示意图;
[0045] 图6为一个实施例中基于Triplet Loss的人脸认证的迁移学习过程的示意图;
[0046] 图7为一个实施例中用于人脸认证的卷积神经网络模型的结构示意图;
[0047] 图8为一个实施例中基于Triplet Loss的人脸认证方法的流程示意图;
[0048] 图9为一个实施例中基于Triplet Loss的人脸认证装置的结构框图;
[0049] 图10为另一个实施例中基于Triplet Loss的人脸认证装置的结构框图。

具体实施方式

[0050] 图1为一个实施例的基于Triplet Loss的人脸认证系统的结构示意图。如图1所示,人脸认证系统包括服务器101和图像采集装置102。其中,服务器101与图像采集装置102网络连接。图像采集装置102采集待认证用户的实时场景照片,以及证件照片,并将采集的实时场景照片和证件照片发送至服务器101。服务器101判断场景照片的人物与证件照中的人物是否为同一人,对待认证用户的身份进行认证。基于具体的应用场景,图像采集装置102可以为摄像头,或是具有摄像功能的用户终端。以在开户现场为例,图像采集装置102可以为摄像头;以通过互联网进行金融账号开户为例,图像采集装置102可以为具有摄像功能的移动终端。
[0051] 在其它的实施例中,人脸认证系统还可以包括读卡器,用于读取证件(如身份证等)芯片内的证件照。
[0052] 图2为一个实施例中基于Triplet Loss的人脸认证方法的流程图。如图2所示,该方法包括:
[0053] S202,基于人脸认证请求,获取证件照片和人物的场景照片。
[0054] 其中,证件照片是指能够证明人物身份的证件所对应的照片,例如身份证上所印制的证件照或芯片内的证件照。证件照片的获取方式可以采用对证件进行拍照获取,也可以通过读卡器读取证件芯片所存储的证件照片。本实施例中的证件可以为身份证,驾驶证或社会保障卡等。
[0055] 人物的场景照片是指待认证用户在认证时所采集,该待认证用户在现场环境的照片。现场环境是指用户在拍照时的所处环境,现场环境不受限制。场景照片的获取方式可以为,利用具有摄像功能的移动终端采集场景照片并发送至服务器。
[0056] 人脸认证,是指对比现场采集的人物场景照片以及身份信息中的证件照片,判断是否为同一个人。人脸认证请求基于实际的应用操作触发,例如,基于用户的开户请求,触发人脸认证请求。应用程序在用户终端的显示界面提示用户进行照片的采集操作,并在照片采集完成后,将采集的照片发送至服务器,进行人脸认证。
[0057] S204,对场景照片和证件照片分别进行人脸检测、关键点定位和图像预处理,得到场景照片对应的场景人脸图像,以及证件照片对应的证件人脸图像。
[0058] 人脸检测是指识别照片并获取照片中的人脸区域。
[0059] 关键点定位,是指对照片中检测的人脸区域,获取人脸关键点在每幅照片中的位置。人脸关键点包括眼睛,鼻尖、嘴角尖、眉毛以及人脸各部件轮廓点。
[0060] 本实施例中,可采用基于多任务联合学习的级联卷积神经网络MTCNN方法同时完成人脸检测和人脸关键点检测,亦可采用基于LBP特征的人脸检测方法和基于形状回归的人脸关键点检测方法。
[0061] 图像预处理是指将根据检测的人脸关键点在每张图片中的位置,进行人像对齐和剪切处理,从而得到尺寸归一化的场景人脸图像和证件人脸图像。其中,场景人脸图像是指对场景照片进行人脸检测、关键点定位和图像预处理后得到的人脸图像,证件人脸图像是指对证件照片进行人脸检测、关键点定位和图像预处理后得到的人脸图像。
[0062] S206,将场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取卷积神经网络模型输出的场景人脸图像对应的第一特征向量,以及证件人脸图像对应的第二特征向量。
[0063] 其中,卷积神经网络模型基于三元组损失函数的监督预先根据训练样本提前训练好的。卷积神经网络包括卷积层、池化层、激活函数层和全连接层,每层的各个神经元参数通过训练确定。利用训练好的卷积神经网络,通过网络前向传播,获取卷积神经网络模型的全连接层输出的场景人脸图像的第一特征向量,以及证件人脸图像对应的第二特征向量。
[0064] 三元组(triplet)是指从训练数据集中随机选一个样本,该样本称为参考样本,然后再随机选取一个和参考样本属于同一人的样本作为正样本,选取不属于同一人的样本作为负样本,由此构成一个(参考样本、正样本、负样本)三元组。由于人证比对主要是基于证件照与场景照的比对,而不是证件照与证件照、或者场景照与场景照的比对,因此三元组的模式主要有两种组合:以证件照图像为参考样本时,正样本和负样本均为场景照;以场景照图像为参考样本时,正样本和负样本均为证件照。
[0065] 针对三元组中的每个样本,训练一个参数共享的网络,得到三个元素的特征表达。改进三元组损失(triplet loss)的目的就是通过学习,让参考样本和正样本的特征表达之间的距离尽可能小,而参考样本和负样本的特征表达之间的距离尽可能大,并且要让参考样本和正样本的特征表达之间的距离和参考样本和负样本的特征表达之间的距离之间有一个最小的间隔。
[0066] S208,计算第一特征向量和第二特征向量的余弦距离。
[0067] 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。第一特征向量和第二特征向量的余弦距离越大,表示场景人脸图像和证件人脸图像的相似度越大,第一特征向量和第二特征向量的余弦距离越小,表示场景人脸图像和证件人脸图像的相似度越小。当场景人脸图像和证件人脸图像的余弦距离越接收于1时,两张图像属于同一人的机率越大,当场景人脸图像和证件人脸图像的余弦距离越小,两张图像属于同一人的机率越小。
[0068] 传统的三元组损失(triplet loss)方法中,使用欧式距离来度量样本之间的相似度。而欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关,这并不符合人脸特征空间的分布属性。本实施例中,考虑人脸特征空间的分布属性和实际应用场景,采用余弦距离来度量样本之间的相似度。余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置,从而更符合人脸特征空间的分布属性。
[0069] 具体地,余弦距离的计算公式为:
[0070]
[0071] 其中,x表示第一特征向量,y表示第二特征向量。
[0072] S210,比较余弦距离和预设阈值,并根据比较结果确定人脸认证结果。
[0073] 认证结果包括认证通过,即证件照片和场景照片属于同一人。认证结果还包括认证失败,即证件照片和场景照片不属于同一人。
[0074] 具体地,将余弦距离与预设阈值进行比较,当余弦距离大于预设阈值时,表示即证件照片与场景照片的相似度大于预设阈值,认证成功,当余弦距离小于预设阈值时,表示即证件照片与场景照片的相似度小于预设阈值,认证失败。
[0075] 上述的基于Triplet Loss的人脸认证方法,利用预先训练的卷积神经网络进行人脸认证,由于卷积神经网络模型基于三元组损失函数的监督训练得到,而场景人脸图像和证件人脸图像的相似度根据场景人脸图像对应的第一特征向量和证件人脸图像对应的第二特征向量的余弦距离计算得到,余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,从而更符合人脸特征空间的分布属性,提高了人脸认证的可靠性。
[0076] 在另一个实施例中,人脸认证方法还包括训练得到用于人脸认证的卷积神经网络模型的步骤。图3为一个实施例中训练得到用于人脸认证的卷积神经网络模型的步骤的流程图。如图3所示,该步骤包括:
[0077] S302,获取带标记的训练样本,训练样本包括标记了属于每个标记对象的一张证件人脸图像和至少一张场景人脸图像。
[0078] 本实施例中,标记对象即人,训练样本以人为单位,标记了同属于一个人的场景人脸图像和证件人脸图像。具体地,场景人脸图像和证件人脸图像可通过对带标记的场景照片和证件照片进行人脸检测、关键点定位和图像预处理得到。
[0079] 人脸检测是指识别照片并获取照片中的人脸区域。
[0080] 关键点定位,是指对照片中检测的人脸区域,获取人脸关键点在每幅照片中的位置。人脸关键点包括眼睛,鼻尖、嘴角尖、眉毛以及人脸各部件轮廓点。
[0081] 本实施例中,可采用基于多任务联合学习的级联卷积神经网络MTCNN方法同时完成人脸检测和人脸关键,亦可采用基于LBP特征的人脸检测方法和基于形状回归的人脸关键点检测方法。
[0082] 图像预处理是指将根据检测的人脸关键点在每张图片中的位置,进行人像对齐和剪切处理,从而得到尺寸归一化场景人脸图像和证件人脸图像。其中,场景人脸图像是指对场景照片进行人脸检测、关键点定位和图像预处理后得到的人脸图像,证件人脸图像是指对证件照片进行人脸检测、关键点定位和图像预处理后得到的人脸图像。
[0083] S304,根据训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素;三元组元素包括参考样本、正样本和负样本。
[0084] 三元组有两种组合方式:以证件照图像为参考样本时,正样本和负样本均为场景照图像;以场景照图像为参考样本时,正样本和负样本均为证件照图像。
[0085] 具体地,以证件照为参考图像为例,从训练数据集中随机选一个人的证件照样本,该样本称为参考样本,然后再随机选取一个和参考样本属于同一人的场景照样本作为正样本,选取不属于同一人的场景照样本作为负样本,由此构成一个(参考样本、正样本、负样本)三元组。
[0086] 即正样本与参考样本为同类样本,即属于同一人图像。负样本是参考样本的异类样本,即不属于同一人的图像。其中,三元组元素中的参考样本和正样本是训练样本中已标记的,负样本在卷积神经网络的训练过程中,采用OHEM(Online Hard Example Mining)策略在线构造三元组,即在网络每次迭代优化的过程中,利用当前网络对候选三元组进行前向计算,选择训练样本中与参考样本不属于同一用户,且余弦距离最近的图像作为负样本,从而得到各训练样本对应的三元组元素。
[0087] 一个实施例中,根据训练样本训练卷积神经网络,并产生各训练样本对应的三元组元素的步骤,包括以下步骤S1和S2:
[0088] S1:随机选择一个图像作为参考样本,选择属于同一标签对象、与参考样本类别不同的图像作为正样本。
[0089] 类别是指所属的图像类型,本实施例中,训练样本的类别包括场景人脸图像和证件人脸图像。因为人脸认证主要是证件照和场景照之间的对比,因此,参考样本和正样本应当属于不同的类别,若参考样本为场景人脸图像,则正样本为证件人脸图像;若参考样本为证件人脸图像,则正样本为场景人脸图像。
[0090] S2:根据OHEM策略,利用当前训练的卷积神经网络模型提取特征之间的余弦距离,对于每一个参考样本,从其它不属于同一标签对象的图像中,选择距离最小、与参考样本属于不同类别的图像,作为该参考样本的负样本。
[0091] 负样本从与参考样本不属于同一人的标签的人脸图像中选择,具体地,负样本在卷积神经网络的训练过程中,采用OHEM策略在线构造三元组,即在网络每次迭代优化的过程中,利用当前网络对候选三元组进行前向计算,选择训练样本中与参考样本不属于同一用户,且余弦距离最近、与参考样本不属于同一类别的图像作为负样本。即,负样本与参考样本的类别不同。可以认为,三元组中若以证件照为参考样本,则正样本和负样本均是场景照;反之若以场景照为参考样本,则另外正样本和负样本均是证件照。
[0092] S306,根据各训练样本的三元组元素,基于三元组损失函数的监督,训练卷积神经网络模型,该三元组损失函数,以余弦距离作为度量方式,通过随机梯度下降算法来优化模型参数。
[0093] 人证核验终端通过比对用户证件芯片照与场景照是否一致来对用户身份进行验证,后台采集到的数据往往是单个人的样本只有两张图,即证件照与比对时刻抓拍到的场景照,而不同个体的数量却可以成千上万。这种类别数量较大而同类样例少的数据如果用基于分类的方法来进行训练,分类层参数会过于庞大而导致网络非常难以学习,因此考虑用度量学习的方法来解决。其中度量学习的典型的一般是用三元组损失(triplet loss)方法,通过构造图像三元组来学习一种有效的特征映射,在该映射下同类样本的特征距离小于异类样本的特征距离,从而达到正确比对的目的。
[0094] 三元组损失(triplet loss)的目的就是通过学习,让参考样本和正样本的特征表达之间的距离尽可能小,而参考样本和负样本的特征表达之间的距离尽可能大,并且要让参考样本和正样本的特征表达之间的距离和参考样本和负样本的特征表达之间的距离之间有一个最小的间隔。
[0095] 在另一个实施例中,三元组损失函数包括对同类样本的余弦距离的限定,以及对异类样本的余弦距离的限定。
[0096] 其中,同类样本是指参考样本和正样本,异类样本是指参考样本和负样本。同类样本的余弦距离是指参考样本和正样本的余弦距离,异类样本的余弦距离是指参考样本和负样本的余弦距离。
[0097] 一方面,原始的triplet loss方法只是考虑了类间差距而没有考虑类内差距,如果类内分布不够聚敛,网络的泛化能力就会减弱,对场景适应性也会随之降低。另一方面,原始的triplet loss方法采用的是欧式距离来度量样本之间的相似度,实际上人脸模型部署后在特征比对环节,更多地会采用余弦距离来进行度量。欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关;而余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置,从而更符合人脸特征空间的分布属性。
[0098] 采用triplet loss方法,通过在线构造三元组数据输入网络,然后反向传播三元组的度量损失来进行迭代优化。每一个三元组包含三张图像,分别是一个参考样本,一个与参考样本同类的正样本,以及一个与参考样本异类的负样本,标记为(anchor,positive,negative)。原始triplet loss的基本思想是,通过度量学习使得参考样本与正样本之间的距离小于参考样本与负样本之间的距离,并且距离之差大于一个最小间隔参数α。因此原始的triplet loss损失函数如下:
[0099]
[0100] 其中,N是三元组数量, 表示参考样本(anchor)的特征向量, 表示同类正样本(positive)的特征向量, 表示异类负样本(negative)的特征向量。 表示L2范式,即欧氏距离。[·]+的含义如下:
[0101] 从上式可看出,原始的triplet loss函数只限定了同类样本(anchor,positive)与异类样本(anchor,negative)之间的距离,即通过间隔参数α尽可能增大类间距离,而对类内距离未作任何限定,即对同类样本之间的距离未作任何约束。如果类内距离比较分散,方差过大,网络的泛化能力就会减弱,样本被错分的概率就会更大。图4为在类间间隔一致、类内方差较大情况下,样本错分的概率示意图,图5为在类间间隔一致、类内方差较小情况下,样本错分的概率示意图,如图4和图5所示,阴影部分表示样本错分的概率,在类间间隔一致、类内方差较大情况下,样本错分的概率明显大于类间间隔一致、类内方差较小情况下,样本错分的概率。
[0102] 针对上述问题,本发明提出改进的triplet loss方法,一方面保留了原始方法中对类间距离的限定,同时增加了对类内距离的约束项,使得类内距离尽可能聚敛。其loss函数表达式为:
[0103]
[0104] 其中,cos(·)表示余弦距离,其计算方式为 N是三元组数量,表示参考样本的特征向量, 表示同类正样本的特征向量, 表示异类负样
本的特征向量,[·]+的含义如下: α1为类间间隔参数,α2为类内间隔
参数。
[0105] 相比原始的triplet loss函数,改进后的triplet loss函数的度量方式由欧氏距离改为余弦距离,这样可以保持训练阶段与部署阶段度量方式的一致性,提高特征学习的连续性。同时新的triplet loss函数第一项与原始的triplet loss作用一致,用于增大类间差距,第二项添加了对同类样本对(正元组)的距离约束,用于缩小类内差距。α1为类间间隔参数,取值范围为0~0.2,α2为类内间隔参数,取值范围为0.8~1.0。值得注意的是,由于是用余弦方式度量,得到的度量值对应两个样本之间的相似度,因此在 表达式中,只有负元组余弦相似度在α1范围内大于正元组余弦相似度的样本,才会真正参与训练。
[0106] 基于改进后的三元组损失函数来训练模型,通过类间损失与类内损失的联合约束来对模型进行反向传播的优化训练,使得同类样本在特征空间尽可能接近而异类样本在特征空间尽可能远离,提高模型的辨识力,从而提高人脸认证的可靠性。
[0107] S308,将验证集数据输入卷积神经网络,达到训练结束条件时,得到训练好的用于人脸认证的卷积神经网络。
[0108] 具体地,从人证图像数据池中取90%数据作为训练集,剩余10%作为验证集。基于上式计算出改进后的triplet loss值,反馈到卷积神经网络中进行迭代优化。同时观测模型在验证集中的性能表现,当验证性能不再升高时,模型达到收敛状态,训练阶段终止。
[0109] 上述的人脸认证方法,一方面在原始triplet loss的损失函数中增加了对类内样本距离的约束,从而在增大类间差距的同时减小类内差距,提升模型的泛化能力;另一方面,将原始triplet loss的度量方式由欧氏距离改为余弦距离,保持训练与部署的度量一致性,提高特征学习的连续性。
[0110] 在另一个实施例中,训练卷积神经网络的步骤还包括:利用基于海量开源人脸数据训练好的基础模型参数进行初始化,在特征输出层后添加归一化层及改进后的三元组损失函数层,得到待训练的卷积神经网络。
[0111] 具体地,在用深度学习解决人证合一问题时,常规的基于互联网海量人脸数据训练得到的深度人脸识别模型在特定场景下的人证比对应用上性能会大幅下降,而特定应用场景下的人证数据来源又比较有限,直接地学习往往由于样本不足导致训练结果不理想,因此极需要研发一种有效地针对小数据集的场景数据进行扩展训练的方法,以提升人脸识别模型在特定应用场景下的准确率,满足市场应用需求。
[0112] 深度学习算法往往依赖于海量数据的训练,在人证合一应用中,证件照与场景照比对属于异质样本比对问题,常规的基于海量互联网人脸数据训练得到的深度人脸识别模型在人证比对应用上性能会大幅下降。然而人证数据来源有限(需要同时具备同一个人的身份证图像及相应的场景图像),可用于训练的数据量较少,直接训练会由于样本不足导致训练效果不理想,因此在运用深度学习进行人证合一的模型训练时,往往是利用迁移学习的思想,先基于海量的互联网人脸数据训练一个在开源测试集上性能可靠的基础模型,然后再在有限的人证数据上进行二次扩展训练,使模型能自动学习特定模态的特征表示,提升模型性能。此过程如图6所示。
[0113] 在二次训练的过程中,整个网络用预训练好的基础模型参数进行初始化,然后在网络的特征输出层之后添加一个L2归一化层以及改进后的triplet loss层,待训练的卷积神经网络结构图如图7所示。
[0114] 一个实施例中,一种人脸认证方法的流程示意图如图8所示,包括三个阶段,分别为数据采集与预处理阶段、训练阶段和部署阶段。
[0115] 数据采集与预处理阶段,由人证核验终端设备的读卡器模块读取证件芯片照,以及前置摄像头抓取现场照片,经过人脸检测器、关键点检测器、人脸对齐与剪切模块之后得到尺寸归一化的证件人脸图像和场景人脸图像。
[0116] 训练阶段,从人证图像数据池中取90%数据作为训练集,剩余10%作为验证集。由于人证比对主要是证件照与场景照之间的比对,因为三元组中若以证件照为参考图(anchor),则另外两张图均是场景照;反之若以场景照为参考图,则另外两张图均是证件照。采用OHEM在线构造三元组的策略,即在网络每次迭代优化的过程中,利用当前网络对候选三元组进行前向计算,筛选满足条件的有效三元组,按照上式计算出改进后的triplet loss值,反馈到网络中进行迭代优化。同时观测模型在验证集中的性能表现,当验证性能不再升高时,模型达到收敛状态,训练阶段终止。
[0117] 部署阶段,将训练好的模型部署到人证核验终端进行使用时,设备采集到的图像经过与训练阶段相同的预处理程序,然后通过网络前向计算得到每张人脸图像的特征向量,通过计算余弦距离得到两张图像的相似度,然后根据预设阈值进行判决,大于预设阈值的为同一人,反之为不同人。
[0118] 上述的人脸认证方法,原始triplet loss函数只限定了类间距离的学习关系,上述的人脸认证方法,通过改进原始triplet loss损失函数增加了类内距离的约束项,可以使得网络在训练过程中增大类间差距的同时尽可能减小类内差距,从而提高网络的泛化能力,进而提升模型的场景适应性。另外,用余弦距离替代了原始triplet loss中的欧氏距离度量方式,更符合人脸特征空间的分布属性,保持了训练阶段与部署阶段度量方式的一致性,使得比对结果更加可靠。
[0119] 在一个实施例中,提供一种人脸认证装置,如图9所示,包括:图像获取模块902、图像预处理模块904、特征获取模块906、计算模块908和认证模块910。
[0120] 图像获取模块902,用于基于人脸认证请求,获取证件照片和人物的场景照片。
[0121] 图像预处理模块904,用于对场景照片和证件照片分别进行人脸检测、关键点定位和图像预处理,得到场景照片对应的场景人脸图像,以及证件照片对应的证件人脸图像。
[0122] 特征获取模块906,用于将场景人脸图像和证件人脸图像输入到预先训练好的用于人脸认证的卷积神经网络模型,并获取卷积神经网络模型输出的场景人脸图像对应的第一特征向量,以及证件人脸图像对应的第二特征向量;其中,卷积神经网络模型基于三元组损失函数的监督训练得到。
[0123] 计算模块908,用于计算第一特征向量和第二特征向量的余弦距离。
[0124] 认证模块910,用于比较余弦距离和预设阈值,并根据比较结果确定人脸认证结果。
[0125] 上述的人脸认证装置,利用预先训练的卷积神经网络进行人脸认证,由于卷积神经网络模型基于改进后的三元组损失函数的监督训练得到,而场景人脸图像和证件人脸图像的相似度根据场景人脸图像对应的第一特征向量和证件人脸图像对应的第二特征向量的余弦距离计算得到,余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置,从而更符合人脸特征空间的分布属性,提高了人脸认证的可靠性。
[0126] 如图9所示,在另一个实施例中,人脸认证装置还包括:样本获取模块912、三元组获取模块914、训练模块916和验证模块918。
[0127] 样本获取模块912,用于获取带标记的训练样本,所述训练样本包括标记了属于每个标记对象的一张证件人脸图像和至少一张场景人脸图像。
[0128] 三元组获取模块914,用于根据训练样本训练卷积神经网络模型,通过OHEM产生各训练样本对应的三元组元素;三元组元素包括参考样本、正样本和负样本。
[0129] 具体地,三元组获取模块914,用于随机选择一个图像作为参考样本,选择属于同一标签对象、与参考样本类别不同的图像作为正样本,还用于根据OHEM策略,利用当前训练的卷积神经网络模型提取特征之间的余弦距离,对于每一个参考样本,从其它具有不属于同一标签对象的人脸图像中,选择距离最小、与参考样本属于不同类别的图像,作为该参考样本的负样本。
[0130] 具体地,以证件照作为参考样本时,正样本和负样本均为场景照;以场景照作为参考样本时,正样本和负样本均为证件照。
[0131] 训练模块916,用于根据各训练样本的三元组元素,基于三元组损失函数的监督,训练卷积神经网络模型,该三元组损失函数,以余弦距离作为度量方式,通过随机梯度下降算法来优化模型参数。
[0132] 具体地,改进型三元组损失函数包括对同类样本的余弦距离的限定,以及对异类样本的余弦距离的限定。
[0133] 改进型三元组损失函数为:
[0134]
[0135] 其中,cos(·)表示余弦距离,其计算方式为 N是三元组数量,表示参考样本的特征向量, 表示同类正样本的特征向量, 表示异类负样
本的特征向量,[·]+的含义如下: α1为类间间隔参数,α2为类内间隔
参数。
[0136] 验证模块918,用于将验证集数据输入卷积神经网络模型,达到训练结束条件时,得到训练好的用于人脸认证的卷积神经网络模型。
[0137] 在另一个实施例中,人脸认证装置还包括模型初始化模块920,用于利用基于海量开源人脸数据训练好的基础模型参数进行初始化,在特征输出层后添加归一化层及三元组损失函数层,得到待训练的卷积神经网络。上述的人脸认证装置,一方面在原始triplet loss的损失函数中增加了对类内样本距离的约束,从而在增大类间差距的同时减小类内差距,提升模型的泛化能力;另一方面,将原始triplet loss的度量方式由欧氏距离改为余弦距离,保持训练与部署的度量一致性,提高特征学习的连续性。
[0138] 一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例的人脸认证方法的步骤。
[0139] 一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述各实施例的人脸认证方法的步骤。
[0140] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0141] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。