首页 / 专利库 / 工艺品 / 拍速 / 基于轻量级智能终端的人脸识别系统及注册、识别方法

基于轻量级智能终端的人脸识别系统及注册、识别方法

阅读:817发布:2023-02-20

专利汇可以提供基于轻量级智能终端的人脸识别系统及注册、识别方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于轻量级智能终端的 人脸识别 系统及注册、识别方法,涉及 生物 特征识别技术领域,该系统包括拍照模 块 、 人脸检测 模块、预处理模块、特征提取模块、数据存储模块、个人信息输入模块、识别模块;所述拍照模块、人脸检测模块、预处理模块、特征提取模块依次相连,所述数据存储模块分别与预处理模块、特征提取模块、个人信息输入模块、识别模块相连,所述特征提取模块还分别与个人信息输入模块、识别模块相连。本发明相对于原始SIFT特征匹配 算法 在识别率和运算性能都有提升,且能够在Android系统中实现人脸识别;提高了系统的处理速度;提高了系统的 图像识别 率,同时减少了运算时间。,下面是基于轻量级智能终端的人脸识别系统及注册、识别方法专利的具体信息内容。

1.一种基于轻量级智能终端的人脸识别系统,其特征在于:包括拍照模人脸检测模块、预处理模块、特征提取模块、数据存储模块、个人信息输入模块、识别模块;
所述拍照模块、人脸检测模块、预处理模块、特征提取模块依次相连,所述数据存储模块分别与预处理模块、特征提取模块、个人信息输入模块、识别模块相连,所述特征提取模块还分别与个人信息输入模块、识别模块相连;其中,
拍照模块,用于采集用户的正面照图像;
人脸检测模块,用于检测采集到的图像,并进行人眼定位
预处理模块,用于截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息保存至数据存储模块;
特征提取模块,用于提取图像中的SIFT特征,并存储至数据存储模块;
个人信息输入模块,用于供用户输入个人信息,并存储至数据存储模块;
数据存储模块,用于存储数据及采集到的图像信息;
识别模块,用于对测试样本与训练样本进行匹配运算。
2.如权利要求1所述的基于轻量级智能终端的人脸识别系统,其特征在于:所述数据存储模块和识别模块设置于外设的服务器中,该云端服务器负责存储数据及匹配运算,并将处理后的数据通过网络加密回传至智能终端。
3.如权利要求1所述的基于轻量级智能终端的人脸识别系统,其特征在于:所述数据存储模块包括数据库和本地文件系统。
4.应用于权利要求1所述系统的基于轻量级智能终端的人脸注册方法,其特征在于,包括以下步骤:
步骤11.用户通过拍照模块采集正面照图像;
步骤12.通过人脸检测模块检测采集到的图像,并进行人眼定位;
步骤13.通过预处理模块截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息作为训练样本数据保存至数据存储模块;
步骤14.通过特征提取模块提取图像中的SIFT特征,并将其作为训练样本数据保存至数据存储模块;
步骤15.用户通过个人信息输入模块将个人信息作为训练样本数据保存至数据存储模块。
5.如权利要求4所述的基于轻量级智能终端的人脸注册方法,其特征在于,步骤12中,人脸检测模块通过调用系统自带的Android人脸检测API检测采集到的图像。
6.如权利要求4所述的基于轻量级智能终端的人脸注册方法,其特征在于,步骤13中,通过预处理模块截取图像中的人脸区域的具体流程为:
步骤131.测量图像中双眼的中点坐标及双眼间距,设双眼的中点坐标为(x,y),双眼间距为dd,其中x表示横坐标,y表示纵坐标;
步骤132.将图像中坐标分别为(x-dd,y+dd/2)、(x+dd,y+dd/2)、(x-dd,y-3dd/2)、(x+dd,y-3dd/2)的四个点作为面部截取矩形的顶点,截取边长为2dd的正方形;
步骤133.将所述正方形划分为七块区域,其中,左眼位于第一区域内,右眼位于第二区域内,左脸颊位于第三区域内,鼻子位于第四区域内,右脸颊位于第五区域内,左嘴位于第六区域内,右嘴角位于第七区域内。
7.如权利要求6所述的基于轻量级智能终端的人脸注册方法,其特征在于,步骤133中将所述正方形划分为七块区域之后还包括以下步骤:为所述正方形的每个区域给定相应的一个权值。
8.如权利要求6所述的基于轻量级智能终端的人脸注册方法,其特征在于,步骤133中七块区域的形状和顶点坐标分别为:
第一区域是边长为dd的正方形,其四个顶点坐标分别为(x-dd,y+dd/2)、(x,y+dd/2)、(x-dd,y-dd/2)、(x,y-dd/2);
第二区域是边长为dd的正方形,其四个顶点坐标分别为(x,y+dd/2)、(x+dd,y+dd/2)、(x,y-dd/2)、(x+dd,y-dd/2);
第三区域是边长为dd/2的正方形,其四个顶点坐标分别为(x-dd,y-dd/2)、(x-dd/2,y-dd/2)、(x-dd,y-dd)、(x-dd/2,y-dd);
第四区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x-dd/2,y-dd/2)、(x+dd/2,y-dd/2)、(x-dd/2,y-dd)、(x+dd/2,y-dd);
第五区域是边长为dd/2的正方形,其四个顶点坐标分别为(x+dd/2,y-dd/2)、(x+dd,y-dd/2)、(x+dd/2,y-dd)、(x+dd,y-dd);
第六区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x-dd,y-dd)、(x,y-dd)、(x-dd,y-3dd/2)、(x,y-3dd/2);
第七区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x,y-dd)、(x+dd,y-dd)、(x,y-3dd/2)、(x+dd,y-3dd/2)。
9.应用于权利要求1所述系统的基于轻量级智能终端的人脸识别方法,其特征在于,包括以下步骤:
步骤21.用户通过拍照模块采集正面照图像;
步骤22.通过人脸检测模块检测采集到的图像,并进行人眼定位;
步骤23.通过预处理模块截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息作为测试样本数据保存至数据存储模块;
步骤24.通过特征提取模块提取图像中的SIFT特征,并将其作为测试样本数据保存至数据存储模块;
步骤25.通过识别模块对测试样本与训练样本进行匹配运算。
10.如权利要求9所述的基于轻量级智能终端的人脸识别方法,其特征在于,步骤25的具体流程为:
步骤251.提取测试样本中的SIFT特征,并与数据存储模块中训练样本的SIFT特征进行匹配,计算相似值;
步骤252.判断相似值是否小于限值,若是,则跳转至步骤253;若否,则跳转至步骤
254;
步骤253.判定用户为非法用户,结束流程;
步骤254.在数据存储模块中找到相似值最大的训练样本,并判定用户为该训练样本对应的注册用户,跳转至步骤255;
步骤255.输出注册用户信息,并动态的替换掉注册用户中识别率较低的样本。

说明书全文

基于轻量级智能终端的人脸识别系统及注册、识别方法

技术领域

[0001] 本发明涉及生物特征识别技术领域,具体来讲是一种基于轻量级智能终端的人脸识别系统及注册、识别方法。

背景技术

[0002] 2007年,苹果公司发布的具有划时代意义的iPhone,拉开的智能手机的时代,Google公司也在之后的一年里发布了Android手机,进一步的推动智能终端的普及,随后的几年里,智能移动终端设备井喷式的增长。随着移动互联网的泛在,移动支付出现在人们的日常生活中,交易安全也随之受到重视,而交易的核心是身份鉴别,传统的方式登录网、支付宝等,需要用户口令、手机短信或者密保卡等安全措施,如果这些东西被恶意用户获取,同样也能“鉴别身份”,这是不真实也不可靠的。因此,急需一种应用于移动智能终端上安全、可靠、快捷、便利的轻量级身份识别方案。
[0003] 由于传统身份鉴别的缺点,基于生物特征的身份识别手段应运而生,例如视网膜、虹膜、声纹、掌纹和指纹等。这些方法不仅用户体验友好,而且可以在不需要身份标识的同时确保我们的资产安全和个人隐私安全,但问题是需要参与者的配合且都是接触式的,在许多环境和场合下这些生物特征不易获得。随着图像分析计算机视觉等多项领域的发展,人脸识别被广泛关注,不同于上文中的生物特征,人脸识别只是基于用户的脸部照片或视频流,不需要用户的主动配合,拥有更方便、更直接、更友好、非接触、更真实可靠等优点。
[0004] 将人脸识别和移动智能终端结合时趋势所在,但国内对于此的研究凤毛麟,而且平台的大多都是较老,如BREW、Symbian等系统。黎、吴松、曾凡涛在《人脸识别在智能手机中的实现》(《计算机工程》,2006,07:272-274.)中采用Intel的PXA270搭建ARM嵌入式系统,使用肤色模型来检测人脸,但是没有提到人脸识别的算法。而李伟在《人脸识别算法在智能手机上的实现》(《计算机技术与发展》,2008,01:161-163.)提出一种结合神经网络和PCA的算法,在平台上测试有较高的识别率,但由于加入神经网络的训练,需要很多样本且计算代价大,同时上述文献中都只是实验平台,并没有真正的移植到手机或其他成熟的智能平台上。
[0005] Windows Phone系统和Windows系统的程序有着良好的移植性,也有些基于Windows Phone的研究,胡小平、陈锻生、陈伟斌在《智能手机人脸检测系统的设计与实现》(《计算机工程与设计》,2010,03:672-675.)中使用多色彩空间的肤色模型结合人脸几何关系进一步验证人脸,不仅检测速度快,而且极大的降低漏检概率,不足是仅实现了检测功能。陈一宁、陈晓光在《基于手机和人脸识别的身份识别系统》(《计算机应用与软件》,2011,03:77-79+105.)中基于Symbian客户机,使用LBP算法(Ahonen T,Hadid A, M.Face recognition with local binary patterns[M]//Computervision-eccv 2004.Springer Berlin Heidelberg,2004:469-481.)来做人脸识别,并提出一套完整的解决方案,不足时采用平台较老。Google公司于2011年底推出Android4.0系统,此版系统带有人脸识别的新特性,但识别度不高且仅支持1对1的身份鉴别。可以看到,智能终端由于自身计算和存储局限的特点,人脸识别在其上的研究仍需要走很长一段路。
[0006] 中国现已迈入4G时代,智能移动手机已普及,随之而来的移动信息安全日益需求强烈。智能终端由于自身计算和存储的局限,并且因为用户操作习惯,通常智能终端的训练集都是小样本集,人脸识别算法直接应用效果并不佳,因此亟需对传统的人脸识别方法进行改进。

发明内容

[0007] 针对现有技术中存在的缺陷,本发明的目的在于提供一种基于轻量级智能终端的人脸识别系统及注册、识别方法,本发明相对于原始SIFT特征匹配算法在识别率和运算性能都有提升,且能够在Android系统中实现人脸识别;提高了系统的处理速度;提高了系统的图像识别率,同时减少了运算时间。
[0008] 为达到以上目的,本发明采取的技术方案是:一种基于轻量级智能终端的人脸识别系统,包括拍照模、人脸检测模块、预处理模块、特征提取模块、数据存储模块、个人信息输入模块、识别模块;所述拍照模块、人脸检测模块、预处理模块、特征提取模块依次相连,所述数据存储模块分别与预处理模块、特征提取模块、个人信息输入模块、识别模块相连,所述特征提取模块还分别与个人信息输入模块、识别模块相连;其中,拍照模块,用于采集用户的正面照图像;人脸检测模块,用于检测采集到的图像,并进行人眼定位;预处理模块,用于截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息保存至数据存储模块;特征提取模块,用于提取图像中的SIFT特征,并存储至数据存储模块;个人信息输入模块,用于供用户输入个人信息,并存储至数据存储模块;数据存储模块,用于存储数据及采集到的图像信息;识别模块,用于对测试样本与训练样本进行匹配运算。
[0009] 在上述技术方案的基础上,所述数据存储模块和识别模块设置于外设的服务器中,该云端服务器负责存储数据及匹配运算,并将处理后的数据通过网络加密回传至智能终端。
[0010] 在上述技术方案的基础上,所述数据存储模块包括数据库和本地文件系统。
[0011] 本发明还提供一种应用于上述系统的基于轻量级智能终端的人脸注册方法,包括以下步骤:步骤11.用户通过拍照模块采集正面照图像;步骤12.通过人脸检测模块检测采集到的图像,并进行人眼定位;步骤13.通过预处理模块截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息作为训练样本数据保存至数据存储模块;步骤14.通过特征提取模块提取图像中的SIFT特征,并将其作为训练样本数据保存至数据存储模块;步骤15.用户通过个人信息输入模块将个人信息作为训练样本数据保存至数据存储模块。
[0012] 在上述技术方案的基础上,步骤12中,人脸检测模块通过调用系统自带的Android人脸检测API检测采集到的图像。
[0013] 在上述技术方案的基础上,步骤13中,通过预处理模块截取图像中的人脸区域的具体流程为:步骤131.测量图像中双眼的中点坐标及双眼间距,设双眼的中点坐标为(x,y),双眼间距为dd,其中x表示横坐标,y表示纵坐标;步骤132.将图像中坐标分别为(x-dd,y+dd/2)、(x+dd,y+dd/2)、(x-dd,y-3dd/2)、(x+dd,y-3dd/2)的四个点作为面部截取矩形的顶点,截取边长为2dd的正方形;步骤133.将所述正方形划分为七块区域,其中,左眼位于第一区域内,右眼位于第二区域内,左脸颊位于第三区域内,鼻子位于第四区域内,右脸颊位于第五区域内,左嘴角位于第六区域内,右嘴角位于第七区域内。
[0014] 在上述技术方案的基础上,步骤133中将所述正方形划分为七块区域之后还包括以下步骤:为所述正方形的每个区域给定相应的一个权值。
[0015] 在上述技术方案的基础上,步骤133中七块区域的形状和顶点坐标分别为:第一区域是边长为dd的正方形,其四个顶点坐标分别为(x-dd,y+dd/2)、(x,y+dd/2)、(x-dd,y-dd/2)、(x,y-dd/2);第二区域是边长为dd的正方形,其四个顶点坐标分别为(x,y+dd/2)、(x+dd,y+dd/2)、(x,y-dd/2)、(x+dd,y-dd/2);第三区域是边长为dd/2的正方形,其四个顶点坐标分别为(x-dd,y-dd/2)、(x-dd/2,y-dd/2)、(x-dd,y-dd)、(x-dd/2,y-dd);第四区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x-dd/2,y-dd/2)、(x+dd/2,y-dd/2)、(x-dd/2,y-dd)、(x+dd/2,y-dd);第五区域是边长为dd/2的正方形,其四个顶点坐标分别为(x+dd/2,y-dd/2)、(x+dd,y-dd/2)、(x+dd/2,y-dd)、(x+dd,y-dd);第六区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x-dd,y-dd)、(x,y-dd)、(x-dd,y-3dd/2)、(x,y-3dd/2);第七区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x,y-dd)、(x+dd,y-dd)、(x,y-3dd/2)、(x+dd,y-3dd/2)。
[0016] 本发明还提供一种应用于上述系统的基于轻量级智能终端的人脸识别方法,包括以下步骤:步骤21.用户通过拍照模块采集正面照图像;步骤22.通过人脸检测模块检测采集到的图像,并进行人眼定位;步骤23.通过预处理模块截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息作为测试样本数据保存至数据存储模块;步骤24.通过特征提取模块提取图像中的SIFT特征,并将其作为测试样本数据保存至数据存储模块;步骤25.通过识别模块对测试样本与训练样本进行匹配运算。
[0017] 在上述技术方案的基础上,步骤25的具体流程为:步骤251.提取测试样本中的SIFT特征,并与数据存储模块中训练样本的SIFT特征进行匹配,计算相似值;步骤252.判断相似值是否小于限值,若是,则跳转至步骤253;若否,则跳转至步骤254;步骤253.判定用户为非法用户,结束流程;步骤254.在数据存储模块中找到相似值最大的训练样本,并判定用户为该训练样本对应的注册用户,跳转至步骤255;步骤255.输出注册用户信息,并动态的替换掉注册用户中识别率较低的样本。
[0018] 本发明的有益效果在于:
[0019] 1、本发明在轻量级智能终端小样本的情形下,通过人脸区域划分和权值分配,相对于原始SIFT特征匹配算法在识别率和运算性能都有提升,且能够在Android系统中实现人脸识别。
[0020] 2、本发明通过预处理模块对输入图像进行预处理,截取图像中的人脸区域,且截取后的人脸区域成比例,为后续的划分做好了基础,提高了系统的处理速度。
[0021] 3、本发明按照特定的比例将人脸划分为七个区域,并对各区域分别进行匹配,提高了系统的图像识别率,同时减少了运算时间。
[0022] 4、本发明通过为人脸划分的每个区域给定相应的一个权值,按照此权值分配能够进一步增加图像识别的准确性。附图说明
[0023] 图1为本发明实施例中基于轻量级智能终端的人脸识别系统的结构框图
[0024] 图2为本发明实施例中基于轻量级智能终端的人脸识别系统的云架构框图;
[0025] 图3为本发明实施例中基于轻量级智能终端的人脸注册方法的流程图
[0026] 图4为图3中步骤13的具体流程图;
[0027] 图5为本发明实施例中的人脸分块示意图;
[0028] 图6为本发明实施例中基于轻量级智能终端的人脸识别方法的流程图;
[0029] 图7为图6中步骤25的具体流程图。

具体实施方式

[0030] 以下结合附图及实施例对本发明作进一步详细说明。
[0031] 参见图1所示,本发明实施例提供一种基于轻量级智能终端的人脸识别系统,包括拍照模块、人脸检测模块、预处理模块、特征提取模块、数据存储模块、个人信息输入模块、识别模块;所述拍照模块、人脸检测模块、预处理模块、特征提取模块依次相连,所述数据存储模块分别与预处理模块、特征提取模块、个人信息输入模块、识别模块相连,所述特征提取模块还分别与个人信息输入模块、识别模块相连。
[0032] 拍照模块,用于采集用户的正面照图像;此模块的界面布局比较简单,整体用一个LinearLayout,内部包含一个SurfaceView用来实时的预览摄像头采集的图像,在SurfaceView下方有两个button,一个用来拍摄,一个是返回按钮。Android系统框架支持对设备的摄像头的调用,有丰富的API(Application Programming Interface,应用程序编程接口)供开发人员使用,用户不仅可以简单快捷的调用摄像头拍照,还可以定制一些高级功能。
[0033] 人脸检测模块,用于检测采集到的图像,并进行人眼定位;人脸的检测部分,本文采用的是Android提供给开发者的FaceDetector类。此模块比较简单,首先需要新建一个FaceDetector类,入口参数是要检测图片的长、宽和允许检测人脸数目的最大值(在此本文设为1),然后直接调用FaceDetector类的findFaces方法,参数为待检测图像和一个用来保存检测脸的FaceDetector.Face类型的数组,检测成功时得到目标数量,未检测到时返回0。此模块单独使用一个Activity实现,布局文件最外围用一个RelativeLayout,内部放一个TextView用来显示提示用户的信息,ImageView用来显示要检测的图像,Button用来绑定一个监听器,用户点击后进行人脸检测。
[0034] 预处理模块,用于截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息保存至数据存储模块;通过Face类的getMidPoint方法得到双眼的中点坐标,以及eyesDistance方法得到双眼间的距离,设双眼的中点坐标为(x,y),双眼间距为dd,其中x表示横坐标,y表示纵坐标。将图像中坐标分别为(x-dd,y+dd/2)、(x+dd,y+dd/2)、(x-dd,y-3dd/2)、(x+dd,y-3dd/2)的四个点作为面部截取矩形的顶点,截取边长为2dd的正方形,这样做相当于是对输入图像做了一个预处理,截取后的面部区域是成比例的,为后面的划分做好了基础。截取后的图片存储到指定的本地存储器上。
[0035] 特征提取模块,用于提取图像中的SIFT(Scale Invariant Feature Transform,尺度不变特征转换)特征,并存储至数据存储模块;该模块中用到了Android系统的JNI(Java Native Interface)调用,在Android系统上,程序都是用Java编写的,运行时每个程序都有一个虚拟机,但是一些程序需要更高的实时性,底层代码需要C++编写,例如本文用到的图像处理阶段,这种技术简单来说就在Android平台能够调用C/C++代码。该模块采用混合模式,除了用Opencv的C++库文件外,还使用了Opencv4Android的库文件,Opencv4Android的库文件中提供了一个相对方便的工具类Utils,调用bitmapToMat方法可以快捷的将Android中bitmap格式转化为Opencv中Mat格式,后者是Opencv中许多函数调用时的参数格式,但是用这个方法转化的矩阵颜色格式是BGR的,还需要一个步骤,通过Imgproc类的cvtColor方法,把BGR格式转换为RGB格式,否则在显示时会不正常。转换后的矩阵即可作为调用特征提取方法的一个参数,另一个参数是特征子本地存储路径,文件名命名方式和上文中一致,即用系统时间。该模块属于耗时操作,需要异步处理。和检测时一致,都放入一个新的线程中,操作完成时通过handler通知UI线程。个人信息采集技术后,将个人信息、特征子本地存储路径、图片本地存储路径一并写入数据库,生成一个训练样本。
[0036] 个人信息输入模块,用于供用户输入个人信息,并存储至数据存储模块;注册时,当截取完人脸后,会弹出对话框,以提示用户输入信息(例如可以分别是姓名、专业、导师)。采集完个人资料后,持久化到数据库,根据需求调用。布局采用对话框,里面用TextView和EditView显示信息,该模块将在注册阶段的信息输入时使用,同时在识别阶段匹配到合法用户时,显示用户信息,将EditView的Enabled属性设置为false防止用户的误操作和区分输入阶段。
[0037] 识别模块,用于对测试样本与训练样本进行匹配运算。该模块也采用混合模式,核心代码是C++实现的,用NDK方便的生成了so文件(和上一个模块中C++代码共同产生一个so文件),入口参数是测试样本的矩阵以及训练样本的特征子本地存储路径。此模块单独使用一个Activity实现,布局文件最外围用一个RelativeLayout,内部放一个TextView用来显示提示用户的信息,ImageView用来显示要检测的图像,Button用来绑定一个监听器,用户点击进入人脸的匹配阶段。
[0038] 数据存储模块,用于存储数据及采集到的图像信息;所述数据存储模块包括数据库和本地文件系统。在其他模块中会用到一些诸如数据库操作、文件读取等操作,将这些操作封装成一个工具类。主要有以下3部分:
[0039] 1.数据库存取
[0040] 表1 数据表结构
[0041]
[0042] 表1展示了人脸数据表的表结构,_id用于标示一条记录的编号,设置为主键并自增。name、major、tutor是在个人信息模块中提到了用户的个人信息。picId1、picId2、picId3分别代表每个人脸训练样本的采集图片的文件名,可以构造出采集图片的本地存储路径和样本描述子的本地存储路径。
[0043] 2.图片操作
[0044] 主要是图片的存取、缩放和旋转等。图片的存储和读取是一般的文件操作,注意判断Android系统是否存在外部存储空间,Bitmp类中的compress方法可以压缩图片成指定格式,压缩率等参数都可选;图片的缩放和旋转操作都用了Bitmap类中的方法,缩放用了createScaledBitmap方法,可指定长宽,旋转用了createBitmap方法,参数中有个Matrix实例来控制旋转角度。
[0045] 3.特征点文件存取
[0046] 存储时,首先用FileStorage产生一个文件句柄,指定参数为FileStorage::WRITE,用连续的两个IO操作符“<<”将描述子矩阵以键值对的形式存入,将write函数把关键点vector容器存入,之后释放文件句柄。读取时,和存储时类似,先用FileStorage生成一个文件句柄,指定参数为FileStorage::READ,用IO操作符“>>”从yml文件中读取描述子矩阵,然后如同读取数组的一个元素,通过FileNode features=fs[“keypointVector”]得到yml文件的一个节点,接着用read函数从节点中读取关键点向量,最后释放文件句柄。
[0047] 参见图2所示,所述数据存储模块和识别模块设置于外设的云端服务器中,该云端服务器负责存储数据及匹配运算,并将处理后的数据通过网络加密回传至智能终端。这个结构减轻了移动端的运算成本,且可以通过适当增大云端训练样本的空间,并使用SVM或其他分类算法来,进一步提高识别率。这种方案缺点也很明显,即太过依赖于网络,系统可以再运行时检测网络状态,若无网络或网络状态不好,可以切换到单机模式,当网络良好时使用云架构模式。
[0048] 参见图3所示,本发明实施例还提供一种应用于上述系统的基于轻量级智能终端的人脸注册方法,包括以下步骤:
[0049] 步骤11.用户通过拍照模块采集正面照图像。
[0050] 步骤12.通过人脸检测模块检测采集到的图像,并进行人眼定位;其中,人脸检测模块通过调用系统自带的Android人脸检测API检测采集到的图像。
[0051] 步骤13.通过预处理模块截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息作为训练样本数据保存至数据存储模块。
[0052] 步骤14.通过特征提取模块提取图像中的SIFT特征,并将其作为训练样本数据保存至数据存储模块。
[0053] 步骤15.用户通过个人信息输入模块将个人信息作为训练样本数据保存至数据存储模块。
[0054] 参见图4所示,步骤13中,通过预处理模块截取图像中的人脸区域的具体流程为:
[0055] 步骤131.测量图像中双眼的中点坐标及双眼间距,设双眼的中点坐标为(x,y),双眼间距为dd,其中x表示横坐标,y表示纵坐标。
[0056] 步骤132.将图像中坐标分别为(x-dd,y+dd/2)、(x+dd,y+dd/2)、(x-dd,y-3dd/2)、(x+dd,y-3dd/2)的四个点作为面部截取矩形的顶点,截取边长为2dd的正方形。
[0057] 步骤133.将所述正方形划分为七块区域,其中,左眼位于第一区域内,右眼位于第二区域内,左脸颊位于第三区域内,鼻子位于第四区域内,右脸颊位于第五区域内,左嘴角位于第六区域内,右嘴角位于第七区域内。优选的,将所述正方形划分为七块区域之后还包括以下步骤:为所述正方形的每个区域给定相应的一个权值。
[0058] 参见图5所示,步骤133中七块区域的形状和顶点坐标分别为:第一区域是边长为dd的正方形,其四个顶点坐标分别为(x-dd,y+dd/2)、(x,y+dd/2)、(x-dd,y-dd/2)、(x,y-dd/2);第二区域是边长为dd的正方形,其四个顶点坐标分别为(x,y+dd/2)、(x+dd,y+dd/2)、(x,y-dd/2)、(x+dd,y-dd/2);第三区域是边长为dd/2的正方形,其四个顶点坐标分别为(x-dd,y-dd/2)、(x-dd/2,y-dd/2)、(x-dd,y-dd)、(x-dd/2,y-dd);第四区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x-dd/2,y-dd/2)、(x+dd/2,y-dd/2)、(x-dd/2,y-dd)、(x+dd/2,y-dd);第五区域是边长为dd/2的正方形,其四个顶点坐标分别为(x+dd/2,y-dd/2)、(x+dd,y-dd/2)、(x+dd/2,y-dd)、(x+dd,y-dd);第六区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x-dd,y-dd)、(x,y-dd)、(x-dd,y-3dd/2)、(x,y-3dd/2);第七区域是长为dd、宽为dd/2的矩形,其四个顶点坐标分别为(x,y-dd)、(x+dd,y-dd)、(x,y-3dd/2)、(x+dd,y-3dd/2)。
[0059] 人脸的各个区域辨识度是不同的,假如一个测试样本的眼睛部位有个有效匹配,另一个左脸颊有个有效匹配,那么哪个更接近测试样本呢,直观上眼睛、鼻子、嘴巴及脸型是最好分辩的,所以为进一步增加系统识别率,给每个区域给定一个权值w。
[0060] 每个相应的子区域分别匹配,计算一个相似值。定义第i个子域相似值Ssi为:
[0061]
[0062] 其中,DE-j代表第j组匹配特征向量间的欧氏距离,匹配规则按照Lowe教授 的 方 法。(Lowe D G.Distinctive image features from scale-invariant keypoints[J].International journal of computer vision,2004,60(2):91-110.)(Lowe D G.Object recognition from local scale-invariant features[C]//Computer vision,1999.The proceedings of the seventh IEEE international conference on.IEEE,1999,2:1150-1157.)该公式是满足匹配条件的所有向量间距离均值的倒数,代表此区域的相似度,值越大代表越相似。
[0063] 将所有子域相似值通过加权求平均的方式,得到局部相似度:
[0064]
[0065] 其中Ssi为第i块子域的相似值,wi为第i块子区域(取值是从1-7)的权值。定义全局相似度SimG:
[0066]
[0067] 其中,match(Iq,It)代表训练样本图片It与测试样本查询图片Iq之间总的匹配数目,匹配方法和上文中所用的一致,还是选择特征向量最近和此近距离的比值小于某一阈值的特征点,此处阈值取0.6,nt表示训练样本的特征点总数。
[0068] 最后定义图片相似度来衡量训练样本和测试样本间的相似性,这个值越大越相似。
[0069] 参见图6所示,本发明实施例还提供一种应用于上述系统的基于轻量级智能终端的人脸识别方法,包括以下步骤:
[0070] 步骤21.用户通过拍照模块采集正面照图像。
[0071] 步骤22.通过人脸检测模块检测采集到的图像,并进行人眼定位。
[0072] 步骤23.通过预处理模块截取图像中的人脸区域,并对其进行灰度化处理;将处理后的图像信息作为测试样本数据保存至数据存储模块。
[0073] 步骤24.通过特征提取模块提取图像中的SIFT特征,并将其作为测试样本数据保存至数据存储模块。
[0074] 步骤25.通过识别模块对测试样本与训练样本进行匹配运算。
[0075] 参见图7所示,步骤25的具体流程为:
[0076] 步骤251.提取测试样本中的SIFT特征,并与数据存储模块中训练样本的SIFT特征进行匹配,计算相似值。
[0077] 步骤252.判断相似值是否小于门限值,若是,则跳转至步骤253;若否,则跳转至步骤254。
[0078] 步骤253.判定用户为非法用户,结束流程。
[0079] 步骤254.在数据存储模块中找到相似值最大的训练样本,并判定用户为该训练样本对应的注册用户,跳转至步骤255。
[0080] 步骤255.输出注册用户信息,并动态的替换掉注册用户中识别率较低的样本。
[0081] 每个分组只注册一个训练样本,但每次测试样本匹配分组时,将匹配成功的样本添加到分组中,最多只保留2个训练样本。成功匹配后,当分组的训练样本不足2个时,直接添加;等于2个时,比较图片相似度,替换较小的样本。从下文实验中也将看到,当有2个训练样本时已达到可观的识别率,而且每个分组保存的样本存储代价也不大,由于在注册阶段不用重复采集图像,而是在以后运行中以学习的方式自动增加样本,不用重复提取图像的特征点,在运行时间上也占很大优势。
[0082] 下面通过几个实验对本发明作进一步详细说明。
[0083] 实验1距离度量公式的选择
[0084] 1.1特征相似性测量
[0085] 下面介绍几种在模式识别中,经典的度量样本与样本距离的公式。定义x=(x1,x2,…,xn)和y=(y1,y2,…,yn)为两个向量,它们之间的距离是d(x,y)。
[0086] 欧几里得距离(Euclidean),简称欧式距离,是一种最流行和最基本的计算两点或两向量距离的公式,欧式距离的值越小则说明向量距离越近,相似度越高。欧几里得距离是Lowe教授原始SIFT算法中默认方法,定义如下:
[0087]
[0088] 夹角余弦距离(Cosine),特征通常用向量表示,向量在多维空间中是都是从原点出发的,那么用向量的夹角衡量两个向量的相似程度是显然的,一般用余弦定理表示,值域为0到1,值越大,夹角越小,则相似度越高,余弦距离在新闻分类中使用很广泛[12]。定义如下:
[0089]
[0090] 其中 为2-范数,也称之欧式范数,数值等于向量到原点的欧式距离。
[0091] 角度距离(Angle),此种方法是Aly提出(Aly M.Face recognition using SIFT features[J].CNS/Bi/EE report,2006:186-193.),并证明其在SIFT算法中综合性能优于余弦距离,值越小,角度越小,相似度越高。定义如下:-1
[0092] d(x,y)=cos (x·y)
[0093] 1.2实验结果
[0094] 对于SIFT算法特征点的匹配,主要是判断128维描述子的相似度,可以用向量间的距离来描述。在上文中介绍了3种常见的向量距离度量公式,现做以下实验,测试机器处理器为Intel的E5800双核3.20GHz,内存2.00GB。
[0095] (1)随机生成维数从20到120的6个向量,即维数每增加20维生成一个。分别测试上文中提到的三种距离所用的时间。
[0096] 表2 三种距离度量的运算时长(ms)
[0097]编号识别率R 权值w
1 0.7867 4.69
2 0.80 5.00
3 0.24 1.32
4 0.74 3.85
5 0.1733 1.21
6 0.6133 2.59
7 0.5467 2.21
[0098] 可以看出在运行时间方面,Euclidean距离是优于Cosine和Angle距离的。
[0099] 选取ORL人脸库s1到s20共20组志愿者图片,每组志愿者随机则5张图片作为训练样本,其余5张用来测试,在经典SIFT算法分别使用三种向量距离度量方式,测得识别率如表3。
[0100] 表3 SIFT算法在三种距离度量下的ORL人脸库识别率
[0101]距离 识别率
Euclidean 0.94
Cosine 0.92
Angle 0.94
[0102] 为了试验的稳定度,本次试验选择多样本方式,而且训练样本达到了一半,识别率都比较高,可以看到Euclidean距离和Angle距离是优于Cosine距离的。
[0103] 综合运算时间和识别率的综合考虑,在本文改进的算法中,识别过程采用了更节省时间且识别率更好的欧式距离。
[0104] 实验2区域权重的分配
[0105] 以下实验中测试环境均与实验1中一致,测试机器处理器为Intel的E5800双核3.20GHz,内存2.00GB。
[0106] 为确保权值分配的稳定性,采用多样本的情况,虽说是多样本,但数量依旧很小,测出的实验数据也能反映小样本的一些特征,所以在本文中小样本的实验中,仍选用此处的权值。选择Yale数据库,随机抽取每个志愿者的5张图用作训练,其余取5张用作测试,单独测试上文中提到的各个分块的特征点匹配情况,按照Lowe教授计算识别率R的方法,权值大小w为1/(1-R),如表4所示,其中编号代表上文中提到的子区域划分。
[0107] 表4 子域权值的分配
[0108]编号识别率
1 0.7278
2 0.7611
3 0.7388
4 0.7222
5 0.7944
6 0.7444
7 0.6722
8 0.7944
9 0.7556
10 0.7055
[0109]
[0110] 实验数据反映了眼睛、鼻子和嘴巴等区域在识别中的重要性,按照此权值分配可以进一步增加准确性。
[0111] 实验3样本数量对鲁棒性的影响
[0112] 为分析训练样本的数量对识别率产生的影响,本文做了以下实验:
[0113] (1)在ORL人脸库s1到s20中,依次选择每个分组中编号从1到10的人脸作为训练样本,其余的9张作为测试样本,共180张测试样本,测试同一个体的不同样本对识别率的影响。划分方式为不划分(1×1),匹配方式选择同上文一致的欧式距离比值的方式,实验结果如表5所示。
[0114] 表5 ORL人脸库中单样本的识别率
[0115]距离 20 40 60 80 100 120 平均
Euclidean 58 62 61 58 59 60 59.75
Cosine 70 69 68 72 71 70 69.83
Angle 84 84 83 85 83 85 84.33
[0116] (2)在Yale人脸库依次选择编号从1到11的人脸,测试同一个体的不同样本对识别率的影响,实验方法和(1)相同,共150张测试样本。划分方式为不划分(1×1),匹配方式选择欧式距离比值小于某一阈值的方式,实验结果如表6所示。
[0117] 表6 Yale人脸库中单样本的识别率
[0118]编号识别率
1 0.3333
2 0.6933
3 0.7867
4 0.2867
5 0.7800
6 0.8133
7 0.3800
8 0.7467
9 0.7867
10 0.6800
11 0.7000
[0119]
[0120] (3)从ORL人脸库s1到s20中,同一志愿者分组随机取1至5张作为训练,其余任选5张用来测试,共100个测试样本。参数选择和上文保持一致。为保证实验有效可靠,仍然采用测试5次取平局值的方式,实验数据如表7所示。
[0121] 表7 ORL人脸库中训练样本数量对识别率的影响
[0122]样本数 识别率
1 0.64
2 0.66
3 0.77
4 0.80
5 0.84
[0123] (4)从Yale人脸库编号从1到11的同一志愿者分组随机抽1至5张图像用作训练,其余任选5张用作为测试,共75个测试样本,测试样本数对识别率的影响。实验方式与上一个实验保持一致,数据如表8所示。
[0124] 表8 Yale人脸库中训练样本数量对识别率的影响
[0125]样本数 识别率
1 0.48
2 0.83
3 0.84
4 0.84
5 0.88
[0126] 通过上面的实验可以看出:(1)和(2)数据分布不规律,说明同一个体的不同图片作为训练样本差异很大,因为人脸库中照片是同一志愿者在不同时期、表情、脸部细节(戴/不戴眼镜)、光照、脸部转动等条件下拍摄的,照片的特征点数目及分布的区域都不尽相同,所以造成识别率的差异很大,说明单样本的条件下,不做任何优化,鲁棒性很低。(3)和(4)中的数据表明识别率随训练样本数目增大而增加。可以看到在单样本的情况下识别率都比较低,这是个体的不同样本的差异性造成的,在(1)和(2)中可清晰看到这一点,但是随训练样本数目的增大,同一组拥有更多个体特征,在匹配过程就有更多的几率匹配成功。在训练样本为2个的时候,识别率已经相当可观,本文在考虑到移动端存储性能的要求,选取训练样本为2个。
[0127] 实验4分块参数的影响
[0128] 分别在ORL和Yale人脸库中,对平均划分后的识别率及运行时间进行了测试。识别率的计算上文已提到,在匹配过程中,用特征向量欧式距离来评判,使用Lowe教授推荐的最近距离和次近距离比值小于某一阈值的方式减少误匹配,若测试图像相对于哪组训练图像有更多的有效匹配,则判定为分到哪一组。
[0129] (1)ORL人脸库选择前20组(编号为s1-s20)人脸,每组的选取1张为训练样本,其余9张用来测试,一共是20个训练样本及180个测试样本,图片分割方式为平均划分,划分参数为1×1、2×2、2×3、3×2、3×3、3×4、4×3。为了试验数据稳定可靠,每次随机抽取一张用来训练,重复5次,取平均值,实验数据如表9所示。
[0130] 表9 ORL人脸库不同分块参数对识别率的影响
[0131]划分块数 划分参数 识别率 运行时间(秒)
1 1×1 0.7416 602
4 2×2 0.7629 558
6 2×3 0.7214 549
6 3×2 0.7451 550
9 3×3 0.7126 549
12 3×4 0.7481 545
12 4×3 0.7574 544
[0132]
[0133] (2)Yale人脸库所有15组图像,每组选择1张用来训练,其他的10张用作测试,一共是15个训练样本及150个测试样本,图片分割方式为平均划分,参数与之前选取一致。为了试验数据的稳定可靠仍然采用之前的取平均值的方式,实验结果如表10所示。
[0134] 表10 Yale人脸库不同分块参数对识别率的影响
[0135]划分块数 划分参数 识别率 运行时间(秒)
1 1×1 0.6022 306
4 2×2 0.6533 296
6 2×3 0.6632 293
6 3×2 0.6588 294
9 3×3 0.6756 295
12 3×4 0.6911 294
12 4×3 0.6822 293
[0136] 随着分块数的增加,识别率会有所提高,从未分块(1×1)到分四块(2×2)会有个很大的提高,之后会保持平稳,这是因为随着分块的增加,每块区域面积就会下降,那么对应区域内包含的人脸部分将对结果更加敏感,人脸的姿态变化影响子区域的匹配,识别率就不会继续增加了。同时随着分块增加,运行时间会显著下降,同样也是分四块时会有个显著地下降,之后基本平稳,这是显而易见的,因为子区域面积减少,对应的特征点就会减少,匹配时间就会下将,整个识别的时间也随之下降,但是运行时间不会一直下降,这是由于测试数据库像素都是100×100像素这个数量级的,产生的有效特征点有限,随着分块的增加,每个分块上的特征点数目变化不大。值得注意的是,我们在测试分块6和分块12时,采用了2组实验,可以看到同一分块数,分割参数不同也会造成实验结果的不同,图6与图7中分别是取平均后的值。在ORL人脸库,看到当分块为9时很不稳定,可以看到这种平均划分方式随人脸的表情、细节变化和人脸的转动影响很大。
[0137] 因为测试使用的是单样本,总体识别率都很低,但是分块的效果的明显的。本文最终的应用场景是单样本或者极少样本的条件下的,所以需要一种更有效的方法提高识别率,并使系统的鲁棒性有所增加。
[0138] 实验5改进算法性能测试
[0139] 在ORL和Yale人脸库测试本文改进算法与Lowe教授经典SIFT算法性能比较,主要测试指标仍然是识别率和运行时间,这个是智能移动设备较关心的因素。
[0140] (1)选择Yale人脸库,随机抽每组1张用作训练,15组共15个训练样本,同组内其余10张作为测试,15组共150张测试样本。划分方式为改进的方式,测试5轮取平均。
[0141] (2)选择ORL前20组(编号为s1-s20)人脸,每组的随机抽取1用作训练,其余9张为测试样本,一共是20个训练样本和180个测试样本,每组实验分别测试5轮取平均,实验结果如表11和表12所示。
[0142] 表11 Yale人脸库改进算法性能测试
[0143]算法 识别率 测试时间 算法
经典SIFT 0.6022 306 经典SIFT
仅划分7块(无权值)0.66 293 仅划分7块(无权值)
L-SIFT(本文算法) 0.6872 292 L-SIFT(本文算法)
[0144] 表12 ORL人脸库改进算法性能测试
[0145]算法 识别率 测试时间 算法
经典SIFT 0.7416 602 经典SIFT
仅划分7块(无权值)0.7488 547 仅划分7块(无权值)
L-SIFT(本文算法) 0.7871 547 L-SIFT(本文算法)
[0146]
[0147] 通过上述实验数据,可以看到本文方法在Yale和ORL人脸库均相对于经典SIFT算法提升。在Yale人脸库中,识别率提高14.11%,运行时间提高4.7%;在ORL人脸库中,识别提高6.13%,运行时间提高9.1%。如表11所示,在Yale人脸库上识别率的增幅表现更好一点,是因为该数据库中脸部旋转角度较小,可以看到本文算法在表情和小姿态条件下有很好的表现,对于大角度的旋转下,仍有较好的识别率,为进一步增加鲁棒性,本文使用2个训练样本的方法可以改进,详细可以参考实验3中的数据。通过表11和表12的运行时长的数据,可以看到在运行时间上本文的方法都有很大的提升。
[0148] 表13 本文算法和其他算法的性能比较
[0149]算法 识别率
PCA 0.6639
2DPCA 0.6972
LBP 0.5472
SIFT 0.7087
L-SIFT(本文算法) 0.7405
[0150] 改进算法和其他算法在单样本下的性能比较。保持和赵汝哲在《基于单样本训练集的人脸识别研究》(重庆大学,2012.)中测试方法相同,即选择ORL库,从s1到s40每组抽一张用作训练,其余9张用来测试,即一共有40个训练样本,360个测试样本,测试结果如表13所示。
[0151] 通过上述实验数据(表13),可以看出本文算法相对一些经典算法都有不错的提升,同时由于计算时间的优势,使得是一种不错的在智能终端上的轻量级人脸识别算法,加之增加可容忍的训练样本数量,使得效率进一步提升。
[0152] 本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈