李颖聪 陈贝文 廖晓芳 朱皓霖 龚焯贤
摘要:人脸识别是目前较为流行的一种生物特征识别技术,其应用广泛,常被应用于门禁、移动支付等方面。为了弥补其他生物特征识别技术在身份认证方面的缺陷,发展人脸识别技术,文章立足轻量以及实用的思想,开发了一套基于Python+OpenCV的人脸识别系统。该系统分为三个部分,分别是人脸录入、人脸训练和人脸识别。文章将会对系统的架构、开发系统所采用的技术等进行详细的介绍。
关键词:人脸录入;人脸训练;人脸识别;LBPH算法
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2022)18-0053-03
开放科学(资源服务)标识码(OSID):
1 引言
随着社会的发展和科技的进步,当今世界对于快捷有效的自动身份认证有着迫切的需求。而生物特征识别技术刚好可以有效地解决身份认证的问题。生物特征识别技术是通过采集人的生物特征样本进行人的身份识别。常见的生物特征识别技术有DNA识别、虹膜识别、指纹识别等[1]。基于DNA的身份验证是最为准确的身份验证方法之一。通常情况下,每个体都具有独一无二的DNA信息,基于此通过DNA身份验证可以准确地识别出个体的身份。但是由于该方法采集和验证DNA信息所需的时间成本和金钱成本较高,因此该方法很难得到大规模的推广与应用。基于虹膜的身份验证具有唯一性和稳定性,但是该方法所需的设备难以小型化,因此该方法在市面上很难得到推广。基于指纹的身份验证具有稳定性和可靠性,但是其对环境的要求较高,手指的清洁度和完整性均会对识别的结果产生影响[2]。相较于上述的生物特征识别技术,人脸识别技术具有快捷、隐蔽、非接触等特点。人脸识别技术的特点使得人脸验证具有巨大的应用潜力和研究价值。目前人脸识别技术应用于我们身边的各个领域,例如基于人脸识别的门禁、基于人脸识别的移动支付、基于人脸识别的车站验票等[3-4]。为了弥补上述生物特征识别技术的不足,本文将基于Python+OpenCV设计一款人脸识别系统。该系统首先通过摄像头采集人脸图像并收集录入者的身份信息,然后基于LBPH算法[5]对收集到的人脸进行训练。人脸识别阶段,系统通过调用摄像头对识别者进行人脸匹配,摄像头先识别出画面中的人脸,再将其人脸图像与数据库中的人脸信息进行匹配,进而确定其身份。
2 人脸识别技术的研究现状
典型的传统的人脸识别方法有基于模型的人脸识别方法、基于几何特征的人脸识别方法、基于代数特征的人脸识别方法、基于局部保值映射的人脸识别方法、基于稀疏表示的人脸识别方法等。传统的人脸识别方法虽然发展比较成熟,但是仍然存在一定的缺陷:一些传统的人脸识别方法必须要有人为设定的特征作为帮助,但是人为设定的特征往往会给特征提取和识别过程带来误差;在没有人为干预的情况下,传统人脸识别方法往往不能自动地从原始图像中提取有用的特征;传统人脸识别方法产生的特征被认定为浅层特征,不能从原始图像中获取更加深入的高语义特征以及深度特征。由于非线性因素的影响,同时人脸识别自身的复杂性等条件的制约,传统的人脸识别方法存在的这些缺陷,极大地降低了人脸识别的精度,因此需要更好的方法解决此类问题。
深度学习通过模拟人脑神经系统来处理消息,能够处理人脸识别中的复杂问题。在海量人脸数据时代,基于深度学习的人脸识别无论在速度还是准确性方面都已經取得了最好的效果,对深度学习的理论研究和人脸识别的实际应用具有重要的意义。基于深度学习的人脸识别方法的流程主要包括了人脸预处理(人脸检测、人脸对齐、标准化、数据增强等)、特征学习、特征比对等步骤,其中人脸识别的关键是特征学习,如何提取强判别性和强鲁棒性的特征是人脸识别的研究重点。本系统是在深度学习的基础上进行开发的。
3 系统结构设计
3.1 系统设计
基于对人脸识别场景和应用的了解后,对系统的结构和内容进行了划分与构思。由于一般的系统设计都需要图形化界面、系统功能以及相对应的子系统。因此,我们基于Python的Tinker模块设计了人脸识别的使用界面,并添加了人脸识别,人脸训练,人脸录入以及视频识别这四大功能。
1)使用界面。系统的使用界面采用单开窗口,即在当前界面下进行功能操作会跳转到新的窗口,在新的窗口下完成该功能,这使得界面更加整洁,操作更加清晰。在使用界面窗口下会显示当前时间,并在下拉选项中有使用方法介绍和团队介绍。剩余的两个功能选项可以让用户自由选择操作,在完成当前操作可以进行后续的人脸识别功能,使用界面如图1所示。
2)人脸录入功能。在进行人脸识别操作前需要完成对被识别人员的信息登记和录入。在信息录入部分,对于首次进行信息录入的人员,录入信息填写姓名处需要填写英文字母缩写。对于非首次进行信息录入的人员,重复进行信息录入会提示信息录入失败。录入完信息后,系统将自动采取被识别者的人脸图像,并将其保存到数据库中。人脸录入以及采集过程如图2所示。
3)人脸训练功能。人脸训练功能是基于LBPH算法对图像进行特征提取和识别。通过训练大量的图片从而提高对图像的识别的准确率和速度。该功能的主要原理为将一个图像分为若干个区域,对每一块区域都进行LBP特征提取,再将这些特征建立为直方图。这样操作的目的是缩减模型识别图像所需要的时间。
4)人脸识别功能。人脸识别功能是系统的主要功能。它是将摄像头抓拍到的人脸与人脸录入收集到的存放到数据库中的人脸进行匹配,若在数据库中找到与之匹配的人脸用绿框框识人脸并且标注识别的信息;若在数据库中未找到与之相匹配的人脸则用红色框框识人脸并且标注为unknownface(陌生人脸)。人脸识别过程如图3、图4所示。
5)视频识别功能。除了对人像采集的识别,系统还可以通过导入视频文件对视频画面中出现的人脸进行识别侦测,并且会自动评判识别出的人脸的相似度。视频识别结果如图5所示。
3.2 系统配置信息
本人脸识别系统利用的是Python3语言编写,OpenCV对应的版本为3.4.1。使用的平台为Anaconda 3.6版本以及Pythcharm x64位编程软件。实验以及执行的电脑环境系统为Windows10操作系统,运行内存为4GB,CPU为Intel(R) Core(TM)i5-8265处理器,处理速度为1.6GHz。
3.3 系统采用技术介绍
本系统设计采用的是OpenCV,全称Open Source Computer Vision Library,是一个开源的计算机视觉库,可以从它的官网http://opencv.org免费获取,作为一款跨平台的计算机视觉和机器学习软件库,它可以运行在Linux、Windows、Android以及Mac Os操作系统上。OpenCV的优点在于它轻量级而且高效——通过一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的多种通用算法。
OpenCV主要包含图像处理、高层用户交互、机器学习、目标检测以及视频等多种模块。其中,系统主要应用于opencv_video、opencv_objdetect、opencv_imgpro等功能,图像处理方面主要运用了灰度图转换模块,目标检测则运用了Haar的各类特征检测,如对人眼,耳朵,鼻子以及对手的人体检测。视频模块则是采用了目标跟踪、背景减除等方法来实现对视频中提取检测到的人脸图像。
在本次人脸识别系统中,采用的是LBPH算法(局部二值模式法)。建立在LBPH基础之上的人脸识别法基本思想如下:首先以每个像素为中心,判断该像素与周围像素灰度值大小的关系,并对其进行二进制编码,从而获取整幅图像的LBP编码图像[2];再将LBP图像分为gradx*grady个区域,获取每个区域的LBP编码直方图[6],继而得到整幅图像的LBP编码直方图。通过比较不同人脸图像的LBP编码直方图,达到人脸识别的目的,其优点是不受光照、缩放、旋转和平移的影响。
4 系统的设计与实现
4.1 系统执行整体架构
基于轻量实用的考虑,该人脸识别系统分为用户层、控制层以及执行层。其中,用户层主要通过用户一系列的指令来执行对应的功能,并且从中获取相对应的反馈。控制层主要是将用户传达的指令,传送到下一层即执行层进行操作。执行层则是执行上一层提交的指令,然后将结果反馈给控制层。以上是本系统所执行的整体架构。
4.2 系统逻辑步骤
人脸识别系统主要分为三大结构:人脸录入、人脸训练以及人脸识别。其整体的结构逻辑步骤如图6所示,在人脸识别系统首界面上选择视频识别或者人脸录入后,便可进行对应选择的后续的训练模式和人脸识别模式。
图7为人脸录入的逻辑步骤。首先,需要输入录入者的身份信息。信息录入成功后,调用本地摄像头进行人像采集。在此过程中,系统会将图像转换成灰度图进而简化矩阵,这将有利于提高运算的速度,进而更快地识别出图像中的人脸。随后将抓拍检测到的人脸图像,并与录入的信息保存到数据库中。完成录入后便可执行训练模式或继续进行人脸录入。
图8为人脸训练的逻辑步骤。开始训练前,系统将采样的300张人脸图像作为数据进行图像训练。若收集到的图像少于300张,则训练失败。若被抓拍的人脸达到所对应的要求,则系统将进行训练模式。首先加载抓取成功的图像并进行灰度转化,将图像矩阵简化,从而提高图像的计算能力;再将其转化为NumPy数组,并交给分类器进行进一步的处理。然后通过LBPH算法对数据进行训练,使机器更好地理解图像的人脸,从而强化机器对人脸的识别。最后将训练的结果保存在相应的文件中。
图9为人脸识别的逻辑步骤。系统通过调用摄像头对识别者进行人脸匹配,识别出画面中的人脸后,再将其人脸图像与数据库中的人脸信息进行匹配,进而确定其身份。若识别成功,则用绿框框选人脸并标注出识别者的姓名;若识别失败,则用红框框选人脸并标注为陌生人脸。
5 结束语
本文設计并实现了一个基于Python+OpenCV的人脸识别系统。该系统可实现对人脸的轻松识别,其轻量便捷,使用简单易懂。方便移植的特点也使得系统能够在各个场合上随时应用。该系统对硬件的要求不高,在大多数的电脑设备上都能快速使用到该系统的各个功能。通过设计该系统的人脸识别、人脸训练等功能,从而能够满足用户在对人员进出记录或上班签到等多种情景的需要,方便其管理。在该系统设计与实现的过程中,也学习到了丰富的知识和经验。
参考文献:
[1] 刘永信,李琳莉,巴雅日图.人脸识别方法综述[J].内蒙古大学学报(自然科学版),2009,40(4):493-498.
[2] 李成勇,王莎,陈成瑞.基于OpenCV的人脸识别系统设计与实现[J].国外电子测量技术,2021,40(11):168-172.
[3] 庄薪霖.人脸识别方法综述[J].科技创新与应用,2022,12(2):130-132.
[4] 刘卫凯,郝雅倩,郑晗,等.人脸识别综述[J].信息记录材料,2018,19(7):13-14.
[5] 王振宇.面向人脸识别的特征提取技术应用研究[D].南京:东南大学,2016.
[6] 宋俊芳,马浩轩,赵海莉,等.基于Haar级联分类器和LBPH算法的人脸识别[J].软件,2021,42(4):45-47.
【通联编辑:谢媛媛】