李志龙,董麒麟,张 万,赵天煜
(1.郑州轻工业大学计算机与通信工程学院,郑州 450000;2.郑州轻工业大学软件学院,郑州 450000)
2020年《工业和信息化部办公厅关于深入推进移动物联网全面发展的通知》指出,围绕产业数字化、治理智能化、生活智慧化三大方向推动移动物联网创新发展。在生活智慧化方面,不难发现刷脸支付、刷脸认证身份信息已经成为生活的常态。人脸识别作为提取人的脸部特征信息进行身份识别的一种生物识别技术,具有独特性,稳定性等优点,比起其他的生物特征识别系统具有更高的可接受性和便捷性,并且作为非接触式的识别系统在特定的情况中隐蔽性更强。
本系统主要研究人脸识别技术的开发与应用,使用Web 端录入和管理人脸信息,在树莓派上运用神经网络技术实现人脸的识别,树莓派还作为单片机与ESP866 无线通信控制电磁锁门禁,真正意义上实现功能全面、可移植性强、简易实用的人脸识别系统。
本系统使用Spring Boot 搭配主流SSM 框架搭建的Web 服务,并使用HTML、CSS、JS 构建前端页面;使用Flask 框架搭建Python 微服务来进行人脸特征值提取并传输;数据库使用MySQL 管理信息;硬件方面选择树莓派4B 作为人脸识别算法运行载体,使用ESP8266 与树莓派无线通信控制电磁锁门禁。
本系统分为Web 和树莓派两大平台。Web平台实现人脸信息录入、人脸信息管理、人脸识别历史信息管理等功能,它通过Java 实现与数据库的交互,并调用Flask 框架搭建的微服务中人脸特征值提取算法。树莓派运行神经网络相关算法,实现人脸识别功能,并与ESP8266进行无线通信能够控制电磁锁门禁的开关。系统工作流程如图1所示。
图1 系统工作流程图
本系统总体分为Web 端人脸信息管理、人脸数据处理、树莓派人脸识别、ESP8266 电磁锁门禁四大模块,如图2所示。
图2 系统功能模块结构图
该平台后端使用Spring Boot 搭配主流SSM框架,以及为提取人脸特征数据使用Python Flask 轻量级Web 应用框架,前端主要使用HTML、CSS、JS 等技术进行网页设计,该平台共由摄像头人脸捕获板块、人脸信息处理板块、人脸信息录入板块、人脸信息修改板块、人脸识别历史信息板块组成。如图3所示。
图3 Web平台人脸信息管理结构图
(1)信息录入板块。前端通过调用摄像头进行拍照,将照片传入Flask 框架搭建的Web 应用平台进行处理、提取特征值并将特征值数据返回;前端还将用户的基本信息(姓名、学号、院系)传入后端处理。后端将用户的人脸特征值与基本信息组成的用户信息存入数据库中,用于人脸信息管理。
(2)用户信息管理板块。用户信息管理,在该板块中可以对录入的用户信息进行查看、修改和删除;还可进行多条件组合查询,通过用户的班级、姓名或学号查询用户信息。
(3)人脸识别历史信息板块。历史信息记录管理,可以查看用户进行人脸识别的时间以及出入情况;历史信息查询,可以通过用户的姓名或学号等查询用户的识别历史。
该模块主要由Flask 微服务和Java 后端共同完成,Flask 是一个使用Python 编写的轻量级Web 应用框架,与其他框架相比更为灵活、安全且易上手。Java 后端为使用Spring Boot 搭配SSM 框架搭建的。前端将人脸图片和唯一标识符传至Flask 微服务中进行图片处理和人脸捕获,若无法捕获到人脸则返回前端错误信息,捕获到人脸后进行人脸特征值提取,完毕后将携带着唯一标识符传入Java 后端,Java 后端将前端传来的用户信息与该唯一标识符进行对比,找到属于该用户的人脸特征值,并一同存入到MySQL数据库中。该流程如图4所示。
图4 人脸数据处理流程图
人脸特征值提取使用MTCNN(多任务卷积神经网络算法),该算法将人脸区域检测与人脸关键点检测放在了一起,它的主题框架类似于cascade。总体可分为P-Net、R-Net、和O-Net三层网络结构,出自深圳先进技术研究院。
本系统采用了树莓派4 B,外接720P USB摄像头和1024×600分辨率的屏幕。树莓派4B采用了博通的BCM4908 64 bit 处理器,相比于树莓派3 B系列性能各方面都有显著的提升。树莓派不仅功能强大,而且扩展性极强。它的主板上有USB、type-c、HDMI、以太网等接口,内置有WIFI、蓝牙十分齐全。不仅与软件交互便捷迅速,而且也能与各类单片机实现通信。它的BCM4908 64 bit 处理器和Raspbian 操作系统可以运行Python 算法,还可以连接屏幕实时显示摄像头所拍的内容,小巧的外型增强了可移植性,对于硬件部署和系统操作非常便捷。树莓派人脸识别结构框图如图5所示。
图5 树莓派人脸识别结构框图
本系统使用ESP8266 WIFI 模块作为控制门禁的开发板,ESP8266 是一款超低功耗的UART-WIFI 透传模块,专为移动设备和物联网应用设计,可将用户的物理设备连接到WiFi 无线网络上,进行互联网或局域网通信,实现联网功能。它与内置WIFI 的树莓派能够做到局域网通信。
当人脸比对结果返回树莓派后,如果比对成功,树莓派向ESP8266 无线发送开门指令,ESP8266 控制继电器进而控制电磁锁。电磁锁正常工作需要3 V 电压和1 A 电流,因此电磁锁单独接入一个3 V的外接电源。开门后,人员进入,置于门后的压力传感器检测到人员已进入,向ESP8266 反馈信息,ESP8266 会进行关门操作。具体流程图如图6所示。
图6 ESP8266电磁锁门禁模块流程图
该系统由于树莓派单核性能限制以及算法模型训练样本量偏少等原因,致使硬件端人脸识别速度未达期望水平,通过修改树莓派中运行的Python 程序,将单线程修改为多线程运行,调用四个核心进行计算,并实现数据的同步,减少资源的浪费,提高程序运行速度。该平台还设计加入Redis 数据库,Redis 是业界主流的key-value 数据库之一。Redis 支持各种不同方式的排序。且Redis 中数据是缓存在内存中,读写速度很快,也符合该系统人脸特征值写入和提取的特点。通过算法实现对数据的筛选,将常用的人脸数据存入Redis 中,减少其人脸识别所需时间,将少用的人脸仍然存入MySQL 中,减少资源的浪费,提高数据读写速度。
该人脸识别系统成本低廉,占用空间少,使用场景众多,可以很好地满足市场的需求,尤其在特定的环境中,既可以减少部署成本,还可以保证人脸识别速度和准确性,方便实用,具有一定应用价值。