1. 引言
人脸识别作为生物特征识别技术之一,利用人脸的眉毛、眼睛、口、鼻等特征进行身份认证,是当前一种非常流行的身份认证技术。人脸识别就是从采集到的含有人脸的图像或视频流中提取出人的特征点信息。在当前流行的人脸识别、指纹识别、脉搏识别、虹膜识别、视网膜识别、DNA识别等众多生物特征识别技术中,人脸识别技术与其他生物特征识别技术相比,具有非接触性、直接性、便利性、准确率高等优势,从而得到了广泛的研究与应用。目前,人脸识别在门禁系统、网络身份识别、摄影摄像领域都有着极其广泛的应用,随着人脸识别技术的不断成熟,其识别的可靠性和准确率会得到进一步的提升,未来作为身份识别的关键技术手段,其必将会应用于更多的领域 [1] 。
2. 现有研究成果对比分析
由于人工考勤存在耗时、效率低等弊端,以及人脸识别技术越来越成熟,很多研究者把考勤和人脸识别技术结合起来,开发人脸识别考勤系统,以下将对现有的几种人脸识别考勤系统进行对比分析。文献 [2] 中介绍了基于PCA和LDA算法的人脸识别考勤系统的设计与实现,该系统采用C/S服务体系结构,在客户机通过识别摄像头采集的人脸信息与系统中存在的人脸信息进行对比,但该系统的考勤效率低、硬件设备要求大、成本较高。文献 [3] 提出了一种基于SVD的两步人脸识别的考勤系统,虽然该系统识别率高,但是算法识别流程复杂,计算复杂度高,识别耗时长。文献 [4] 提出了基于手机定位的考勤系统,该系统虽然可以提高考勤管理的效率,但是手机定位具有不稳定性,考勤也具有不确定性。基于以上几种考勤系统的对比,本文提出基于PCA算法的移动课堂考勤系统,PCA对比其他人脸识别算法来说,准确率较高以及复杂度低,本系统与以往的单个人脸考勤不同的是,采用一张课堂集体照进行多个人脸识别,考勤效率大大提高。由于安卓手机的普遍性,硬件要求低,大大降低了考勤成本。
3. 人脸检测
人脸检测技术是人脸识别技术的关键步骤,是识别匹配的前提。人脸检测技术是指在一张照片中找出人脸的位置和大小的过程。本作品采用基Haar分类器的AdaBoost [5] 算法来进行人脸检测。AdaBoost算法最早在1995年由Freund和Schapire两人提出,现在多用于计算机视觉,机器学习,人脸检测和数据挖掘上。
3.1. Haar分类器算法
Opencv自带了haar分类器,Haar分类器算法的要点如下:
· 使用Haar-like特征做检测。
· 使用积分图(Integral Image)对Haar-like特征求值进行加速。
· 使用AdaBoost算法训练区分人脸和非人脸的强分类器。
· 使用筛选式级联把强分类器级联到一起,提高准确率。
3.2. AdaBoost算法
AdaBoost算法是一种迭代算法,基于haar特征值不断地进行分类器的训练,从大量的弱分类器中不断筛选出,组成强分类器,以提高检测的精确度。然而,单个的分类器并不能准确的检测出人脸,因此需要使用级联的方法,将多个强分类器级联到一起来提高精确度。最后,使用积分图对人脸实现实时检测。该算法使用图像的矩形特征作为分类依据,级联的分类器有效的排除了大量非人脸窗口,每级分类器对应一个Haar特征值,一旦被标识为非人脸窗口,就不再进入下一级进行训练。
分类器训练过程如图1所示:
强分类器的诞生需要进行T次的迭代,具体操作如下:
1) 给定训练样本集S,共N个样本,其中X和Y分别对应于正样本和负样本;T为训练的最大循环次数;
2) 初始化样本权重为1/N,即为训练样本的初始概率分布;
3) 第一次迭代训练N个样本,得到第一个最优弱分类器;
4) 提高上一次迭代中被误判的样本的权重;
5) 将新的样本和上次分错的样本放在一起进行新一轮的训练;
6) 循环执行4~5步骤,T轮后得到T个最优弱分类器。
7) 将T个最优弱分类器组合而得强分类器,组合方式(1)所示:
(1)
其中
最终得到强分类器
为:
(2)
其中
,
是弱分类器,即当已提取的分类器对某些样本分类正确,则将这些样本的权重减小(
变小);如果不正确,则增加样本的权重(
变大)。如此,之后的每一次提取简单分类器,这些错误样本的训练就会加强。

Figure 1. Face detection classifier training method
图1. 人脸检测分类器训练方法
人脸检测适用于灰度图像,因此获取的彩色图像需转为灰度图。其次,在光线较暗的情况下,获取的图像质量差,故要用直方图均衡化来提高图像的亮度和对比度。另外,要把采集到的人脸图像的尺寸统一化。完成之后,才能进行人脸预处理。
4. 人脸图像预处理
图像采集之后获得的图像一般情况下都含有一部分噪声或是干扰信息,会对后期的图像处理造成影响,因此需要进行图像预处理,包括图像去噪、图像增强、图像的二值化、归一化以及图像分割等。
4.1. 图像去噪
图像噪声会影响图像的清晰度影响图像识别效率,因此对待识别的图像做去噪处理是前提。常用的去噪算法有:均值滤波、中值滤波、KNN均值滤波以及SNN均值滤波算法,经过实验如下图3图4的比较,本文采用SNN均值滤波算法进行图像去噪。
SNN均值滤波算法
在图像的模板内,通过对几对对称点像素值的比较,区分是否位于同一区域,在同一个区域内进行像素均值的计算。算法示意图如图2,从模板中的对称点对寻找与待处理像素相同区域的点,然后对选出的点做均值运算。
4.2. 图像增强
图像增强主要的优点在于进一步突出图像的各部分特征,通过调整图像的全局灰度值分布来增强图像的对比度,为检测识别操作提供更好的样本。直方图均衡化的思想主要是对图像中像素个数多的灰度级进行线性对比度展宽,像素个数少的灰度级进行压缩,从而提高图像亮度对比度,使图像更清晰。图像增强主要的优点在于进一步突出图像的各部分特征,通过调整图像的全局灰度值分布来增强图像的对比度,为检测识别操作提供更好的样本。直方图均衡化的思想主要是对图像中像素个数多的灰度级进行线性对比度展宽,像素个数少的灰度级进行压缩,从而提高图像亮度对比度,使图像更清晰。
如果设
为原图像和处理后的图像,灰度变化范围为[0,255],则直方图的均衡化的具体步骤如下:
1) 求出原图
的灰度直方图,用256维的向量h表示。则
其中,
为图像
中灰度值为k的像素个数;
,为图像的总像素个数。

Figure 3. KNN mean filtering algorithm denoising effect chart
图3. KNN均值滤波算法去噪效果图

Figure 4. SNN mean filtering algorithm denoising effect chart
图4. SNN均值滤波算法去噪效果图
2) 由直方图均衡化映射函数进行直方图的均衡化。则映射函数为:
原图如图5所示,直方图的均衡化处理的效果图如图6所示。
4.3. 图像分割
图像分割即是将感兴趣的部分与其他部分进行分离并提取出来的处理,主要的分割方法有阈值法、边界分割法、区域提取法等。本文将人脸识别在课堂考勤中的应用需要将集体合照进行分割,主要采用的是边界分割方法中的加权梯度直方图分割法。其设计思路是通过对梯度分布进行加权修正,增大直方图的分布细节,具体步骤如下:
1) 对待分割的图像
按照某锐化算子(如sobel算子)求梯度图
。
2) 按照如下公式求梯度图
的加权灰度直方图
,即

Figure 6. Histogram equalization effect chart
图6. 直方图均衡化后效果图
其中:
为加权系数,是关于k的增函数;N为
的像素个数。
3) 将加权梯度直方图,带入最大熵阈值方法,求出
的分割阈值。
课堂考勤系统中图像分割效果如图7所示。
5. 人脸识别
对人脸识别这一关键功能,采用PCA主成分分析算法进行识别。主成分分析(PCA) [6] 是通过多元统计分析数据的一种方法,是借用较少的特征数据来描述总体样本的内容,以此达到降维处理图像特征数据的目的,在人脸识别的应用中,使用一个低维的子空间来描述人脸图像,同时保留识别所用到的数据信息,通过低维表征的向量和特征向量矩阵,可以基本重构出所对应的原始高维向量。
一组特征脸可以通过在一大组描述不同人脸的图像上进行主成分分析(PCA)获得。任意一张人脸图像都可以被认为是这些标准脸的组合。算法设计为如下几个步骤 [7] :
设有m条n维数据
将原始人脸数据按列组成n行m列矩阵X[n, m]
1) 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值,使每一维的均值为0。即
(1)
2) 求出协方差:数学上可以用两个字段的协方差表示其相关性,由于已经让每个字段均值为0,则:

Figure 7. Image segmentation effect chart
图7. 图像分割效果图
(2)
3) 协方差矩阵:
(3)
其中,这个矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是两个字段的协方差,两者被统一到了一个矩阵上。
4) 求出协方差矩阵的特征值及对应的特征向量。
5) 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P。
6) Y = PXY = PX即为降维到k维后的数据。
通过主成分分析,降低数据空间维数,可以将多元数据特征在低维空间里直观地表示出来。
6. 移动端设计与实现
6.1. 系统设计 [8]
该系统整体上利用基于PCA主成分分析法算法进行人脸识别,重点研究利用多人脸识别来实现课堂考勤。通过上传班级照片后切割成每一个人脸与该班级对应的人脸数据库匹配,匹配成功即判断为到场上课,没有到场的标记为缺席,多余人脸判断为听课人群,在考勤结果中显示本班级缺席人数和名单。系统的总流程如图8。
6.2. 系统主要功能
本系统的功能较为简单,最主要的功能是刷脸考勤、信息录入以及考勤统计,还具备基本的注册登陆、账号管理、反馈等基本功能。信息录入主要是将教师所授班级的学生信息录入到后台数据库中,包括姓名学号和照片;刷脸考勤是在开始上课前教师拍一张学生的合照之后上传,点击考勤与人脸数据库进行对比验证;考勤统计是根据刷脸考勤得到出席人数、缺席人数以及缺席名单,系统功能如下图9所示。
6.3. 技术选型
6.3.1. 服务端
本系统的服务端主要是使用Tomcat作为服务器,采用MVC模式进行开发,以URL形式向外部提供访问实体层的接口,可视化层向服务器发送请求时,即可实现通讯。
主要流程图如图10所示。
客户端使用http post请求把Json数据写出到服务端,服务端从json封装的请求数据中获取到请求意图后,处理数据库空间的申请、数据存取、权限验证等需求 [9] 。Serlvet作为前台接受client的请求并进行相应的处理。
6.3.2. 数据库
本系统的数据库使用的是云数据库,主要是使用Bmob后端云数据库来很好的支持人脸数据库。云数据库能够提供可视化建表过程,以及简单的set(), get(), save()函数对数据进行添加保存,Query()函数对数据进行访问查询,Update()函数对数据进行修改更新以及delete()进行数据删除等。
数据库的流程图如图11所示。
6.4. 效果展示
在Android客户端上运行的效果,展示主要功能,包括信息录入、刷脸考勤以及考勤统计,分别如图12、图13、图14所示。
(a)
(b)
(c)
(d)
Figure 12. Information entry effect display. (a): Create class name; (b): Create student name; (c): Upload student photo; (d): The total number of student
图12. 信息录入效果展示。(a)创建班级名称;(b) 创建学生姓名;(c)录入学生相片;(d) 班级中的总学生数
(a)
(b)
(c)
Figure 13. Brush face attendence effect display. (a): Select attendance class; (b): Upload student photo; (c): Click attendence button
图13. 刷脸考勤效果展示。(a) 选择考勤班级;(b) 上传照片;(c)点击考勤
7. 结语
本文对PCA的人脸识别算法进行研究,详细阐述了人脸识别的具体过程,包括人脸检测、图像预处理、人脸识别与匹配,并介绍了将PCA的人脸识别算法运用到移动课堂考勤系统的系统简要设计。
(a)
(b)
(c)
Figure 14. Attendance results and attendance statistics. (a): First attendence result; (b): Second attendence result; (c): Comprehensive statistics
图14. 考勤结果和考勤统计。(a)第一次考勤结果;(b)第二次考勤结果;(c)综合统计情况
实验表明,基于PCA的人脸识别算法可以达到良好的识别效果,在具体课堂考勤中,达到了75%以上的识别准确率。将人脸识别与考勤相结合,不仅可以运用到课堂考勤中,还可以运用到小型会议考勤、考试签到等领域中,具有良好的实用价值。
资助信息
本文获得广州市产学研协同创新重大专项(201704020203, 201604016002)和佛山市科技创新项目(2014AG100162)的资助。
参考文献