基于FaceNet的智能自习室的设计与实现
2023-07-10董涛周旭辉张浩
董涛 周旭辉 张浩
关键词:座位预约管理;FaceNet模型;人脸识别;物联网Led
随着近些年高校的扩招,不断增加的学生数量使校园的公共资源陷入资源紧张和管理混乱的局面。很多高校共自习室的使用和管理中都面临着“长期占座”或者“高峰抢座”等问题的困境。本文以郑州GS 学院的图书馆公共自习室实际应用为研究背景,设计研发一款基于微信小程序前端以及人脸识别技术的公共自习室座位预约及管理系统。从而帮助学生更合理有效地安排自习时间,并帮助学校缓解公共自习室资源紧缺问题。
1 系统总体设计
研究生扩招,在考研热潮之下宽敞明亮、学习氛围浓郁的公共自习室无疑是考研族学习的最佳场所。引入公共自习室座位座位预约及管理系统,希望实现座位共享,提高座位的利用率,缓解座位紧张的问题。本系统共包含了四大功能模块,如图1 所示:
1) 微信小程序模块:本模块主要负责提供学生用户访问系统的交互UI。学生仅需在手机端关注图书馆微信公众号即可进入公共自习室在线预约系统。通往微信小程序学生能够以可视化的方式查看图书馆公共自习室座位的使用情况。同时还可通过微信小程序实现自习室座位的在线预约。
2) 后端服务模块:后端服务包含了座位预约信息的管理;人脸识别模块中人脸图库的管理;学生学习记录统计;物联网模块逻辑控制,以及其他信息管理功能。该模块是公共自习室智能化管理的中枢模块,负责各个模块中的消息转发工作。
3) 人脸识别模块:本模块是实现公共自习室智能化无人化管理的核心功能模块。首先系统通过控制自习室入口处的摄像头,采集学生的面部图片,然后运用FaceNet 模型实现人脸特征提取,随后比对并将结果传送给后端服务模块。在由后端服务程序把控制信号传输给物联网模块。
4) 物联网模块:实现智能化管理的硬件实施模块,根据后端服务模块传递的控制信号,分别控制自习室门口的出入闸机和放置在自习室座位上的物联网LED小灯。
2 微信小程序模块设计与实现
微信小程序作为腾讯公司推出的一款基于微信平台的移动APP,具有简单易用、跨平台、即走即用等特点。因此本系统的用户UI 交互系统采用了微信小程序进行开发设计。主要实现了郑州GS 学院图书馆公共自习室座位使用情况的实时可视化的信息展示,包含当前座位的状态及本座位已有的预约信息。
自习室中有8 张大桌子,每张桌子上可安排8 个自习座位,每个方块就代表一个自习座位。白色方块代表该座位为空闲状态,无人预约,单击此方块则可以进入预约信息填写界面。红色方块则表示该座位已经被预约或正在使用,点击此方块则可以产看座位具体的使用信息,包括预约的开始时间和结束时间以及预约人的基本信息。具体流程如下图所示:
3 后端服务设计与实现
后端服务主要采用了SpringBoot 框架,实现了整个系统的数据传递和业务逻辑控制。主要的数据交互流程包括个人信息,座位信息,控制信号几部分。首先前端复制接收用户控制信号或者收集用户的数据,提交到基于SpringBoot 框架的服务器程序进行逻辑处理和数据交互。例如登录模块由SpringBoot 的control 层接收预约请求,并接收传入的用户名、座位编号、预约时间等数据。然后由service 层负责对收集的数据进行非空或者字符集转换等加工处理。座位预约数据信息的存储需要通过Mapper 层的Java 接口调用项应的Mapper 文件,完成Java 接口和SQL 语句之间的映射。而本系统的数据底层采用MySQL 数据库实现。整个后端服务采用SpringBoot 框架能有利于这个程序的后期维护。
4 人脸识别模块的设计实现
4.1 RetinaFace网络
RetinaFace 是一种用于人脸检测和人脸识别的深度学习网络模型,由中国科学院自动化研究所的陈泽民等人在2019 年提出。它采用了一种新颖的多任务损失函数,可以同时预测人脸的边界框、人脸关键点、人脸的姿态和人脸的人种信息,具有较高的检测精度和速度。
RetinaFace 模型的基本思路是通过将人脸检测问题转化为一个回归问题,预测每个人脸的边界框、关键点、姿态和人种信息。模型主要由两部分组成:特征提取网络和人脸检测头。
特征提取网络采用了ResNet-50 作为骨干网络,通过提取特征图来表征不同尺度的特征。检测头采用了一种类似于RetinaNet 的方法,对于不同尺度的特征图,使用多个分支来预测不同大小的人脸边界框和关键点。此外,检测头还使用了一种人种分类分支,可以用于预测人脸的人种信息。
4.2 FaceNet模型介绍
本文使用MobileNet 作为FaceNet 网络的主干特征提取网络,MobileNet 网络是专注于移动端或者嵌入式设备中的轻量级CNN, 相比于传统卷积神经网络, 在准确率小幅度降低的前提下大大减少模型参数与运算量。
然后通过控制对人脸特征向量之间的欧氏空间距离的阈值,就可以实现对人脸图像的区分。
4.3 人脸识别流程
1) 静态人脸图像采集,在用户注册该系统时,小程序会调用移动设备的摄像头或者相册功能,要求用户提供一张正面的人脸照片。
2) 人脸图像提取,利用RetinaFace 网络进行边框回归检测来确定人脸的区域,并将框选人脸图像信息录入本地图库。
3) 人脸特征提取,基于本地人脸图库运用FaceNet网络进行人脸特征的向量提取,经过深度学习网络会提取到的128 维特征向量矩阵。
4) 存储人脸特征,将人臉图像提取的128 位的特征向量存入到数据库。
5) 动态图像采集,通过摄像头终端每间隔3 秒钟采集时长为一秒的短视频20f/s,并从中平均抽样5 祯的图像作为识别图片。
6) 提取人脸特征提取,重复上述(2~3) 步的操作,提取出5 张动态图像的特征向量。并进行均值计算,得出1 个特征向量矩阵。
7) 载入本地人脸库,将数据表中存放的静态人脸特征矩阵以numpy 模块格式进行载入,而人脸信息则封装入JSON 字符串。
8) 欧式距离计算,将步骤(6) 中得出的特征向量于载入的本地特征矩阵库中的特征向量运用式(1) 计算欧式距离d。
9) 识别结果输出, 如果欧式距离d 大于预订设置的阀值则认定为匹配失败则是输出Unknown,反之d 小于阀值则匹配成功输出本地库中的用户标签信息。
4.4 模型训练
LFW数据集主要应用对人脸识别的准确度的测试上,并采用迁移学习的方式对该数据集进行训练[4]。从数据集中随机选择5 000 对由人脸组成的人脸图片识别对,其中2 500 对的两张人脸图片来自于同一个人,另2 500 对的两张人脸图片来自于不同的人。测试过程中LFW 随机给出1 对照片,询问被测系统两张照片是否属于同一个人,系统正确或错误两种答案。将这5 000对人脸测试的系统答案与真实答案的比值就是人脸识别准确率。
5 结果分析
将测试集进行分组输入给模型进行测试。验证结果如下:
测试集的准确率分组测试结果显示较接近训练的准确率,准确率约为89%,且实际部署使用的过程中会多次验证。因此实际部署使用过程中产生的误差可忽略不计。
6 结束语
本文通过引入智能自习室系统。以解决传统自习室问题,加入FaceNet 网络在中低性能的机器部署时仍有20 帧左右的速度。故有望在实际部署中以低成本解决实际问题。