基于人脸识别的多用途移动式点录系解析
基于人脸识别的多用途移动式点录系解析
在当代社会,各种活动都具有一个环节--人员点录,在小型活动中人工点录签到可能不会暴露出太多问题,但随着活动次数的增多,重复几十次上百次的活动中,例如每日学生考勤、职工签到等活动,人工点录就会暴露出效率低、易拥堵、用时长、相似人脸无法准确识别等诸多问题。我国高校报到过程中也普遍存在着“假报到”、报到效率低下等问题。即使是每天的重复签到统计,也会大大耗费人员的精力物力。在开放的大学环境中,对职工或者学生的监管力下降,无疑又给人工点录增加了必要性。
1 背景及意义
人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。只需提前将被检测人员信息录入系统内部,当有使用者进行系统人脸识别检验时,系统会将当前的人脸信息与库中提前录好的人脸信息进行比对,当使用者与库中人脸比对成功,会输出数据库中提前录入好的各项信息,方便使用者查看和核对个人信息。采用人工智能技术,可大大降低人工工作量,使点录工作更加快速、高效,也能有效避免人为失误的发生,更加准确。人脸识别的运用使点录工作实现了信息化、数字化和智能化,大幅提高了点录工作的管理水平,推进了教育信息化建设。
现有的大部分人脸识别装置是固定在一个位置的,使用地点单一,不能满足多种场景的应用。因此我们致力于研发一种多用途可移动式的基于人脸识别的点录装置,方便部署于各种不同的场合中。同时建立完善的后台系统,统计点录信息,方便管理人员查看。基于人脸识别的移动性点录系统可以解决多种场景身份核验过程中存在的问题,如迎新报道,计算机等级考试报道,每日打卡活动报道等。在与学生入学、社会考试管理中等类似的场景,可以根据用户需求,进行快速的后台更新,快速部署,快速实施。利用技术手段有效地解决了各种点录需求所带来的重复性劳作的同时,也同时保障了认证身份信息的真实可靠。
本项目旨在提供一个具有经济性、便捷性、高效性的人工点录系统。完成快速部署、快速移动、快速实施。此系统可以在不同场景,进行快速部署,并可以根据用户提出的需求进行定制化修改。此系统对人脸识别技术采用算法优化,可以很大程度的解决传统识别技术产生的问题,如效率低、用时长、相似人脸无法识别等。此系统具有内置便捷式打印机,在人脸识别成功后会打印出此活动的相关重要信息。此系统同时具有后台数据统计的功能,可以实时查看参与活动人员的报到情况及相关信息。
以学生考勤为例,学生每日去往操场或回到宿舍后,自觉在人点识别系统前点录打卡。机器通过识别系统的摄像头采集学生人脸信息后,快速完成人脸库信息与考生人脸的匹配,显示学生姓名、学号信息,同时自动将学生考勤信息加入数据库。此系统使学生签到流程变得更加简化,效率得到有效提高。
通过对学生考勤系统稍加修改,便可使得设备适配其他点录工作。以设备应用于计算机等级考试场景为例,流程如下:
1、定制化考生数据库建立:通过学校或报名网站采集考生信息(照片、姓名、性别、身份证号等),将人脸照片和考生ID建立唯一关联,并建立相对应的准考证号、考试教室等重要信息的考生数据库。
2、对软件稍加修改:修改前台界面,修改人脸匹配路径,修改待查询数据库,装配并开启打印机。
3、考生人脸识别认证:考生进行报到时,通过本系统设备,现场自动抓取考生人像,与库中该考生人脸图像进行比对。
4、实时发送考生信息:考生在现场比对成功后,屏幕上显示相应的考生信息,同时在数据库备份考生到场即时信息。
5、考生信息系统打印:识别出考生人脸并自动显示该考生信息后,利用打印机打印出库中提前录入的该考生的信息,包括姓名、性别、准考证号、考场等。这样不仅方便了考生寻找对应考场,节约了排队等候的时间,也有利于维持考试场地的秩序,同时避免了考生走错考场以及不清楚自身的考试信息等问题。
6、监考员查看报道信息:监考员可根据打印信息判断考生有无考试资格,减轻了监考员的核对压力。
7、复盘:考试结束后,将考生点录信息(有无点录,点录时间)进行汇总统计,为下一次点录做参考。
2 实现原理及创新点
本软件致力于实现多用途可移动式的基于人脸识别的点录装置。现对该软件做一个大致的介绍。硬件方面:核心是一个树莓派,搭配显示屏、摄像头、热敏打印机,只需提供电源、网络即可使用。现阶段已将其集成到一个一平方分米盒子内部,搭配支架方便调整高度,携带方便,部署简单。软件方面:本软件客户端用python代码开发,核心是人脸识别接口,另外使用openCV库实现人脸检测并绘制人脸框,使用网络传输、云数据库实现信息获取,使用QT技术实现界面美化。
下面对硬件方面解析。硬件的核心是树莓派。使用树莓派而不用单片机,一点是因为树莓派有小巧的特点,方便进行移动式部署,树莓派上可以直接烧录Linux操作系统,所以可以直接移植软件,使得软件可以做到尽情开发想要的功能。二点是因为使用单片机不能实现多用途,每次修改完代码需要烧录程序,程序运行必须要适配特定的单片机种类。
下面对软件方面解析。软件核心是人脸识别接口。传入人脸照片,返回人脸匹配相似度最高的人的身份码及相似度。早期为离线版本,基于openCV库实现人脸比对,但是这种方法有识别准确率低的问题。后期转为在线版本,使用云API的人脸识别接口,应用网络传输技术来调用接口,定制化检测参数,比如可以设置人脸活体检测来检测是真人还是照片或视频。使用免费的百度云接口,后来百度云收费转而使用阿里云,由于阿里云人脸识别接口技术问题导致人脸识别速度较慢,转而继续使用百度云。
本软件分为客户端和后台。客户端实现人脸点录。后台实现对点录信息的汇总与查看,并支持根据特定信息筛选。后台网站使用Java编写,已部署至云服务器。客户端实现点录原理:开启软件后,打开摄像头获得视频流,启动定时器每秒读取几次视频流,转换为图片。该图片有两个去处,一是经过openCV库处理,绘制人脸框然后显示到显示屏中;二是作为人脸识别接口的参数得到人脸匹配相似度最高的人的身份码及相似度,若相似度达到一定阈值即判定为人脸点录成功,在显示屏上显示该公民身份信息,并将该公民签到情况更新到数据库,方便后台查看。若是启动热敏打印功能,该公民身份信息在在显示屏上显示的同时还会被打印到纸上,方便该信息日后查看。
该python客户端软件的基本原理实现后,仍会发现有卡顿现象,而且为实现从对一个领域进行点录到对另一个领域进行点录所需时间成本太高,于是进行创新如下:
调用人脸识别接口任务需要花费较长的时间,因在单线程模式下,调用人脸识别接口任务在运行中会阻碍其下面的命令继续执行。故使用多线程技术实现显示屏绘制图片任务和调用人脸识别接口任务分离,消除了卡顿。并用pyqtSignal信号技术实现多线程下信号不同步的问题,使得人脸识别返回信息能及时反馈到显示屏上。
优化了原代码的逻辑结构,将原先的一个python文件分解为各个可组装的模块,使得代码更加高内聚低耦合,增加了代码的可修改性。使用了QT文件作为程序的视图文件,主函数只需要调用该视图文件接口方可使用该文件,使得视图和逻辑分开,便于调试和修改。主函数可以引用不同的模块来实现快速用途切换,比如从新生报到点录到计算机等级考试点录只需调换模块即可,如可以通过调换模块来实现从mysql数据库到对sqlserver数据库的调用,实现从百度云人脸识别接口到对阿里云人脸识别接口的调用。
另外,本软件实现了适配不同尺寸的显示器,从一个25英寸的显示器上运行良好,放到70英寸的显示器上绘制的图片大小也会等比例变化。本软件通过利用Linux操作系统上的文件系统消除了各种外接设备驱动不同对软件的影响。
3 结论
本软件致力于实现多用途可移动式的基于人脸识别的点录装置,从效果上看实现了多用途和可移动式,具有很多优点。多用途并能快速用途切换,只需要改动极少的几处代码便可实现软件对不同需求的适配。一体化移动式设计,方便了携带和部署。软件各个模块可以动态更换,动态升级,加入了多线程技术大大增加了程序的流畅性。采用云人脸识别API进行点录,速度快,稳定性高,精确度高。建立了完善的后台系统,将点录信息存储在后台,方便管理人员查看点录信息。还应用到了计算机等级考试签到和新生入学实际情景中。该项目经过本轮迭代,已经可以作为一款产品投入使用。目前该项目正在运用到学生签到打卡活动中,正在进行小范围试点。
当然本软件在部署方面也有一些缺点,除了需要树莓派,摄像头,热敏打印机,显示屏,装配盒这些可以看到的硬件设施,还需要远程数据库服务器和后台网站服务器这些隐藏硬件支持。另外树莓派需要烧录linux环境,并且安装python环境和相应的python库。在实际的运用方面,摄像头损坏这种硬件问题会导致软件经常因找不到摄像头而发生异常自动退出;需要更改树莓派默认配置,不然显示屏长时间不被触摸会因自我保护而自动熄屏造成用户反感。
最关键的一环是在“人脸识别”这个模块上,我们的人脸识别接口经过opencv库(离线,即不需要联网,人脸识别准确率低)到使用云API(在线,即需要联网,人脸识别准确率极高且可过滤照片中的人脸,但是有调用量次数限制)。唯一的遗憾就是没有做回离线(自主开发深度学习模型)上,因为要保证用户数据不被泄露和消除网络状况对本软件的影响。