騰訊雲人臉檢索引入教程
- 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!
提供下檢索用的兩張圖片:

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