基於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
小組成員:張佳晨、冉瑞婷、劉丹、張瑩、庄子悅