APP下载

基于Jetson Nano的智能门禁系统

2022-09-01虞俊锋邱富康

实验室研究与探索 2022年5期
关键词:门禁系统残差人脸

罗 平,虞俊锋,邱富康

(杭州电子科技大学自动化学院,杭州 310018)

0 引言

新型冠状病毒肺炎疫情自爆发以来,严重影响了人们的生产、生活,对人们的生命健康安全造成了巨大的威胁,2020 年1 月,此次疫情已经被世界卫生组织确认为世界关注的突发公共卫生事件[1]。

在实验室等小型半封闭式场所中,对出入人员的管理采用磁卡感应、数字密码、指纹识别[2]等方式,人与物体之间的直接接触为病毒的传播提供了途径。采用人脸识别[3-5]等非接触式的门禁管理系统是切断病毒传播途径的有效方式之一。本文提出基于Jetson Nano的智能门禁系统设计方案。

1 系统整体设计

1.1 系统工作流程

对已知用户进行人脸图像采集,并录入人脸信息库。当用户访问时,摄像头捕捉到含有人脸的图像,提取人脸的特征并在人脸库中匹配,若匹配结果小于阈值,则可以确定用户的身份;身份确定后即可进行口罩佩戴检测,若检测为正确佩戴则自动解锁;若在人脸识别、口罩检测过程中多次失败,则语音提示并将图像以邮件附件的形式发送至管理员信箱。利用搭建好的Web页面,实现远程监控、对话、控制功能。

1.2 系统组成部分

根据系统工作流程,门禁系统主要包含采集、图像处理、通信、移动控制和执行单元5 个部分,系统的组成框图如图1 所示。

图1 系统组成框图

2 系统硬件

2.1 Jetson Nano

Jetson Nano是一款开源硬件,与现阶段常用的树莓派主板有良好的兼容性。考虑到Jetson Nano 具有图像处理能力强、功耗低、性价比高等特点,将其作为门禁系统与开发的核心硬件平台。

2.2 摄像头

图像采集单元采用IMX219 摄像头与免驱USB摄像头。IMX219 摄像头具有800 万像素、77°视场角,分辨率最高可达3280 ×2464,可为人脸识别、口罩检测提供高质量图像。远程监控所需的图像质量相对较低,采用免驱USB 摄像头即可。IMX219 摄像头通过排线连接Jetson Nano 的CSI 接口,利用OpenCV 程序[6]对两个摄像头进行调试。

2.3 WiFi通信单元

无线网卡采用8265AC 网卡芯片,支持4.2 版本蓝牙,同时支持2.4G 和5G 双频WiFi,传输速度最高可达867Mb/s。系统通过连接网络可以直接获取互联网资源、访问邮箱服务器,当系统与客户端保持在同一局域网之下,系统可获取客户端发出的控制指令,客户端可接收并呈现远程监控画面。

2.4 电控锁与扬声器

电控锁利用电磁感应原理,通过控制Jetson Nano的GPIO引脚高低电平,实现锁舌的缩回与弹出。除电动控制外,考虑到停电等特殊情况,还应具备手动解锁功能。采用USB免驱动扬声器,调用语音模块程序实现语音提示功能。

3 系统软件

3.1 语音提示

语音提示的关键是将输入的文本内容转化为音频文件播放输出,在文字转语音的实现过程中,通过调用智能云语音合成[7]提供的SDK将文字转换为音频,并将该音频写入本地文件中,播放该文件,实现语音提示功能。

3.2 人脸识别

一个完整的人脸识别过程可大致可分为特征提取和人脸匹配两个过程。

(1)特征提取。特征提取采用Dlib 工具包实现,该工具包提供人脸关键点文件shape_predictor_68_face_landmarks.dat 和人脸特征向量文件dlib_face_recognition_resnet_model_v1.dat。其中,人脸关键点模型文件是在iBUG 300-W 人脸数据集[8]中训练得到的,该数据集共有人脸图像600 帧,每帧图像中都已标注好包括五官、轮廓在内的68 个关键点,利用该模型文件,可以对任意一帧人脸图像进行人脸关键点的定位。人脸特征向量模型的作用在于将获取的68 个关键点信息映射到128 维度的向量中,用来标识一帧人脸图像,以便用于后续人脸间的匹配。

该模型的主体结构为ResNet34 残差网络[9-10],残差网络相比于一般的卷积网络,最大的不同在于引入一条分支,将输入信息由浅层传递至网络的深层中,极大程度地防止信息的丢失,使得网络深度的加深也不会导致性能的退化。残差块的结构如图2 所示。

图2 残差块结构

基于残差块的思想,每两层卷积层中引入一条分支,最终ResNet34 残差网络的结构图如图3 所示。

图3 残差网络结构

在Resnet34 的最后一层,拥有1 000 个神经元,在这1 000 个神经元之后再追加一个128 维的全连接层即可达到使用Resnet将目标人脸图像的68 个关键点信息映射到一个128 维特征向量的目的。

(2)人脸匹配。对人脸信息库中的第k帧人脸图像提取68 个面部特征关键点,经34 层残差网络映射计算后获得128 维的特征向量Ak=[ak1,ak2,…,ak128]。同理对一帧未知身份的人脸图像提取面部特征点,经计算后获得特征向量B =[b1,b2,…,b128]。用向量Ak、B之间的欧几里得距离

表征两帧人脸图像的近似程度,dk越小表示两帧人脸图像越接近。

将向量B与人脸信息库中的n帧人脸图像所对应的向量分别求取欧几里得距离,得到n维近似度向量D =[d1,d2,…,dn]。取其中的最小值dmin,若dmin小于阈值,则人脸匹配成功。

3.3 口罩检测

(1)前向传播。采用YOLOv3 目标检测算法[11-12]对口罩的佩带情况进行检测。以检测大目标物体为例,将一帧输入的图像平均分成13 ×13 个像素块,利用全卷积网络提取每一个像素块内所有像素值之间的抽象特征。全卷积网络结构的输入、输出映射关系如图4 所示。

图4 全卷积网络结构的输入、输出映射关系

需提取的特征信息为置信度、预测框位置和所属类别概率。其中,置信度信息包含了该像素块内是否含有物体以及以该像素块所绘制的预测框与真实框之间的交并比,即预测框与真实框之间的接近程度;预测框的位置信息包含中点在像素块内的坐标x,y以及预测框的宽高w,h。输入与输出的映射关系如图5所示。

图5 预测框与真实框的输入、输出映射关系图

(2)反向传播。初始化模型参数,取一帧标注好的图像,输入到全卷积网络,经模型计算后输出大小为13 ×13 ×3 ×(5 +3)的预测矩阵,根据预测矩阵与真实矩阵计算损失值,利用梯度下降算法[13]对模型参数进行优化,使得总损失值最小,即预测图像与真实图像之间最为接近。

模型的损失函数

3.4 Web控制端

Web页面采用轻量级的网页开发框架Flask[14]进行设计与开发,进入控制主界面必须确保硬件平台Jetson Nano通过双频无线网卡连接上的局域网与手机移动端的局域网保持一致。根据IP地址,按照指定格式输入网址即可进入主界面。Web 控制端的主界面如图6 所示。

图6 Web控制端主界面

(1)远程监控。利用Flask 搭建的流媒体服务器,是调用免驱动USB 摄像头获取一帧一帧的图片,利用生成器对图片数据进行迭代,实现实时更新并返回给客户端,客户端浏览器接收到的是一个Multipart应答,每一个应答中包含了许多独立数据,每一个数据块都含有自己的数据标签,浏览器在处理这种Multipart类型时,会按照数据标签,将当前的数据替换之前的数据,实现远程监控的功能。

(2)远程对话。与服务器进行交互的方法有Post、Get等,在文本框内输入指定内容,当按下发送按钮时,会向服务器发送一个Post 请求,提交定义好的数据标签和数据内容,一旦接收到Post 请求,服务器就会执行Get操作,获取指定数据标签的数据内容,并调用语音模块利用扬声器播放指定内容的语音,实现远程对话功能。

(3)远程解锁。实现远程解锁功能同样应用到Post、Get方法,当按下解锁按钮,服务器获取该指令后即可解锁。考虑到安全问题,采用数据加密标准算法[15]对该解锁指令进行加密。获取按下解锁按钮时的时间,解锁指令由该时间信息组成,经加密处理后形成一串字符码发送给Jetson Nano,将解密后获取的时间与现在时间作比较,若在指定时间范围内则表示指令正确,可以解锁。

4 部署与试验

将以上程序部署到Jetson Nano 中,需配置好程序运行所需的相关环境。在人脸识别程序中,除了安装Numpy、Matplotlib 等Python 拓展程序库外,最重要的是安装开启GPU加速版本的Dlib。利用pip工具直接安装的Dlib库默认是不使用GPU的,在使用深度神经网络进行人脸识别过程中,需利用Cmake 这个跨平台的编译工具,从源码上对Dlib-GPU 版本进行编译安装。在口罩检测程序中,需安装Pytorch这一支持机器学习算法的程序库。

当Jetson Nano成功配置好程序运行所需的环境后,打开IMX219 摄像头对视频流数据进行逐帧的人脸识别。获取一帧图像进行识别的结果如图7 所示。

图7 人脸识别结果

分别计算图7 中左右两帧人脸与人脸信息库中5帧同一个体不同角度图像的近似度向量Dleft、Dright。由于左侧的人脸图像并不在人脸信息库中,因此Dleft中每一个元素的值都大于阈值。而库中已预先存有右侧人员的人脸,所以Dright中每一个元素都低于阈值,取元素中最低的值对应的图片,即可确定身份。

找10 名实验者做3 轮实验,每人共计被检测5次,一轮共计识别50 人次。其中识别结果与实际不符视作识别失败,时间超过10 s视作识别超时。实验结果见表1。

表1 人脸识别实验结果

由表1 可见,智能门禁系统的人脸识别方法能对不同角度和个体的人脸有效的提取面部信息特征,部署在Jetson Nano上的识别速率基本能达到平均F/s,识别成功率达到95%以上。

在口罩检测实验中,加载已经训练好的模型,打开IMX219 摄像头,分别对正确佩戴口罩、错误佩戴口罩和未佩戴口罩这3 类情况进行试验。其中为了加大识别难度,加入了用手遮挡面部这种情况,并将其显示为未佩戴口罩这一类。得到检测结果如图8~11 所示。

图8 正确佩戴口罩检测结果

图9 错误佩戴口罩检测结果

图10 未佩戴口罩检测结果

图11 用手遮挡面部检测结果

找10 名实验者进行口罩佩戴情况检测实验,做5轮实验,每人共计被检测8 次,即正确佩戴口罩、错误佩戴口罩、未佩戴口罩、用手遮挡4 种情况各2 次,一轮共计识别80 人次。其中识别结果与实际不符视作识别失败,时间超过10 s视作识别超时。最终实验结果见表2。表2 结果表明,采用YOLOv3 目标检测算法对口罩进行检测,部署在Jetson Nano上的识别速率达到平均25 F/s,识别成功率达到95%以上。

表2 口罩检测实验结果

在Web端远程控制实验中,当登录到网页主界面后,Jetson Nano会立即调用USB 摄像头,获取实时画面更新到网页客户端中;当文本框中输入指定内容,点击发送按钮后,Jetson Nano调用语音模块程序,将文字内容转换为音频文件,利用扬声器播放语音提示;当按下解锁按钮后,Jetson Nano引脚立即变为高电平,电控锁通电使得锁舌缩回,实现解锁。

当访客的身份得以核实,且正确佩戴口罩,则可以解锁通行,并通过微信提示的方式告知管理员;当未知访客的身份无法确认,则将拍照图像和提醒通过邮件形式通知管理员。

5 结语

本文提供了一种基于Jetson Nano 的智能门禁系统方案,具备人脸识别、口罩检测、远程控制等非接触式功能,利用IMX219 摄像头、人脸识别算法实现人脸的判别;利用IMX219 摄像头、目标检测算法实现口罩佩戴情况的检测;利用双频无线网卡、USB 摄像头、扬声器等实现基于网页客户端的远程控制。

在智能化、实用性、性能等方面上,明显优于现阶段常见的以普通单片机为开发平台的门禁系统。在疫情的特殊时期,该方案具有一定的应用价值,后续将从功能拓展、降低成本等方面进一步优化该系统。

猜你喜欢

门禁系统残差人脸
基于多种生物特征识别的RFID门禁系统设计
基于双向GRU与残差拟合的车辆跟驰建模
有特点的人脸
一起学画人脸
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
基于AI智慧人脸门禁系统的硬件系统设计
基于单片机的安全门禁系统研究设计
三国漫——人脸解锁
智能才是硬道理——评测立林智能门禁系统