APP下载

基于NAO的考勤系统设计与实现

2020-02-22唱艺王彬张郑依明谢宇飞李张霞

电脑知识与技术 2020年36期

唱艺 王彬 张郑依明 谢宇飞 李张霞

摘要:近年来,随着移动互联网和通信产业的飞速发展,各行各业对于考勤的需求逐渐增大,但是目前市面上流行的考勤软件大部分使用的是GPS定位考勤,虽然提高了考勤的效率,但是却出现了定位不准确、代签等问题,降低了考勤的准确率,于是如何在保持效率的情况下提高考勤的准确率成为亟待解决的问题。该文就针对这一问题,设计了一个基于NAO机器人,通过人脸识别进行考勤的系统方案,并基于Android平台实现了一个考勤系统。

关键词:Android开发;人脸切割;考勤系统;NAO机器人;网络数据比对

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2020)36-0064-03

1 引言

在当下的互联网时代,人工智能的飞速发展带来的是搭载移动操作系统的智能移动设备逐渐增多,用户可以更多地体验人工智能以及数字化实体化的转变。

NAO机器人作为仿人型机器人的代表已经成功应用于医疗康复、检测领域、智能控制领域、图像处理领域等多个领域。将NAO机器人虚拟仿真软件Choregraphe图形编辑程序应用到高职人工智能机器人专业教学中,可以完成学生对人工智能机器人认识、编程实践操作、指令盒数据库及3D仿真演示等,实现了教学内容与工作能力的有效对接,提高了教学的安全性和趣味性,为后续人工智能机器人实操实训打下良好基础。2017年咸阳职业技术学院电子信息学院引进NAO机器人平台,并将其用于第二课堂及技能大赛,意在锻炼学生的创新能力和科研能力[6]。NAO机器人在自闭症干预的应用一文中讨论了在NAO人机互动和学校课堂授课两种情况下对自闭症障碍谱系儿童的观察结果,通过大量实验表明,患儿在面对NAO人机互动时能有效地减少其自闭症状,大大改善其行为结果[7]。NAO机器人的多用途是基于它可以通过现成的指令块进行可视化编程,因此它允许用户探索各种领域、运用各种复杂程度的编程程序并达到用户想要体验的各种不同效果。

目前教学过程中,学生的出勤主要通过课堂上的点名签到或者应用手机软件进行数字或定位考勤,但这种传统的考勤方式会由于定位不准确或者学生之间的代签问题而无法确切地反馈考勤的结果。NAO作为教学的得力助手,正在创造着未来的教育方式。这一教育方式的进展也逐渐开始陆续进入现实中。常见的NAO机器人具备基础的拍照功能。基于NAO的图像采集能力,设计开发基于人脸识别技术的系统用于学生课堂出勤情况的考核,可有效改善考勤代签的问题。

本系统基于最新的开发技术,借助机器人、人脸识别技术和Android环境以及网络端的数据存储与比对,提供了一种新颖的、自动化和人性化的考勤系统设计思路,有助于提升考勤的准确率。

2 系统功能设计

本系统按照功能主要划分为教师端、学生端、NAO端三个模块。

2.1 教师端

教师模块中主要包含课程信息、考勤记录、添加考勤、考勤分析四个功能模块。教师登录系统后可以查看课程信息,在课程信息界面将依据教师的教职工号及学期序号显示此学期该教师所任教的全部课程,当点击课程名称后,将详细显示课程全部的学生信息以及各学生的出勤率,点击不同的学生头像可以查看该学生本课程的详细出勤记录。考勤记录界面详细显示本学期每门课程的总体出勤率。当教师点击课程名称后,将按照日期显示参与本课程的每个学生的出勤信息。教师如需添加考勤,先选择课程名称,然后点击开启考勤。考勤开启后,机器人使用自带的图像模块进行人脸采集,系统调用人脸识别算法对照片进行人脸切割,然后上传至服务器,服务器调用接口进行人脸匹配,将匹配的结果与人脸数据库进行比对确定学生的精确出勤情况,并返回到教师端,考勤界面会实时更新学生的考勤情况,教师可以选择在一定时间后停止考勤,得出最终的考勤结果。同时考勤结果会发送至学生端上进行确认,若存在有误信息学生可以将其反馈到教师端,对教师进行提示,教师修改出勤信息。当信息全部确认无误后,考勤结束。教师还可以查看不同课程的考勤分析情况,系统将会把课程的出勤率以图表形式进行呈现,使任课教师更直观方便的观察到考勤总体情况。教师可通过分析数据对出勤率较低的课程做出改进,如增加课堂互动、增加考勤次数等。

2.2 学生端

学生登录系统后,在出勤记录界面将显示本学期该学生参加的全部课程,点击课程名称可显示该学生对应课程的出勤情况。当教师端发布考勤后,学生端将接收提醒,NAO机器人进行拍照比对后,将考勤结果返回至学生端进行核实,如果出勤信息有误,学生可以通过平台向教师发送信息,确认出勤信息无误,学生签到成功。

2.3 NAO端

NAO端的功能主要概括为实现交互。NAO机器人需要在接收教师发出的开始考勤的请求后,进行人脸采集,并将采集到的图片发送给后台服务器进行处理,最终接收系统传回的出勤人数信息和未出勤学生信息,开始语音播报,对未出勤的学生进行提醒。

3 核心处理逻辑

系统的核心业务是基于人脸识别进行考勤,即使用人脸识别技术对机器人采集的集体照片进行人脸切割和比对,比对之后将结果记录在指定文件,读取文件后将签到信息返回至教师端和学生端,核心处理逻辑流程图如图1所示。

获取考勤结果使用java Socket套接字实现。首先需要确保全体学生连接到服务器,在服务器中,使用Map数据结构保存从学生信息的实例到学生Socket端实例的映射。当教师点击了“开始签到”按钮,即向Controller传递该课程的Course ID和教师的身份ID,并通过Controller向Server Socket服务器发送签到请求。当服务器收到该请求之后,通过Controller传递的Course ID和教师的身份ID参数,从数据库中获取选择了该课程并由该教师负责的学生的全部信息记录列表。之后,根据返回的学生记录列表,从Map中抽取对应的Socket对象并向这些学生客户端发送签到提醒。然后NAO机器人采集当前课堂内所有学生的照片,进行人脸识别以及比对操作。當教师端点击了“结束签到”按钮后,服务器会统一地向之前发送签到提醒的学生的客户端发送面部识别结果,并可以选择要求学生客户端进行反馈(结果正确、对结果有疑问或者结果错误),以便更正错误或者不准确的签到信息。如果全部学生都反馈正确或者全部问题已解决,则对此次签到情况进行数据库更新,并向教师端提供本次签到的出勤率以及出勤或者缺勤学生的名单等信息,至此考勤信息功能流程结束,如图2所示。

考勤结束后,教师可以查看考勤分析情况,考勤统计情况根据每次考勤的出勤率进行实时更新。教师可以通过分析统计图来制定考勤计划,对出勤率较低的课程进行教学方案的修改。

4 系统实现

4.1 实现过程

基于前述业务逻辑和方法,本文使用百度人脸识别接口、MYSQL数据库实现了一个考勤系统,服务端使用J2EE技术,移动端采用Android平台。

以NAO机器人为载体,使用它的图像采集模块,调用python脚本切割人脸并上传到服务器,调用百度人脸识别接口与预先准备好的人脸库进行人脸匹配,从而实现一个班级的人脸识别签到。在Android手机端有一个实时的反馈,包含:1)学生端接收签到成功(失败)消息;2)教师端接收签到学生信息。教师和学生通过系统可以对人脸签到的结果反馈的分析结果进行查看。

NAO机器人端的程序由Python进行编写,借助NAO官方提供的API编写NAO语音识别和语音播报的脚本;Android端的程序主要实现客户端界面的交互;服务器端由Java语言实现,在应用层实现操作系统底层调度和后台逻辑的处理,同时使用Python脚本处理NAO机器人端的数据,将数据上传至服务器,处理完成后将反馈的结果发送至客户端和NAO机器人端,实现数据传输和交换。

4.2 关键技术

4.2.1 人脸识别技术

本系统的人脸识别技术包含两部分内容,首先是人脸切割,将NAO机器人采集到的图片进行切割。切割的过程调用人脸识别库face_recognition,定位图片中的所有人脸,对图片进行切割,切割后的人脸图片存放入指定文件夹。其次是人脸比对,切割后的人脸被上传至百度人脸识别接口与人脸库中事先录入好的人脸数据进行比对,返回比对结果。对结果进行分析,得分高于规定评分(本系统规定评分为80分)即为识别成功。将信息传入学生端和教师端,显示签到成功。

4.2.2 多線程技术

在考勤系统中,服务器需要经常面对多个请求的接收,或者向多个客户端发送请求等情况。如果将对于所有客户端的接收操作或者发送操作使用串行的方法实现,那么执行完所有的操作消耗的时间将会非常巨大并且对于每一个使用该系统的用户来说都是不友好的。因此要将所有操作并行执行,本系统采用多线程技术。鉴于之前所描述的情况,在考勤系统中必然会存在特别频繁的线程的创建和销毁,在大量并发的情况下会造成极大的性能损失。因此我们需要将线程集中管理并重复利用。由于每个班级的学生人数并不固定,使用一个维护固定数量线程的线程池并不是一个很好的选择,因此我们需要一个可变大小的线程池。在Java中,使用ThreadPoolExecutor类来创建线程池,我们可以通过该类的构造函数构造一个ThreadPoolExecutor的实例在创建一个自定义的线程池,也可以直接使用类似于工厂方法的Executors API创建符合要求的线程池。在考勤系统中,使用Executors.newCachedThreadPool()方法可以非常便捷的创建一个可变大小的线程池实例并交给系统进行维护。

4.2.3 BIO技术

由于考勤系统连接的客户端数量较多,通信频率较高,但是每个客户端的通信时长较短,因此比较适合长连接,同时具有这种特点的长连接也比较适合BIO Socket多线程模型进行操作。因此本考勤系统使用BIO Socket多线程模型。专门为本系统设计的数据结构“签到大厅”,充分利用了线程池和同步阻塞式I/O模型的特点,用于管理每一次考勤并记录出勤情况,是该考勤系统中的一个核心的逻辑单元。在每一次请求开启考勤的过程中,都会创建一个“签到大厅”对本次考勤进行管理,并从数据库中找出相关的学生,为每一个学生创建学生实例对象并作为参数交给一个学生处理器,并将这个学生处理器加入一个线程池中。由此,一次考勤开始。当一次考勤结束后,“签到大厅”还需要负责返回本次考勤的具体情况。

通过上述环境的使用与编码,得到一个基本的功能系统,如图4所示。

用户登录项目首页查看到相关内容,布局上部是有关主页面的UI设计,中部是常用应用,如发起考勤或查看考勤记录,用于查看项目实现的主要功能与核心数据,下部为用户可选择的应用,如首页、课程信息、考勤信息、考勤分析等功能,在此布局上,用户可根据图标的提示信息来实现相应的功能。

项目涉及的基本功能体现在移动端,本系统会根据用户身份的不同而设置不同的使用权限。对于用户的权限分配,还需与登录功能模块建立联系,不同的用户身份在登录时会跳转至不同的功能界面。

如点击课程信息会显示课程列表,如图5所示。其中每一个课程会显示出课程名称和授课的时间,教师或学生可点击相应的课程触发点击事件跳转到相应的课程信息界面进行信息查看,如图6所示。

其他功能如查看考勤记录,用户可通过点击主页面的考勤记录或点击课程列表的下方图标来切换至考勤记录界面,如图7所示。用户可以查看每一名学生的出勤情况,根据考勤数据对考勤情况进行合理的分析并归纳相应的结论。

5 结论

本文基于Android平台和NAO机器人,使用人脸识别技术,实现了人脸识别考勤系统,有效地解决了目前市场上流行的考勤软件的缺陷,即根据GPS考勤定位不准,他人代签到等问题。将课堂考勤与机器人结合起来,增加了课堂的趣味性,调动了学生上课的积极性。未来希望可以提高本系统人脸识别的精度,改善人脸识别的效率,为用户提供更人性化的签到体验。

参考文献:

[1] 张亚杰.基于Android平台的移动终端应用程序的研究与开发[D].郑州:郑州大学,2013.

[2] 侯建峰.基于Android的名著助读系统设计与实现[J].计算机科学与应用,2019, 9(11): 1977-1985.

[3] 陆婕,李少波.基于知识库的智能客服机器人问答系统设计[J].计算机科学与应用,2019, 9(11): 2098-2104.

[4] 郭冠良,朱堪日,蔡敏.基于Android平台的企业考勤系统设计与实现[J].无线互联科技,2019(1):52-53.

[5] 董崇杰.基于Android的移动定位课堂考勤系统设计与实现[J].计算机时代,2017(11):27-29.

[6] 郭钺.基于NAO机器人在高职人工智能机器人专业教学中的应用[J].科学大众(科学教育),2019(4):126.

[7] 张婷.NAO机器人在自闭症干预中的应用[J].系统仿真技术,2013,9(4):327-331,338.

【通联编辑:代影】