APP下载

基于树莓派的人脸识别门禁系统

2021-08-05高明康晓凤孙典张一凡丁乾张百川

软件工程 2021年7期
关键词:树莓派人脸识别

高明 康晓凤 孙典 张一凡 丁乾 张百川

摘  要:随着智能安防的发展,人脸识别技术已成为智能安防的技术重点。与此同时,树莓派以其价格低廉和高扩展性的特点被广泛使用。本文将人脸识别技术与树莓派相结合设计实现了人脸识别门禁系统。本系统使用Flask框架进行前后端交互,使用MySQL存储数据,使用Face_Recognition模块进行人脸识别。本系统包含视频显示及运算、硬件控制、后台数据管理、数据存储四大模块。使用本系统不仅可以对出入人员进行身份鉴别,还可以与其他系统进行联动。本系统扩展性强,可移植性好,具有广阔的发展前景。

关键词:树莓派;人脸识别;门禁

中图分类号:TP315     文献标识码:A

Face Recognition Access Control System based on Raspberry Pi

GAO Ming, KANG Xiaofeng, SUN Dian, ZHANG Yifan, DING Qian, ZHANG Baichuan

(College of Information Engineering, Xuzhou University of Technology, Xuzhou 221018, China)

2249858875@qq.com; kxfeng07@163.com; dsil3nce@foxmail.com;

2475313260@qq.com; 1617978168@qq.com; 2936937335@qq.com

Abstract: With the development of smart security, face recognition technology has become the focus of smart security technology. At the same time, Raspberry Pi is widely used due to its low price and high scalability. This paper proposes to design a face recognition access control system by combining face recognition technology and Raspberry Pi. This system uses the Flask framework for front-end and back-end interaction, MySQL for data storage, and Face_Recognition module for face recognition. The system includes four modules: video display and calculation, hardware control, background data management, and data storage. This system can be used not only to identify people entering and exiting, but also to be linked with other systems. This system has strong expansibility, good portability and broad development prospects.

Keywords: Raspberry Pi; face recognition; access control

1   引言(Introduction)

隨着当前国内外门禁系统的快速发展,门禁系统早已不是简单的门锁管理,而是已经逐渐发展成了一套完整的出入管理系统,在统计员工出勤率和维护工作环境安全等方面发挥着巨大的作用[1]。而且随着互联网技术的疾速发展,现代人工智能在安防领域有了极大的发展,其中被关注最多的就是人脸识别技术了[2]。

本文设计实现了基于树莓派的人脸识别门禁系统,本系统使用的Flask框架、MySQL数据库均是轻量级框架,减少了性能开销。本系统使用的Face_Recognition与树莓派兼容性高,且能利用树莓派多核运算,充分发掘树莓派性能。同时,为了最大程度满足用户安全需求,本系统与Web服务相结合,用户可根据需求自定义设置门禁参数,使用简单方便,便于用户对门禁系统进行管理[3]。

2  Face_Recognition介绍(Introduction to Face_Recognition)

Face_Recognition是一个简单、强大的人脸识别框架,是世界上最简洁的人脸识别库。我们只需要通过简单的Python语句即可利用Face_Recognition模块完成提取、识别人脸这一复杂过程。值得一提的是,Face_Recognition特别是兼容树莓派系统,可以利用树莓派多核运算。Face_Recognition基于业内领先的C++开源库dlib中的深度学习模型,使用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率[4]。

3   Flask介绍(Introduction to Flask)

Flask是一个轻量级的Web应用框架,使用Python语言编写,较其他同类型框架更为灵活、安全且容易上手。它可以很好地结合MVC模式进行开发,可以根据自己的需求来调用相应的插件,添加相应的功能。

Flask的基本模式为在程序里将一个视图函数分配给一个URL,每当用户访问这个URL时,系统就会执行给该URL分配好的视图函数,获取函数的返回值并将其显示到浏览器上,其工作过程如图1所示。

4   系统设计与实现(System design and implementation)

本系统使用Python语言编写,采用OpenCV实现人脸定位,用Face_Recognition实现人脸数据的建立、训练、识别[5]。Web前后端交互使用Flask框架编写。系统可分为四大功能模块:视频显示及运算模块、后台数据管理模块、硬件控制模块、数据存储模块。四大功能模块如图2所示[6]。

4.1   视频显示及运算模块

本功能模块主要负责将摄像头捕捉到的画面在屏幕上显示出来,并及时将人脸标识出来,将对应的姓名显示在屏幕上。人脸识别总体包括以下几部分:图像采集、图像预处理、人脸检测、特征点定位和人脸对齐、人脸识别等[7],如图3所示。

首先,我们利用OpenCV的resize函数改变摄像头拍摄图像的大小。图像越小,所做的计算就越少,对于性能不是很强的树莓派,这一步是非常重要的。然后我们将获取的每一帧图片使用Face_Recognition默认的HOG(Histogram of Oriented Gridients)特征检测算法进行人脸查找。HOG特征检测算法大致可分为图片灰度化、进行梯度计算、获得梯度方向直方图、将重叠块直方图归一化、获得HOG特征向量这五个步骤[8]。通过判断HOG特征向量,我们可以得知该帧图片中是否有人脸。若该帧图片中没有人脸,则进行下一帧图片的检测;若该帧图片中出现人脸,则计算该人脸的特征向量与数据库中读取的每一个特征向量的距离。若距离较大,我们认为不是同一个人;若距离较小,则我们可以认为是同一个人。此时,我们即将人脸对应的姓名在屏幕上标示出来,并进行开门和记录开门信息的操作。

4.2   硬件控制模块

本功能模块主要负责用硬件模拟开门和关门状态,硬件模块主要由一个红色LED灯、一个绿色LED灯、一个舵机(伺服电机)组成。当红灯亮起,舵机为90 度时表示模拟关门状态,如图4所示。当绿灯亮起,舵机为180 度时表示模拟开门状态,如图5所示。

得益于Python丰富而又强大的扩展库,我们可以使用RPI.GPIO库轻松地控制各种硬件。我们可以将LED灯管正极接在树莓派5 V输出引脚上,将LED负极接在可控的引脚上。这样,当可控的引脚输出5 V的高电平时,LED灯将会熄灭。当可控引脚输出为0 V的地电平时,LED灯将会亮起。利用RPI.GPIO,我们不仅能轻松地控制引脚的高低电平,我们还能较为容易地调制PWM(Pulse Width Modulation,脉冲宽度调制)波。将舵机各连线接好,我们就可以通过调整脉冲来控制舵机的方向了。由于树莓派gpio接口高达40 个引脚,所以仍有很多的接口富余。因此我们可以将本系统通过富余的引脚和其他系统联动,故而有很高的扩展性。

4.3   后台数据管理模块

本功能模块主要负责用户交互,选择基于Python平臺的Web应用开发框架Flask。Flask具有轻量、简易、组件化等优点,开发效果界面友好,具有较强的安全性和可拓展性。该模块既可以部署在Linux系统环境下,也可以部署在Windows系统环境下,兼容性强。Web控制台默认监听本机5000端口,系统部署成功后,访问本机5000端口即可对系统相关信息进行查看和对相关参数进行配置。此模块大致可分为登录页面、主页、参数控制页面、开门日志页面、添加用户页面和用户管理页面。

直接访问5000端口,因为没有登录,系统将会提示用户登录,此时不能查看相关数据。登录后即进入主页。在主页中可以清晰地查看当日开锁次数和一周内开锁次数,简单明了,如图6所示。

在参数控制页面,可以设置门锁相关参数,可修改的参数有门锁状态、开门延迟时间和人脸相似度。门锁状态用于显示当前门锁是否被打开,通过修改该参数,可以实现强制开锁。开门延迟时间指的是在每次门锁开启后到自动关闭门锁时的延迟,默认为15 秒,用户可以根据实际情况进行相应的调整。

在上文中,我们提到了数据库中人脸特征向量与实际拍摄的人脸特征向量的距离。在本程序中,体现为face_recognition.compare_faces(known_face_encodings, face_encoding, tolerance)函数的tolerance参数。该参数取值范围为0—1,官方推荐值为0.6,数值越低越严格。因为该参数并不是特别符合一般用户的认知,我们可以将其转换为人脸相似度参数,经过f(x)=185-200x的线性变换将取值范围变换为65—95,便于用户理解。人脸相似度若调得过高容易导致不能正确识别人脸信息,可能需多次进行识别方可开门,适用于安全要求较高的场所;若调得过低则可能误识别人脸信息。该参数也应该根据实际情况进行调节,如图7所示。

在开门日志页面,可以查看最近的开门记录。每一行记录一条开门信息,主要有系统识别的用户、开门时间、开门状态信息,方便后期检查,如图8所示。

在添加用户页面,可以上传人脸照片进入系统。系统会判断上传的文件是否符合要求,并给出相应提示,如图9所示。

在用户管理页面,可以查看系统数据库中已保存的人脸信息记录和系统保存的图片名称。用户可以通过图片名称在相应的文件夹里找到相应的图片,如图10所示。

4.4   数据存储模块

在系统中有许多数据需要持久化存储,所以一个数据库是必不可少的。在本系统中,我们选用的是MySQL数据库。首先,MySQL在各个平台均可部署,有很强的跨平台特性,使得该模块不仅可以部署在树莓派上,也可以部署在其他Linux平台上或者Windows平台上。其次,轻量级的MySQL可以保证将其部署在像树莓派这类性能较低的平台上时,仅占用少量的资源,依然能较好地运行。

在数据库中有四张表,一张表用于记录管理员信息,一张表用于记录可用于开门的用户人脸信息,一张表用于记录系统运行的相关可调节参数,一张表用于记录开门日志。

5   结论(Conclusion)

本文设计实现了一个基于树莓派的人脸识别门禁系统,该系统利用了Flask框架和Face_Recognition人脸识别框架。在本系统中,我们主要利用树莓派實现嵌入式开发,并能够根据需要把部分模块部署在其他平台上,具有很强的可移植性。本系统为操作用户提供了Web控制台可视化交互界面,管理员只需通过鼠标点击即可对门禁系统进行管理。经实际使用测试,该门禁系统可以实现门禁管理系统所需的各项功能,具有较高的准确率和较高的使用价值。

参考文献(References)

[1] 秦超,刘正强,刘林,等.基于树莓派的人脸识别校园门禁管理系统[J].物联网技术,2019,9(02):13-14.

[2] 徐玉波.“十三五”安防领域机器视觉发展回顾与展望[J].中国安防,2020(09):27-30.

[3] SANDAR S, OO S A N. Development of a secured door lock system based on face recognition using Raspberry Pi and GSM module[J]. International Journal of Trend in Scientific Research and Development, 2019, 3(5):357-361.

[4] 汪鹏鹏.基于Face_Recognition的人脸识别平台研究及应用[D].成都:西南交通大学,2019.

[5] 董薇,张韶.基于人脸识别的学生安全预警系统设计[J].电子设计工程,2020,28(14):180-184.

[6] 杨士卿.基于B/S的一卡通会议签到系统设计与实现[J].软件,2018,39(05):66-69.

[7] 刘燕.通用人脸识别服务的研究及应用[D].成都:电子科技大学,2020.

[8] 纪冕,张欣,徐海.基于改进HOG特征和SVM分类器的行人检测[J].软件,2020,41(02):70-74.

作者简介:

高   明(1998-),男,本科生.研究领域:信息安全.

康晓凤(1978-),女,硕士,副教授.研究领域:信息安全.

孙   典(1999-),男,本科生.研究领域:信息安全.

张一凡(2001-),男,本科生.研究领域:信息安全.

丁   乾(1998-),男,本科生.研究领域:信息安全.

张百川(2002-),男,本科生.研究领域:信息安全.

猜你喜欢

树莓派人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
基于(2D)2PCA-LBP 的人脸识别方法的研究
人脸识别在高校安全防范中的应用
基于微信端的智能家居监控系统的设计与实现
智能安全防盗探测小车
基于树莓派的高清视频播放器的设计与实现
基于嵌入式技术的农村医疗系统设计
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别