基于树莓派的人脸识别门禁系统
2021-08-31吴凯枫张立新王军昂王赛
吴凯枫,张立新,王军昂,王赛
(南京信息工程大学自动化学院,江苏南京,210044)
关键字:树莓派;百度智能云;人脸识别;Linux;Python
0 引言
随着科技的迅猛发展与人们的物质生活水平的提高,人们对于安全与便捷的关注度有了更大的提高,普通的IC卡识别、指纹识别、密码识别已经越来越满足不了人们的需求,而人脸识别系统既方便且安全指数较高,逐渐获得人们的青睐[1]。
人脸识别的优点主要在于:人脸识别通过摄像头对人脸图像进行采集与识别,被识别者不需要与识别装置进行接触,该技术可以解决丢失验证身份的凭证带来的困扰。
当下5G技术已经日趋成熟,高速数据通信促使了云计算的大范围普及,使人工智能技术可以在云端瞬间完成,这大大减少了人脸识别系统的硬件成本,仅需一个可以联网的开发板和配套的程序环境即可实现人脸识别。本设计是利用树莓派4B开发板与百度智能云相结合,以人脸识别为主,密码识别为辅的智能门禁系统[2]。树莓派4B开发板不仅本身性能强大,而且它的拓展能力也很强,可以承载绝大多数的外设元件,而百度智能云的人脸识别精度达到99.77%[3],完全可以适用于生活中人脸识别门禁的需求。
1 系统总体设计方案
本系统由树莓派主控制器模块、图像采集模块、WIFI模块、数据处理模块、云端服务器、门禁控制开关组成。本系统采用HC-SR501人体红外感应模块作为触发机制,当它感应到有人后,系统会接收到其发送的信号并开始工作,摄像头将拍摄照片并将图片信息通过图像编码上传至百度智能云,采用云端图像对比技术将上传图片信息与云端数据库中的图片信息相对比,通过人脸提取特征点的对应信息来分辨访客是否为陌生人,并将信息进行后台储存与远程传送;若对比成功则门禁开关打开。系统结构如图1所示。
图1 系统机构图
2 硬件设计
2.1 树莓派开发板
树莓派作为门禁系统的主控芯片,它不仅本身的性能强大,而且模块的拓展性也很强,通过面包板可以连接多种模块进行操作。它是一款基于ARM的微型电脑主板,通过SD卡来充当内存,主板上有USB、type-c、HDMI、以太网等接口,可以通过这些接口来连接鼠标、键盘、网线等[4],使得使用者可以更加方便的操作和检测设备。树莓派以Python作为主要编程语言,但也支持C、Java等编程语言。树莓派4B开发板满足本设计的全部需求、价格便宜且能搭载多种外设[5],因此选择此开发板为主控芯片。如图2所示。
图2 树莓派4B开发板
2.2 摄像头
树莓派开发板上有USB接口和CSI接口,故可以选择USB摄像头或者CSI摄像头,因为CSI摄像头的价格相对于USB摄像头要低廉且拍摄照片像素相差不大,故此设计选择CSI摄像头。树莓派4B开发板自带WIFI模块,故本设计是通过摄像头拍摄照片上传至百度智能云,从而实现无线传输,此传输方式可以消除传统有线传输带来的一系列问题,并且云端计算能力、速度都远远超过传统方法。如图3所示。
图3 CSI摄像头
2.3 系统接线图
采用立创EDA绘制各硬件元件的接线图。如图4所示。
图4 系统接线图
3 软件设计
3.1 代码运行IDE
软件采用树莓派Linux系统中自带的Python IDE——Thonny,它支持Python3.7,并且此IDE会跟随版本不断更新[6]。
Thonny软件主要是分为两个区域,其中一个是代码编辑区,另一个是名为Shell的窗口,前者用来代码编写,后者可以用来更加直接地交互。它不同于IDLE的地方在于:Thonny里含有很多适合学习编程的功能,如Debug、Stop、Quit等,使用者可以在Thonny中观察所选对象或变量的实时动态。
3.2 百度智能云的应用
本文是通过百度智能云平台来帮助装置完成人脸识别过程,并且百度智能云在人脸识别结束后会发射信号来激活装置继续下一步的工作。
百度智能云的大部分应用都免费对外开放,使用操作流程也非常的方便。
使用百度智能云需要事先在云端注册私人账户,选择人脸识别的应用并创建,此时即可获得连接至对应私人云端账户的App ID、API Key以及Secret Key,使用者可以在代码编辑中通过关联私人的百度人脸识别API账户信息来调用百度智能云的人脸识别算法。在获取对应百度人脸识别API账户信息后,使用者可以往应用的图片库中储存需要识别的人物照片,同时为之命名,以便在代码编辑过程中调用。系统将采取提取人脸特征点的方式来对比使用者上传照片与图片库中照片是否匹配度高于90%,满足条件即系统认为是同一人并发射相应信号,不满足条件即系统认为是陌生人并发射相应信号。
3.3 人脸识别算法
人脸识别算法有很多,如基于LDA的Fisherface[7]是把人脸特征向量实现了高低维的转换;基于LBP特征的算法则计算速度快,受图片质量影响小[8]。
而本装置人脸识别算法则基于ASM算法进行,ASM算法是目前比较主流的一种通过提取人脸特征关键点的方法。ASM算法需要经过两个步骤:一是ASM的训练,二是ASM的搜素[9]。
ASM的训练分为建立形状模型和为每个特征点构建局部特征两个部分,其中建立形状模型首先需要搜集n个训练样本,对这些样本进行k个特征点的标定,这些特征点会组成一个形状向量:
接着对训练样本图片采用procrustes方法进行归一与对齐处理,此过程可以消除图片中人脸由于角度问题、距离远近问题、脸部姿态面容问题等因素导致的误差干扰。具体操作为:第一步将训练集中的所有人脸模型与第一个人脸模型相对齐;第二步所有训练集样本全部对齐后可计算出平均人脸模型β;第三步将所有人脸模型与所计算出的平均人脸模型β相对齐,接着重复第二步与第三步直至收敛。
4 系统测试
4.1 系统功能流程简介
当有人进入HC-SR501人体红外感应模块的感应范围时,GPIO17输入高电平,此时发光二极管通电发光并且摄像头打开,摄像头开始拍照并且检测是否为人脸,若拍摄到的照片是人脸,则上传到百度AI云端与图片库中的照片进行脸部特征对比,若两张照片的脸部特征相似度大于90%即匹配成功,云数据库给予树莓派信号,树莓派把访客资料保存在本地同时发送资料给主人微信端,并且让门禁打开。若拍摄到的照片与云端图片库的照片相似度低于90%即匹配失败,云数据库给予树莓派信息,树莓派同样把访客资料保存在本地同时发送资料给主人微信端,并且播放“请输入密码”的提示音,通过密码可以打开门禁。若HC-SR501人体感应模块被激活但是摄像头拍摄的照片经过检测发现不是人脸,系统默认无人进行检测。因为有人体红外感应模块的存在,只有当它被激活时系统才会进行工作,其他时间系统都处于待机状态,这样可以降低能源的浪费,提高设备的使用寿命。系统流程图如图5所示。
图5 系统流程图
4.2 实验测试
系统实验前,事先在百度智能云人脸识别图片库中保存的实验对象信息及其人脸图片信息,实验总共分为4组,两组为图片库中的人进行人脸识别,另外两组为图片库外的人进行人脸识别,记图片库中的人为“朋友”,图片库外的人为“陌生人”,每种实验都进行两组可以消除实验过程中的偶然性,实验数据也真实可信。
图6为实验装置,图7、图8为实验过程中的一次实验数据。表1为测试实验结果。
图6 实验装置图
图7 实验拍摄图
图8 特征点提取
表1 测试实验结果数据
5 结论
本系统以树莓派和百度智能云为核心,借助HC-SR501人脸红外感应模块为整个系统的触发机制,既可以保证系统在接收到云端信号后可以马上进行工作,也可以在平时处于系统待机状态,并且人脸识别算法接近100%的识别准确率也使得本系统装置达到了投入使用的效果,它物美价廉、节能、识别准确率高的优点有利于促进市场上的人脸识别门禁系统的改善与优化。