浅谈一下我对Android实现人脸认证登录的认识

释放双眼,带上耳机,听听看~!

1.什么是人脸认证登录?

(简称TRFA:Tencent Research Face Authentication)是由腾讯研究院研制的。
从功能上来看,人脸认证登录系统是基于终端摄像头的一种身份加密技术,其核心为人脸识别技术。它通过视频扫描来确认使用者的身份。用户在进入登录界面时,终端将自动通过摄像头将用户图像传入人脸识别系统,系统对人脸特征进行分析鉴定后,确定用户是否合法。

2.人脸认证登录的优势

采用人脸认证登录,可以免去繁琐的密码输入,交互更加快捷方便。

3.实现流程

(1) 人脸注册流程

用户在注册时,需要登录客户端界面,输入帐号UID和其他相关信息(比如用户的姓名),并拍照向服务器发送一张或多张自己的正 面照片。服务层记录该注册请求的帐号UID,客户端设备号DeviceID,并由接收到的照片生成该用户的人脸特征模板。

(2)人脸登录流程

人脸登录包括认证(Verification)和识别(Recognition)两种模式。用户只需人脸靠近摄像头,系统实时检测人脸并采集人脸视频图像发送至服务器端,服务器端与人脸库中的用户特征模板进行比对。认证模式下,用户需要选定其对应账户,服务器端只进行该账户(该UID必须在DeviceID注册列表中)的人脸模板比对,当比对分数超过给定阈值时,返回人脸登陆成功信号。识别模式下,用户不需要进行账户的选择,服务器端会进行该DeviceID下的全部已注册UID的人脸模板比对。当比对分数超过阈值时,系统登录进入最优相似度的账户。

4.原理:

我们可以借鉴face++的实现:

首先,你将一张图片,上传到服务器,服务器会提取你的面部特征,写进一个文件中,这文件会有一个唯一标识吗,叫做face_token,代表你的身份,然后服务器会把这些特征以及标识通过json数据响应给你。响应给你的json数据里包含面部特征,以及你的face_token。

登录验证就是对比或者说匹配的过程,你通过终端拍摄或者从相册选择一张照片,然后上传到服务器,服务器首先提取你的面部特征,然后和你注册账号时提取的面部特征进行对比,如果相识度达到一定高度,就会认为是同一个人,然后服务器响应验证通过,进入账号。

将一张合影中的所有人的身份都识别出来,原理和登录验证是一样,只不过多了一个工序。首先,服务器会探测一张图片中有多人,并且把能探测到人的脸部特征以及标识码以json数组形式都反馈给你,我们可以通过遍历标识码的方式,一个一个匹配,最后把结果汇总,反馈个用户即可。可能你会有疑惑,为什么要遍历标识码来验证,因为标识码是代表一个人的身份,如果用其他参数,比如是否戴眼镜,那么你会分不清反馈的结果到底指向得是那个人,进而看不出图片中的某个人和服务器反馈的那个人是否是同一个人。

5.实现业务逻辑

1. 通过前置照相机捕捉到人的脸部特征
2. 将人的脸部特征通过一些算法(网上查看诸如adaboost算法,PCA算法)取得特征值,然后ID化
3. 将人脸ID化的结果存入数据库
4. 重复1,2如果ID化的结果在人脸特征值数据库中某记录值的阈值范围内,则证明该值存在,通过验证,否则,提醒注册人脸特征库。

6.需要用到的技术:

javaSE语法,android平台相关知识(页面布局,网络通信,调取摄像头),解析json,图像压缩技术(上传大小有限制),手机权限获取。

图片以二进制数组的形式传给服务器

7.实现的几种方式

google官方自带、Opencv、虹软免费SDK、Face++、科大讯飞人脸识别、百度

相关文章:
https://blog.csdn.net/calvin_zhou/article/details/79010996
face++人脸识别接口实现原理(一)
https://blog.csdn.net/qq_29726359/article/details/75451924

人已赞赏
Android文章

Java编程思想-反射机制

2020-4-12 2:31:52

Android文章

Android开发初步探索MVVM框架

2020-4-12 3:46:48

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索