文档简介:
能力介绍
业务能力 人脸搜索与库管理主要用在人脸通用场景,采集照片与底库照片主要为生活照,通常通过手机、电脑、面板机等设备采集。如果您的照片主要由普通摄像头/抓拍机设备大角度俯拍采集获得,建议您使用场景化搜索服务,查看文档详情
- 人脸搜索:也称为1:N识别,在指定人脸集合中,找到最相似的人脸;
- 人脸搜索 M:N识别:也称为M:N识别,待识别图片中含有多个人脸时,在指定人脸集合中,找到这多个人脸分别最相似的人脸
人脸库管理相关接口,要完成1:N或者M:N识别,首先需要构建一个人脸库,用于存放所有人脸特征,相关接口如下:
- 人脸注册:向人脸库中添加人脸
- 人脸更新:更新人脸库中指定用户下的人脸信息
- 人脸删除:删除指定用户的某张人脸
- 用户信息查询:查询人脸库中某个用户的详细信息
- 获取用户人脸列表:获取某个用户组中的全部人脸列表
- 获取用户列表:查询指定用户组中的用户列表
- 复制用户:将指定用户复制到另外的人脸组
- 删除用户:删除指定用户
- 创建用户组:创建一个新的用户组
- 删除用户组:删除指定用户组
- 组列表查询:查询人脸库中用户组的列表
M:N识别的原理,相当于在多个人脸的图片中,先分别找出所有人脸,然后分别在待查找的人脸集合中,分别做1:N识别,最后将识别结果汇总在一起进行返回。
人脸库结构
人脸库、用户组、用户、用户下的人脸层级关系如下所示:
|- 人脸库(appid)
|- 用户组一(group_id)
|- 用户01(uid)
|- 人脸(faceid)
|- 用户02(uid)
|- 人脸(faceid)
|- 人脸(faceid)
....
....
|- 用户组二(group_id)
|- 用户组三(group_id)
....
关于人脸库的设置限制
- 每个appid对应一个人脸库,且不同appid之间,人脸库互不相通。
- 每个人脸库下,可以创建多个用户组,用户组(group)数量没有限制。
- 每个用户组(group)下,可添加无限个user_id,无限张人脸(注:为了保证查询速度,单个group中的人脸容量上限建议为80万)。
- 每个用户(user_id)所能注册的最大人脸数量20。
提醒:每个人脸库对应一个appid,一定确保不要轻易删除后台应用列表中的appid,删除后则此人脸库将失效,无法进行任何查找!
质量判断
为了保证识别效果,请控制注册人脸的质量,在调用人脸注册接口时需要使用质量控制和活体控制参数,从而保证图片的质量以及注册进入人脸库的人脸是活体。
调用方式
请求URL数据格式
向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。
示例代码
#!/bin/bash curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=cl
ient_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'
注意:access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token;
例如此接口,使用HTTPS POST发送:
https://aip.baidubce.com/rest/2.0/face/v1/merge?access_token=24.f9ba9c5341b6768
8ab4added8bc91dec.2592000.1485570332.282335-8574074
POST中Body的参数,按照下方请求参数说明选择即可。
提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式和鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。
人脸搜索
在线调试
您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
注意事项:
- 请求体格式化:Content-Type为application/json,通过json格式化请求体。
- Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,。
- 图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片。
- 人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。
辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读v2文档。
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/search
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图片信息,图片上传方式根据image_type来判断,为base64时,编码后图片大小不超过2M |
image_type | 是 | string |
图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。 |
group_id_list | 是 | string | 从指定的group中进行查找 用逗号分隔,上限10个 |
quality_control | 否 | string |
图片质量控制 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高的质量要求 默认 NONE 若图片质量不满足要求,则返回结果中会提示质量检测失败 |
liveness_control | 否 | string |
活体检测控制 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE 若活体检测结果不满足要求,则返回结果中会提示活体检测失败 |
user_id | 否 | string | 当需要对特定用户进行比对时,指定user_id进行比对。即人脸认证功能。 |
max_user_num | 否 | unit32 | 查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回50个。 |
face_sort_type | 否 | int |
人脸检测排序类型 0:代表检测出的人脸按照人脸面积从大到小排列 1:代表检测出的人脸按照距离图片中心从近到远排列 默认为0 |
match_threshold | 否 | int |
匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认0 此阈值设置得越高,检索速度将会越快,推荐使用默认阈值80 |
说明:如果使用base 64格式的图片,两张请求的图片请分别进行base64编码。
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
人脸搜索 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=
【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513bcb9","
image_type":"FACE_TOKEN","group_id_list":"group_repeat,group_233","quality_contr
ol":"LOW","liveness_control":"NORMAL"}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
- 返回结果
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
face_token | 是 | string | 人脸标志 |
user_list | 是 | array | 匹配的用户信息列表 |
+group_id | 是 | string | 用户所属的group_id |
+user_id | 是 | string | 用户的user_id |
+user_info | 是 | string | 注册用户时携带的user_info |
+score | 是 | float | 用户的匹配得分,推荐阈值80分 |
- 返回示例
{ "face_token": "fid", "user_list": [ { "group_id" : "test1", "user_id": "u333333", "
user_info": "Test User", "score": 99.3 } ] }
- 质量控制参数说明
不同的控制度下所对应的质量控制阈值,如果检测出来的质量信息某一项不符合控制阈值的要求,则会返回错误信息。
遮挡情况的阈值
控制度 | left_eye | right_eye | nose | mouth | left_cheek | right_cheek | chin_contour |
---|---|---|---|---|---|---|---|
LOW | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 |
NORMAL | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 |
HIGH | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
模糊度、完整度的阈值
控制度 | illumination | blurdegree | completeness |
---|---|---|---|
LOW | 20 | 0.8 | 0 |
NORMAL | 40 | 0.6 | 0 |
HIGH | 100 | 0.2 | 1 |
活体控制参数说明
不同的控制度下所对应的活体控制阈值,如果检测出来的活体分数小于控制阈值,则会返回错误信息。
控制度 | 阈值 | 说明 |
---|---|---|
LOW | 0.05 | 活体误拒率:万分之一;拒绝率:63.9% |
NORMAL | 0.3 | 活体误拒率:千分之一;拒绝率:90.3% |
HIGH | 0.9 | 活体误拒率:百分之一;拒绝率:97.6% |
1、误拒率: 把真人识别为假人的概率. 阈值越高,安全性越高, 要求也就越高, 对应的误识率就越高 2、通过率=1-误拒率
关于以上数值的概念介绍:
拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。 阈值(Threshold):高于此数值,则可判断为活体。
人脸搜索 M:N 识别
待识别的图片中,存在多张人脸的情况下,支持在一个人脸库中,一次请求,同时返回图片中所有人脸的识别结果。
在线调试
您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
注意事项:
- 请求体格式化:Content-Type为application/json,通过json格式化请求体。
- Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,。
- 图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片。
- 人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。
辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读v2文档。
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/multi-search
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图片信息(数据大小应小于10M 分辨率应小于1920*1080) |
image_type | 是 | string |
图片类型 BASE64:图片的base64值; URL:图片的 URL( 下载图片时可能由于网络原因导致下载图片时间过长) FACE_TOKEN: face_token 人脸标识 |
group_id_list | 是 | string | 从指定的group中进行查找 用逗号分隔,上限10个 |
max_face_num | 否 | int |
最多处理人脸的数目 默认值为1(仅检测图片中面积最大的那个人脸) 最大值10 |
match_threshold | 否 | int |
匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认80 此阈值设置得越高,检索速度将会越快,推荐使用默认阈值80 |
quality_control | 否 | string |
质量控制(质量不符合要求的人脸不会出现在返回结果中) NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高的质量要求 默认NONE |
liveness_control | 否 | string |
活体控制(活体分数不符合要求的人脸不会出现在返回结果中) NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE |
max_user_num | 否 | unit32 | 识别返回的最大用户数,默认为1,最大20个 |
请求示例
{ "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKD...", "
image_type": "BASE64", "group_id_list": "group1", "max_face_num" : 5,
"quality_control": "LOW", "liveness_control": "NORMAL" }
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_num | 是 | int | 图片中的人脸数量 |
face_list | 是 | array | 人脸信息列表 |
+face_token | 是 | string | 人脸标志 |
+location | 是 | array | 人脸在图片中的位置 |
++left | 是 | double | 人脸区域离左边界的距离 |
++top | 是 | double | 人脸区域离上边界的距离 |
++width | 是 | double | 人脸区域的宽度 |
++height | 是 | double | 人脸区域的高度 |
++rotation | 是 | int64 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
+user_list | 是 | array | 匹配的用户信息列表 |
++group_id | 是 | string | 用户所属的group_id |
++user_id | 是 | string | 用户的user_id |
++user_info | 是 | string | 注册用户时携带的user_info |
++score | 是 | float |
用户的匹配得分 80分以上可以判断为同一人,此分值对应万分之一误识率 |
返回示例
{ "error_code": 0, "error_msg": "SUCCESS", "log_id": 240483475, "timestamp":
1535533440, "cached": 0, "result": { "face_num": 2, "face_list": [ { "face_token":
"6fe19a6ee0c4233db9b5bba4dc2b9233", "location": { "left": 31.95568085, "top":
120.3764267, "width": 87, "height": 85, "rotation": -5 }, "user_list": [ {
"group_id": "group1", "user_id": "5abd24fd062e49bfa906b257ec40d284", "user_i
nfo": "userinfo1", "score": 69.85684967041 }, { "group_id": "group1", "user_id
": "2abf89cffb31473a9948268fde9e1c3f", "user_info": "userinfo2", "score": 66.
586112976074 } ] }, { "face_token": "fde61e9c074f48cf2bbb319e42634f41", "loca
tion": { "left": 219.4467773, "top": 104.7486954, "width": 81, "height": 77,
"rotation": 3 }, "user_list": [ { "group_id": "group1", "user_id": "08871753
2b094c3990755e91250adf7d", "user_info": "userinfo", "score": 65.154159545898 } ] } ] } }
- 质量控制参数说明
不同的控制度下所对应的质量控制阈值,如果检测出来的质量信息某一项不符合控制阈值的要求,则会返回错误信息。
遮挡情况的阈值
控制度 | left_eye | right_eye | nose | mouth | left_cheek | right_cheek | chin_contour |
---|---|---|---|---|---|---|---|
LOW | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 |
NORMAL | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 |
HIGH | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
模糊度、完整度的阈值
控制度 | illumination | blurdegree | completeness |
---|---|---|---|
LOW | 20 | 0.8 | 0 |
NORMAL | 40 | 0.6 | 0 |
HIGH | 100 | 0.2 | 1 |
活体控制参数说明
不同的控制度下所对应的活体控制阈值,如果检测出来的活体分数小于控制阈值,则会返回错误信息。
控制度 | 阈值 | 说明 |
---|---|---|
LOW | 0.05 | 活体误拒率:万分之一;拒绝率:97.75% |
NORMAL | 0.3 | 活体误拒率:千分之一;拒绝率:98.82% |
HIGH | 0.9 | 活体误拒率:百分之一;拒绝率:99.77% |
1、误拒率: 把真人识别为假人的概率. 阈值越高,安全性越高, 要求也就越高, 对应的误识率就越高
2、通过率=1-误拒率
关于以上数值的概念介绍:
拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。 阈值(Threshold):高于此数值,则可判断为活体。
人脸注册
在线调试
您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
注意事项:
- 请求体格式化:Content-Type为application/json,通过json格式化请求体。
- Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,
- 图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片
- 人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。
辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读v2文档。
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string |
图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断。 注:组内每个uid下的人脸图片数目上限为20张 |
image_type | 是 | string |
图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); FACE_TOKEN:人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。 |
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。产品建议:根据您的业务需求,可以将需要注册的用户,按照业务划分,分配到不同的group下,例如按照会员手机尾号作为groupid,用于刷脸支付、会员计费消费等,这样可以尽可能控制每个group下的用户数与人脸数,提升检索的准确率 |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制128B |
user_info | 否 | string | 用户资料,长度限制256B 默认空 |
quality_control | 否 | string |
图片质量控制 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高的质量要求 默认 NONE 若图片质量不满足要求,则返回结果中会提示质量检测失败 |
liveness_control | 否 | string |
活体检测控制 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE 若活体检测结果不满足要求,则返回结果中会提示活体检测失败 |
action_type | 否 | string | 操作方式 APPEND: 当user_id在库中已经存在时,对此user_id重复注册时,新注册的图片默认会追加到该user_id下 REPLACE : 当对此user_id重复注册时,则会用新图替换库中该user_id下所有图片 默认使用APPEND |
face_sort_type | 否 | int |
人脸检测排序类型 0:代表检测出的人脸按照人脸面积从大到小排列 1:代表检测出的人脸按照距离图片中心从近到远排列 默认为0 |
说明:人脸注册完毕后,生效时间一般为5s以内,之后便可以进行人脸搜索或认证操作。
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
人脸注册 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/
add?access_token=【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665
acb1bdf63e513bcb9","image_type":"FACE_TOKEN","group_id":"group_repeat","user
_id":"user1","user_info":"abc","quality_control":"LOW","liveness_control":"NO
RMAL"}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_token | 是 | string | 人脸图片的唯一标识 |
location | 是 | array | 人脸在图片中的位置 |
+left | 是 | double | 人脸区域离左边界的距离 |
+top | 是 | double | 人脸区域离上边界的距离 |
+width | 是 | double | 人脸区域的宽度 |
+height | 是 | double | 人脸区域的高度 |
+rotation | 是 | int64 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
返回示例
{ "face_token": "2fa64a88a9d5118916f9a303782a97d3", "location": { "left": 117, "top":
131, "width": 172, "height": 170, "rotation": 4 } }
- 质量控制参数说明
不同的控制度下所对应的质量控制阈值,如果检测出来的质量信息某一项不符合控制阈值的要求,则会返回错误信息。
遮挡情况的阈值
控制度 | left_eye | right_eye | nose | mouth | left_cheek | right_cheek | chin_contour |
---|---|---|---|---|---|---|---|
LOW | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 |
NORMAL | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 | 0.6 |
HIGH | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
模糊度、完整度的阈值
控制度 | illumination | blurdegree | completeness |
---|---|---|---|
LOW | 20 | 0.8 | 0 |
NORMAL | 40 | 0.6 | 0 |
HIGH | 100 | 0.2 | 1 |
活体控制参数说明
不同的控制度下所对应的活体控制阈值不同,如果检测出来的活体分数小于控制阈值,则会返回错误信息。
控制度 | 阈值 | 说明 |
---|---|---|
LOW | 0.05 | 活体误拒率:万分之一;拒绝率:97.75% |
NORMAL | 0.3 | 活体误拒率:千分之一;拒绝率:98.82% |
HIGH | 0.9 | 活体误拒率:百分之一;拒绝率:99.77% |
1、误拒率: 把真人识别为假人的概率. 阈值越高,安全性越高, 要求也就越高, 对应的误识率就越高 2、通过率=1-误拒率
关于以上数值的概念介绍:
拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。 阈值(Threshold):高于此数值,则可判断为活体。
人脸更新
接口描述
用于对人脸库中指定用户,更新其下的人脸图像。
说明:针对一个user_id执行更新操作,新上传的人脸图像将覆盖此user_id原有所有图像。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
注意事项:
- 请求体格式化:Content-Type为application/json,通过json格式化请求体。
- Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,
- 图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片
- 人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。
辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读v2文档。
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断 |
image_type | 是 | string |
图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); FACE_TOKEN: 人脸图片的唯一标识 |
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制128B |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
user_info | 否 | string | 用户资料,长度限制48B 默认空 |
quality_control | 否 | string |
图片质量控制 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高的质量要求 默认 NONE 若图片质量不满足要求,则返回结果中会提示质量检测失败 |
liveness_control | 否 | string |
活体检测控制 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE 若活体检测结果不满足要求,则返回结果中会提示活体检测失败 |
action_type | 否 | string | 操作方式 UPDATE: 会使用新图替换库中该user_id下所有图片, 若user_id不存在则会报错 REPLACE : 当user_id不存在时, 则会注册这个user_id的用户 默认使用UPDATE |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
人脸更新 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update?a
ccess_token=【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513
bcb9","image_type":"FACE_TOKEN","group_id":"group_repeat","user_id":"user1","user_i
nfo":"cba","quality_control":"LOW","liveness_control":"NORMAL"}' -H '
Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_token | 是 | string | 人脸图片的唯一标识 |
location | 是 | array | 人脸在图片中的位置 |
+left | 是 | double | 人脸区域离左边界的距离 |
+top | 是 | double | 人脸区域离上边界的距离 |
+width | 是 | double | 人脸区域的宽度 |
+height | 是 | double | 人脸区域的高度 |
+rotation | 是 | int64 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
返回示例
{ "face_token": "2fa64a88a9d5118916f9a303782a97d3", "location": { "left": 117,
"top": 131, "width": 172, "height": 170, "rotation": 4 } }
人脸删除
接口描述
删除用户的某一张人脸,如果该用户只有一张人脸图片,则同时删除用户。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制128B |
group_id | 是 | string | 用户组id(由数字、字母、下划线组成) 长度限制48B,删除指定group_id中的user_id信息 |
face_token | 是 | string | 需要删除的人脸图片token,(由数字、字母、下划线组成)长度限制64B |
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息
返回示例
// 删除成功 { "error_code": 0, "log_id": 73473737, } // 删除发生错误 { "error_
code": 223106, "log_id": 1382953199, "error_msg": "face is not exist" }
用户信息查询
接口描述
获取人脸库中某个用户的信息(user_info信息和用户所属的组)。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
group_id | 是 | string | 用户组id(由数字、字母、下划线组成,长度限制48B),如传入“@ALL”则从所有组中查询用户信息。注:处于不同组,但uid相同的用户,我们认为是同一个用户。 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
用户信息查询 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/use
r/get?access_token=【调用鉴权接口获取的token】' --data '{"user_id":"user1","gro
up_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
user_list | 是 | array | 查询到的用户列表 |
+user_info | 是 | string | 用户资料,被查询用户的资料 |
+group_id | 是 | string | 用户组id,被查询用户的所在组 |
返回示例
{ "user_list": [ { "user_info": "user info ...", "group_id": "gid1" }, { "user_in
fo": "user info2 ...", "group_id": "gid2" } ] }
获取用户人脸列表
接口描述
用于获取一个用户的全部人脸列表。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
group_id | 是 | string | 用户组id (由数字、字母、下划线组成),长度限制48B |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
获取用户人脸列表 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face
/getlist?access_token=【调用鉴权接口获取的token】' --data '{"user_id":"user1","grou
p_id":"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
face_list | 是 | array | 人脸列表 |
+ face_token | 是 | string | 人脸图片的唯一标识 |
+ctime | 是 | string | 人脸创建时间 |
返回示例
{ "face_list": [ { "face_token": "fid1", "ctime": "2018-01-01 00:00:00" },
{ "face_token": "fid2", "ctime": "2018-01-01 10:00:00" } ] }
获取用户列表
接口描述
用于查询指定用户组中的用户列表。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id,长度限制48B |
start | 否 | uint32 | 默认值0,起始序号 |
length | 否 | uint32 | 返回数量,默认值100,最大值1000 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
获取用户列表 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset
/group/getusers?access_token=【调用鉴权接口获取的token】' --data '{"group_id":
"group1"}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
- 返回结果
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id_list | 是 | array | 用户ID列表 |
-
返回示例
{ "user_id_list": [ "uid1", "uid2" ] }
复制用户
接口描述
用于将已经存在于人脸库中的用户复制到一个新的组。
说明:并不是向一个指定组内添加用户,而是直接从其它组复制用户信息 如果需要注册用户,请直接使用人脸注册接口
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/copy
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取 |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
user_id | 是 | string | 用户id,长度限制48B |
src_group_id | 是 | string | 从指定组里复制信息 |
dst_group_id | 是 | string | 需要添加用户的组id |
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息
返回示例
// 正确返回值 { "error_code": 0, "log_id": 3314921889, } // 发生错误时返回值
{ "error_code": 223111, "log_id": 3111284097, "error_msg": "dst group is not exist" }
删除用户
接口描述
用于将用户从某个组中删除。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/delete
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id(由数字、字母、下划线组成,长度限制48B) ,如传入“@ALL”则从所有组中删除用户 |
user_id | 是 | string | 用户id(由数字、字母、下划线组成),长度限制48B |
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息:
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
返回示例
// 正确返回值 { "error_code": 0, "log_id": 3314921889, } // 发生错误时返回值
{ "error_code": 223103, "log_id": 815967402, "error_msg": "user is not exist" }
创建用户组
接口描述
用于创建一个空的用户组,如果用户组已存在 则返回错误。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制48B。 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
创建用户组 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/a
dd?access_token=【调用鉴权接口获取的token】' --data '{"group_id":"group1"}
' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息:
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
返回示例
// 正确返回值 { "error_code": 0, "log_id": 3314921889, } // 发生错误时返回值
{ "error_code": 223101, "log_id": 815967402, "error_msg": " group is already exist" }
删除用户组
接口描述
删除用户组下所有的用户及人脸,如果组不存在 则返回错误。 注:组内的人脸数量如果大于500条,会在后台异步进行删除。在删除期间,无法向该组中添加人脸。1秒钟可以删除20条记录,相当于一小时可以将7万人的人脸组删除干净。用户组删除可能存在一定延迟,期间指定该用户组搜索,仍可搜索到未删除完成的用户信息。如果您的用户组下数据量较大并且希望保证删除的时效性,建议您先循环删除组内的用户,最后删除用户组。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id | 是 | string | 用户组id,标识一组用户(由数字、字母、下划线组成),长度限48B。 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
删除用户组 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/g
roup/delete?access_token=【调用鉴权接口获取的token】' --data '{"group_id":"group1"
}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
通过返回的error_code判断是否成功 如失败则查看error_msg获得具体错误信息:
返回参数
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
返回示例
// 正确返回值 { "error_code":0, "log_id": 3314921889, } // 发生错误时返回值
{ "error_code": 223100, "log_id": 815967402, "error_msg": " group is not exist" }
组列表查询
接口描述
用于查询用户组的列表。
在线调试
您可以在示例代码中心中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
请求说明
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
start | 否 | uint32 | 默认值0,起始序号 |
length | 否 | uint32 | 返回数量,默认值100,最大值1000 |
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
组列表查询 curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/gr
oup/getlist?access_token=【调用鉴权接口获取的token】' --data '{"start":0,"leng
th":100}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
- 返回结果
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
group_id_list | 是 | array | group |
-
返回示例
{ "group_id_list": [ "gid1", "gid2" ] }
错误码
请参考人脸识别错误码