掌桥专利:专业的专利平台
掌桥专利
首页

一种三维人脸识别方法

文献发布时间:2023-06-19 09:30:39


一种三维人脸识别方法

技术领域

本发明涉及人脸识别技术领域,尤其涉及一种三维人脸识别方法。

背景技术

随着社会的不断进步,对信息技术数字化和生物个人识别技术的需求越来越迫切。其中个人身份识别技术已经越来越多的影响到我们的日常生活,尤其在安防、零售、银行、海关、安检、移动支付等领域。传统的身份识别技术有智能卡、密保卡、动态密码生成器、数字签名等,但这些技术有诸多缺点,比如不易携带、易被破解、易丢等,其安全性和便利性方面的弊端已经越来越明显,新的个人身份识别技术有广阔的空间。

尤其是最近几年来,随着监控视频技术的发展和机器学习技术的兴起,人们对自己面部识别的认知度越来越高,到处可见的人脸支付技术和指纹支付技术,使我们的个人生物识别和财产安全联系在一起。与此同时,随着经济的快速发展,大量的务工人口涌入城市,使得城市内的人口大量增加,其中城市的治安问题也越来越棘手。为了确保安全,防止城市内发生恶性事件,智能安防和个人身份识别已经成为研究领域的热点。目前,生物个人识别技术已经开始逐步取代传统的个人识别技术。生物个人识别技术是一种通过提取生物的生理特征,利用计算机的相关算法技术进行计算,从而识别个人身份的技术,这种技术具有安全性、便利性、不易伪造和易获取等特点,极大程度的减少了被破解或被伪造的几率,和传统的个人识别技术相比,每个人的生物识别特征是惟一的,极难被复制和伪造。

当前主要的生物识别技术主要分为两个方向,一是在相当长的时间内都不会发生变化的生物特征,如指纹识别、DNA验证、掌纹识别、声纹识别、手部血管识别、人脸识别、三维人脸识别等;二是人们在后期逐渐形成的习惯特性,如写字的笔迹、走路的形态、个人的行为轨迹等等。其中DNA验证技术在准确度上很高,但验证识别的成本很高,专业验证过程的专业度也很高,不易普及。指纹识别和掌纹识别对一些特殊人群,如残疾人、指纹磨损严重的工人都存在局限性。人脸识别因为具有普适性更高,识别过程和采集过程更简单、可靠性高、无需接触等特点,成为当前生物识别领域的热点。

虽然人脸识别对比其他生物识别技术有诸多优势,但其也有诸多缺点,如光照强度和光照阴影对人脸识别有影响;不能分辨物体的景深信息,容易被照片或屏幕上的人脸欺骗;二维识别对活体检验的识别准确度不高;黑暗条件下无法进行人脸识别等。由于人脸识别在安全性和准确性方面的不足,近年来,基于深度信息的三维人脸识别技术受到越来越多的重视,三维人脸识别对比二维人脸识别更具有优势,三维人脸识别技术可以从基本原理上完全避免阳光照射阴影或光照强度的影响;三维人脸识别技术可以分辨景深信息,从而完全避免被照片或者屏幕上的人脸所欺骗;对于人脸形状的模型,三维人脸识别技术可以结合红外线技术来进行活体检验,这样可以极大程度避免被虚假的模型欺骗;三维人脸识别技术也可以在黑暗的情况下进行识别,应用的场景比人脸识别更丰富。因此,研究三维人脸识别技术势在必行。

在三维人脸识别领域,由于缺乏海量的三维人脸数据,大部分算法还是通过手动提取几何特征的方式来进行识别,这类算法的泛化能力不佳,并且识别率不会随着数据的增多而提升。

发明内容

针对上述现有技术的不足,本发明提供一种三维人脸识别方法。

为解决上述技术问题,本发明所采取的技术方案是:一种三维人脸识别方法,包括:

步骤1:三维人脸数据进行预处理,生成深度图形式的三维人脸数据集,过程如下:

步骤1.1:对“.bnt”格式的文件进行读写,读出五个变量数据,分别为data,zmin,nrows,ncols,imfile;

其中,data是一个行数为h,列数为5的数据,数据的前三列分别代表每个三维识别点的{x,y,z}坐标信息,第四列和第五列分别为x和y坐标的归一化数据;zmin是一个数值,如果{x,y,z}坐标中某个值与zmin数值相等,则认为这个三维识别点位并没有检测到物体,即没有识别到返回数据;nrows和ncols分别代表data数据的列数和行数,对data数据进行还原时会用到这两个数据;最后的imfile变量代表此识别数据的名字,可以用这个变量分辨识别数据的身份信息;

步骤1.2:把步骤1.1中读取出的三维数据显示成二维的深度图形式,也就是把点云正交投影在二维平面上。

所述步骤1.2还包括:

取所有z坐标的最小值,对所有非zmin的z坐标加上z坐标最小值的绝对值,解决z坐标存在负值的问题,使得所有的z坐标都大于零,避免显示深度图时这些坐标被当成数值0处理,使得显示出的深度图的人脸不全,人脸的周边位置一些数据点遗失;

对经过上述处理后的z坐标进行0到1的归一化,最后对z坐标乘以255,解决因z坐标的数值级别跨度大导致的生成的深度图颜色偏暗的问题,使处理后的深度图显示的轮廓更加清晰。

步骤2:采用旋转、局部区域裁切、障碍物覆盖和加噪声的方法,对三维人脸数据进行增强,扩大三维人脸数据样本;

所述旋转方法为对标签为同一个人的三维数据同时向右旋转90度和向左旋转90度,生成两个完全不同的三维数据;

所述局部区域裁切方法为对脸部边缘进行不同程度的裁剪,整体上保留了五官的数据信息,以此来扩充样本;

所述障碍物覆盖方法为通过随机给人脸增加障碍物的方式增加样本库,具体为:先随机选定某一个点,然后选取一个像素坐标在这个点50个像素点之内的另一个点,以这两个点确定一个矩形,把这个矩形中的数据都设置为0,得到障碍物覆盖的样本。

所述加噪声方法为使用高斯噪声对三维人脸数据进行数据增强,提高模型的泛化性。

步骤3:采用已知多姿态人脸数据库对挤压激励模块改造的残差神经网络进行二维人脸识别,来训练神经网络模型,然后将二维人脸识别网络的中底层特征保留,仅清除最后一个全连接层的权值,用三维人脸数据再次在这个神经网络上进行识别训练,过程如下:

步骤3.1:二维人脸检测,将检测出来的人脸图片调整为同一尺寸;

步骤3.2:采用挤压激励模块改造后的残差网络来构建二维人脸识别神经网络,设计了一个深度为50层的挤压激励模块改造的残差神经网络,神经网络使用softmax层进行人脸识别的判定,softmax层的维度由数据的标签数决定;

步骤3.3:将步骤3.1检测出来的人脸图片输入步骤3.2构建的残差网络中进行训练;

步骤3.4:将训练后获得的二维人脸检测模型的全连接层和softmax层的权重值去除,然后将其余权值作为三维人脸网络迁移学习的中低层网络初始权重。

进一步的,所述挤压激励模块改造后的残差网络在每个神经单元多了两个全连接层,也就是挤压激励模块中的W

步骤4:使用迁移学习的方式把二维人脸的中底层特征迁移至三维人脸中,实现三维人脸识别,过程如下:

步骤4.1:迁移卷积神经网络设计:为了使基于挤压激励模块的深度残差网络能适应三维人脸的特征并应用在三维人脸识别上,去除了深度残差网络最后一个全连接层和softmax层,用一个新的全连接层和softmax层进行替换,即使用迁移学习的方式把二维人脸的中底层特征迁移至三维人脸中,新的全连接层的维度和三维人脸训练数据中人的个数相同;

步骤4.2:利用步骤2扩大后的样本对挤压激励模块改造的残差网络进行训练调整,实现了对最后一个全连接层的调整;

步骤4.3:三维人脸匹配,过程如下:

步骤4.3.1:将步骤4.2训练后的卷积神经网络用于提取三维人脸的特征,以与分类器层相邻的网络层为三维人脸的特征向量;

步骤4.3.2:对特征向量中每个元素取平方根进行归一化,将归一化处理后的特征数据重新建立三维人脸的图库,每个人三维人脸图库中的数据有若干个;

步骤4.3.3:当有一个三维人脸要进行识别时,三维人脸的数据先处理成深度图的形式,数据维度转换为224×224×3,送入训练好的三维人脸识别网络进行特征向量提取,对特征向量进行归一化,然后和三维人脸图库中的向量进行一一比对,计算它们之间的余弦相似度;

步骤4.3.4:被识别人的身份由余弦相似度最小的特征向量决定,余弦相似度的计算方法如下所示:

式中,a和b为两个向量,a向量和b向量之间的夹角为θ。

采用上述技术方案所产生的有益效果在于:

(1)本发明采用迁移学习,能很好地解决深度学习中三维人脸数据过少的问题,能够很好地支持基于深度学习三维人脸识别,提高识别的准确率。

(2)本发明采用挤压激励模块改造后的残差网络来构建人脸识别神经网络,设计了一个深度为50层的挤压激励模块改造的残差神经网络,可自动获取、判别每个特征通道的重要程度,依照重要程度去提升有用的特征并抑制对当前任务用处不大的特征,还能缓解随着网络深度的增加带来的梯度消失和梯度爆炸问题。

(3)本发明所设计的基于迁移学习和挤压激励残差神经网络的人脸识别方法,采用二维人脸数据训练所构建的挤压激励模块改造的残差神经网络,将训练得到的参数迁移至同结构的三维人脸识别网络,去除最后一个全连接层的权值,再使用三维人脸数据对网络继续进行训练,具有较高的三维人脸识别率。

附图说明

图1为本发明实施例中三维人脸识别方法的流程图;

图2为本发明实施例中三维人脸识别网络训练阶段和测试阶段示意图;

图3为本发明实施例中算法迭代次数与准确率的变化关系图;

图4为本发明实施例中错误分类的三维人脸图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

如图1所示,本实施例的方法如下所述。

步骤1:三维人脸数据进行预处理,生成深度图形式的三维人脸数据集,过程如下:

步骤1.1:对“.bnt”格式的文件进行读写,读出五个变量数据,分别为data,zmin,nrows,ncols,imfile;

其中,data是一个行数为h,列数为5的数据,数据的前三列分别代表每个三维识别点的{x,y,z}坐标信息,第四列和第五列分别为x和y坐标的归一化数据;zmin是一个数值,如果{x,y,z}坐标中某个值与zmin数值相等,则认为这个三维识别点位并没有检测到物体,即没有识别到返回数据;nrows和ncols分别代表data数据的列数和行数,对data数据进行还原时会用到这两个数据;最后的imfile变量代表此识别数据的名字,可以用这个变量分辨识别数据的身份信息;

本实施例中使用MATLAB软件对Bosphorus三维人脸数据库数据进行预处理,过程中zmin取非常小的值,约为0.000001。由于获取点云数据的传感器参数固定,因此data的行数受固定参数的影响为43338,映射为二维的深度图也是固定分辨率。

步骤1.2:把步骤1.1中读取出的三维数据显示成二维的深度图形式,也就是把点云正交投影在二维平面上。

深度图的生成需要所有识别点的z坐标以及深度图的横纵两个方向的像素点数,本实施例中从Bosphorus三维人脸数据库中读取出的z坐标是有负值的,每两个识别点的相对坐标固定,但每个识别点的绝对坐标不确定。所以采取下述方法进行预处理:

取所有z坐标的最小值,对所有非zmin的z坐标加上z坐标最小值的绝对值,解决z坐标存在负值的问题,使得所有的z坐标都大于零,避免显示深度图时这些坐标被当成数值0处理,使得显示出的深度图的人脸不全,人脸的周边位置一些数据点遗失;

对经过上述处理后的z坐标进行0到1的归一化,最后对z坐标乘以255,解决因z坐标的数值级别跨度大导致的生成的深度图颜色偏暗的问题,使处理后的深度图显示的轮廓更加清晰。

步骤2:采用旋转、局部区域裁切、障碍物覆盖和加噪声的方法,对三维人脸数据进行增强,扩大三维人脸数据样本;

所述旋转方法为对标签为同一个人的三维数据同时向右旋转90度和向左旋转90度,生成两个完全不同的三维数据;由于计算机是以像素的方式来读取图像的,所以对神经网络来说这是两个完全不同的三维数据。

所述局部区域裁切方法为对脸部边缘进行不同程度的裁剪,整体上保留了五官的数据信息,以此来扩充样本;本实施例中,边缘处可能会裁剪掉部分五官信息;

所述障碍物覆盖方法为通过随机给人脸增加障碍物的方式增加样本库,具体为:先随机选定某一个点,然后选取一个像素坐标在这个点50个像素点之内的另一个点,以这两个点确定一个矩形,把这个矩形中的数据都设置为0,得到障碍物覆盖的样本。

所述加噪声方法为使用高斯噪声对三维人脸数据进行数据增强,提高模型的泛化性。噪声通常指图像中不可预知的干扰项,噪声的存在会影响识别的准确率,将本来清晰的图像变得有些模糊不清。

本实施例中采用高斯噪声来模拟实际场景中噪声的产生情况,使用用MATLAB软件,分别生成均值为0,方差为0.01的高斯噪声;均值为0,方差为0.02的高斯噪声;均值为0,方差为0.03的高斯噪声的图像。

步骤3:采用已知多姿态人脸数据库对挤压激励模块改造的残差神经网络进行二维人脸识别,来训练神经网络模型,然后将二维人脸识别网络的中底层特征保留,仅清除最后一个全连接层的权值,用三维人脸数据再次在这个神经网络上进行识别训练,过程如下:

步骤3.1:二维人脸检测,将检测出来的人脸图片调整为同一尺寸;

为了训练一个能够识别多姿态人脸的识别算法,本实施例采用VGGFace2数据集,这个数据集中有许多同一个人物多个姿态、场景和年龄的数据,具有较好的训练识别算法效果;由于VGGFace2中图片并不完全是人脸,图片不能直接放入构建好的神经网络中进行训练,需要进一步把人脸区域识别出来,本发明采用MTCNN(Multi-task convolutionalneural network-多任务卷积神经网络)算法进行人脸检测,并且把图片调整为224×224×3的尺寸送入构建的神经网络进行训练;

步骤3.2:采用挤压激励模块改造后的残差网络来构建二维人脸识别神经网络,设计了一个深度为50层的挤压激励模块改造的残差神经网络,神经网络使用softmax层进行人脸识别的判定,softmax层的维度由数据的标签数决定;

本实施例中,算法开始输入尺寸为224×224×3的图像,第一个卷积层的卷积核尺寸为7×7×3,通过填充0的方式补充卷积核过大导致的维度损失,卷积的步长为2,因此起到一定的下采样的作用,然后再对参数进行批量归一化和激活函数的操作,最后输出112×112×64维度的数据。第二层是一个最大池化层,池化操作的尺寸是3×3,池化的步长是2,即每次取矩阵中最大的值,然后向右或向下以固定为2的步长滑动,这层输出56×56维度的数据,对数据进一步下采样。构造的神经网络结构如表1所示;

表1人脸识别网络结构表

表1中左侧是神经网络单元的输出尺寸,右侧依次是神经网络单元的类型、卷积核的尺寸、通道数。从第三行开始网络进入一个循环结构,第二个卷积层到第四个卷积层为一组,其中第二层的卷积核为1×1,输出的通道数为64,第三层的卷积核为3×3,输出的通道数为64,第四层的卷积核为1×1,输出的通道数为256,循环三组;第十一个卷积层到第十三个卷积层为一组,第十一层的卷积核为1×1,输出的通道数为128,第十二层的卷积核为3×3,输出的通道数为128,第十三层的卷积核为1×1,输出的通道数为512,循环四组;第二十三个卷积层到第二十五个卷积层为一组,第二十三层的卷积核为1×1,输出的通道数为256,第二十四层的卷积核为3×3,输出的通道数为256,第二十五层的卷积核为1×1,输出的通道数为1024,循环六组;第四十一个卷积层到第四十三个卷积层为一组,第四十一层的卷积核为1×1,输出的通道数为512,第四十二层的卷积核为3×3,输出的通道数为512,第四十三层的卷积核为1×1,输出的通道数为2048,循环三组。最后一行是一个取平均值的池化层,输出一个2048维度的数据,然后是softmax层。

softmax层的主要作用是在多分类问题中,将线性预测值转为类别的概率,因为线性预测的值可能为负值,负值不能作为概率来看,所以softmax使用指数函数来表达概率值,softmax函数σ(z)=(σ

其中,z

进一步的,所述挤压激励模块改造后的残差网络在每个神经单元多了两个全连接层,也就是挤压激励模块中的W

本实施例中,在第二个卷积层到第十个卷积层中,挤压激励模块的两个全连接层的维度分别为16和256。在第十一个卷积层到第二十二个卷积层中,挤压激励模块的两个全连接层的维度分别为32和512。在第二十三个卷积层到第四十个卷积层中,挤压激励模块的两个全连接层的维度分别为64和1024。在第四十一个卷积层到第四十九个卷积层中,挤压激励模块的两个全连接层的维度分别为128和2048。整个过程,使用VGGFace2数据集来训练挤压激励模块改造的残差卷积神经网络。

步骤3.3:将步骤3.1检测出来的人脸图片输入步骤3.2构建的残差网络中进行训练;

步骤3.4:将训练后获得的二维人脸检测模型的全连接层和softmax层的权重值去除,然后将其余权值作为三维人脸网络迁移学习的中低层网络初始权重。

本实施例中,三维人脸识别网络训练阶段和测试阶段示意图如图2所示。

步骤4:使用迁移学习的方式把二维人脸的中底层特征迁移至三维人脸中,实现三维人脸识别,过程如下:

步骤4.1:迁移卷积神经网络设计:为了使基于挤压激励模块的深度残差网络能适应三维人脸的特征并应用在三维人脸识别上,去除了深度残差网络最后一个全连接层和softmax层,用一个新的全连接层和softmax层进行替换,即使用迁移学习的方式把二维人脸的中底层特征迁移至三维人脸中,新的全连接层的维度和三维人脸训练数据中人的个数相同;

步骤1和步骤2对三维人脸数据进行了预处理和数据增强,将三维人脸的点云数据处理成了深度图的形式,深度图的维度和二维人脸识别网络的输入是相同的,维度均为224×224×3,并且大量增加了深度图的个数,因此利用这些深度图数据对挤压激励模块改造的残差网络进行训练调整,主要是对最后一个全连接层进行调整;

步骤4.2:利用步骤2扩大后的样本对挤压激励模块改造的残差网络进行训练调整,实现了对最后一个全连接层的调整;

步骤4.3:三维人脸匹配,过程如下:

步骤4.3.1:将步骤4.2训练后的卷积神经网络用于提取三维人脸的特征,以与分类器层相邻的网络层为三维人脸的特征向量;

步骤4.3.2:对特征向量中每个元素取平方根进行归一化,将归一化处理后的特征数据重新建立三维人脸的图库,每个人三维人脸图库中的数据有若干个;

步骤4.3.3:当有一个三维人脸要进行识别时,三维人脸的数据先处理成深度图的形式,数据维度转换为224×224×3,送入训练好的三维人脸识别网络进行特征向量提取,对特征向量进行归一化,然后和三维人脸图库中的向量进行一一比对,计算它们之间的余弦相似度;

步骤4.3.4:被识别人的身份由余弦相似度最小的特征向量决定,余弦相似度的计算方法如下所示:

式中,a和b为两个向量,a向量和b向量之间的夹角为θ。

本实施例实验环境为Ubuntu 16.04LTS和Windows 10操作系统,其中采用Windows10操作系统的电脑有8G内存,软件开发环境使用Matlab 2016b,主要用于处理三维人脸数据以及对三维人脸数据进行数据增强。用于训练神经网络的服务器采用Ubuntu 16.04LTS操作系统,深度学习框架采用Keras。

实验数据集有VGGFace2多姿态二维人脸数据集和Bosphorus三维人脸数据集,其中VGGFace2数据集用来预训练挤压激励残差神经网络,通过VGGFace2数据集学习人脸的中低维度的特征,然后对网络中的参数进行迁移,去除该网络中最后一个全连接层及其权值,将剩余的参数迁移到同结构的三维人脸识别网络中。使用经过数据增强的三维人脸深度图对三维人脸识别网络进行再训练,训练完成后使用与分类层相邻的网络层作为三维人脸的特征向量,并通过对特征向量中每个元素取平方根进行归一化。最后通过计算两个特征向量的余弦相似度来判断两张人脸是否为同一个人。

Bosphorus三维人脸数据集共有105个不同的人物,每个人物有几十张不同的三维人脸数据,本实施例随机采用其中84个人的3739张三维人脸作为训练集,并对训练集中的数据进行数据增强,经过数据增强的三维人脸共有41129张,也就是每张三维人脸通过旋转、局部区域裁剪、障碍物覆盖和高斯噪声分别增强了10张,剩余21个人的927张人脸作为测试集进行实验。本实施例新构建的三维人脸网络最后一个全连接层的维度为84,因为训练集共有84人。新构建的三维人脸识别网络最后一个全连接层的权值采用高斯分布进行随机初始化,平均值为0,标准差设为0.01。进行迁移学习后,最后一个全连接层的参数需要比较大的变化,因为这些参数是刚初始化的。实施例中使用16个样本为一组的小批量梯度下降法对网络进行训练,对于最后一个全连接层的学习率设置为0.01,其他网络层设置为0.001。

首先构建了深度为50的挤压激励残差神经网络,并使用VGGFace2人脸数据库对网络进行训练,训练完成后去除最后一个全连接层,对剩余参数进行迁移,使用数据增强过的三维人脸的深度图对网络再次进行训练。在对三维人脸识别网络再训练的过程中,开始阶段识别准确率迅速提升至0.4左右,然后随着迭代的进行准确率逐步提升至0.9左右,最终稳定在0.96至0.98区间。对三维人脸识别网络再训练过程中迭代次数和准确率的关系如图3所示。

在Bosphorus数据集上对训练完成的三维人脸识别网络进行了多组测试实验。因为Bosphorus三维人脸数据集是多表情的数据集,对中性表情和其他表情进行人脸识别的结果有差异,所以设计了三组实验。第一组实验是以中性表情人脸(Neutral)为注册集识别其他中性表情人脸(Neutral);第二组实验是以中性表情人脸(Neutral)为注册集识别非中性表情人脸(Non-neutral);第三组实验是以中性表情人脸(Neutral)为注册集识别其他所有人脸(All)。实验的结果如表2所示。

表2三维人脸识别实验结果

从表2中可以看出在以中性表情人脸为注册集识别其他中性表情人脸的实验中识别率为100%,数据集共有21个中性人脸为注册集,35个中性人脸属于这21个人物中的某一个人,可以看出本发明的方法在识别中性表情人脸时性能突出,但考虑到样本数量比较小,当样本数量更大时对中性人脸识别率可能会下降。在中性表情人脸为注册集识别其他非中性人脸的实验中,共有871个样本数据,也是分别属于21个人物中的某一个,表中可以看出共有14个非中性三维人脸被错误识别,识别率为98.39%。第三组实验相当于把第一组实验和第二组实验结合起来,测试的数据也和前两组实验的和相同,最终的测试率为98.45%。对被错误识别的三维人脸进行分析,发现被错误分类的人脸中大部分都是人物的侧面三维数据,这说明本方法对人物侧面的三维人脸数据识别性能并不强,而对正面的三维人脸识别成功率很高。图4是被错误分类的三维人脸之一。

本发明的方法在Bosphorus三维人脸公开数据集上进行了训练,并将模型在21个人的927张人脸上进行了测试,获得了98.45%的准确率。为了比较本发明的方法与当前主流的网络模型的性能,本实施例将方法中的挤压激励残差神经网络换成了VGG-16卷积神经网络,其他部分都和本发明方法相同。采用VGG-16网络模型所获得的识别率为96.24%。相比传统卷积神经网络,挤压激励残差神经网络的识别率大约提升了2%,实验证明了挤压激励残差神经网络对比传统卷积神经网络模型的优势。由于目前大多数的3D人脸数据集都没有公开,因此本实施例与在具有近似数据量的其他数据集下的识别方法进行了比较。Li etal.(2014),Berretti et al.(2013)和Emambakhsh et al.(2016)在BU-3DFE数据集上的识别率分别为95.4%,95.7%和95.35%。比较结果表明,在具有相似数据量的数据集下,本发明方法的识别率有明显的提高。同时随着以后三维人脸数据库的增多,本发明基于深度学习的识别方法的性能预计会进一步提高,这也是本发明的方法最大的优势所在。

技术分类

06120112192955