智慧校园人脸识别系统的设计与实现

2019-08-20 07:27邱城铨罗回彬陈汕李宇栋苏敬雄吕翔
现代计算机 2019年20期
关键词:经纬度人脸识别数据库

邱城铨,罗回彬,陈汕,李宇栋,苏敬雄,吕翔

(北京理工大学珠海学院计算机学院,珠海519000)

0 引言

传统校园宿舍出入的记录与分析工作大多数由宿管与辅导员手工记录分析,其费时费力且容易错漏。随着信息技术的发展,笔者深受当下技术领域与人员流量管理的启发,尝试整合分布式Web 后台框架、GPS定位系统、人脸识别技术的成果,设计一款可支撑高峰期并发量的分布式智慧校园人脸识别系统。本系统主要应用人脸识别与GPS 定位来解决校园中学生人员流动的记录与分析,可以较好的辅助学校宿管员和辅导员进行在线审批、记录和数据分析,可以解放一部分劳动力,实现互联网与物联网紧密结合,较好地应用到校园生活中。

1 系统设计方案

1.1 系统架构

在智慧校园人脸识别系统研发的过程中,突破了传统Web 后台的开发和架构模式,应用了最新流行的分布式架构搭建后台系统,前后端分离开发,系统架构如图1 所示。

本系统架构属于可集成多个Web 项目的分布式框架体系,本项目中以微信小程序作为用户交互入口,后台交互采用Web 浏览器端让系统管理员进行基础信息的增删改查,以Spring Cloud Gateway 作为API 网关入口,应用服务器进行数据处理,存储与报表统计,数据持久化至MySQL 服务器,中间可穿插Redis 缓存,采用Eureka 负责服务的注册于发现。

图1 系统架构图

1.2 系统功能模块

系统功能点划分层次分明,智慧校园人脸识别系统用户入口为微信小程序,后台管理为浏览器端,各个功能模块如图2 所示。

1.3 系统数据流

用户注册进入系统,注册人脸数据,将人脸信息注册至人脸识别系统,便可以参与正常的业务流程。智慧校园人脸识别系统采用微信小程序用户进行GPS 定位+人脸识别两种鉴别方式监控学生宿舍归校人数统计,晚归记录,请假表申请审批,统计校内人口流量情况,并集成短信推送系统进行进一步的消息服务。

图2 智慧校园人脸识别系统功能模块

图3 系统数据流

2 系统功能设计与实现

智慧校园人脸识别系统在微信小程序端可分为三个角色入口:学生、辅导员和宿管,每个角色都有各自的职责与交互流程,活动信息持久化至MySQL 数据库,通过SMS 接口进行消息提醒推送,使用户随时接收活动最新消息。Web 后台浏览器端通过管理员负责基础数据的导入导出,信息维护。

2.1 人脸识别

人脸识别系统的集成与实践是本系统突出的第一大特色,使微信小程序前端、后台Web 服务、人脸识别服务实现交互。其中,人脸注册根据楼栋号来进行信息注册,并且可以自己规定图像属性,在注册时将学号进行映射,以此完成学生信息注册;人脸识别的具体流程发生在学生进行签到/晚归的时候,通过识别摄像头前的用户和服务器上用户注册的图片进行特征点比对。具体人脸识别流程如图4 所示。

图4 人脸识别流程

2.2 GPS定位

GPS 定位系统的集成与应用是本系统突出的第二特色,通过GPS 进行进一步的定位鉴定,可有效防止学生异地签到/认证。

该GPS 定位系统采用的是腾讯地图微信小程序JavaScript SDK 位置服务,根据官方文档,需要申请密钥,还需要下载微信小程序JavaScript SDK,在微信开发者工具中要添加request 合法域名(https://apis.map.qq.com)。

(1)小程序中引入sdk 核心类:(即js 文件)

例:var QQMapWX = require('../../libs/qqmap-wxjssdk.js');

(2)实例化api 核心类

qqmapsdk=new QQMapWX({

key:'申请的key'

});

(3)使用api 提供的方法来获取当前位置的经纬度

qqmapsdk.reverseGeocoder({

success:function(res){

var res=res.result;

}

})

(4)小程序中获取楼栋经纬度和签到范围,然后调用API 提供的接口,计算当前位置经纬度和楼栋经纬度的距离是否在签到范围内(本项目中,在Web 后台页面中,设置了学生楼栋的经纬度、考勤范围),来判断该学生是否在他所在的楼栋。

wx.request({

url:’https://apis.map.qq.com/ws/distance/v1/?mode=driving&from=’+当前位置经纬度+‘‘&to=’+楼栋经纬度+’&key=’+你申请的密钥

success:(res=>{

res.data.result.elements[0].distance//就是两点之间的距离

})

})

2.3 SMS通知模块的集成

SMS 模块的集成是本系统的第三大特色,在用户交互的过程中可能出现重要的通知业务,本系统集成了SMS 模块,通过自定义短信通知,将重大系统通知推送给用户对应的手机号。本项目中触发SMS 调用的流程如下:在辅导员发布归校签到活动之后,系统根据辅导员管理的班级,获取所有班级的学生信息,再根据对应学生的基本信息生成content,最后调用短信接口,逐条发送短信。

(1)SMS 消息推送模板如下:

A. header:【宿签】

B. content(内容)

(2)SMS 接口的定义如下:

public static void sendSms(String tel,String content);

其中,tel 表示待发送的手机号,content 表示内容。在实际实现的时候会在每个content 前面加上对应的header。当消息推送失败的时候系统会记录对应的错误日志。推送内容的定义如下:

content=header+content;

log.info("短信推送:{} 内容:{}",tel,content);

(3)使用JDK8 中的流处理进行短信推送的调用流程如下:

studentIdChargeByCounselor

.forEach(id->{

Student student=studentService.selectById(id);

Counselor counselor = studentService.getCounselor(id);

String content = "您的辅导员" + counselor.getName()

+"发布了归宿签到活动,请前往App 查看详

情";

SmsUtil.sendSms(student.getTel(),content);

});

2.4 Redis缓存

使用Redis 缓存进行缓存数据,应对高并发情况下的重复请求,是本系统实现的第四大特色,在没有使用Redis 缓存之前,所有数据库请求都需要在数据库中进行SQL 解析处理,并返回对应SQL 语句内容,在高并发情况下数据库压力过大会导致用户体验感低下。统一缓存接口类以及方法的定义如下:

(1)cacheable()方法先判断是否存在缓存,存在则直接返回缓存数据,不存在则获取数据库数据,再调用set()方法添加缓存数据;

(2)set()方法添加缓存数据,其中重载的方法有一个TimeUint 字段用来设置缓存失效时间;

(3)delete()方法删除缓存数据,其中重载的方法可以删除多条或者删除一条;

(4)get()方法根据key 获取对应的缓存数据。

其中,缓存在系统业务中的查询流程如图5 所示。

图5 缓存查询业务

Redis 缓存在系统中主要借鉴了AOP(面向切面)设计思想,在不修改原本业务逻辑代码的前提下,使用切面代码,对业务前后进行处理,例举添加用户的缓存设计,在添加用户的业务方法返回之后,将返回数据添加到Redis 缓存中,具体方法步骤如下所示。

(1)设计切入点

@Pointcut("execution(*com.qcq.wecheck.service.UserService.insert(..))&&args(user)")

public void insert(User user){}

(2)实现切入逻辑,判断业务方法是否成功执行,成功执行则设置对应缓存数据。具体AOP 实现如下所示:

@AfterReturning(value="insert(user)",argNames="user,success",returning="success")

public void afterInsert(User user,boolean success){

if(success){

String key = parseKey(USER,user.getOpenId

());

cacheSupport.set(key,user);

}

}

2.5 数据库设计

数据库采用关系型数据库MySQL,持久化框架采用MyBatis Plus,利用MyBatis Plus 的快速开发特性,将系统所有的交互数据存储至数据库。

数据库表主要有:学生表、辅导员表、宿管表、楼栋表、设备表、活动表、活动记录表、学院表、年级表、专业表、班级表、基础信息表、管理员表,如图6 所示。

图6 系统数据库关系图

2.6 实现效果

本项目小程序端实现效果如图7 所示,人脸识别界面,主要用于晚归登记;用户的主页面,显示角色对应活动;即时通讯界面,接收历史消息记录。此外,Web 前端管理员页面如图8 所示,主要包括学生、宿管员、辅导员基本信息管理页面和宿舍楼栋位置信息管理页面等。

图7 小程序端主要界面

图8 Web端页面

3 结语

通过人脸识别与GPS 定位记录学生归校签到行为,记录学生晚归次数等操作节省了宿管与辅导员的工作量和提高了他们的管理效率。此外,通过智慧校园人脸识别系统的工作方式,可以将这些学校人员出入的记录很好地保存在保障性强、容错率高、可追溯性强的数据库。本项目是智慧校园建设的重要组成部分,系统的数据保存在阿里云上的MySQL 服务器上,用户活动报表等进阶文档也可以存储至阿里云OSS 平台进行永久性维护,对今后的智慧校园开发有一定的参考价值和借鉴意义。

猜你喜欢
经纬度人脸识别数据库
人脸识别 等
揭开人脸识别的神秘面纱
人脸识别技术研究与应用进展概述
智能人脸识别考勤系统
基于经纬度范围的多点任务打包算法
自制中学实验操作型经纬测量仪
数据库
澳洲位移大,需调经纬度
数据库
数据库