基于人脸识别技术的学生考勤系统

2014-04-03 08:30董雷刚崔晓微
大庆师范学院学报 2014年3期
关键词:服务器端考勤人脸

董雷刚,崔晓微,张 丹,张 华

(1.大庆师范学院计算机科学与信息技术学院,黑龙江 大庆 163712;2.东华大学信息科学与技术学院,上海 201620)

0 引言

学生管理工作是各高校中一项非常重要的工作[1,2],而学生晚间归寝情况的统计与管理又是学生管理工作中的一个重要部分,既是维护学校正常的秩序,也涉及到学生的人身安全。目前,高校对学生晚间归寝情况的统计基本上都是依靠人工挨个宿舍去查询,随着学校招生规模的扩大,学生晚间归寝的管理工作所涉及的数据量越来越大,任务也越来越重,使学校不得不增加人力来完成任务。但是,这种方式存在着效率低、易出错、统计繁琐、对学校的管理提供决策信息较为困难等缺点。基于上述原因,本文设计一种智能考勤系统,以人脸识别技术为基础,采用嵌入式Linux操作系统,QT软件、SQL server数据库、OpenCV、以及Android技术进行开发设计。

1 系统整体分析

该系统主要应用于学生宿舍的归寝管理[3-4],由人脸识别终端、后台数据库、Web客户端、Android客户端组成,如下图所示。采集终端对人脸原始图像进行采集,将结果通过TCP/IP网络传输至后台数据库,并生成相应的考勤记录。用户可通过Web客户端浏览整个宿舍楼的归寝情况,以及每个宿舍的学生归寝情况,也可查看一段时间内各学生的归寝情况。用户也可以通过Android手机客户端了解学生的归寝情况,这主要面向于负责学生管理的老师。

图1 系统示意图

2 人脸识别终端

该终端主要由摄像头、Arm处理器模块(包含网卡)、显示屏、电源适配器等组成。ARM处理器搭载Linux操作系统作为微处理器系统,负责终端的计算和管理工作,对于显示屏上的操作界面则采用QT软件进行开发。

该终端功能是获取人脸原始图像并进行识别[5],然后将识别结果通过网络传至数据库,其中,最主要的是人脸图像的采集与识别。Qt下的OpenCV技术,该技术已广泛用于人机互动、物体识别、图象分割、人脸识别、动作识别、运动跟踪、机器视觉等多处,因此采用OpenCV,并根据PCA算法,计算测试和训练图像的特征来完善该考勤系统。人脸识别的过程可以分为三个阶段:人脸检测、人脸训练、人脸识别。

2.1 人脸检测

使用capture=cvCaptureFromCAM(0)获取摄像头,如果capture打开摄像头成功,则frame=cvRetrieveFrame(capture),获得由cvGrabFrame函数抓取的图片,frame就是这张图片的指针,然后把这张图片(frame)进行人脸检测(就是检测这张图片中人脸的位置)。

先用cvCvtColor()把摄像头捕捉的彩色图像转换成灰度[6];然后用cvEqualizeHist()实现灰度图像直方图均衡化;接着用cvLoad()加载分类器(进行人脸检测的算法),函数的参数是分类器的绝对路径,该分类器是把opencv库加到QT中时自动生成的。利用该算法从灰度图像中检测出人脸,cvHaarDetectObjects会返还一个指针,通过该指针,利用cvGetSeqElem()函数得到一个指向检测到人脸属性的指针,该指针可以确定人脸的位置、长、宽;利用cvRetangle()函数在这张整体图片的人脸位置处画出一个矩形(用矩形圈出人脸);保存该矩形圈出的人脸图像,用于后面的人脸训练。

2.2 人脸训练

人脸识别是靠.txt文档来读取该人脸的学号和该人脸所在的路径,需要建立一个train.txt文档,文档里记录了学号和人脸保存的位置(为了提高人脸识别的准确率,每个学号训练了两张图片),如表1所示。

表1 人脸图像表

加载训练图像集(train.txt中的内容):计算出train.txt中有多少个人脸图像,分配人脸图像存储空间和人脸ID号存储空间---faceImgArr,然后加载人脸图像,用cvLoadImage把train.txt中的信息读取到faceImgArr空间中。

进行主成分分析(计算特征值):cvAlloc()分配投影矩阵,也就是为train.txt文档中的图像分配空间;接着,用cvCreateMat()分配主特征值存储空间;然后用cvCreateImage()分配平均图像的存储空间;设定PCA分析结束条件:cvTermCriteria;计算平均图像,特征值,特征向量:cvCalcEigenObjects。

用cvEigenDecomposite将训练图集投影到子空间中,将训练阶段得到的特征值,投影矩阵等数据存为.xml文件,以备人脸识别时使用。

2.3 人脸识别

把人脸数据存储以后,就可以进行人脸识别[7,8]了。建立一个test.txt来存储人脸检测时圈出的人脸图像(这张图像是用来识别的,第二部圈出的图像是进行人脸训练用于人脸是别的);加载测试图像,操作与加载训练图像集的步骤一样,不同之处是cvLoadImage把test.txt中的信息读取到faceImgArr空间中。用loadTrainingData加载人脸训练时保存到.xml文件中的训练结果,然后cvEigenDecomposite将测试图像投影到子空间中,最后找出测试人脸的特征值和.xml文件中的特征值较近的那一个,输出它的ID。

3 数据库设计

本系统的数据存储分为两部分:将训练阶段得到的特征值,投影矩阵等数据存为.XML文件,以备测试时使用,XML文件存放于脸部识别终端,用于本地快速完成人脸的识别;用于服务器端的数据存储则采用SQL SERVER数据库,存储的信息主要包括学生的基本信息、学生的宿舍分布信息、考勤记录等。其中学生的基本信息和宿舍分布信息由手工录入;考勤记录是在学生进行考勤时自动形成的信息,包括考勤的学生姓名、宿舍、时间、考勤的结果,它是管理人员进行各种查询统计操作的基础。学生信息、住宿信息和考勤信息的数据实体联系图如下所示。

图2 实体联系图

4 服务器与WEB客户端

系统的后台处理部分与前台浏览部分采用B/S架构,使得数据的处理与查询能够分开操作。Web内容都是存储在Web服务器上的。Web服务器所使用的是HTTP协议,这些HTTP服务器存储了因特网中的数据,如果HTTP客户端发出请求的话,它们会提供数据。客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据,如图3所示。

图3 web客户端和服务器

服务器部分主要用来存储数据库的内容,并且根据客户端提出的请求进行相关的查询和统计操作,同时还具备学生信息的管理、考勤的管理、考勤的维护,以及系统维护等功能。Web客户端用来供用户进行操作。主要是向服务器端提出各种操作请求,并将服务器的处理结果显示出来。包括查询各宿舍的住宿信息,当天的考勤结果信息,缺勤的学生及住宿信息,以及按照不同时间段对考勤情况进行查询等操作。

5 Android客户端

为了充分利用移动网络,提高辅导员的工作效率,加入了Android客户端,它能操作的内容与WEB客户端基本相同,目的是方便辅导员能随时掌握所管理学生的晚间归寝情况。该客户端通过移动网络连接到后台服务器,并与其进行交互。

在服务器端,采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以又装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。

首先,在服务器端搭建好SSH框架,struts.xml配置如下:

在手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互。首先编写手机端的协议,包括用户向服务器发送请求,同时服务器反馈给手机端信息;然后是登录协议;接着是User实体类,主要用于保存用户信息和口令数据;最后就是LoginActivity里边判断登录的操作,以提示登录成功与否。

6 结语

本文设计了学生晚间归寝考勤系统。图像采集终端能实现对人脸图像的采集和识别功能,并将考勤结果通过网络传送到数据库,管理员可通过web客户端或Android客户端对考勤记录进行查询,避免了派专人进入宿舍查寝,有效地提高了工作效率。

[1]康健.高校考勤管理系统的设计与实现[J].科技向导,2012(3):34

[2]布玛丽亚木.玉苏甫.高校考勤管理系统设计研究[J].企业技术开发,2011(8):189-190.

[3]高猗男.高校综合考勤管理系统的设计与实现[D].大连:大连海事大学硕士学位论文,2010.

[4]公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):85-89.

[5]王守佳.基于图像的人体检测跟踪和人脸识别的研究[D].吉林:吉林大学硕士学位论文,2013.

[6]张焕朗.基于监控系统的人脸跟踪与人脸识别[D].上海:上海交通大学硕士学位论文,2013.

[7]黄泉龙.基于PCA的人脸识别研究[D].西安:西安电子科技大学硕士学位论文,2012.

[8]齐礼成.基于人脸识别考勤系统的设计与实现[D].西安:西安电子科技大学硕士学位论文,2012.

猜你喜欢
服务器端考勤人脸
有特点的人脸
一起学画人脸
Linux环境下基于Socket的数据传输软件设计
基于人脸识别技术的考勤应用研究
智能人脸识别考勤系统
浅谈电子考勤的优势及简介
三国漫——人脸解锁
浅析异步通信层的架构在ASP.NET 程序中的应用
便携式指纹考勤信息管理系统设计
基于Qt的安全即时通讯软件服务器端设计