基于人脸识别的高校实验室门禁系统

2021-07-12 08:35范书锋吴宇环谭永辉闫云熙谢慷慷
科技视界 2021年18期
关键词:蜂鸣器线程人脸识别

范书锋 吴宇环 谭永辉 闫云熙 谢慷慷

(黄河科技学院,河南 郑州 450000)

0 引言

学校实验室对学生自由开放后,采用纸质方式进行出入信息记录,管理工作较烦琐,出错率较高,因此,对学生自主进出实验室采用智能化管理十分有必要[1]。且在当今新冠肺炎疫情形势下,本系统加入了口罩检测功能,即可无人值班也能规范进出者的一些行为。

1 系统硬件设计

1.1 系统总体设计

本系统包括两大部分,分别是STC51控制端和Python核心端。STC51硬件模块主要通过内部接入的定时程序进行测距命令驱动超声波模块进行测距,并将STC51通过UART与上位机连接,实现Python与STC51的信息交互[2]。Python核心系统通过检测来自单片机的信号,识别是否为驱动OpenCV的指令,当OpenCV开启摄像头则立即进行口罩检测与人脸识别功能,并通过GUI界面显示出来,最终系统根据识别结果判别是否向单片机下达电机驱动指令。总体结构如图1所示。

图1 系统总体设计框图

1.2 STC51辅助系统

STC51辅助系统主要包括超声波测距模块、步进机驱动模块和蜂鸣器提示模块。

超声波测距采用HY-SRF05型号,此模块可向外界发送一定频率的声波,且其精确测量2~450 cm传感距离,精度可达3 mm。当检测到前方有遮挡物时,声波就会被反射回来,被模块接受后,开始计时,记录高电平时间,由时间数据可计算出距离[3]。

步进机驱动模块采用28BYJ-48的型号,其是4相永磁式减速步进电机,采用的转动方式是八拍模式,而齿轮内部有8个定子,每8个节拍为一循环,转子一圈需要64节拍,由齿轮的减速比1∶64可得,每64节拍转动5.625°,通过计算算出90°需要1 024节拍,在程序中设置转动的正反方向,每个方向都转动1 024节拍,并设置标志位和延时[4],一旦转动90°时就会停止转动,一段时间后进行反转,以此达到门禁作用[5]。

蜂鸣器提示模块采用无源蜂鸣器,单片机加以0.5~4.5 kHz的频率可驱动内部蜂鸣器发出特定音频,即只要对蜂鸣器设置一定的工作频率,让蜂鸣器以设定的频率工作,就会发出特定的提示音。

1.3 Python控制系统

Python控制系统主要包括基于pySerial与单片机进行串口通信的模块、基于OpenCV的摄像头触发和人脸标识、基于CNN的口罩检测和人脸识别。其Python控制系统流程图如图2所示。

当单片机测距成功后,单片机通过UART串口把数据通过pySerial告知Python,使之调用openCV打开摄像头进行人脸标识,人脸标记成功之后再通过卷积神经网络对其进行口罩检测和人脸识别[6],最后把识别的结果与MySQL中的数据进行比对,然后通过PYQT界面展示出来,最后也可以把人员识别的信息记录在数据库,方便管理员查询。

2 系统软件设计

2.1 基于OpenCV的人脸检测和图像处理

为提高系统的可靠性,应首先进行图像预处理,这里使用OpenCV中自带的基于Haar特征的级联分类器进行面部检测[7]。其库具有级联人脸分类器,库中包含人脸识别模块。仅通过加载级联文档,即可检测动态或静态图像中的面部。文档格式为XML,文件名为haarcascade_frontalface_default.xml。首先,根据摄像机代码从计算机摄像机调用VideoCapture函数,然后使用cap.read()方法在摄像机中读取图像。之后,使用captureFrame()函数从输入图像中检索边框,并检索框架,并使用detectMultiScale()函数完成人脸识别。Python控制系统如图2所示。

图2 Python控制系统

2.2 口罩检测和人脸识别

通过构建TensorFlow+Keras+OpenCV的模型来进行口罩检测,此模型的数据集来源于网络,包括2000幅戴口罩图片,580幅无口罩的人脸。然后将这些图像链接于用TensorFlow框架构成的CNN模型,最后通过系统的摄像头来检测人们是否佩戴口罩。首先,对上述的两类图像进行是否戴口罩的分类,然后通过旋转、拉伸等办法改变图像,使数据增强;之后再将增强后的数据分为训练集和检验集[8],通过CNN建立模型,再对模型进行预训练和训练,之后导入检测程序,最后把是否检测到口罩的信息通过GUI界面显示出来[9]。

人脸识别通过CNN实现。CNN由卷积层、池化层、连接层组成。通过卷积层对由OpenCV检测后的图像进行特征提取,小部分的层进行边缘、线等低级特征提取,更多的层迭代此低级特征以提取更复杂的特征。后用池化层对卷积层训练的特征图进行二次采样。最后,形成卷积层+合并层的复合层,应用于模型任务。同时,将所有特征图重新形成为1×N矢量,然后连接复合层进行模型训练[10],之后导入识别程序可完成。

2.3 人机交互界面设计

为提高用户体验,本系统设计了一套GUI界面。其可分为识别界面和管理界面(如图3所示)。用户可在识别界面内看到自己的基本信息及出入时间,也用于未戴口罩提醒及戴口罩显示的功能。管理员可进入管理界面,进行人脸信息注册、模型训练、删改学生信息等操作[11]。

图3 GUI界面流程图

2.4 基于多线程实现自动识别

本系统采用PyQT5的QThread来实现自动检测与识别,其流程图如图4所示。主线程显示主界面,线程1负责与单片机进行通信检测是否有人到来。检测到人到来时,线程2在识别界面上更新相机捕捉的人脸,根据余晖效应实现人脸的动态显示。延迟几秒后,通过线程3进行口罩检测。检测后,通过线程4进行人脸识别。人脸识别成功后,通过线程5与单片机进行通信,打开门禁。

图4 线程流程图

3 系统测试与分析

本系统选定在白天的室外环境下,以20名学生为对象进行了人脸识别的测试,根据光照强弱及超声波检测距离的不同而得到不同的结果,所形成的数据见表1和表2。由表中数据可以看出,当人员检测距离摄像头为20~60cm时,人脸识别成功率为97%,口罩检测成功率为100%;经过对系统测试的数据分析,发现在距离摄像头50 cm进行对象检测的时候,误别率和误报率均在2%,人脸识别成功率为98%,识别时间2 s,效果最佳。

表1 口罩检测结果

表2 人脸识别结果

4 结语

本文采用人脸识别技术对高校实验室进行信息化管理,对于在系统注册过的人员经人脸识别通过后可进入实验室,并记录人员信息,同时也便于管理人员统计进出者信息。此外,在新冠肺炎疫情防控的形式下,系统还具有检测佩戴口罩的功能,提高了实验室使用的安全性。在此基础上,系统优化了人脸识别算法,使误识率和误报率进一步减小;另外对于人员进出情况的信息,可将其导出到数据库,方便管理员实时随地查看数据。

猜你喜欢
蜂鸣器线程人脸识别
电动自行车产品车速提示音检测现状和整改技术研究(2)
人脸识别 等
掌控板制作简易钢琴
揭开人脸识别的神秘面纱
单片机驱动蜂鸣器的程序设计
浅谈linux多线程协作
丰田凯美瑞240V车间隙警告蜂鸣器异常鸣响
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别
基于上下文定界的Fork/Join并行性的并发程序可达性分析*