腾讯云人脸检索引入教程

  • 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!


提供下检索用的两张图片:

声明:图片均来自互联网,不确认版权,若侵权请通知删除!

参考: