您的当前位置:首页正文

基于树莓派的在线人脸识别考勤系统

2021-11-13 来源:易榕旅网
第27卷Vol.27第22期No.22电子设计工程

ElectronicDesignEngineering2019年11月Nov.2019基于树莓派的在线人脸识别考勤系统

张一夫1,陈天飞1,张建松2

(1.河南工业大学电气工程学院,河南郑州450001;2.河南省教育技术装备管理中心河南郑州450004)

摘要:人脸识别考勤系统可能由于用户化妆等原因发生错误。基于树莓派的在线人脸识别考勤系统使用OpenCV集成的LBPH算法,当发生识别错误时,管理员可以远程登录系统对用户采集新的样本以更新其人脸模型。对系统进行测试,发现其能够稳定运行;测试模型,发现模型更新后对已知人脸与未知人脸识别评分之差为更新前的4.63倍,即识别的正确率高于更新前的正确率。可以认为系统通过更新模型能够减少由于特征变化引起的识别错误。关键词:树莓派;在线人脸识别;OpenCV;LBPH;模型更新中图分类号:TP391.4

文献标识码:A

文章编号:1674-6236(2019)22-0152-05

OnlinefacerecognitionattendancesystembasedonRaspberryPi

ZHANGYi⁃fu1,CHENTian⁃fei1,ZHANGJian⁃song2

(1.SchoolofElectricalEngineering,HenanUniversityofTechnology,Zhengzhou450001,China;2.HenanEducationTechnologyandEquipmentManagementCenter,Zhengzhou450004,China)Abstract:Thefacerecognitionattendancesystemmaybewrongduetousermakeuportheotherreasons.TheRaspberryPi-basedonlinefacerecognitionattendancesystemusesOpenCV'sintegratedLBPHalgorithm.Whenanidentificationerroroccurs,theadministratorcanremotelylogintothesystemtocollectnewsamplesfromtheusertoupdatetheirfacemodel.Thesystemwastestedandfoundtoberecognitionishigherthanthecorrectratebeforetheupdate.Itcanbeconsideredthatthesystemcanreducerecognitionerrorscausedbyfeaturechangesbyupdatingthemodel.Keywords:RaspberryPi;onlinefacerecognition;OpenCV;LBPH;modelupdate人们为了外貌,往往会做不同的发型、化不同的妆,进而引起人脸特征变化,带来人脸识别考勤困难[1]。很多人脸识别考勤系统只采集一次人脸数据,无法保证人脸特征变化后的可靠性。针对以上问题,设计了一种在线人脸识别考勤系统。该系统基于树莓派,使用OpenCv开源计算机视觉库[2]集成的局部二值模式直方图(LocalBinaryPatternsHistograms,LBPH)算法[3]实现人脸识别与模型更新。可定期采集并更新用户的脸部数据,以提高系失败。

收稿日期:2019-03-29

稿件编号:201903197

统的识别精度,避免由于面部特征变化引起的识别

stable.Aftertestingthemodel,itisfoundthatthedifferencebetweentheknownfaceandtheunknown

facerecognitionscoreafterthemodelupdateis4.63timesbeforetheupdate,thatis,thecorrectrateof

1方案选择与设计

系统首先已有的数据模型识别人脸。当出现由面部特征变化引起的识别错误问题时,管理员能够使用虚拟网络控制台(VirtualNetworkConsole,VNC)功能[4]远程登录树莓派并开启摄像机采集新人脸图像并更新模型,以提高系统识别的正确率。模型更新整体思想是,对模型进行不断更新训练、测试、更新训练、测试……最终达到需要的精度后,将模型数据保存。系统的核心是OpenCV实现人脸识别的FaceRecognizer类,它提供函数“update()”用来更新已训练的人脸模型,与训练新模型的函数“train()”

基金项目:河南工业大学科教融合项目(26400107);河南工业大学大学生创新创业训练计划重点项目(201910463031)

-152-

作者简介:张一夫(1997—),男,河南郑州人。研究方向:图像处理、自动控制。

张一夫,等基于树莓派的在线人脸识别考勤系统

不同,“update()”函数会在不删除任何已有模型数据前提下对模型进行更新。

1.1方案选择在人脸识别算法上,FaceRecognizer集成了特征

脸[5](EigenFaceRecognizer)、费舍尔[6](FisherFaceRecognizer特征脸首先将所有训练用样本和待识别图像设)和LBPH(LBPHFaceRecognizer)3种算法。

置成相同大小,使用主成分分析技术(Principal

ComponentsAnalysis,PCA)[7]

的方法将人脸样本投到

子空间训练,然后计算与待识别人脸图像之间的距离,当足够接近时判断为训练样本库中的人脸,即识别成功[8]。但该方法对样本要求较高,是否准确对齐图像数据直接影响了训练质量的好坏。

费舍尔通过线性判别式分析(Linear

Discriminant量,其性能Analysis在很大,程LDA度)[9]来减少人脸识别的计

算上取决于输入模型的数据。如果仅有一种光照强度下的样本,那么应用到不同光照的环境时,很有可能出错。

然后将这些直方图依次连接在一起形成LBPH将图像分成数块,并提取每块的直方图,

LBP特征的统计直方图,只描述图像的局部特征[10]。这种算法

具有灰度不变性、旋转不变性和光照不变性[11]。且不将整个图像看作高维向量,速度较快。

性。其灰度不变性、LBPH的计算量较小,旋转不变性和光照不变性能够能够保证人脸识别的时效保证不同条件下的识别精度。且由于算法的原因,特征脸和费舍尔不能更新模型数据,故最后选用了

LBPH1.2系统整体设计的方法。

树莓派首先打开USB摄像机,若不需要更新模型,则等待用户选择考勤后进入人脸识别考勤程序。系统会根据人脸识别结果记录考勤情况,直到考勤结束。如需更新模型,则要求用户输入密码获取管理员权限。密码无误后,进入模型更新程序。待更新完成后,对模型的精度进行测试。如果符合要求就保存模型并返回,否则继续更新模型。程序流程如图1所示。

2人脸识别考勤系统设计

人脸识别的基础是人脸检测[12]。检测到人脸后再使用用户数据模型进行人脸识别。当人脸与用户模型匹配时,记录结果,否则提示用户检测到未知人

脸。其流程图如图2所示。

图1整体系统流程图

图2

考勤流程图

2.1人脸检测的实现系统首先将USB摄像机采集到的图像灰度化处

理[13]以减少计算量,然后将OpenCV自带的人脸数据模型\"haarcascade_frontalface_default.xml\"加载到级联分类器[14]“CascadeClassifier”以检测图像中的人脸。在分析图像时,调用该类下的“detectMultiScale()”函数,根据其返回值判断检测区域内是否有人脸。

2.2人脸识别的实现在人脸检测的基础上,使用

LBPHFaceRecognizer_create该类中“read()”函数加载训练好的人脸模型。开启进行人脸识别。首先由摄像机读取画面后,调用OpenCV人脸分类器模型探测灰度化图像中的人脸。当检测到人脸时,使用函数“predict()”进行预测。该函数会返回预测的用户标签“label”和置信度评分“confidence”。其中用户

-153-

《电子设计工程》2019年第22期

标签为用户名,而置信度评分为待测人脸与模型的接近程度,OpenCV中LBPH置信度评分值越小,越接近标签所对应的模型[15]。最终根据置信度评分是否小于设置的阈值判断识别结果,如图3所示。

图3人脸识别的实现

3模型更新系统设计

人脸数据模型的产生过程基本可以分为采集数据,训练模型两步。对模型进行测试,如果模型的精度满足要求,可以直接使用,否则需要进行更新优化。对精度不足的模型添加新样本后使用函数“update()”更新,达到要求后即可使用。流程如图4所示。

图4

模型更新流程

3.1模型更新系统整体结构系统逻辑上分模型创建和模型更新两部分,分

别有各自的图像采集、样本读取、模型读写模块。使用时系统读取已经存在的模型,摄像机采集新图像后优化模型,待完成后写入系统保存。如图5所示。

3.2模型更新系统程序设计3.2.1样本的采集为保证样本的训练的质量与效率,首先检测摄

像机获取图像中的人脸,根据人脸位置去除冗杂的背景,最后存储灰度化后的人脸。函数detectMultiScale()”的返回值x、y、w、h反映了人脸的位置和大小信息。x与y分别代表了图片中人脸

-154-

图5模型更新系统整体

的位置;w、h则代表了人脸的宽度与高度,截取从x到x+w宽度、从y到y+h高度的图像部分即获得一张除掉背景的人脸图像。使用OpenCV函数“imwrite)”将图像保存至写有用户编号的文件夹中。

3.2.2样本的训练与更新人脸识别模型创建函数“train()”和更新函数

update()”使用方法相同。以训练样本为例,首先遍历样本库中每个用户文件夹和里面的样本,然后将样本路径生成TXT文档。根据TXT文档中的路径,将样本存储在链表中,对链表内样本使用“train()”函数训练出模型,训练完成后使用“save()”函数将其保存。

3.2.3模型更新系统流程首先加载之前训练好的模型数据,然后读取一

帧摄像机的画面,使用函数“predict()”进行人脸识

别。该函数最终会返回对应的用户标签及其置信度评分值。文献[15]提出,使用LBPH算法时,用户标签对应的置信度评分数值低于50比较可靠,即低于50效果,时,将阈值选为人脸与模型更加匹配。为了获得较好的识别50。当置信度评分大于50时采集新的样本,小于50时候不采集,仅仅输出用户名。每采集5张后可点击升级模型按钮调用“update()”函数更新模型。如果不退出程序,则继续进行模型更新程序构成循环。如图6所示。

4系统调试

4.1系统测试搭建系统硬件,启动树莓派,使用VNC软件登

(““张一夫,等基于树莓派的在线人脸识别考勤系统

图6模型更新系统流程图

录树莓派并运行程序。点击界面上的“模型管理”按钮,点击“记录图像”按钮采集新样本,然后点击“升级模型”按钮测试模型更新功能。测试其人脸识别功能,发现其能够识别已知面孔。如果使用没有录入数据的“标准Lena”中的面孔进行检测,则会输出Unknown”字样。系统测试如图7所示。

图7

系统测试

4.2模型测试系统加载模型后应具有识别已知人脸、拒绝未

知人脸的功能,分别使用已知人脸与未知人脸标准数据集对模型进行测试。YaleB数据集[16]含有同一人不同状态下多张图片,训练模型采用部分图片作为样本,剩余图片作为已知人脸测试数据。FDDB数据集[17]中不含YaleB数据集的图像,可用作未知人脸测试数据。

首先选取YaleB数据集中同一人部分图片作为训练样本,剩下的作为个人测试数据集。第一次选择15张样本,使用系统训练保存并备份生成的模型文件;第二次将样本数量增加至30张,更新后再次备份生成的模型文件。分别使用YaleB数据集和FDDB图片返标准数据集对两模型进行测试。将各个测试回的置信度评分保存到电子表格,使用MATLAB布曲线拟合,统计表格中各评分出现的次数,然后求出正态分布的峰值。结果如图以正态分8

所示。

从图中看出,使用15个样本时,YaleB数据集的评分的正态分布均值为94.0711,FDDB数据集的评分均值为102.7356,二者相差8.6645。使用“update)”函数更新至30个样本时,YaleB数据集的评分的正态分布均值为55.4157,FDDB数据集的评分均值

为95.5406,二者相差40.1249。更新后的模型对已知人脸与未知人脸识别评分之差为更新前的4.63倍。因此可以认为,更新模型有利于提升系统对已知人脸的识别精度。

5结束语

基于树莓派的在线人脸识别考勤系统在使用人脸识别完成考勤的同时也实现了采集新样本、优化模型的功能,可以降低由于样本问题导致识别错误发生的概率。使用OpenCV集成的LBPH算法创建并优化用户面部模型,待模型精度达到要求后,调用模型识别人脸并保存考勤记录。通过系统调试发现能够稳定地实现考勤、更新模型的功能。对模型进行测试,发现更新过后的模型的识别精度比更新前有所提高。

参考文献:[1]冯代高,补丁集成学习的鲁棒人脸识别算法张友俊.改进随机子空间LDA36(9).[2018-05-24].http://www.arocmag.com/[J/OL].结合多2019,[2]宋保,article/02-2019-09-058.html.李迎正,孙岩,等.基于OpenCV的智能公-155-

(“《电子设计工程》2019年第22期

图8数据集测试结果

交系统研究[J].电脑编程技巧与维护,2019(3):[3]朱峰.一种基于多尺度LBPH特征的快速人脸识别算法[J].计算机应用与软件,2015(8):315-319.[4]SimonMonk.树莓派开发实战[M].北京:人民邮[5]李婧,李志强.关于PCA的人脸识别技术的研究[6]张静然.局部Fisher准则以及子空间分析的人脸[7]徐肖亮,邓燕妮.基于改进PCA算法的人脸识别[8]杜娟.基于OpenCV的人脸识别算法研究[D].银[9]楚建浦,何光辉,刘玉馨.优化的小波变换和改进[10]张洁玉,武小川.加权局部二值模式的人脸特征2016(11):147-150.川:宁夏大学,2018.研究[J].科学技术创新,2019(9):68-70.识别算法研究[D].赣州:江西理工大学,2018.[J].电子测试,2016(23):9-10.电出版社,2017.123-127.提取[J].中国图象图形学报,2014,19(12):1794-[11]亢洁,李珍,王晓东,等.基于MB_LBP旋转不变[12]何瑶,陈湘萍.基于OpenCV的人脸检测系统设[13]宋凤菲.彩色图像灰度化及其效果的客观评价方[14]阳崇云.基于级联AdaBoost分类器的多视角人[15]JoeMinichino,JosephHowse.OpenCV3计算机机[16]余琨.基于稀疏表示和聚类字典学习的人脸识别[17]罗达志.基于深度学习的迭代定位式人脸检测与分割方法研究[D].广州:华南理工大学,2018.算法研究[D].南京:南京邮电大学,2015.机械工业出版社,2017:81-82.脸检测[D].武汉:华中科技大学,2016.法研究[D].厦门:华侨大学,2014.计[J].新型工业化,2018,8(6):83-89.技大学学报,2017(4):164-167.1801.特征的AdaBoost人脸检测算法研究[J].陕西科器视觉Python语言实现(原书第2版)[M].北京:的LDA相融合的人脸识别算法[J].计算机科学,-156-

因篇幅问题不能全部显示,请点此查看更多更全内容