一种基于双线性联合CNN的人脸验证方法
技术领域
本发明涉及计算机视觉领域,更具体地,涉及一种基于双线性联合卷积神经网络(CNN)的人脸验证方法。
背景技术
人脸识别可以说是人们日常生活中最常用的身份认证手段,也是当前最热门的模式识别研究课题之一。人脸识别就是通过与计算机相连的摄像头动态捕捉人的面部,同时把捕捉到的人脸与预先录用的人员库存中的人脸进行比较识别。其他生物特征识别方法都需要人的行为配合,而人脸识别不需要被动配合,可以用在某些隐蔽的场合,可以称为一种最友好的生物特征身份认证技术。人脸验证是人脸识别问题中的一个子问题,解决的是如何判断图像中的人脸是否是指定的人,是不是某人的问题,是一对一的匹配过程。由于人脸识别分类与验证均有很大的实际应用价值,所以此课题作为一个研究热点已经持续了多年时间,很多种方法都被提出,而人脸验证算法绝大多数从检测人脸的某些特征开始,经过处理后利用各种概率模型或分类器得出验证结果。其中包括了,基于经典的SIFT,HOG,Gabor等特征的方法和基于CNN的方法,这其中通过CNN进行人脸识别能够取得目前最好的结果。然而,深层CNN网络由于有大量的参数需要通过学习获得,而目前很多人脸数据集并不能满足深层CNN网络学习所需的规模,因此深层CNN网络实现必须基于大量人脸数据集进行训练,这限制了它在人脸识别领域的应用。此外,深层CNN网络的训练过程所耗费的时间相当多,对参数进行优化是一个长期的过程。而CNN网络大部分参数来源于维数较高的全链接层,通过将两个CNN网络的尾部结合并降维的方法可以减少网络的参数,且保留了良好的识别效果。因此我们的人脸验证研究将会针对基于CNN的方法。
基于CNN的方法的主要思想是:首先,对输入图像利用的CNN进行卷积提取局部特征,然后在全链接层通过矩阵相乘减少维数,同时通过反向传导的梯度下降法调整参数使得整个网络结构能输出与训练集结果相差最小的分类结果。网络中倒数第二,第三层的特征可被视为原图像的全局特征,在人脸验证模型中,这些特征将会使用各种方法组合计算出两张人脸图像属于同一个人的概率,通过与参考集一一比对以完成最终的识别过程。很多学者在这个基础上进行了探索和改进。Sun.Y等人提出了一种增加原始CNN模型中的多个局部卷积结果到全链接层的链接,并将这些特征联立起来增强表达能力,以此提升识别效果。Aruni等人将两个CNN模型通过互相反向链式求导的方法进行相乘结合,提出了双线性的CNN模型,减少了特征的冗余,提高了计算速度。Wang等人采用了深度信念模型将人脸分解所得到的多幅图像的CNN特征相结合,通过多个RBM层编码进行人脸验证。上述方法都取得了较好的效果,但是现存的基于CNN的人脸验证研究通常忽略了人脸验证本身任务的特性,直接采用单幅人脸图像作为训练样本提取特征,而两幅输入人脸的关系线索对于提高基于CNN的识别准确率是有帮助的。
发明内容
为了克服上述现有技术的不足,本发明提供了一种基于双线性的联合CNN的人脸验证方法。该方法将获得的人脸正面图像作为输入,进行人脸图像特征提取和识别,与参考集人脸进行两两对比,最后输出此人是否与参考人脸属于同一个人的分类结果。
为了达到上述目的,本发明采用的技术方案是:
一种基于双线性联合CNN的人脸验证方法,包括以下步骤:
(1)对输入的人脸图像,分别以多尺度矩形框截取人脸图像的多个部分的图像,作为CNN的输入,利用训练集中的人脸图像对CNN进行预训练,获得初始CNN模型;
(2)将两个具有相同参数的初始CNN模型相结合形成新的双线性联合CNN;其卷积-池化层的初始化参数由上述步骤(1)给出,两个CNN模型各自的全链接层则替换为一个联合的三层全链接层,这个三层全链接层的输入是由两个初始CNN最后一层卷积-池化层输出矩阵相乘获得,最后一层的softmax多类分类器结构更换成用于判断是否为同一人脸的二分类器,然后这三层全链接层的参数均初始化为零均值方差为σ的高斯分布随机值;
(3)将训练集中的人脸图像进行两两配对,然后分别输入新的双线性联合CNN的两端,根据分类训练结果对整个双线性CNN网络的所有参数进行微调;微调时每次先固定双线性CNN模型其中一边结构的参数,然后对另一边CNN模型的参数进行调整,经过多次迭代微调以后,获得用于人脸验证的双线性CNN模型;
(4)将采用多尺度多通道多区域的方式所截取的参考人脸图像与检测人脸图像采用三层深度自编码网络进行特征二分类,最终输出人脸验证的识别准确率。
优选的,所述步骤(1)中,利用人脸图像的对称性,以不同的尺度分别截取人脸图像的上部、左上部、右上部、中部、左部、右部、下部、左下部、右下部及原图,即人脸图片共分为10个不同的人脸输入截图;利用训练集中人脸图像对CNN进行预训练,直到CNN网络的损失函数收敛,这个训练好的CNN网络结构中的卷积-池化层的参数将作为下一步两个CNN模型各自卷积池化层参数的初始值。
优选的,所述步骤(1)中,对输入的人脸图像,分别以多尺度矩形框截取人脸图像的多个部分的图像,作为CNN的输入,利用训练集中的人脸图像对CNN进行预训练;其中CNN网络结构模型使用19层VGG网络模型,由5个卷积-池化联合层加上三层全链接层组成,前两层为普通神经网络方法的连接层,第三层全链接层为softmax分类器层,完成分类任务和导数反向传播,每个卷积-池化层包括若干个卷积层和一个池化层,所有层的参数由人脸图像的softmax分类器分类结果使用反向梯度传播算法进行由后一层到前一层的逐层调整,从而获得初始CNN模型。
优选的,全链接层设定为3层,采用方差为0.01的零均值高斯白噪声作为全链接层参数的初始值。
优选的,所述步骤(3)中,将训练集中的人脸图像进行两两配对,根据训练集中人脸图像是否是同一个人作为分类结果,两张人脸图片根据方向和顺序不同,分别分次输入双线性联合CNN,利用网络分类结果和实际分类结果的差的均方值作为优化准则函数对网络的参数使用梯度下降法进行微调,在梯度反向传播的时候,在两个CNN模型的卷积-池化层输出层,亦即全链接层的输入层,由于矩阵相乘运算对各自矩阵可导,在计算微调参数导数时,每次迭代过程先固定其中一个CNN模型的参数,对另一个CNN模型进行参数微调,然后反过来固定另一个CNN模型的参数,对第一个CNN模型的参数进行微调,经过多次迭代自动调参过程以后,模型总损失函数收敛,从而获得用于人脸验证的双线性CNN模型。
优选的,所述步骤(4)中,对每一张输入的待验证人脸图片与每一张参考集图片,使用所截得的10张不同的图片两两配对,分别输入新的双线性联合CNN,将双线性联合CNN的全链接层作为特征向量,然后将所有这些特征向量进行联立,利用一个三层的深度自编码网络进行数据降维和二分类,最后得到人脸验证的结果,也就是二分类结果,若深度自编码网络输出“属于同一人”的神经元值比“不属同一人”的神经元值大;则认为输入图片是同一个人,若用作人脸分类任务,可将输入待分类人脸与参考人脸输出属于同一人的神经元值中最高的一个所对应的参考人脸作为分类结果。
本发明公开了一种基于双线性卷积神经网络的人脸验证方法。包括下述步骤:1)使用预先准备的数据集中的大量人脸图像进行卷积神经网络(下简称CNN)的训练;2)使用训练集中的人脸图片,利用CNN的预训练结果,进行双线性CNN的微调;3)输入待验证的两张人脸图片,将两张图片进行多尺度多通道多区域的切分,分别作为双线性CNN的两端,提取双线性CNN输出的联合特征。4)把得到的向量连接起来,经过一个深度自编码网络训练,得到最终的是否同一个人二分类结果,将二分类神经元中“是”的输出最大者作为人脸识别分类结果,得到识别准确率。本发明基于双线性的CNN的方法,并且通过将原始的双线性神经网络的两个重复输入替换成不同的人脸验证输入图像,提出了一种新的人脸验证描述子,它能够有效地获取人脸的局部特征和全局特征,并且保留了CNN的位移与旋转不变性,对光照,遮挡和部分姿态变化具有很好的鲁棒性,而且经过双线性神经网络得到的特征向量比一般神经网络特征向量维数较小,减少了计算量,从而使得后续的深度信念网络训练更加容易,显著提高了人脸验证的准确率。
与现有技术相比,本发明技术方案的有益效果是:
1、本发明提出了一种新的适合人脸验证任务的描述子特征来获取不同人的人脸图像中具有身份识别能力的图像特征。
2、本发明利用的中心区域能够有效地自适应提取对光照,遮挡问题鲁棒的人脸图像特征,且使用双线性联合CNN模型,降低了特征向量的维数。
3、本发明将双线性CNN结合深度自编码网络进行人脸识别,提升了识别效果。
附图说明
图1为本发明的总体流程图。
图2为本发明的双线性联合卷积神经网络的结构和训练流程图
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
附图1给出了本发明的操作过程,如图所示,一种基于双线性卷积神经网络的人脸验证方法,包括以下步骤:
(1)对输入人脸图像,分别以多尺度矩形框截取人脸图像的多个部分的图像,作为CNN的输入,利用预先准备训练集中的大量人脸图像对CNN进行预训练,CNN网络结构模型使用19层VGG网络模型,由5个卷积-池化联合层加上三层全链接层组成,前两层全链接层为普通神经网络方法的连接层,第三层全链接层为softmax分类器层,完成分类任务和导数反向传播,每个卷积-池化层包括若干个卷积层和一个池化层,所有层的参数由人脸图像的softmax分类器分类结果使用反向梯度传播算法进行由后一层到前一层的逐层调整,从而获得初始CNN模型;
(2)将两个具有相同参数的初始CNN模型相结合形成新的双线性联合CNN。其卷积-池化层的初始化参数由上述步骤(1)给出,两个CNN模型各自的全链接层则替换为一个联合的三层全链接层,这个三层全链接层的输入是由两个初始CNN最后一层卷积-池化层输出矩阵相乘获得,最后一层的softmax多类分类器结构更换成用于判断是否为同一人脸的二分类器,然后这三层全链接层的参数均初始化为零均值小方差高斯分布随机值;
(3)将训练集中的人脸图像进行两两配对,然后分别输入新的双线性联合CNN的两端,根据分类训练结果对整个双线性CNN网络的所有参数进行微调。微调时每次先固定双线性CNN模型其中一边结构的参数,然后对另一边CNN模型的参数进行调整,经过30次迭代微调以后,获得用于人脸验证的双线性CNN模型;
(4)将多尺度多通道多区域的方式所截取的参考与检测人脸图像采用三层深度自编码网络进行特征二分类,最终输出人脸验证的识别准确率。进一步地,步骤(1)中的具体过程如下:利用人脸图像的对称性,以不同的尺度分别截取人脸图像的上部,左上部,中部,左部,下部,左下部,还有原图,各人脸图片共分为10个不同的人脸输入截图,以提高CNN模型的鲁棒性。利用常用的CASIA等人脸大数据集获得大量人脸图片进行CNN的训练,训练好的网络作为下一步的预训练基础。
步骤(2)中的具体过程如下:构造一个双线性的联合CNN,此网络初始化时,它的两路卷积层分别采用所述步骤(1)训练的CNN卷积层权重初始化,其全链接层设定为3层,采用方差的零均值高斯分布进行随机初始化。
步骤(3)中,将训练集中的人脸图像进行两两配对,根据训练集中人脸图像是否是同一个人作为分类结果,两张人脸图片根据方向和顺序不同,分别分次输入双线性联合CNN,利用网络分类结果和实际分类结果的差的均方值作为优化准则函数对网络的参数使用梯度下降法进行微调,在梯度反向传播的时候,在两个CNN模型的卷积-池化层输出层,亦即全链接层的输入层,由于矩阵相乘运算对各自矩阵可导,在计算微调参数导数时,每次迭代过程先固定其中一个CNN模型的参数,对另一个CNN模型进行参数微调,然后反过来固定另一个CNN模型的参数,对第一个CNN模型的参数进行微调,整个网络模型具体结构见图2。经过约30次迭代自动调参过程以后,模型总损失函数收敛,从而获得用于人脸验证的双线性CNN模型。
所述步骤(4)中,对每一张输入的待验证人脸图片与每一张参考集图片,使用所截得的10张不同的图片两两配对,分别输入新的双线性联合CNN,将双线性联合CNN的全链接层作为特征向量,然后将所有这些特征向量进行联立,利用一个三层的深度自编码网络进行数据降维和二分类,最后得到人脸验证的结果,也就是二分类结果,若深度自编码网络输出“属于同一人”的神经元值比“不属同一人”的神经元值大。则认为输入图片是同一个人,若用作人脸分类任务,可将输入待分类人脸与参考人脸输出属于同一人的神经元值中最高的一个所对应的参考人脸作为分类结果。步骤(3)中的具体过程如下:将训练集中的人脸图像进行两两配对,根据训练集中人脸图像是否是同一个人作为分类结果,两张人脸图片根据方向和顺序不同,分别分次输入双线性联合CNN,利用网络分类结果和实际分类结果的差的均方值作为优化准则函数对网络的参数使用梯度下降法进行微调,获得用于人脸验证的双线性CNN模型。
步骤(4)中的具体过程如下:对每一张输入的待验证人脸图片与每一张参考集图片,使用所述步骤(1)所截得的10张不同的图片两两配对,分别输入双线性联合CNN以后,将双线性联合CNN的全链接层作为特征向量,然后将所有这些特征向量进行联立,利用一个三层的深度自编码网络进行数据降维和二分类,最后得到人脸验证的结果,也就是二分类结果,若深度自编码网络输出“属于同一人”的神经元值比“不属同一人”的神经元值大。则认为输入图片是同一个人,若用作人脸分类任务,可将输入待分类人脸与参考人脸输出属于同一人的神经元值中最高的一个所对应的参考人脸作为分类结果。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。