人脸识别登录认证:加强系统认证

先看下效果图吧,满足你们的好奇心,哈哈哈

人脸登录成功

人脸登录失败

注册人脸

人脸库

一、创作动机

早在很久之前,公司同事已经实现了在网站的登陆模块加上人脸识别认证登陆功能,自己也就萌生了动手在自己的系统中加上这样的功能,通过不断的学习和搜所资料,发现百度已经提供了这样一个接口供我们去调用,帮助我们快速在自己的系统中集成人脸识别的功能,而且这个接口可以无限次调用。

二、需求介绍

在系统中,我们不用输入任何账号和密码,直接通过人脸识别,实现登陆。

三、使用的接口介绍

在本次演示中,主要涉及到人脸识别模块的两个接口(人脸注册人脸搜索)

人脸注册接口说明:

用于从人脸库中新增用户,可以设定多个用户所在组,及组内用户的人脸图片,

典型应用场景:构建您的人脸库,如会员人脸注册,已有用户补全人脸信息等。用于从人脸库中新增用户,可以设定多个用户所在组,及组内用户的人脸图片,

典型应用场景:构建您的人脸库,如会员人脸注册,已有用户补全人脸信息等。

官网请求实例demo

参数解释:image:这个和imagetype是对应的,如果imagetype是url,则image就是url路径,如果是base64,那image是base64字节码,groupid就是人脸库里创建的组id,userid就当前注册人脸的标识,该userid适合你系统的用户关联的,options是可选的,具体配置请参看官网介绍。

人脸注册,请求demo

人脸搜索接口说明:

由于我这里使用的是v3版本的,v3版本已经将人脸认证移到人脸搜索中,人脸搜索有两种模式:一是通过userid去人脸库中查找人脸和当前人脸进行对比,二是直接通过人脸去人脸库对比,具体使用哪一种请根据场景而定,我这里采用的是后者,是为了更加简单的实现人脸识别认证,无需输入任何字符。

官网demo

参数介绍:options:这里面重要讲下user_id这个选项,如果不加这个参数,则使用上面提到的第二种方式认证,如果加上则使用第一种方式认证;gropidlist:在指定的人脸库中查找比对,其他参数和人脸注册类似。

人脸认证demo

四、开始coding前的准备

获取APP_ID 、API_KEY、API_KEY,SECRET_KEY

具体步骤如下:

点击链接https://login.bce.baidu.com/,进入官网,使用百度云账号登陆(没有则先注册)

登录之后按箭头提示进入控制台,创建应用

创建好之后我们就可以获取我们需要的信息了

五、准备工作介绍完毕,开始coding吧

首先准备前端,打开电脑摄像头,我们在进行人脸注册和登录时,都需要带上摄像头拍下的图片,使用base64进行编码,传到后台,人脸注册还需要额外传入用户的ID,用来表示当前用户,当用户登录成功后会返回这个ID,

前端界面

后台处理

引入必要的依赖,根据你申请 人脸识别不同的版本有关,v2就使用v2版的,我这里使用v3版的依赖

api依赖

我是基于springboot框架进行开发的,所以起初准备使用controller进行处理人脸登陆和注册的请求,可是在调试过程中一直报错,d to instantiate [com.baidu.aip.face.AipFace]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.baidu.aip.face.AipFace.(),运行说是找不到这个,上网查阅还是没能解决,这时候看到介绍百度云人脸识别的博客,采用servlet去处理请求,发现问题没有出现了,现在我来详细说下具体步骤,不会出现过多代码,都是自己的理解。

人脸登录:

查阅文档发现在登录和注册之都会使用到AipFace,通过这个配置初始化的以下参数,参数分别是在编码之前我们准备的三个参数

获取APP_ID 、API_KEY、API_KEY,SECRET_KEY

一行代码就可配置

AipFace client =new AipFace(APP_ID, API_KEY, SECRET_KEY);

登录时后台接受到一个参数 String img(base64编码的)

拿到image后我们就可以进行身份的验证,代码如下:这里调用了apiface的search方法,使用人脸搜索的第二种方式,

参数解释:

image:后台接受到的img(base64)

imageType:base64(和上面对应)

groupidlist:(在指定的人脸库组中查找,这是我们手动在后台新建的)

人脸登录

返回结果:是一个json对象,我这里使用阿里的fastjson进行了转换成实体,

主要参数解释:

result:如果为空,则说明为检测到人脸

user_list:返回的用户列表,取决你设置max_user_num参数

score:我们判断是否认证成功的依据,一般匹配度在90以上基本是从人脸库中找到相似度非常高的,也就是认证成功,

返回结果

本系统中的判断依据

人脸注册

后端处理:接受的参数

userid:用户输入的登录账号

img:摄像头提取的照片 base64

人脸注册使用的是apiface的adduser方法,很简单,传入相应参数,直接调用

其中参数options是可选项,其他的参数和人脸登录是一样的,只是多了一个userid,用来标识当前注册的用户。

人脸注册

返回结果解释:判断是否注册成功,直接拿到error_msg去和SUCCESS匹配,相等则注册成功,否则注册失败。

注册结果

到这里,整个集成工作已完成,谢谢大家能够看到这,给个小心吧。

本文分享自微信公众号 - 乐哉开讲(Lezaikaijiang),作者:杨乐

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • springcloud系列之-ribbon使用及原理讲解

    本章节将要学习springcloud的组件ribbon的使用,ribbon是一个实现了客户端负载均衡的工具,透明的实现了负载均衡策略,我们只需要在resttem...

    AI码师
  • 分布式专题|都说netty入门很难,那是因为你没有看我的文章!

    在写代码之前,我们先看下netty的线程模型,这比那固定格式的代码将会更有趣,看完线程模型,你就知道netty写的那几段固定代码的意义了。

    AI码师
  • 分布式专题|都说netty入门很难,那是因为你没有看我的文章!

    在写代码之前,我们先看下netty的线程模型,这比那固定格式的代码将会更有趣,看完线程模型,你就知道netty写的那几段固定代码的意义了。

    AI码师
  • 一篇文章搞懂人脸识别的十个概念

    人脸技术基本概念介绍 1. 人脸检测   “人脸检测(Face Detection)”是检测出图像中人脸所在位置的一项技术。   人脸检测算法的输入是一张图片,...

    小莹莹
  • 基于深度卷积神经网络进行人脸识别的原理是什么?

    我这里简单讲下OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值。 它的...

    用户1332428
  • 【杂谈】如果你想快速系统掌握计算机视觉大部分领域,学习人脸图像是唯一选择

    笔者是从传统图像算法开始进入计算机视觉行业的,那一批人基本上都是从人脸图像和文本图像开始学,而如今很多计算机视觉从业者却从来没有接触过人脸图像相关的算法,或许真...

    用户1508658
  • 【星球知识卡片】人脸属性编辑都有哪些核心知识点,如何长期进行学习

    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享人脸属性编辑的核心技术点。

    用户1508658
  • [深度应用]·基于卷积神经网络人脸识别的原理及应用开发(转)

    这里简单讲下OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值,它的结构如...

    小宋是呢
  • 浅出深度学习系列-说说“人脸识别”

    们生存的这个星球上,居住着70多亿人。每个人的面孔组成部分相同,它们之间的大体位置关系也是固定的,并且每张脸的大小差异也不大。然而,它们居然就形成了那么复杂的模...

    数据猿
  • Google最新最权威的未来人工智能技术之一:人脸领域

    首先祝大家七夕情人节愉快,能和喜欢的人度过浪漫的一天,也祝在科研的同学抽出时间陪伴你的伴侣,一起度过一年一次的中国情人节,若还处于单身的同学,希望你们不仅科研成...

    计算机视觉研究院

扫码关注云+社区

领取腾讯云代金券