Android园区部队人脸识别源码门禁项目讲解
这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别项目:部队人脸识别门禁系统。
大家都知道部队对人员管理安全要求是相当高的,很多保密的技术保密的资料都是受到严格的管控,这个时候人脸识别结合门禁可以起到非常严密的保护作用。 首先人脸是不可盗用的,如果用之前的刷卡门禁,发现事情可以推脱说卡丢失了! 人脸是不可能丢的,如果丢了就是人命啊~。
本项目运行界面:分为考勤,人脸登记,考勤记录。人脸管理。设置。
项目源码 Demo地址:https://pan.baidu.com/s/1i5oXoJ7
接下来将一下概述,让大家了解一下这个技术:
国内外人脸识别技术已经成熟,我们探讨将签到(考勤或者门禁)与人脸识别有效地结合成一种新型的签到方式,即人脸识别签到系统,这将极大地加快签到速度并且减少人力成本,缩短签到时间。让签到更加的方便快捷和安全有效。
本人通过从概述到原理再到源码讲述,请耐心看完哦。
对于人脸识别技术,目前算法分为2种,
一种是在线人脸识别,比如face++ 百度AI等,通过传递人脸图片给服务器处理返回接口。
这种方式优点:服务器算法强大,识别准确率高一些,支持大规模人脸数据,比如能支持10万人对比。
这种方式缺点:慢,需要良好网络环境,我们知道相机预览帧率一般都在30fps 以上,而目前5G时代还未到来,所以一般用户使用网络下,处理一张图片都需要至少1s以上,那么如果需要在手机上实时展示处理结果几乎不太可能。
另外一种是离线人脸识别, 人脸对比算法在本地,人脸数据也在本地,完全是离线环境都可以正常运行。随着安卓手机运算性能提高,算法已经足够有效,处理一张人脸图片速度可以做到100ms以下,一个字就是快。对于应用上,完全的离线人脸签到考勤适合小公司,类似以前那种指纹机,需要通过SD卡导出,但是一般安卓手机也有网络,实际上可以通过网络同步方式同步到服务器。
这种方式优点: 识别快,体验好,无网络可以正常使用。
这种方式缺点:由于移动设备性能优先,目前建议最大人脸数量在5000人左右,无法达到在线大规模计算10万数量级别。因为人员多人脸匹配算法需要挨个匹配那么时间花费就不少了。虽然可以开多线程匹配但是移动CPU性能毕竟有限,长时间运算可能发热发烫最终宕机。另外如果是完全离线话换一台设备就需要重新录入人脸,无法将这一台人脸数据同步到另外一台上面。
由于上述2中方式都存在各种各样问题,这里面提到一种新方式可以解决上面中存在的部分问题,一般项目都是采取 在线数据+离线识别 这种方式,这种方式太机智了,将员工人脸数据保存在服务器,在考勤机上面同步下服务器中的人脸数据,在考勤机上面进行人脸识别,最终将人脸考勤记录上传到服务器。
了解到了项目的需求,我们先设计好数据库:
表名 | 字段信息 | ||
学生信息表 | jy_st_info | 学生姓名 | jy_st_name |
性别 | jy_st_sex | ||
学籍号 | jy_st_num_id | ||
照片 | jy_st_photo | ||
人脸特征数据 | jy_st_feature | ||
人员类型 | jy_st_type | ||
人员有效期 | jy_st_endtime | ||
备注 | jy_st_remarks | ||
表名 | 字段信息 | ||
考勤信息 | jy_att_info | 考勤设备编号 | jy_equip_id |
学生学籍号 | jy_st_num_id | ||
考勤记录时间 | jy_att_rec_time | ||
备注 | jy_att_remarks | ||
表名 | 字段信息 | ||
考勤设备信息 | jy_equip_info | 设备名称 | jy_equip_name |
设备编号 | jy_equip_id | ||
设备创建时间 | jy_equip_create_time | ||
设备是否有效 | jy_equip_copyright | ||
设备上次访问时间 | jy_equip_lastrequest_time | ||
备注 | jy_equip_remarks | ||
表名 | 字段信息 | ||
分组表 | jy_group_info | 分组名 | jy_group_name |
分组编号 | jy_group_no | ||
分组id | jy_group_id | ||
父级分组id | jy_group_pid | ||
备注 | jy_group_remarks | ||
表名 | 字段信息 | ||
分组 X 设备信息 关联表 | jy_group_equip | 分组ID | jy_group_id |
设备ID | jy_equip_id | ||
下发版本 | jy_group_equip_version | ||
表名 | 字段信息 | ||
分组 X 人员 关联表 | jy_group_st | 分组ID | jy_group_id |
人员ID | jy_st_num_id | ||
表名 | 字段信息 | ||
广告表 | jy_ad_info | 广告名称 | jy_ad_name |
广告ID | jy_ad_id | ||
广告类型 | jy_ad_type | ||
广告标题 | jy_ad_title | ||
广告内容链接 | jy_ad_content | ||
广告播放时间单位s | jy_ad_showtime | ||
表名 | 字段信息 | ||
广告表X分组 关联表 | jy_group_ad | 分组ID | jy_group_id |
广告ID | jy_ad_id |
接着根据需求开发后台,后台无法是数据记录,接口处理。
接下来开始部署系统,部署系统后,这样就可以开发app。
人脸识别考勤系统部署教程
Window系统教程,其他系统类似。
1:服务器部署,
红色部分为必要环境或者版本。
java1.8
mysql-5.7.26-winx64
apache-tomcat-8.5.41
推荐:Navicat Premium 12 用于数据库操作。
- 首先创建数据库和测试数据,执行 face.sql
成功后如下图:
- 将服务JyFrontService.zip拷贝到Tomcat ,成功后如下图
- 配置数据库
找到上面文件并打开,配置数据库和账户密码,这里也可以配置服务器端口。
配置完成后重启Tomcat服务。
- 验证服务是否正常。
用浏览器打开URL: http://localhost:8080/JyFrontService/hi
发现访问正常,如下图。
到这里服务器配置完成。
客户端APP配置
- 安装kaoqinwork-oem-release.apk到安卓手机,目前支持Android4.4+
- 打开运行,目前是测试版本,在首页右下角,点击 数据同步按钮,或者在设置里面点击 数据同步按钮,出现如下界面。
这里可以输入服务器地址,输入完成后,点击设置服务器 按钮用于保持服务器地址。
点击更新人脸数据库可以更新设备对应分组人员。
如果是新设备,访问成功后设备的IMEI号会保存到数据库,请前往给设备下发分组。
如下图 。
设备首次访问后会出现在设备表里面。
给设备分组,设备绑定 groupid= 5 的分组,
这样部署完成后就可以测试APP。APP见网盘,前面已经有写,这里不重复。
未完待续!