Android安卓人脸识别考勤APP源码
国内外人脸识别技术已经成熟,我们探讨将签到(考勤或者门禁)与人脸识别有效地结合成一种新型的签到方式,即人脸识别签到系统,这将极大地加快签到速度并且减少人力成本,缩短签到时间。让签到更加的方便快捷和安全有效。
本人通过从概述到原理再到源码讲述,请耐心看完哦。
对于人脸识别技术,目前算法分为2种,
一种是在线人脸识别,比如face++ 百度AI等,通过传递人脸图片给服务器处理返回接口。
这种方式优点:服务器算法强大,识别准确率高一些,支持大规模人脸数据,比如能支持10万人对比。
这种方式缺点:慢,需要良好网络环境,我们知道相机预览帧率一般都在30fps 以上,而目前5G时代还未到来,所以一般用户使用网络下,处理一张图片都需要至少1s以上,那么如果需要在手机上实时展示处理结果几乎不太可能。
另外一种是离线人脸识别, 人脸对比算法在本地,人脸数据也在本地,完全是离线环境都可以正常运行。随着安卓手机运算性能提高,算法已经足够有效,处理一张人脸图片速度可以做到100ms以下,一个字就是快。对于应用上,完全的离线人脸签到考勤适合小公司,类似以前那种指纹机,需要通过SD卡导出,但是一般安卓手机也有网络,实际上可以通过网络同步方式同步到服务器。
这种方式优点: 识别快,体验好,无网络可以正常使用。
这种方式缺点:由于移动设备性能优先,目前建议最大人脸数量在5000人左右,无法达到在线大规模计算10万数量级别。因为人员多人脸匹配算法需要挨个匹配那么时间花费就不少了。虽然可以开多线程匹配但是移动CPU性能毕竟有限,长时间运算可能发热发烫最终宕机。另外如果是完全离线话换一台设备就需要重新录入人脸,无法将这一台人脸数据同步到另外一台上面。
由于上述2中方式都存在各种各样问题,这里面提到一种新方式可以解决上面中存在的部分问题,一般项目都是采取 在线数据+离线识别 这种方式,这种方式太机智了,将员工人脸数据保存在服务器,在考勤机上面同步下服务器中的人脸数据,在考勤机上面进行人脸识别,最终将人脸考勤记录上传到服务器。
看到这里可能有些人迫不及待要下载APP体验了,这里贴上百度网盘链接:
https://pan.baidu.com/s/1i5oXoJ7
软件主要需要实现核心功能点:
一款Softboy的人脸识别APP截图
1:人脸登记
又名人脸录入,是人脸识别前提,如果人脸库中没有你怎么能识别到你呢,说以这就是第一步。
使用前需要先将员工信息录入到人脸数据库。员工可以多次录入,以最后录入的为准。
一般需要录入一张清晰人脸就可以,实际开发过程中可以设计成录入多张这样对于不同装束面部遮挡或者光线有较强应对能力。
2:人脸考勤
录入人脸后,即可开始考勤,可以将考勤设备放置到公司前台。人脸清晰出现后,软件开始进行人脸识别,识别成功会提示打卡成功。并且播报语音。软件活体识别功能可以有效甄别活人还是假人。有效避免通过伪造视频或者相片代打卡。目前活体是静默活体,可以有效监测视频,相片等的欺骗,原理就是分析高清摄像头采集回来物体的纹理,举个例子手机拍摄显示器容易出现墨尔文或者边框,算法能有效识别这一特征给出反馈。
动作活体是通过提示脸动作给出反馈,软件能估算面部动作,比如人脸眨眼,摇头,微笑等。
例如人脸眼球位置估算可以参考https://www.jianshu.com/p/79e0725bbf2e 这里不详细展开。
3:考勤记录
对于离线考勤设备, 软件可以以表格形式导出考勤记录 ,通过WIFI 可以通过微信 或者QQ等其他软件形式导出给接收端,也可以通过拷贝SD卡方式。对于可以联网的考勤设备,软件直接能从后台导出。
这边接下来将会将人脸识别原理和相关代码说明,未完待续。