基于人脸识别与位置信息的考勤系统
2021-01-25蔡嘉兴
蔡嘉兴 黎 明
(湖南科技学院 电子与信息工程学院,湖南 永州 425199)
随着信息化的发展,以及各方面对于快速有效的自动身份验证的迫切需求,生物特征识别技术得到了迅猛地发展。作为人本身的一种的内在属性,具有很强的个体与个体间的差异性,基于此生物特征就成为了自动身份验证的最理想的根据。
人工考勤、打卡考勤、脱机打卡等方式,有着费时费力,存储数据不易,数据保护难的问题。并且如果存在其他干扰行为,很容易影响数据的精准性。与以上考勤方式相比,人脸识别技术,拥有非接触性质、高效性、高安全性等优点,易于被广大用户接受,从而得到广泛地应用[1]。文章提出一种基于人脸识别技术和定位信息的考勤方法,解决了自动身份认证和远程考勤的需求。
1 人脸识别技术与定位实现背景
1.1 人脸识别实现技术背景
人脸识别技术,是一种通用的,非接触式的生物特征比对的技术。本质上就是通过数据采集用户人脸图像,通过核心算法对脸部特征进行分析,并和自身的数据范本进行比对,最后确定用户身份。在日常生活中常备应用在安检、网络支付、身份证比对等各个方面。
当前的人脸识别方法有多种,目前主流的人脸识别方法包含以下几种:基于脸部几何特征人脸识别、基于特征脸(PCA)的人脸识别、基于弹性匹配的人脸识别方法。
1.2 定位实现技术背景
定位技术是通过一定的技术手段获取目标当前的地理坐标位置信息。在生活中,室内人员定位、商场物品定位、地图导航等方面都离不开定位功能的实现,目前生活中应用最广泛的定位方式是GPS定位[2]。
当前的定位方式主要有:卫星定位、基站定位、网络IP 定位。其中GPS 定位与基站定位、网络IP定位相比有着定位精度高、功能多、应用广、操作简便等特点。
2 系统框架
2.1 硬件框架
系统硬件框架是支撑这个系统的基础,是不可或缺的一部分。在这个系统的整体框架中,用户信息的录入和处理,软件的运行都依赖硬件设备的支持。用户的接收机和摄像设备以及GPS 芯片是系统硬件框架中最为重要的部分。用户接收机实时获取人脸数据信息以及地理位置信息,进行人脸属性检测、位置定位、人脸识别等多种操作,并根据数据的信息进行反馈提示。为保证数据的时效性和数据的存储,建立相对应的数据库来确保功能的实现。
2.2 软件框架
在软件框架中,分为数据分析与处理和用户接收机的状态变更。其中数据的分析与处理方面,首先采集用户的人脸特征信息存储到数据库,考勤时通过虹软SDK(软件开发工具包)实现人脸数据的比对以及采用百度地图SDK中的算法和GPS定位,实现对用户数据的获取、存储与分析,并将用户考勤信息加载到相应的数据库中。用户接收机的状态变更方面,实现不同时间段对用户接收机进行不同操作,达到用户接收机的设备的状态管理的切换。
2.3 通信框架
数据传输是通信系统的一个主要环节,其功能是将用户签到信息、考勤数据实时传输到服务器中。由于需要实现打卡签到的功能,会在特定时间产生庞大的考勤数据,可能会产生数据传输缓慢、传输错误等问题,会大大降低软件的效率。为解决这一方面的问题,在软件方面,采用消息队列服务进行代码的优化,并对无效信息如重复打卡的传输进行一定的过滤。硬件方面,如有因高并发形成瓶颈问题,可以搭建服务器集群,数据库集群,进行读写分离,提高数据访问和存储效率。
3 系统设计与实现
系统开发中采取的是服务器-客户机结构(C/S架构),服务器负责用户数据的管理,客户机完成用户的交互任务。系统主要内容包括:
(1)用户信息数据的人脸采集、位置定位、数据分析、数据管理。
(2)用户信息数据信息与服务器进行交互。
(3)用户信息数据的可视化。
(4)用户信息数据的更新和维护。
系统采用虹软SDK 实现人脸识别和百度SDK(工具开发包)实现位置签到,利用数据库MySQL对用户的数据信息等进行存储,进而实现软件的完整功能。
基于Android 平台的人脸识别与位置签到App主要包括界面的初始化,登录/注册功能、人脸录入功能、识别签到和GPS 定位、查看考勤日志等功能,系统流程如图1 所示。
图1 系统流程图
基于Android 平台实现人脸识别考勤App 的首要工作就是软件的人脸身份识别功能。其主要内容有人脸捕捉、人脸规范化分析、人脸建模、分类对比、人脸识别步骤如图2。
图2 人脸识别主要步骤图
3.1 虹软人脸识别SDK
为了简化软件的开发流程,采用第三方提供的SDK(软件开发工具包)。对于目前提供 SDK 的主流平台有,旷世科技FACE++、虹软ARCSOFT、百度、科大讯飞等多家公司[3]。
经过数据统计和分析用户的体验,系统采用基于Android 的虹软ARCSOFT SDK。当前虹软SDK检测模式分为,静态图识别和动态图识别。虹软SDK 其中包含人脸属性检测、人脸三维角度检测、活体检测、人脸特征提取、人脸特征比对等。功能结构如图 3,既简化了软件的开发同时也保证了人脸识别的准确性,提升考勤的效率[4]。
图3 虹软SDK 功能图
3.2 百度地图定位SDK
为了保证外勤人员远程考勤信息的准确性、实时性,在实现人脸识别功能的同时使用定位功能。当前基于Android 平台的目前的定位方式主要有卫星定位,网络IP 定位,基站定位。其中网络IP 定位和基站定位误差较大。
系统使用百度地图 SDK 实现定位功能,其定位的基本原理如图 4 所示,当应用程序向定位的SDK发起定位请求时,定位SDK会根据当前的GPS信息生成相对应的定位依据。定位 SDK 会向定位服务器发送网络请求。定位服务器根据请求的定位依据推算出对应的地理坐标位置,根据用户的定制信息,将定位的结果返回定位SDK。实现GPS 定位功能包含以下步骤,首先通过配置Android studio环境,导入 SDK 开发工具包,导入手机权限,注册SDK 服务,并初始化GPS 位置信息的监听,实时更新用户的位置。
图4 SDK 定位功能实现基本原理图
3.3 数据库的设计
数据库的设计是软件开发至关重要的一个环节,常用的数据库有关系型数据库(MySQL、Oracle)和非关系型数据库(Redis、MongoDB)。本系统使用MySQL 数据库,存储的主要信息有个人基本信息,其中包括:用户账号、姓名、密码、部门等信息。以及登录打卡信息,包括:序列号、打卡人账号、打卡时间、地点、机器码。具体内容如表 1和表2。
表1 用户登录打卡信息表
表2 用户个人信息表
4 系统测试与分析
该系统搭建于 Lenovo 计算机,操作系统:windows10,开发环境:Android studio3.5。开发中需要获得相应 SDK 的使用权限,其中包括虹软人脸识别SDK 的APP ID,SDK ID 和百度地图定位SDK SHA1 码。
软件开发的具体步骤包含:1)Android 开发的环境搭建配置 2)虹软人脸识别和百度地图定位SDK 获取3)软件开发工具包的SDK 的导入4)页面布局设计
APP 进行了人脸注册、比对和远程位置信息获取、打卡等测试,其中人脸比对的测试结果图如图5,定位测试结果如图6。
图5 人脸比对图
图6 定位测试结果
测试结果表明该 APP 实现了人脸识别的的属性检测以及人脸比对和定位功能。由于人脸识别的准确率受到以下几个因素的影响:光照变化、人脸面部表情变化、背景与附着物,因此,为提高人脸识别的准确率,在使用时,应尽量避免以上因素的影响。
4 结 语
采用虹软SDK 与百度地图SDK 实现基于人脸识别与位置信息的考勤系统,有较好的架构稳定性,保证数据的实时性和准确性,解决了普通考勤信息自动管理难和考勤难等问题,优化了考勤管理业务,极大的提高了用户和企业间的组织效率,经测试和上线使用,满足了当前考勤管理工作的需要。