基于node.js人脸识别之人脸对比
Node.js简介
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。
Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。
Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。
Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
百度AI开放平台
在百度AI开放平台使用百度的人脸识别能力三个核心步骤 【 获取接口权限 → 准备接口调用工具 → 进行接口调用】
以下过程将做具体的阐述和对在操作过程中出现的问题和需要注意的地方加以强调:
1. 获取接口权限(获取接口权限是调用接口的前提)
首先进入百度云的人脸识别控制台(进入控制台需要提前注册使用密码或手机短信进行登录)
https://console.bce.baidu.com/ai/?_=1528192333418&fromai=1#/ai/face/overview/index
- 创建人脸识别应用
账号登录成功,首先创建应用,填写【应用名称】和【应用描述】,即可创建应用,需要注意的是这二者缺一不可;
- 创建完毕点击返回应用列表
此时应用列表中就会出现百度分配的AppID、API Key以及Secret Key
2.准备接口调用工具(建议使用postman进行快速接口调用)
下载地址如下:
安装后直接进入主页面:
如下图,这就是Postman的主界面
3. 进行调用接口
在postman上可以快速进行接口请求,调用人脸识别接口需要输入正确的接口地址,提前准备人脸图片,具体步骤如下:
获取调用接口所需的Access Token
人脸识别在线接口主要针对HTTP API调用者,,调用API时必须在URL中带上accesss_token参数,获取Access Token的流程如下:
A、如果您使用的是mac电脑可以将此示例代码复制到“终端”上直接获取token。示例代码如下:
#!/bin/bash curl -i -k'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【API Key】&client_secret=【Seceret Key】
B、非Mac电脑操作流程如下,参考文档:http://ai.baidu.com/docs#/Auth/top
- 获取Access Token
请求URL数据格式
向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:
·grant_type: 必须参数,固定为client_credentials;
·client_id: 必须参数,应用的API Key;
·client_secret: 必须参数,应用的Secret Key;
例如:
服务器返回的JSON文本参数如下:
·access_token: 要获取的Access Token;
·expires_in: Access Token的有效期(秒为单位,一般为1个月);
·其他参数忽略,暂时不用;
例如:
{
"refresh_token": "25.8d95acbaffb7dfbd2d35f22af01e0a90.315360000.1890703481.282335-17377713",
"expires_in": 2592000,
"session_key": "9mzdXvbx0cCZTvSy1c64dXBKfGXAerzJuT77zTuaQ7W2xAlxINIEk8srP8gUpXE5WhauCZ/Pn02x9iiW2XH6jWwDfFnHWA==",
"access_token": "24.e3d102c0ec5d28013199e56208c1286f.2592000.1577935481.282335-17377713",
"scope": "public brain_all_scope vis-faceverify_faceverify_h5-face-liveness vis-faceverify_FACE_V3 vis-faceverify_idl_face_merge brain_cvpaas-app-scope wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test权限 vis-classify_flower lpq_开放 cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi smartapp_opensource_recapi fake_face_detect_开放Scope vis-ocr_虚拟人物助理 idl-video_虚拟人物助理",
"session_secret": "bce96d5ad901ad5d904915afeeafd6ac"
}
若请求错误,服务器将返回的JSON文本包含以下参数:
·error: 错误码;关于错误码的详细信息请参考下方鉴权认证错误码。
·error_description: 错误描述信息,帮助理解和解决发生的错误。
例如认证失败返回:
{
"error": "invalid_client",
"error_description": "unknown client id"
}
保存获取到的Access Token,在调用接口时会用到。
- 输入请求地址
可直接复制的请求地址:“https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=【在第一步中获取的access-token】”
注:需要将请求格式切换为“Post”
- 修改请求头(header)
Key栏输入:Content-Type
Value栏输入:application/x-www-form-urlencoded
- 输入请求参数(body)
先选择“x-www-form-urlencoded”,然后参考下图输入参数:
image_type=BASE64
image=图片的base64转码后的结果(此处要使用即将注册到人脸库的人脸图片),转码工具:https://tool.css-js.com/base64.html(注意:在base64转码工具中,要取消默认选项“包含头”)
group_id=gropu001(可自定义:由数字、字母、下划线组成)
user_id=0001(可自定义:由数字、字母、下划线组成)
转码工具的使用:
在body中选择raw,在下面输入如下格式的代码:
准备工作完成后点击send,会出现对比出来的分值(无错误的情况下)如果分数值大于85,则说明是同一人,反之亦然。
如果操作不正确,可能会出现如下错误:
如果出现此类错误,具体可查询以下错误码:
至此本次基于node.js人脸识别之人脸对比全部完成。
其他可参考链接:https://blog.csdn.net/Hydra_xyc/article/details/80835389
小组成员:张佳晨、冉瑞婷、刘丹、张莹、庄子悦