李红岩,梁紫璇,赵 峰,黄嘉,张世杰
(西安科技大学 电气与控制工程学院,陕西 西安 710054)
传统的机械门锁开关复杂。为了解决这一问题,出现了磁卡锁和密码锁,这在一定程度上方便了人们的生活。然而,随着这两种锁的不断使用,它们的缺点也暴露了出来—信息容易丢失,安全性低[1]。随着生物识别技术的发展,人脸识别门禁系统应运而生。门禁系统是指控制口通道的系统,其主要功能是防止盗窃和犯罪事件发生。2020年,新冠疫情在全球爆发,各场所出入口管控力度加大,尤其是无接触的观念更加深入人心,智能人脸识别门禁需求急剧增加。这一需求推动了基于人脸识别技术的智能产品的发展,人脸识别也将会是智能门禁中的一大亮点和趋势。本文采用Socket无线通信技术对门外区域进行无线视频监控,且遇到陌生人脸会自动记录信息,若遇到暴力开门会启动报警系统。本图像识别智能门禁综合了传统的门禁装置的优点并加以优化,主要监测目标有人脸信息、手势信息、人的体表温度,检测到信息异常的情况还会自动生成表格进行记录,方便查询、实用性高、安全可靠。
本课题设计的图像识别智能门禁由图像信息采集系统、图像处理与识别系统、测温系统、消毒系统和门锁控制系统组成。图像信息采集系统主要由光学系统和图像采集卡组成,负责人脸图像的采集;图像处理与识别系统利用图像处理技术实现人脸定位与识别;测温系统由红外测温仪构成;门锁控制系统则由磁力锁和步进电机构成;消毒系统识别人手,并释放消毒喷雾。其中人脸识别是系统的核心技术,人脸识别对比过程包括人脸识别、预处理、特征提取、人脸比对,并给出比对结果[2]。人脸比对结果是准入人员时,在疫情防控的重点区域,要征询测温模块的指令,当测温模块的测温值正常,门禁控制器驱动磁力锁产生应答开门。人脸识别主要环节有人脸图像采集、检测和识别。摄像模块将人脸信息成像并采集,对人脸信息进行定位识别,并剔除无用的图像数据,完成对原始图像数据的灰度校正、降噪除干扰;信息特征提取、匹配与识别是根据信息特征,利用识别算法进行识别和身份确认[3-4]。同时用红外测温模块辅助活体检测和疫情防控期间的体温监测。活体检测是为了防止不法分子利用业主的照片进门;体温监测在疫情防控期间设置为工作状态,平时可以关闭。在人脸比对成功后,图片库可以适时更新,避免由于年龄变化引起特征变化较大而不能识别,尤其是儿童和青少年。门禁系统总体组成如图1所示。
图1 整体结构框图
图像识别门禁包括门禁台1、刷卡组件3、识别组件5和手势消毒装置4。门禁台1的顶部与识别组件5的底部固定安装,识别组件5的顶部设置有摄像头6,门禁台1的顶部与手势消毒装置4的底部固定连接,门禁台1的顶部与刷卡组件3的底部固定安装,门禁台1的一侧对称转动连接有转动板2。其立体结构如图2所示。
图2 系统立体结构
在本实施例中,设置有手势消毒装置4,该图像识别门禁系统是内含手势识别消毒的门禁系统。通过STM32接收人脸检测结果并通过红外测温系统采集人体体表温度,以及通过手势识别系统进行手部消毒,提高防疫效果;STM32芯片会结合采集到的体温信息、手部消毒信息和避障传感器传回来的信息进行综合处理,将通过人员的信息实时生成表格,方便查询,实用性高、安全可靠,并且对该门禁系统可以远程控制,方便遇到特殊或紧急情况时打开。
图像信息采集系统由树莓派和摄像头构成。由12 V可充电航模电池进行供电,通过降压模块逐级降压得到系统运行的稳定电压。在摄像头的底部配有舵机云台。通过树莓派GPIO口产生的PWM信号来控制舵机转动的角度。在舵机转动中需要的电流电压过大,直接连接树莓派会使得树莓派重启。为保证系统的稳定性,舵机的供电线由另外一组航模锂电池提供,树莓派只是提供PWM信号。同时为保证PWM信号的准确性,树莓派的供电系统应与舵机的供电系统保持共地[5]。
测温系统主要由MLX90614测温模块和ADS1115数模转化模块组成。MLX90614具有非接触、体积小、精度高、成本低等优点。通过对物体自身红外辐射的测量,能准确地确定其表面温度,其检测的温度信息以模拟量的信息传输给ADS1115模块。ADS1115具有高分辨率(16位)、低电流消耗的特点,非常适合在任何基于微处理器的项目中进行高分辨率的模数转换。此模块可以在2 V至5 V之间的电源和逻辑信号下运行,与系统选用的主控制处理器STM32兼容。模块最多可提供4个单端或2个差分通道,在模块内部,一种可编程增益放大器为小信号提供高达x16的增益。STM32接收ADS1115模块转化后的数字信息,并分析出该时刻的具体温度[6]。
门锁控制系统则由磁力锁、步进电机和ULN2003驱动芯片构成,由单片机判断门禁的状态、步进电机来实现门的开关。步进电机需要较大的驱动电流,单片机的引脚无法输出满足步进电机驱动的电流,故需要ULN2003驱动芯片来驱动电机。ULN2003是高耐压、大电流复合晶体管阵列,在5 V的工作电压下能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据,实现对于门锁的精确控制。
本系统的软件部分分为电脑上位机处理端、树莓派视频信息采集端以及STM32控制端。电脑的程序运行在Anaconda上,Python的版本是3.6,主要负责接收分析人脸数据,并将控制结果传输给STM32。树莓派信息传输端主要负责收集图像信息,利用人脸识别算法将视频中人脸信息进行部分裁剪,并通过Socket技术传输给电脑端。STM32端负责接收各类信息,并对各个系统做出控制。
系统的人脸识别依靠Face Recognition库进行。Face Recognition是世界上最简洁的人脸识别库,可以使用Python和命令行工具提取、识别、操作人脸数据[7]。本项目的人脸识别是基于业内领先的C++开源库 dlib中的深度学习模型,采用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。人脸识别实际上是对人脸进行编码后再去两两计算人脸的相似度,known_image是已知人脸库的图像,unknown_image是待检测的图像,分别利用face_encodings函数来映射成一个向量;再利用两个向量的内积来衡量相似度,compare_faces函数就是根据阈值确认是否是同一人脸。上述函数都是支持多个人脸计算的。另外compare_faces中的tolerance参数是控制阈值的,tolerance值越低越严格,默认为0.6。
系统通过Face Recognition库对于数据库中的人脸进行预处理与特征提取。在监测时,系统通过分析用户每一帧的图片与数据库中的最大相似度来匹配人脸,并判断是否为陌生人[8],同时会将结果在程序中以布尔变量的形式表达出来。在写程序时只需要判断布尔值为多少,即可判断数据库中人脸信息是否与之匹配。当系统判断为陌生人后,会将此人的信息以Excel表格的形式储存在本地。人脸识别程序流程如图3所示。
图3 人脸识别程序流程
系统通过树莓派连接USB摄像头来采集数据,利用OpenCV将原始的视频信息转化为数字信息。树莓派与电脑均处于同一局域网下,故可利用Socket技术将转化好的数字信息传输至电脑,利用电脑强大的计算能力来分析对比人脸数据库。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口[9]。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket对TCP/IP进行了一层封装,然后应用程序直接调用Socket API即可进行通信[10]。服务端需要建立Socket来监听指定的地址,并等待客户端来连接。而客户端则需要建立Socket并与服务端Socket地址进行连接。本系统采用树莓派与电脑构成基于Socket的无线网络通信系统,系统框图如图4所示。
图4 Socket通信系统框图
本图像识别智能门禁系统前端以单片机为中心实现了身份检测后的控制与体温监测。借助OpenCV函数实现了人脸识别,并且在检测到门外有异常人脸信息时会自动生成Excel表格,便于查询。系统结合了当前社会需要,将红外测温、生物识别、手势消毒集为一体,可以更加智能地筛除异常人员,弥补了传统门禁中功能单一的不足,提高了门禁的安全性。当然,此门禁系统中还存在不足,随着科学技术的发展门禁系统会更加智能化。