APP下载

基于OpenCV的人脸识别算法在智能学生签到系统中的应用

2022-11-11徐常惠高艳平马文龙朱晨鑫

无线互联科技 2022年16期
关键词:活体置信度人脸识别

徐常惠,高艳平,王 奥,马文龙,朱晨鑫

(河南科技大学,河南 洛阳 471000)

0 引言

近年来,随着IT行业的兴起,人工智能技术得到了快速发展,人脸识别技术成为当今智能时代下的热门技术,被应用于社会的各个领域。随着研究的深入,人脸识别的准确率越来越高,安全性也得到了进一步提高,已被广泛应用于银行等金融行业的业务办理、网点监控、安全防控中[1],以及商业领域中的刷脸支付、生活领域中的刷脸开锁、公安领域中通过人脸识别辨认身份信息等方面。随着人脸识别技术进一步发展成熟,其应用范围也将不断扩大。

目前,不少高校学生自上了大学后,出现生活懒散、学习怠慢等问题,层出不穷,相信人工智能技术在高校教育中也将大有用武之地,帮助大学生改掉不良习惯。

1 人脸识别技术简介

人脸识别技术,属于生物识别技术的一种,是用摄像头或者摄像机等图像采集仪器采集人的脸部形成视频流,该技术从视频流中采集一帧帧图片,把图中的每一个像素点转化成数据后,从数据中测量出五官的大小和距离,这些数值转化成数码,也就是每个人独一无二的脸部识别码,并存储到数据库中。此后,每当有人脸被扫描时能自动计算其脸部识别码,一旦与数据库所存储的数据有吻合,则会识别出其身份。

1965年,Chan和Bledsoe在Panoramic Research Inc.上发表了人脸自动识别技术报告[2],这是关于人脸识别最早的学术论文。人脸识别技术研究内容包括人脸检测、人脸表征、人脸识别、面部表情、姿态分析、生理分类[3]。而在识别算法研究中又有基于人脸特征点、基于整幅人脸图像、基于模板、利用神经网络进行识别等不同的算法。本文所用的人脸检测、人脸识别和人脸数据功能均来自Python扩展库OpenCV,在整幅人脸图像上使用LBPH(Local Binary Pattern Histogram,局部二进制模式直方图)来实现。

2 智能学生签到系统的设计背景

目前的高校课堂教学中,少数学生存在着惰性和侥幸心理,习惯性逃课,有的同学甚至从来没去教室上过课[4]。大学是学习技术的地方,也是为未来的工作打好夯实的基础,而签到是老师为了保证学生到课,保障教学效果的必要手段之一。目前的签到方式包括人工点名签到、利用手机等电子设备签到等,这些方式均存在弊端,如表1所示,人工签到浪费时间,电子签到可能出现代签的情况。所以本系统通过使用人脸识别技术,对现有的电子签到系统进行改进,避免了他人代签或异地签到(学生不在教室)的情况。

表1 当前签到方式利弊

3 智能学生签到系统的实现流程

本系统使用Python语言实现,基于OpenCV相关库进行设计,其工作流程如图1所示。将摄像头拍摄的照片或已有的学生照片传入系统,然后对照片进行预处理和数据训练,存入数据库中,签到时可以直接调用数据库中处理好的数据进行比对。在发起一次签到后,系统会打开设备摄像头,获取设备中出现的人脸,对识别到的人脸数据进行匹配,如果设备识别出来的人脸数据信息与数据库中的人脸训练数据信息没有匹配成功,可在规定次数内反复匹配,在识别的人脸数据信息与数据库中的人脸训练数据信息成功匹配之后显示签到成功,否则显示签到失败,完成一次签到活动。

图1 智能考勤管理系统工作原理

4 人脸识别算法研究

4.1 灰度化处理和图像处理

彩色图中的特征数据太多,常见的24 bit色彩大概是1 678万种,也就是常见的1 600万真彩色。以最常见的RGB格式为例,像素点由R,G,B 3个数值共同表示,从而呈现出彩色。其中,R,G,B是由不同的灰度级来描述。3字节(每个分量用1 Byte储存,共24 bit)可表示一个像素,灰度代表该颜色的深浅,越大越深。

利用Opencv库进行人脸识别,需要先进行灰度化处理,也就是将彩色图片转化成灰色图片。具体实现方法为使用Python语言导入CV2库,然后使用CV2.cvtColor(Src,Code,Dst,DstCn)(Src,要更改颜色的图像;Code,色彩转化代码;Dst,与Src图像大小和深度相同的输出图像;DstCn,是目标中的频道数)。灰度化的目的是将每个像素点的RGB值统一成同一个值,灰度化后的图像由三通道变为单通道,单通道的数据处理起来会简单许多。在灰度化处理之后再开始图像处理,将灰度化的图片进行数据化整理。每次图片数据处理后都会存成文件,经过大量的图像处理后,形成一个小型数据库,为后续的人脸识别比对提供数据训练的基础。

4.2 活体检测

活体检测技术是一项应用在人脸检测方面的核心技术,这项技术的运用,可以在很大程度上避免有人利用照片、视频、人脸模型达到欺骗检测系统的目的[5]。而在本系统中使用活体检测技术的目的就是为了防止部分同学会使用照片或视频的方式进行代签。目前的人脸活体检测算法中,可使用的方法大致分为基于手工特征的方法、基于深度学习的方法、基于更多学习范式的人脸活体验证方法、面向未知类型攻击的人脸活体验证方法[6]。在实际应用中,采取的是根据人脸关键点的活体检测方法来实现对照片或者真人的区分[7]。例如,可以将两眼之间的位置作为两个关键点,将这两个关键点的距离进行计算并存储。于是,便可以用n个关键点将眼睛部位框出来,再将其坐标化,每个点就拥有了对应的X值与Y值。从而可以找到睁眼状态下Y的最大值Ymax和最小值Ymin,同理可以找到闭眼状态下的ymax和ymin。此时,可以得到如图 2所示的上下眼皮之间的最大距离,通过对人像的多次采集,会得到多次数据,如果上下眼皮之间的最大距离发生了改变,便可以认为这不是图片冒充真人进行签到,同时为了防止关键点标注时产生的误差,故当Y(差值)≥0.05时,方可认为通过了活体检测,如公式(1)所示。

图2 上下眼皮最大距离

Y(差值)=|(Ymax-Ymin)-(ymax-ymin)|

(1)

4.3 基于LBPH的人脸识别以及算法优化

本系统开发采用的技术为基于LBPH(Local Binary Pattern Histogram)的人脸识别[8]。LBPH将检测到的人脸分为小单元,对每个区域的匹配值产生一个直方图,这种方法具有很强的灵活性,允许人脸模型样本和检测到的人脸在不同情况下完成人脸识别。在人脸识别的第一步,首先调取所训练的数据集,然后通过Python的扩展库CV2中的Predict()函数,返回个体标签和置信度评分。

原始LBPH是定义在像素的邻域内,以邻域中心像素为阈值,将相邻8个像素的灰度值与其进行比较。若周围像素值大于中心像素值,则该像素点的位置标记为1,否则标记为0。最终可得该邻域内中心像素点的LBPH值,并用此值反映该区域的纹理信息。

在统计学中,置信度是一个概率样本的置信区间(Confidence Interval),是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数测量值的可信程度范围,即前面所要求的“一定概率”,这个概率被称为置信水平。

在基于LBPH的人脸识别中,会返回一个置信度,置信度越低越好,所以在识别中可以对设备返回的置信度制定一个评判识别好坏的范围,本系统中要求置信度低于30为好的识别参数。但这样的精确度有时还不够准确,或者有时会出现极端情况。因此,在设计过程中采取了统计学的方法,通过多次取置信度,然后取平均值的方法,防止因为出现极端值影响数据结果,因此排除了返回的置信度的极大值和极小值,如公式(2)所示。

(2)

5 结语

本文研究了OpenCV在人脸识别中的具体应用,并在应用客户端通过使用OpenCV库中LBPH的人脸识别技术、图像灰度化技术、图像数据化处理技术,结合基于人脸识别基础的活体检测技术,实现人脸识别签到功能。经多次实验测试,总体识别效果令人满意。在识别功能上,进行了不断完善,基本实现了人脸识别签到功能、教师代签功能、一键导出出勤率等签到系统应有的功能,具有了较好的实用性。但本系统仍存在不足之处,例如:数据库存储方面,没有使用云数据库,而是将数据保存在本地,所以训练的数据量没有巨量数据提供支持,而且通过不断的训练数据,在识别时,对处理器要求较高,使得目前人脸识别的时效性还有待提高。

猜你喜欢

活体置信度人脸识别
人脸识别 等
硼铝复合材料硼含量置信度临界安全分析研究
张帆:肝穿刺活体组织学检查
让活体肝移植研究走上世界前沿
活体器官移植,你怎么看?
揭开人脸识别的神秘面纱
正负关联规则两级置信度阈值设置方法
“汪星人”要打“飞的”——话说活体空运
置信度条件下轴承寿命的可靠度分析
基于类独立核稀疏表示的鲁棒人脸识别