NodeJS人脸识别初探

作者: 逆月翎 | 来源:发表于2019-06-01 14:11 被阅读13次

最近看文章,一直给我推送人工智能方面的文章,前两天就一直在想,都说python用来开发人工智能很热门,Java大数据也是应用广泛,那抛弃用户量不提,我能否使用Node.js去实现人工智能的某些功能呢?我查了查百度AI开放平台,发现人脸识别其实官方文档就有集成Node.js版本。刚好这两天不是很忙,遂想着亲自动手尝试一下百度AI人脸识别接口。

既然百度提供了Node.js版的SDK,那我们可以使用SDK先快速进入开发。首先进入百度AI:

https://ai.baidu.com/

登录成功进入控制台,点击左侧人脸识别,进入开始创建应用

创建成功后进入管理应用,可以得到开发需要的APPID,API KEY,SECRET KEY,得到这三个参数值之后我们去下载一份Node.js版本的人脸识别SDK:

https://ai.baidu.com/sdk#bfr

准备工作全部完成,我们接下来新建一个Node.js项目。然后将解压后的SDK放进Node项目中。

可以看到我们已经将解压后的SDK放到我们的项目中,现在在终端进入SDK,然后安装SDK所需的依赖,命令为:

npm  install

然后回到项目主目录,将整个SDK作为依赖,在主目录安装依赖,命令为:

npm  install  baidu-aip.sdk

到这里引入SDK到我们本地项目就完成了,接下来我们来看下SDK文档:

我们可以先写个接口测试下第一个接口:人脸检测

首先,我们将我们应用的三个秘钥保存在config.js

创建一个client对象,调用服务接口进行使用。

发送网络请求SDK中已经对request模块进行了封装,我们可以根据自己需要对request的参数进行设置。

接下来我们可以进行人脸检测的调用,SDK已经将接口给我们封装好了,人脸检测的接口分为带可选参数与不带可选参数。有什么区别呢?我们可以看下接口请求参数:

可以看到我们必传的参数有两个:imageimageType

image就是图片可以为url, base64以及FACE_TOKEN。

而imageType就是图片类型,可选值有URL, BASE64, FACE_TOKEN。

其他三个参数是可选的参数,所以我们先来看看不带可选参数的接口如何进行调用:

client.detect(image,imageType)

我们调用该方法,传参image为网络图片url以及imageTypeURL,看看会有什么效果

调用下接口我们可以看到对图片进行了解析,返回了一系列数据

这么多参数究竟干嘛的呢?我们可以看下官方文档对返回参数的说明:

因为返回参数过多,我就不一一截屏,这里贴下NodeSDK文档,可以自行查看:

https://cloud.baidu.com/doc/FACE/Face-Node-SDK.html#.E4.BA.BA.E8.84.B8.E6.A3.80.E6.B5.8B

有了文档我们就可以知道返回参数的意思了

face_num代表在图片中检测到一张人脸

face_list就包含人脸的具体信息 

location对人脸相对于图片位置进行了定位,客户端就可以根据位置信息对人脸进行特效的展示。  

face_token就是图片解析生成的一个唯一标识的字符串,解析image可以直接传入

face_tokenface_probability代表图片是一张人脸的可能程度,1为概率最大  

angle则为人脸旋转程度

解析结果会返回人脸相对于图片的定位,客户端就可以针对位置信息对人脸进行聚焦等操作。第二个接口可选参数又是什么样的呢?我们可以再看看刚才请求参数:

我们有三个可选传的参数:

face_field:指定返回信息

max_face_num:可检测最多人脸数量

face_type:照片类型

我们调用detect方法就需要多传options参数,方法为:

client.detect(image,imageType,options)

我们使用该方法指定返回年龄,指定最大检测人脸为2,照片类型为生活照

我们可以看下运行效果:

我们可以看到返回多了一个age字段,解析返回的预估年龄。

第一个接口到这里没问题了,但是会有一个疑问?我们就是调用了detect方法,为什么就直接返回解析信息呢?其实完整的流程应该是:

通过appIDapi_secret获取access_token凭证发起http请求人脸检测接口,检测成功返回数据

但是获取access_token以及发起http请求这部分SDK其实都已经封装完成,所以我们可以直接使用。我们可以在刚才调用封装的http请求里面打印请求参数,然后再次发起请求:

我们会看到请求人脸检测的接口已经完全封装好了,你只需要调用detect方法,中间的步骤SDK全部帮你进行处理了。

人脸注册

然后接下来我们来看看人脸注册接口,人脸注册该人脸就会与我们设置的groupIduserId进行绑定,人脸注册可以调用方法:

client.addUser(image,imageType,groupId,userId)

我们先看看发起请求需要携带的参数列表:

前两个参数就不多说了,group_id是组iduser_id为用户id。我们可以写个接口看下效果:

我们调用client.addUser()方法,进行人脸注册,我们看下运行效果:

老规矩,贴下文档关于返回参数的解释:

与人脸解析一样,选传参数可以对用户资料,图片质量等参数进行选传,注册成功该人脸就会绑定传的用户资料。这里就不过多解释了,具体可以看下文档自行测试。

人脸搜索

上一个接口我们注册了一个人脸,我们可以调用人脸搜索接口看看是否能搜索到该人脸。首先看看人脸搜索需要调用的方法:

client.search(image,imageType,groupIdList)

这个方法需要解释的第三个参数,在指定的组里进行搜索人脸,如果同时在多个组里搜索就用,隔开。老规矩我们先看下调用本方法的请求参数列表:

我们使用不带选传参数调用人脸搜索接口测试:

接下来调用下看下人脸搜索是否有效果:

可以看到我们在组1中找到了该人脸,我们可以测试下如果在不存在该人脸的组中查询会有什么效果呢?

我在组2中搜索该人脸,未找到人脸信息。所以只有经过人脸注册,将人脸信息保存到指定的组中,才可以在指定的组中找到该人脸。

本篇文章暂时先介绍这三个接口供大家借鉴,下一篇将继续介绍人脸识别其他的API。如果喜欢,请关注我的个人公众号:周先生自留地。一个未来的NodeJS践行者。

相关文章

  • NodeJS人脸识别初探

    最近看文章,一直给我推送人工智能方面的文章,前两天就一直在想,都说python用来开发人工智能很热门,Java大数...

  • NodeJS人脸识别(2)

    上一篇介绍了NodeJS实现人脸识别中的人脸注册,搜索,检测功能。可以看到其实抛开用户量不说,其实任何想要实现的功...

  • NodeJS人脸识别(3)

    前两篇文章介绍了使用NodeJS官方提供的SDK进行快速开发,但是SDK毕竟是封装好的,省略了认证发起请求一系列操...

  • H5、Web、NodeJS 人脸检测识别 基于TensorFlo

    使用 Vue 框架搭建演示,H5、Web、NodeJS 实现人脸检测识别,基于 TensorFlowJS 实现的 ...

  • 人脸识别技术 通识

    人脸识别技术 通识 1 人脸识别概要 2 人脸识别工作原理 3 人脸识别技术分类 4 人脸识别技术优缺点 5 人脸...

  • 都在说人脸识别有Bug,是真的吗?

    “人脸识别破解”“反人脸识别技术”“人脸识别漏洞”“人脸识别失误”“尽量不要用人脸识别”….网上N多这样的信息铺天...

  • 2020-06-09

    云卡通人脸识别系统含盖:动态人脸识别门禁管理系统、动态人脸识别消费系统、动态人脸识别考勤系统。其中动态人脸识别消费...

  • 人脸识别闸机安装知识

    随着人脸识别技术的成熟,人脸识别闸机越来越受欢迎,在选型上也丰富多样。人脸识别闸机包含人脸识别摆闸、人脸识别翼闸、...

  • 2020-07-28

    一、人脸识别系统具有广泛的应用:包括人脸识别出入管理系统、人脸识别门禁考勤系统、人面识别消费管理系统、人脸识别通道...

  • 人脸识别 -- 活体检测(张嘴摇头识别)

    一:简介 最近项目在做了身份证银行卡识别之后,开始实现人脸识别和活体识别,其中人脸识别包括人脸入库、人脸查找、人脸...

网友评论

    本文标题:NodeJS人脸识别初探

    本文链接:https://www.haomeiwen.com/subject/ortatctx.html