騰訊雲人臉檢索引入教程

  • 2019 年 12 月 11 日
  • 筆記

人臉檢索

先說下什麼是人臉檢索:

本介面用於對一張待識別的人臉圖片,在一個 group 中識別出最相似的 Top5 person 作為其身份返回,返回的 Top5 中按照相似度從大到小排列。

Qcloud 官方文檔中是這樣定義人臉檢索的 API 的概述的。

用大白話來說,就是從一張合影中,匹配出與默認添加個體最相似的一個個體(API會給出最高的五個,從匹配度由高到低排列)。

那麼接下來看看如何操作:

創建鑒權簽名

Qcloud 的付費介面,在調用的時候大多都需要進行鑒權簽名的認證,而鑒權簽名這需要使用用的 APPID 、Bucket、Secret ID 和 Secret Key。

另外: (1)如果您使用的是 125 開頭的 APPID,請使用 API 密鑰 ; (2)如果您使用的是 100、101 等開頭的 項目 ID,請使用 項目密鑰。

點擊上述鏈接,進入新建或查看秘鑰:

保存如圖所示的三個值,而 Bucket 存儲桶,則可以前往COS雲對象存儲 創建並獲取其 Bucket 的名稱:

現在,我們擁有了創建鑒權簽名所需的四個參數,選擇合適的環境創建即可:

鑒權簽名的官方示例提供了兩種方法來完成鑒權簽名的生成,分別依託 PHP 和 JAVA 環境,

這裡我們使用已有的 PHP 環境來執行,將官方提供的鑒權簽名生成程式碼添加到一個 PHP 頁面中,並上傳到 PHP 環境下執行:

<?php  $appid = "1252821871";  $bucket = "tencentyun";  $secret_id = "AKIDgaoOYh2kOmJfWVdH4lpfxScG2zPLPGoK";  $secret_key = "nwOKDouy5JctNOlnere4gkVoOUz5EYAb";  $expired = time() + 2592000;  $onceExpired = 0;  $current = time();  $rdm = rand();  $userid = "0";  $fileid = "tencentyunSignTest";  $srcStr = 'a='.$appid.'&b='.$bucket.'&k='.$secret_id.'&e='.$expired.'&t='.$current.'&r='.$rdm.'&u='  .$userid.'&f=';  $srcWithFile = 'a='.$appid.'&b='.$bucket.'&k='.$secret_id.'&e='.$expired.'&t='.$current.'&r='.$rdm.'&u='  .$userid.'&f='.$fileid;  $srcStrOnce= 'a='.$appid.'&b='.$bucket.'&k='.$secret_id.'&e='.$onceExpired .'&t='.$current.'&r='.$rdm  .'&u='.$userid.'&f='.$fileid;  $signStr = base64_encode(hash_hmac('SHA1', $srcStr, $secret_key, true).$srcStr);  $srcWithFile = base64_encode(hash_hmac('SHA1', $srcWithFile , $secret_key, true).$srcWithFile );  $signStrOnce = base64_encode(hash_hmac('SHA1',$srcStrOnce,$secret_key, true).$srcStrOnce);  echo "多次有效簽名(不綁定資源) " + $signStr."n";  echo "多次有效簽名(綁定資源) " + $srcWithFile ."n";  echo "單次有效簽名 " + $signStrOnce."n";  ?>

注意:將上述php 頁面程式碼的前四項修改為剛才獲取到的對應內容!

然後訪問當前 php 頁面,即可獲得鑒權簽名的內容!

注意: 鑒權簽名是執行請求並計費的秘鑰,在使用過程中注意保密,若泄露易導致他人盜用,產生不必要的額外開支。

完成鑒權簽名後,就可以開始使用人臉檢索的 API 了。

創建個體

在讓人臉檢索服務能為我們檢索到資訊之前,我們先需要上傳個體。

這裡使用 Postman 作為請求處理工具,選擇一個我比較喜歡的演員高司令(Ryan Gosling作為個體,然後在使用人臉檢索服務,在合影中找出他。

請求頭:

參數名

值

描述

host

recognition.image.myqcloud.com

騰訊雲人臉識別伺服器域名

content-length

包體總長度

整個請求包體內容的總長度,單位:位元組(Byte)

content-type

application/json 或 multipart/form-data

據不同介面選擇:1. 使用 application/json 格式,參數為 url,其值為圖片的 url ;2. 使用 multipart/form-data 格式,參數為 image,其值為圖片的 base64 。

authorization

鑒權簽名

多次有效簽名,用於鑒權,生成方式見 鑒權簽名方法

請求參數

使用 application/json 格式,參數選擇 url ;使用 multipart/form-data 格式,參數選擇 image。

參數名

必選

類型

參數說明

appid

是

string

接入項目的唯一標識,可在 帳號資訊 或 雲 API 密鑰 中查看。

group_ids

是

array(string)

加入到組的列表

person_id

是

string

指定的個體 id

image

否

binary

圖片內容

url

否

string

圖片的 url、image提供一個即可;如果都提供,只使用url

person_name

否

string

名字

tag

否

string

備註資訊

按照上表,填寫請求:

頭部資訊如下:

參數部分如下:

這裡選擇如圖的所示的 raw 然後使用 json 模式編寫,更加直觀方便!

注意:圖中所有參數請按自己需要請求的內容替換,如 appid 替換為自己的 appid,group 和 person 的 id 都由用戶自行劃分定義,person_name 為選填參數。

按要求填寫完畢後,點擊 sent,查看返回值:

返回值如上所示,則表示個體創建成功!

人臉校驗

先看下參數:

請求參數

使用 application/json 格式,參數選擇 url ;使用 multipart/form-data 格式,參數選擇 image。

參數名

必選

類型

參數說明

appid

是

string

接入項目的唯一標識,可在 帳號資訊 或 雲 API 密鑰 中查看。

group_id

否

string

候選人組 id,與group_ids二選一即可

group_ids

否

array(string)

候選人組 id列表,與group_id二選一即可

image

否

binary

圖片內容

url

否

string

image 和 url 只需提供一個;如果都提供,只使用 url

返回內容

欄位

類型

說明

data.session_id

string

相應請求的 session 標識符,可用於結果查詢

data.candidates

array(IdentifyItem)

識別出的 top5 候選人

code

int

返回狀態碼

message

string

返回錯誤消息

人臉校驗請求的請求頭和創建個體的一樣,直接按照上文添加,請求參數如下圖所示:

點擊 sent

從返回值中可以看出,人臉檢索已經成功從合影中檢索出了高司令!確認度64!


提供下檢索用的兩張圖片:

聲明:圖片均來自互聯網,不確認版權,若侵權請通知刪除!

參考:

Tags: