基于混合训练的深度学习人脸验证方法与流程

文档序号:11952143阅读:271来源:国知局
基于混合训练的深度学习人脸验证方法与流程
本发明涉及计算机视觉中的人脸识别,具体是涉及一种基于混合训练的深度学习人脸验证方法。
背景技术
:人脸识别是一种生物特征识别方法。相比于其它传统的生物特征识别方法,人脸识别具有无接触性、隐蔽性、用户接受度高等优点。人脸识别在国家安全、安防、门禁控制等领域具有广泛应用,具有巨大的市场价值和科研价值。人脸识别属于基于图像的识别方法。基于图像的识别方法的挑战在于如何从图像中获取有效的特征表示,以便后续的识别分类等任务。传统的人脸识别方法,将识别任务分解为人工特征设计和分类器训练这两个独立部分分别进行学习。人脸特征提取在人脸识别中起到至关重要的作用,直接制约着人脸识别的性能。传统的特征提取方法采用的是基于人工设计,如LBP特征(T.Ahonen,A.Hadid,M.Pietikainen.Facedescriptionwithlocalbinarypatterns:Applicationtofacerecognition[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,2006,28(12):2037–2041)、SIFT特征(D.G.Lowe.Distinctiveimagefeaturesfromscale-invariantkeypoints[J].InternationalJournalofComputerVision,2004,60(2):91–110)等。但是,这些浅层的特征往往无法捕获高级语义信息,极大地制约着人脸识别的性能。此外,将人脸识别分解为两个独立的步骤不利于最终的人脸识别任务。人工设计的特征可能无法跟分类器很好地匹配,造成最终整体人脸识别性能的下降。最后,手工设计的特征非常依靠于专家经验,常常需要很长的一段时间才能设计出一个好的特征,即构建一个合适于目标任务的人工特征费时费力。在基于深度学习的人脸识别方法中,卷积神经网络是一种鲁棒的特征提取方法。DeepFace(Y.Taigman,M.Yang,M.Ranzato,L.Wolf.Deepface:Closingthegaptohuman-levelperformanceinfaceverification[C].ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition,2014,1701–1708)是第一个提出用卷积神经网络进行人脸特征提取的方法。该方法利用了超过440万张人脸图像作为训练数据,采用3D人脸对齐预处理方法,基于级联的卷积层和局部连接层进行特征提取。最终利用4096维特征在LFW(LabeledFacesintheWild)(G.B.Huang,M.Ramesh,T.Berg,E.Learned-Miller.Labeledfacesinthewild:Adatabaseforstudyingfacerecognitioninunconstrainedenvironments[R].TechnicalReport07-49,UniversityofMassachusetts,Amherst.2007)人脸验证评测数据中,取得了97.35%的识别率。该方法首次在LFW评测数据库中,取得了接近于人类的识别水平。紧随着,DeepID(Y.Sun,X.Wang,X.Tang.Deeplearningfacerepresentationfrompredicting10,000classes[C].ProceedingsoftheIEEEConferenceonComputerVisionandPatternrecognition,2014,1891–1898)系列方法被提出。该方法主要采用了多块集成模型(multi-patchensemblemodel)提高模型精度,其在不同的人脸区域中分类训练了超过25个不同的特征并进行集成融合,并利用联合贝叶斯(JointBayesian)方法来获取最后的特征表示。此外,DeepID还采用结合分类损失函数和验证损失函数来扩大类间特征距离同时缩小类内特征距离,以进一步提高人脸验证的性能。DeepID系列方法在LFW评测数据库中,取得了98.97%的识别率。最近三元组损失函数被引入到卷积神经网络中。比如,FaceNet(F.Schroff,D.Kalenichenko,J.Philbin.FaceNet:Aunifiedembeddingforfacerecognitionandclustering[C].ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition,2015,815–823)提出了利用三元组损失函数训练卷积神经网络来进行人脸特征提取。该方法利用了超过200万人脸图像训练网络,并在LFW评测数据库中获得了99.63%的识别率。虽然基于深度卷积神经网络模型的各种方法,在LFW等评测数据库中取得了良好的性能。然而,目前在基于深度卷积神经网络模型的各类方法中,依然存在着如下一些问题:第一,训练数据需求量大。例如在DeepFace和FaceNet中,训练集都需要利用超过200万张的人脸数据。而大量的训练数据的获取有时候是一件困难的事情。第二,模型训练时间复杂度高并且计算量大。如在FaceNet中,为了训练一个好的模型,需要超过2,000h的训练时长。研究如何利用深度学习进行快速而有效的特征表示学习,是人脸识别中的一个关键的问题。技术实现要素:本发明的目的是提供一种基于混合训练的深度学习人脸验证方法。本发明包括以下步骤:A.准备人脸数据集,其包含人脸的图像以及相应的身份标签;B.对人脸数据集中的每幅图像分别进行人脸检测和人脸关键点检测,获取人脸关键点在每幅图像中的位置;C.根据人脸关键点的位置对所有人脸进行归一化处理,得到人脸图像训练集;D.对人脸图像训练集按照一定的比例划分为训练数据集和验证数据集,并计算训练数据集中所有人脸图像的均值图像;E.将训练数据集和验证数据集中的所有人脸图像都减去均值图像,得到均值化的训练数据集和验证数据集;F.利用均值化的训练数据集和验证数据集训练深度卷积神经网络,采用Softmax损失函数对训练数据集进行训练和学习网络参数;同时按照一定的训练步长,将验证数据集放入卷积神经网络中进行测试,以此观察网络的训练收敛情况,直至训练网络收敛;G.对于训练数据集和验证数据集中的每幅人脸图像,生成一个对应的三元组,从而构成三元组训练数据集和三元组验证数据集;H.利用三元组训练数据集和三元组验证数据集再次训练深度卷积神经网络,采用三元组损失函数对三元组训练数据集进行训练和学习网络参数;将验证数据放入卷积神经网络网络中进行测试,以此观察网络的训练收敛情况,直至训练网络收敛;I.对于给定待验证的两幅图像,分别进行人脸检测和人脸特征点检测,并减去均值图像,输入到深度卷积神经网络中,进行网络前馈操作,并提取最后一层特征f1和f2;J.根据事先选定的阈值T,当f1与f2之间的欧式距离大于阈值T,判定两张图像中的人脸属于同一个人,否则判定为不同人,从而完成人脸验证。在步骤A中,所述准备人脸数据集可采用复杂场景下采集的人脸数据库。在步骤B中,所述人脸检测和人脸关键点的检测方法可采用OpenCV提供的方法,以得到人脸关键点的位置。在步骤C中,所述归一化处理可采用基于仿射变换的人脸归一化方法,其具体步骤可为:C1.根据检测到的人脸关键点坐标和标准的人脸关键点坐标,利用最小二乘法拟合一个最优的仿射变换矩阵;C2.利用仿射变换矩阵,将大小不同的人脸图像变换到统一大小的标准人脸图像;C3.对收集的人脸数据集中的所有图像执行C1和C2,最终构成人脸图像训练集。在步骤D中,所述对人脸图像训练集按照一定的比例划分为训练数据集和验证数据集,并计算训练数据集中所有人脸图像的均值图像的具体方法可为:D1.对人脸图像训练集按照9︰1的比例进行划分,分为训练数据集和验证数据集;D2.计算训练数据集中所有人脸图像R分量的均值,计算方法为:Mean_R=Σi=1NXi(R)N,]]>其中Xi(R)为第i幅人脸图像的R分量;N为训练数据集的图像数目,且N为自然数;D3.计算训练数据集中所有人脸图像G分量的均值,计算方法为:Mean_G=Σi=1NXi(G)N,]]>其中Xi(G)为第i幅人脸图像的G分量;D4.计算训练数据集中所有人脸图像B分量的均值,计算方法为:Mean_B=Σi=1NXi(B)N,]]>其中Xi(B)分别为第i幅人脸图像的B分量;D5.将训练数据集中所有人脸图像R、G、B分量的均值组成均值图像。在步骤F中,所述神经网络的模型为一个包含多层卷积、下采样、激活函数堆叠构成的深度卷积神经网络,其优化函数为Softmax损失函数:LossA=-1NΣn=1NLog(p(n,ln)),]]>其中ln∈[1,2,...,K]表示第n个人的类别标签;K表示总人脸的类别数且K为自然数;p(n,ln)表示Softmax层将第n个数据判断为第ln类人脸的概率值;x(n,k)为Softmax层第k个输出分量。在步骤G中,所述三元组标签的生成方法包括以下步骤:G1.根据从训练得到的卷积神经网络提取特征之间的欧式距离,对于每一幅人脸图像Xi(对应特征为fi),从同属于同一个人脸标签的所有人脸图像中,选择距离最大所对应的人脸图像Pi(对应特征为fip);G2.根据从训练得到的卷积神经网络提取特征之间的欧式距离,对于每一幅人脸图像Xi(对应特征为fi),从其它具有不同人脸标签的所有人脸图像中,选择距离最小所对应的人脸图像Ni(对应特征为fin);G3.根据步骤G1和G2的结果,构成<Xi,Pi,Ni>三元组,该三元组表示Xi和Pi表示同一个人,其特征距离比较大;Xi和Ni表示不同的人,其特征距离比较小;G4:对于训练数据集和验证数据集中的所有人脸图像执行步骤G1到G3,最终构成三元组训练数据集和三元组验证数据集。在步骤H中,所述利用三元组训练数据集和三元组验证数据集再次训练深度卷积神经网络,除了保持除最后一层分类层之外的参数,其他部分网络结构复制3份,且每份网络中的权重参数共享,并训练优化三元组损失函数,三元组损失函数为:LossB=argmin(||fi-fip||22-||fi-fin||22+th),]]>其中N为三元组的个数且N为自然数;fip表示与fi同一个人的人脸图像特征,fin表示与fi不同人的人脸图像特征;th表示边际阈值;该三元组损失函数优化相同的身份的人脸图像特征的距离越小,不同身份的人脸图像的特征距离越大。与现有的技术相比,本发明的关键点在于结合Softmax损失函数和三元组损失函数进行网络混合训练。本发明同时具有快速的网络训练和提取判别性的特征的优点。因此,可以在较短的时间内,快速的进行网络训练和获取更有效的特征表示。附图说明图1为标准的68个人脸关键点位置示意图;图2为本发明采用的基于Softmax训练的深度卷积神经网络结构示意图;图3为本发明采用的基于三元组训练的深度卷积神经网络结构示意图;图4为不同的人脸验证方法在LFW评测数据库上的ROC曲线比较结果。具体实施方式下面结合附图对本发明的实施例做详细说明。本实施例包括如下步骤:S1.准备人脸数据集,其包含人脸图像以及相应的身份标签。本发明实施的数据集为公开的WebFace人脸数据集,其包含10,575个名人,共约49万张人脸图像,WebFace人脸数据多样性好,比较适合用来训练深度卷积神经网络。S2.对人脸数据集中的每幅图像分别进行人脸检测和人脸关键点检测,获取人脸关键点在每幅图像中的位置。本步骤可以采用任何一种人脸检测方法和人脸关键点检测方法。本实例采用的是基于LBP特征的Adaboost人脸检测方法和基于形状回归的人脸关键点检测方法。人脸关键点方法可检测出人脸的68个关键点,其中68个标准人脸关键点的位置如图1所示。S3.根据人脸关键点的位置对所有人脸进行归一化处理,得人脸图像训练集。具体包括:(1)根据检测到的人脸关键点坐标和标准的人脸关键点坐标,利用最小二乘法拟合一个最优的仿射变换矩阵。(2)利用仿射变换矩阵,将大小不同的人脸图像变换到统一大小的标准人脸图像。(3)对收集的人脸数据集中的所有图像执行(1)和(2),最终构成人脸图像训练集。S4.对人脸图像训练集按照一定的比例划分为训练数据集和验证数据集,并计算训练数据集中所有人脸图像的均值图像。具体包括:(1)对人脸图像训练集按照9︰1的比例进行划分,分为训练数据集和验证数据集。(2)计算训练数据集中所有人脸图像R分量的均值,计算方法为:Mean_R=Σi=1NXi(R)N,]]>其中Xi(R)为第i幅人脸图像的R分量;N为训练数据集的图像数目,且N为自然数。(3)计算训练数据集中所有人脸图像G分量的均值,计算方法为:Mean_G=Σi=1NXi(G)N,]]>其中Xi(G)为第i幅人脸图像的G分量;(4)计算训练数据集中所有人脸图像B分量的均值,计算方法为:Mean_B=Σi=1NXi(B)N,]]>其中Xi(B)分别为第i幅人脸图像的B分量;(5)将训练数据集中所有人脸图像R、G、B分量的均值组成均值图像。S5.将训练数据集和验证数据集中的所有人脸图像都减去均值图像,得到均值化的训练数据集和验证数据集。S6.利用均值化的训练数据集和验证数据集训练深度卷积神经网络。采用Softmax损失函数对训练数据集进行训练和学习网络参数;同时按照一定的训练步长,将验证数据集放入卷积神经网络中进行测试,以此观察网络的训练收敛情况,直至训练网络收敛。所采用的神经网络模型为一个包含多层卷积、下采样、激活函数堆叠构成的深度卷积神经网络。卷积神经网络的结构示意图如图2所示,具体的卷积神经网络结构参数如表1所示,其包含了卷积层、下采样层、激活函数层、全连接层、损失函数层。其优化函数为Softmax损失函数:LossA=-1NΣn=1NLog(p(n,ln)),]]>其中ln∈[1,2,...,K]表示第n个人的类别标签;K表示总人脸的类别数且K为自然数;p(n,ln)表示Softmax层将第n个数据判断为第ln类人脸的概率值;x(n,k)为Softmax层第k个输出分量。表1网络层名类型输入大小输出大小滤波器大小/步长Conv1_1卷积层128*128*3128*128*323*3/1Conv1_2卷积层128*128*32128*128*643*3/1Pool1下采样层128*128*6464*64*642*2/2Conv2_1卷积层64*64*6464*64*963*3/1Conv2_2卷积层64*64*9664*64*1283*3/1Pool2下采样层64*64*12832*32*1282*2/2Conv3_1卷积层32*32*12832*32*1283*3/1Conv3_2卷积层32*32*12832*32*1923*3/1Pool3下采样层32*32*19216*16*1922*2/2Conv4_1卷积层16*16*19216*16*2563*3/1Conv4_2卷积层16*16*25616*16*2563*3/1Pool4下采样层16*16*2568*8*2562*2/2Conv5_1卷积层8*8*2568*8*3203*3/1Conv5_2卷积层8*8*3208*8*3203*3/1Pool5下采样层8*8*3204*4*3202*2/2Dropout1Dropout层4*4*3204*4*320Fc1全连接层4*4*3201*1*128Fc2全连接层1*1*1281*1*10575表1中的标记*代表数学运算符号×。S7.对于训练数据集和验证数据集中的每幅人脸图像,生成一个对应的三元组,从而构成三元组训练数据集和三元组验证数据集。具体包括:(1)根据从训练得到的卷积神经网络提取特征之间的欧式距离,对于每一幅人脸图像Xi(对应特征为fi),从同属于同一个人脸标签的所有人脸图像中,选择距离最大所对应的人脸图像Pi(对应特征为fip)。(2)根据从训练得到的卷积神经网络提取特征之间的欧式距离,对于每一幅人脸图像Xi(对应特征为fi),从其它具有不同人脸标签的所有人脸图像中,选择距离最小所对应的人脸图像Ni(对应特征为fin)。(3)根据G1和G2步骤的结果,构成<Xi,Pi,Ni>三元组。该三元组表示Xi和Pi表示同一个人,其特征距离比较大;Xi和Ni表示不同的人,其特征距离比较小。(4)对于训练数据集和验证数据集中的所有人脸图像执行步骤(1)~(3),最终构成三元组训练数据集和三元组验证数据集。本发明采用的基于三元组训练的深度卷积神经网络结构示意图参见图3。S8.利用三元组训练数据集和三元组验证数据集再次训练深度卷积神经网络。采用三元组损失函数对三元组训练数据集进行训练和学习网络参数;将验证数据放入卷积神经网络网络中进行测试,以此观察网络的训练收敛情况,直至训练网络收敛。对于再次训练的深度卷积神经网络,除了保持除最后一层分类层之外的参数,其他部分网络结构复制3份,且每份网络中的权重参数共享,并训练优化三元组损失函数,三元组损失函数为:LossB=argmin(||fi-fip||22-||fi-fin||22+th),]]>其中N为三元组的个数且N为自然数;fip表示与fi同一个人的人脸图像特征,fin表示与fi不同人的人脸图像特征;th表示边际阈值。该三元组损失函数优化相同的身份的人脸图像特征的距离越小,不同身份的人脸图像的特征距离越大。S9.对于给定待验证的两幅图像,分别进行人脸检测和人脸特征点检测,并减去均值图像,输入到深度卷积神经网络中,进行网络前馈操作,并提取最后一层特征f1和f2。S10.根据事先选定的阈值T,当f1与f2之间的欧式距离大于阈值T,判定两张图像中的人脸属于同一个人,否则判定为不同人,从而完成人脸验证。两张人脸图像经过预处理和减去均值人脸图像之后,分别放入三元组损失函数训练好的网络中获取特征f1和f2,并直接计算这两个特征之间的欧式距离d,当d大于阈值T的时候,判断两张图像中的人脸属于同一个人,否则判定为不同人。T根据不同的场景要求会有所差异,一般情况下可设置为0.5。S11.将LFW人脸评测数据进行步骤S2~S4的操作,然后减去均值图像,放入训练好的网络中,进行人脸特征提取。最后,根据计算每个比对的人脸特征的欧式距离,进行人脸验证。分别与TL-FaceVerification、High-dimLBP、Convnet-rbm、DeepID、DeepFace-Ensemble方法进行比较。实验结果如图4所示,从图4中可以看出,基于混合训练的深度学习人脸验证方法要明显好于基本的Softmax方法。此外,在单个模型上的识别结果可以接近或者好于DeepID和DeepFace等方法。在图4中,曲线1对应于Cao等提出的TL-FaceVerification方法(X.Cao,D.Wipf,F.Wen,G.Duan,J.Sun.APracticalTransferLearningAlgorithmforFaceVerification[C].ProceedingsoftheIEEEInternationalConferenceonComputerVision,2013,3208–3215);曲线2对应于Sun等提出的DeepID方法(Y.Sun,X.Wang,X.Tang.Deeplearningfacerepresentationfrompredicting10,000classes[C].ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition,2014,1891–1898);曲线3对应的是Taigman等提出的DeepFace-Ensemble方法(Y.Taigman,M.Yang,M.Ranzato,L.Wolf.Deepface:Closingthegaptohuman-levelperformanceinfaceverification[C].ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition,2014,1701–1708);曲线4对应的是Chen等提出的High-dimLBP方法(D.Chen,X.Cao,F.Wen,J.Sun.Blessingofdimensionality:High-dimensionalfeatureanditsefficientcompressionforfaceverification[C].ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition,2013,3025–3032);曲线5对应的是Sun等提出的Convnet-rbm方法(Y.Sun,X.Wang,X.Tang.HybridDeepLearningforFaceVerification[C].ProceedingsoftheIEEEInternationalConferenceonComputerVision,2013,1489–1496);曲线6对应的是基于Softmax训练的深度学习人脸验证结果;曲线7对应的是本发明的基于混合训练的深度学习人脸验证结果。S12.为了更好地说明基于混合训练的深度学习人脸特征提取具有更好的判别性,我们选取50个人,每人分别15张人脸图像,进行特征提取,并利用PCA降维进行特征可视化,从实验结果可以看出,基于混合训练的深度人脸特征,具有更好的判别性,能较好的将不同身份的人脸图像区分开,不同身份的人脸之间的区分度较大,相同身份的人脸之间更加紧凑。S13.分别比较不同的深度卷积神经网络方法所需要的训练时间。训练基于Softmax网络模型花费了接近1天的时间。基于混合训练的网络使用接近3天的时间开始收敛到一个比较好的模型。同时,而训练一个基于三元组损失函数的方法,训练一周的时间依然没有能收敛到一个比较好的模型。所有的这些训练时间数据是Ubuntu14.04系统环境下,采用CPU为Intelcorei7,内存大小为16G下,并利用TitanXGPU环境下测试的结果。在FaceNet中报告了他们训练网络的所需要的时间为1,000h到2,000h。不同的深度学习人脸验证方法所需要的训练时间比较如表2中所示。从表2中可以看出,基于混合训练的方法,可以大大加快模型的收敛时间。表2人脸验证方法基于Softmax基于三元组基于混合训练FaceNet训练时间(h)24超过16896超过1,000本发明采用先利用基于Softmax损失函数训练深度卷积神经网络,然后利用基于三元组损失函数重新训练深度卷积神经网络的混合训练方法。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1