基于人脸识别技术的高校自助迎新管理系统的设计与实现
2018-06-06马文静张枝令洪俊雄
马文静 张枝令 洪俊雄
摘要:近年来,高校新生人数不断增长,给迎新工作带来的压力越来越大。传统迎新工作利用人工信息核对、学籍查询、报到数据整理和统计的方式,存在工作量大、工作难度大,速度慢、出错概率高等弊端。针对该问题,该文提出一种利用百度人脸识别SDK将系统摄像头获取的新生图像信息转化为学生的身份特征信息,并通过DotNet和SQLServer实现学生数据查询、登记的方法,实现学生“刷脸”自助完成报到。实验结果表明,该系统能够准确识别新生特征的信息,縮短新生排队时间,降低高校迎新工作的难度和强度,具有较高的实用价值。
关键词:人脸识别技术;高校自助迎新
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)07-0166-03
随着人们对高等教育的重视程度日益提高,高校新生人数不断提高。如图1所示,根据阳光高考平台、高考直通车APP等权威平台公布的数据显示,以福建为例2016年福建参加高考考生总人数为17.5万,2017年上升到18.82万,同比增长7.5个百分点,其他省份大部分都呈现增长趋势。这就意味着,高校每年的招生人数越来越多,迎新工作的压力越来越大。传统的利用手工进行学籍查询、报到数据整理和统计的方式,不仅费时、费力,且容易出错。
人脸与人体的其他生物特征(指纹、虹膜等)一样与生俱来,它的唯一性和不易被复制的良好特性为身份鉴别提供了必要的前提。与其他生物识别技术如虹膜识别、指纹识别相比,具有非强制性、非接触性、并发性等特点,除此之外,还具有符合视觉特性、操作简单、结果直观、隐蔽性好等优点[1],其特征比对数据相对其他生物特征易于获得。随着人脸识别技术的不断发展,识别的准确性不断提高,在各领域都已经投入使用,如考勤、公安部门“天网”工程、支付宝“刷脸”支付等。
因此,本文提出一种基于DotNet环境进行开发,利用Microsoft SQL Server作为数据库管理系统为系统提供数据支持。应用较为成熟的百度人脸识别SDK,将外部摄像头获取到的新生现场图像数据转换为唯一的用户编码(ID),进行用户身份的确认,当确认新生身份后系统跳出信息采集提示,新生扫描二维码用手机填写或在触屏机上填写资料。资料提交后自动显示并打印迎新指南给新生。具体统流程如图2所示。
1 数据库设计与基础数据处理
1.1 新生信息设计
根据分析,新生信息分由两部分组成,一部分是新生的高招档案信息,包括考生号、录取专业、姓名、身份证号、学籍照片等,另一部分是考生在高校的编排信息,如学生证号、班级号、宿舍号、班级座位号等。
设计一张新生信息表(StudentInfo_tb),每一个考生信息作为这张表的一个字段,考生在高校的编排信息为可空字段,高招档案信息为不可空字段,设置考生身份证号字段作为该表主键。在新增一个是否注册字段(IsReg)和是否报到字段(IsArrived),均为Bit型,分别用于存储是否已经将学籍照片在SDK注册和新生是否已经完成报到的标志信息,这两个字段均不可空为,默认值都为False,将通过高招系统获取到的考生档案信息导出一个Excel工作簿,并利用如下SQL语句将EXLCE导入到数据表中:
Select * into StudentInfo_tb from OPENROWSET ('MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0;HDR=YES;DATABASE=FilePath,Sheet$)
其中FilePath为Excel工作簿存储路径,Sheet为数据表名。此操作后,每条记录的考生在高校的编排信息均为空,后期系统编排时系统将会为信息为空的记录自动编排并填入数据。
1.2 新生人脸特征数据预处理
根据考生号导出考生学籍照片存放在电脑目录中,并逐一提供给百度人脸识别SDK人脸注册接口,用考生身份证号作为新生的ID。
2 基于百度人脸识别SDK的人脸检测
2.1 获取百度人脸识别SDK NuGet Package
NuGet是DotNet 中免费开源包的管理工具,在NuGet中我们可以很容易的获取到很多免费的开源开发包。在DotNet集成开发环境Visual Studio 2012 中搜索百度人脸识别SDK的开源包“Baidu.AI”,安装最新版即可获取到百度人脸识别SDK NuGet Package。
2.2 照片质量检测
由于新生学籍中的的照片质量较低,为了减少接口的调用次数,提高系统的整体工作效率,需要在进行人脸注册之前先进行照片质量检测,当检测发现照片效果不佳时将该照片抛弃并生成一个表格,提示工作人员重新收集这些新生的照片或引导这些新生使用其他方式进行报到。
照片质量检测需要借助百度人脸识别SDK的人脸检测接口判断。调用Baidu.AI NuGet Package人脸的交互类中的Detect方法,即可获得检测结果。该结果以JSON形式返回,需要在C#中对返回JSON进行解析,根据实验及参考相关开发文档,重点关注返回结果中的如表1所示属性,若这些属性的值均能满足条件,则该照片可用,否则可以考虑舍弃。
在实际操作时学籍系统照片像素过低、清晰度不佳,对照片先采用无损放大软件(如PhotoZoom)进行适当放大,然后再用PhotoShop软件对照片进行锐化处理,方可满足以上参数要求,否则进行人脸注册时极易失败。
2.3 人脸注册
百度人脸识别SDK的人脸识别功能依赖于百度云应用相关数据库引擎,使用百度提供的云数据引擎能够实现人脸快速辨析、查找和匹配,相对于本地数据库引擎具有占用系统资源少、速度快的优势,因此,将所有新生的学籍照片预先导入到百度人脸识别SDK提供的云端数据库中,并进行人脸注册。
遍历新生学籍照片目录,用C#语言获取新生学籍照片,并用转化为二进制字符数组。同时再从本地数据库的StudentInfo_tb表中查找出相应的新生身份证号作为该用户的ID。
用Post方式提交到百度人脸注册API接口中,解析接口返回的JSON,成功则将该本地数据库的StudentInfo_tb表中该考生记录的IsReg字段置位True,否则为False。
2.4 人脸识别
利用C#代码将通过摄像头抓取到的现场学生图像传入百度人脸识别SDK中的人脸识别接口,即可分析出该人脸信息是否在数据库中。在进行人脸识别之前,同样需要对抓取的现场学生图像进行照片质量检测,满足如本文表1所示的参数要求方可使用,若不满足该要求则提示重新抓取图像。
图像进行照片质量检测后调用调用Baidu.AI NuGet Package人脸的交互类中的Identify方法,获得SDK回传的JSON结果,对JSON进行解析,取得user_info字段的值,并在本地数据库StudentInfo_tb表查找(查询身份证号),找到考生身份信息即可进行后续操作,如识别失败可以提示新生换个姿势、角度重新拍摄图片重试,多次重试均不成功的可以使用其他方式进行新生报到身份验证。
3 系统测试
整体系统的测试环境在实验PC上搭建,安装DotNet Ftamework 4.5,SQL Server2008 R2,并连接到Internet。采用USB摄像头与实验PC连接获取用户照片,预先从学信网导入200张学生学籍照片,进行本文2.2章节所述的照片加工和照片检测并完成人脸注册。再找到10位学生在现场进行测试,每个学生分别进行尝试,直到成功识别为止,并记录尝试次数。实验结果如表2所示,整体实验结果理想。
4 结束语
本系统使用当前较为广泛使用的DotNet和SQLsever的人脸识别算法,有利于通过摄像头传送的人像信息完成对学生的身份识别,并通过数据库技术获取到当前该学生的特征信息,完成该迎新信息的统计与记录。同时,通过相关数据查询软件,可进一步对采集的信息进一步的排序统计,并进行数据导出。对高校繁琐的迎新工作起到更好的管理效果。