裴庆庆
(郑州工业应用技术学院 河南省新郑市 451100)
随着人脸识别技术的不断的发展,其不仅能够将静态图片中的人脸准确的识别、标记出来,还能够捕获动态视频中的人脸信息,并做出准确识别,这个过程即为人脸识别人脸识别是目前最直观的生物特征识别技术,在各个领域的应用也十分广泛。目前常用的生物识别技术包括指纹识别、语音识别、虹膜识别等,相比这类生物识别技术, 人脸识别具有非侵入性的功能优势,只要录像设备视野内出现人脸信息,系统就可以识别出人脸,因此即使在用户不希望与系统合作的环境中该技术仍然适用。除此以外人脸识别系统还具备身份认证、欺诈检测、访问控制等多种功能。当然,现实中人脸图像具有高度的可变性,比如光照因素、年龄变经、头部角度与姿势、表情等因素均有可能更改脸部图像特征,因此在环境不受限制的条件下人脸识别是最具挑战性的生物识别方法之一。
深度学习是机器学习范畴中的一个子集,是指利用深度神经网络实现机器学习的一种方法模型,也称为深度结构学习或分层学习。深度学习需要海量的数据支持及强大的计算能力,学习的深度越深就能够提取到越高级的特征。深度学习是一种无需人工构建特征的端到端的数据驱动方法,其根据标签融合、交叉、替换抽取到的特征,完成自我调节,最终获得更优化的模型。在非监督数据上可以通过以下两个步骤有效训练多层神经网络:先是层层构建单层的神经元,每次训练即训练一个单层网络;然后所有训练都结束后再用wake-sleep 算法进行优化处理。在该算法中最顶层是单层神经网络,其它层间均为双向权重的图模型,双向权重包括向上与向下两种,向上权重的作用是“认知”,向下权重的作用是“生成”,每层网络训练完成后,wake-sleep 算法会对所有权重做出调整,以保证所生成的最顶层表示能够准确复原底层节点,使得“认知”与“生成”达成一致。wake-sleep 算法包括“wake”与“sleep”两个阶段,wake(醒)阶段通过外界的特征与向上的权重采用梯度下降的方法修改层与层之间的向下权重,是一个认知的过程,而sleep(睡)阶段则是通过最顶层表示与向下的权重生成底层状态,修改层与层之间的向上权重,属于生成过程。学习第一层的参数,得到一个三层神经网络的隐藏层,该隐藏层可以使得输入与输出相差最小。如此层层训练、学习即可得到每一层的参数。
人脸识别主要流程包括建立数据集、识别目标正面、将实时采集的人脸图像与数据库中存储的面部图像进行比较、识别图像。训练模型之前采集人脸图像时要对数据进行预处理,提高数据质量;然后检测人脸的位置,标注人脸关键点;对采集到的人脸图像进行结构简化处理,将人脸图像的特征提取出来,为后续的人脸识别做准备;人脸识别过程中将训练好的数据输入系统,构建人脸识别模型后再与目标图数据库中的数据进行比对;最后再进行活体检测,即通过眨眼、点头等动作检测人脸是否实际生物存在。下文针对每个环节进行详细介绍:
人脸图像采集主要包括两个来源,一是批量叠加导入现有的人脸图像,完成人脸图像采集,批量叠加导入的人脸图像需要合并几个不同的原始图片集,将同一个人在不同来源的图像信息集合在一起。另外一个来源即为实时图像采集,利用某个特定样本的实时跟踪设备录入信息,比如摄像头。采集到的人脸图像会受到许多外部因素的干扰,比如光线、面部表情的变化等,因此原始图像不适合提取模型特征,需要通过一系列图像转换对数据进行预处理,比如旋转、切割、降噪、缩放等等。
人脸检测的主要目的是进一步筛选人脸图像信息,消除噪声,获取更精准的图像信息,进一步确认人脸的具体位置,确定图像大小及位置等。不过人脸检测的主要困难在于对面部内部变化的检测及获取图像时环境的变化,人脸通常会随着情绪的变化而产生一些复杂的细节动态,且装饰物也可能会改变面部特征,因此增加了人脸检测的难度。另一方面,图像获取环境会发生变化,包括获取图像的角度、光线影响、成像设备的景深及焦距等参数。因此为改善图像采集质量,现在人脸检测的方法主要包括检测肤色、检测边缘特征以及基于统计的检测方法,应用最为广泛的为基于统计的方法,虽然其误检率较高,但是其效率高、性能好,因此被广泛应用于各个领域。
根据算法模型提取人脸上的特征。人脸特征包括人脸视觉特征与人脸像素统计性特征两大类,而提取人脸特征的方法又包括基于代数特征的提取以及基于知识的提取。提取人脸特征时先将人脸图像进行维度放大处理,将其转换为一个灰度矩阵后经过一系列的代数变化即可提取出特定的代数特征值,这些数据具有良好的聚类性,能够将人脸的特点准确的表示出来,整个过程即为基于代数特征的人脸特征提取方法。用几何形态表征将人脸中最具代表性的部位描述出来,再将其转换为几何图案的组合,这个过程即为基于知识的人脸特征提取方法。
获取人脸图像特征数据后通过模型映射到训练集上,模开设置相似度阈值,超出相似度阈值的数据信息可以筛除,接下来再根据相似度信息、人物信息对输出人脸图像做进一步筛选,最终确定最合适的人脸图像。活体鉴别的主要作用是判断系统识别的对象是否为真实生物体,以保证人脸识别的安全性,因为系统获得的人脸可能是一张照片的复刻,如果缺乏活体鉴别可能会存在安全隐患,因此系统中需要加出眨眼、转头等活体鉴别过程。
本研究提出的人脸识别系统是基于tensorflow 深度学习框架,采用FaceNet 构建实时人脸检测及识别系统,实验在应用场景下多姿态及光照的人脸识别任务,能够由摄像头读取视频提取帧,检测人脸特征,将采集到的数据与数据库中预存的人脸特征数据进行对比,最终完成人脸识别。具体设计是先由摄像头中提取人脸图像保存于本地数据库中,针对同一个人脸需要提取多张图片,提取出每张图片的128 维特征值,再将同一个人脸多张图片的128 维特征均值计算出来,再对照摄像头录制的人脸特征值,比照二者人脸向量的欧式距离即可计算机数据库中人脸图像与摄像头录制人脸图像的相似性。该系统能够实现人脸数据的实时采集,并支持人脸实时注册,建立人脸数据库,能够实时采集摄像头图像进行人脸识别,并支持多张人脸的检测与识别。
FaceNet 主要用于验证人脸是否为同一个人,是基于百万级人脸数据训练的深度卷积神经网络,其可以将人脸图像映射(embedding)成128 维度的特征向量,直接以该特征向量为特征依据,通过机器学习的方法实现人脸识别。本研究在进行人脸匹配数据训练时,将LFW 数据集中照片转换为统一大小,形成人脸检测与关键点的对齐,便于后续的人脸识别任务。FaceNet 模型训练过程中可以借助训练好的embedding 来帮助下个模型生成新的embedding,可以获得更稳定、效果更好的模型。
本研究提出的基于深度学习算法的人脸识别系统包括人脸图像实时采集与注册模块、人脸检测模块、人脸识别模块及可视化操作界面。
3.3.1 人脸图像实时采集与注册模块
本系统先搭建一个基本框架,将摄像头录制到的人脸图像信息收集起来,建立一个人脸特征数据库,收集到的人脸图像都对应设置一个文件名,将同一个人多张人脸图片存储为对应的文件夹。上文中提到,完成人脸识别需要利用FaceNet 对人脸图像数据进行训练,构建对应的人脸识别模型,人脸识别数据库构建完成后,即可利用该模型提取人脸特征数据,数据库中包含每个ID 人脸的embedding 信息,提取到的数据再利用FaceNet 生成npz 文件,每张人脸均进行特征提取并存储于一个词典中。自建数据库集完成图像采集,多次人脸注册,多次采集图像,并进行多次特征提取,最终将人脸特征保存于数据库中。
3.3.2 人脸检测模块
摄像头可以实时收集人脸信息,通过摄像头检测每个视频帧中的人脸特征信息,并标记人脸框,采用MTCCN 提取视频提取帧人脸框,再将人脸框数据输入facenet 提取人脸特征。MTCNN 可以检测出人脸位置,获取一个人脸的bounding box,利用训练好的Facenet 模型提取人脸图像的特征,注意所有人脸图片需要对齐统一图片大小。
3.3.3 人脸识别模块
人脸图像对齐后利用训练好的Facenet 模型将人脸图像embedding 成128 维特征值,提取embedding vector 后对照人脸数据库中所有特征数据。数据库中包含了自建的人脸数据库,可以生成embedding 人脸特征数据库,采用facenet 提取出人脸特征采用训练好的SVM 分类器对检测到的人脸特征向量进行分类,不仅能够提高处理效率,且精度更高。
3.3.4 制作可视化操作界面
采用python 语言设计可视化界面,利用PyQt5 及QtDesigner制作操作界面,将.ui 文件转换为.py 文件代码,Qt5 有自己的返回值无法实时占用摄像头,可以用定时器完成人脸图像的实时采集,每秒能够识别30 张左右的图片,且能够依次完成多个ID 人脸图像的采集。点击“开始”系统即实时检测视频帧中的人脸图像,并在对应区域显示出人脸识别的结果。
总之,人脸识别技术有着其它生物识别技术不具备的独特优势,比如非接触式的验证过程提升了用户体验,人脸识别能够同时比对多张人脸信息,且每张人脸信息都是独一无二的,因此人脸识别技术的应用越来越广泛。而经过多年发展深度学习已经成为极为普及的多种识别模型技术,尤其是在人脸识别领域,一直都是人工智能领域的重要研究方向。相信随着科技的进步,人脸识别技术对人们生活的影响也会越来越大。