旷视产品:
Face++ API
Face++提供以下四类SDK:人脸识别、人体识别、文字识别、图像识别(场景、物体)。这里只阐述人脸识别接口用法。
1.接口使用:
Face++的人脸识别接口都是底层的识别、对比、搜索、存储,与业务基本无关。
需要官网注册账号,创建应用并获得Api Key和Api Secret,所有请求必须带有这两项用来验证身份和计费。(试用账号免费使用)。
接口均为https api形式,移动SDK也是包装的https请求。
a) 识别接口: 识别图片中人脸。接口详情: https://console.faceplusplus.com.cn/documents/4888373
输入: 图片(url,文件,base64三种方式),可选传入人脸框位置,以及想要获取的结果类型等参数。Key、Secret是每个请求都带的。
输出: 请求、图片、人脸的标识,人脸信息,所用时间。人脸信息包括人脸框位置、关键点(分为106点、83点两种)以及属性(性别、年
龄、笑容、人脸姿势、模糊、眼睛状态(睁眼、眼镜、墨镜)、情绪、人脸质量、人种、颜值、嘴部状态(口罩、张开闭合)、眼球位置和视线、
皮肤状态(健康、色斑、痘、眼圈)) 。
人脸的唯一标识可以用来存储,存储之后再对同一人脸访问可以使用这个标识。
b) 对比接口:对比是否为同一个人 。接口详情: https://console.faceplusplus.com.cn/documents/4887586
输入: 两个人脸(唯一标识、图片url、文件、base64四种方式),可选传入两个人脸的人脸框位置。
输出: 可信度以及不同误识率(千一、万一、十万一)的可信度阈值,可信度超过十万分之一的可信度阈值是同一个人的几率很高,可信度
低于千分之一的可信度阈值是同一个人的几率很低,中间的可信度可以根据用户的误识率需求确定是否判定为同一个人。阈值有可能变化。
其他输出人人脸信息、唯一标识等。
c) 搜索接口:在一个FaceSet(存储)中找出最相似的一张或多张人脸。接口详情: https://console.faceplusplus.com.cn/documents/48
88381
输入: 图片(唯一标识、图片url、文件、base64四种),FaceSet的唯一标识,想要的相似的人脸数量(1-5),可选传入人脸框位置。
输出: n个可信度、不同误识率的可信度阈值,唯一标识等信息。
d) 存储接口:FaceSet是存储单位,最多10000张,可以创建多个FaceSet。 https://console.faceplusplus.com.cn/documents/4888391
总结以及参考价值:
Face++人脸信息很全。
上层业务接口与底层功能接口分离,接口有安全性校验,使用https。
提供存储能力,按存储量计费。
接口按访问次数或者计时收费。
2. Face++接口性能:
识别接口:(调用python接口)
小图片的识别300ms左右,整个网络访问在500ms左右,网络消耗200ms左右。
大图片的识别750ms左右,整个网络访问在970ms左右,网络消耗220ms左右。
比较接口: (调用python接口)
小图片的识别500ms左右,整个网络访问在700ms左右,网络消耗200ms左右。
大图片的比较1100ms左右,整个网络访问在1360ms左右,网络消耗260ms左右。
搜索接口没有测试。
总结:速度较慢,应该和功能多有关系。
3. 上层应用:
3. 上层应用:
a) Face ID:身份验证,登陆,对比。增加了活体。
b) 智能地产:人员通行、 智能零售、车辆定位、视频监控
c) 智能安防。
百度人脸识别Api
参考: http://ai.baidu.com/tech/face
1 简介
基于深度学习的人脸识别方案,准确识别图片中的人脸信息,提供人脸属性识别、关键点定位、人脸1:1比对、人脸1:N识别、活体检测等
能力
2 具体功能
2.1 人脸检测
2.1.1 功能
人脸检测:检测图片中的人脸并标记出位置信息。
人脸关键点:展示人脸的核心关键点信息,及72个关键点信息。
人脸属性值:展示人脸属性信息,如年龄、性别等。
人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。
2.1.2 接口
检测请求图片中的人脸,返回人脸位置、72个关键点坐标、及人脸相关属性信息。
检测响应速度,与图片中人脸数量相关,人脸数量较多时响应时间会有些许延长。
参数 | 类型 | 必选 | 说明 |
log_id | uint64 | 是 | 日志id |
result_num | uint32 | 是 | 人脸数目 |
result | object[] | 是 | 人脸属性对象的集合 |
+age | double | 否 | 年龄。face_fields包含age时返回 |
+beauty | double | 否 | 美丑打分,范围0-100,越大表示越美。face_fields包含beauty时返回 |
+location | object | 是 | 人脸在图片中的位置 |
++left | uint32 | 是 | 人脸区域离左边界的距离 |
++top | uint32 | 是 | 人脸区域离上边界的距离 |
++width | uint32 | 是 | 人脸区域的宽度 |
++height | uint32 | 是 | 人脸区域的高度 |
+face_probability | double | 是 | 人脸置信度,范围0-1 |
+rotation_angle | int32 | 是 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
+yaw | double | 是 | 三维旋转之左右旋转角[-90(左), 90(右)] |
+pitch | double | 是 | 三维旋转之俯仰角度[-90(上), 90(下)] |
+roll | double | 是 | 平面内旋转角[-180(逆时针), 180(顺时针)] |
+expression | uint32 | 否 | 表情,0,不笑;1,微笑;2,大笑。face_fields包含expression时返回 |
+expression_probability | double | 否 | 表情置信度,范围0~1。face_fields包含expression时返回 |
+faceshape | object[] | 否 | 脸型置信度。face_fields包含faceshape时返回 |
++type | string | 是 | 脸型:square/triangle/oval/heart/round |
++probability | double | 是 | 置信度:0~1 |
+gender | string | 否 | male、female。face_fields包含gender时返回 |
+gender_probability | double | 否 | 性别置信度,范围0~1。face_fields包含gender时返回 |
+glasses | uint32 | 否 | 是否带眼镜,0-无眼镜,1-普通眼镜,2-墨镜。face_fields包含glasses时返回 |
+glasses_probability | double | 否 | 眼镜置信度,范围0~1。face_fields包含glasses时返回 |
+landmark | object[] | 否 | 4个关键点位置,左眼中心、右眼中心、鼻尖、嘴中心。face_fields包含landmark时返回 |
++x | uint32 | 否 | x坐标 |
++y | uint32 | 否 | y坐标 |
+landmark72 | object[] | 否 | 72个特征点位置,示例图 。face_fields包含landmark时返回 |
++x | uint32 | 否 | x坐标 |
++y | uint32 | 否 | y坐标 |
+race | string | 否 | yellow、white、black、arabs。face_fields包含race时返回 |
+race_probability | double | 否 | 人种置信度,范围0~1。face_fields包含race时返回 |
+qualities | object | 否 | 人脸质量信息。face_fields包含qualities时返回 |
++occlusion | object | 是 | 人脸各部分遮挡的概率,[0, 1],0表示完整,1表示不完整 |
+++left_eye | double | 是 | 左眼 |
+++right_eye | double | 是 | 右眼 |
+++nose | double | 是 | 鼻子 |
+++mouth | double | 是 | 嘴 |
+++left_cheek | double | 是 | 左脸颊 |
+++right_cheek | double | 是 | 右脸颊 |
+++chin | double | 是 | 下巴 |
++blur | double | 是 | 人脸模糊程度,[0, 1]。0表示清晰,1表示模糊 |
++illumination | - | 是 | 取值范围在[0,255],表示脸部区域的光照程度 |
++completeness | - | 是 | 人脸完整度,[0, 1]。0表示完整,1表示不完整 |
++type | object | 是 | 真实人脸/卡通人脸置信度 |
+++human | - | 是 | 真实人脸置信度,[0, 1] |
+++cartoon | - | 是 | 卡通人脸置信度,[0, 1] |
质量判断指标(当options的参数face_fields中包含qualities,返回质量判断信息):
指标 | 字段与解释 | 推荐数值界限 |
遮挡范围 | occlusion(0~1),0为无遮挡,1是完全遮 挡 含有多个具体子字段,表示脸部多个部位 通常用作判断头发、墨镜、口罩等遮挡 |
left_eye : 0.6, #左眼被遮挡的阈值 right_eye : 0.6, #右眼被遮挡的阈值 nose : 0.7, #鼻子被遮挡的阈值 mouth : 0.7, #嘴巴被遮挡的阈值 left_check : 0.8, #左脸颊被遮挡的阈值 right_check : 0.8, #右脸颊被遮挡的阈值 chin_contour : 0.6, #下巴被遮挡阈值 |
模糊度范围 | Blur(0~1),0是最清晰,1是最模糊 | 小于0.7 |
光照范围 | illumination(0~255) 脸部光照的灰度值,0表示光照不好 以及对应客户端SDK中,YUV的Y分量 |
大于40 |
姿态角度 | Pitch:三维旋转之俯仰角度[-90(上), 90(下)] Roll:平面内旋转角[-180(逆时针), 180(顺时针)] Yaw:三维旋转之左右旋转角[-90(左), 90(右)] |
分别小于20度 |
人脸完整度 | completeness(0或1),0代表完整,1代表 不完整 |
小于0.4 |
人脸大小 | 人脸部分的大小 建议长宽像素值范围:80*80~200*200 |
人脸部分不小于100*100像素 |
2.1.3 场景
人脸属性分析, 基于人脸关键点的加工分析, 人脸营销活动
2.2 人脸比对
2.2.1 功能
两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值;
多种图片类型:支持生活照、 证件照、 身份证芯片照、 带网纹照四种类型的人脸对比;
活体检测:基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了
图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。);
质量检测:返回模糊、光照等质量检测信息,用于辅助判断图片是否符合识别要求;
2.2.2 接口
该请求用于比对多张图片中的人脸相似度并返回两两比对的得分,可用于判断两张脸是否是同一人的可能性大小。
接口名称:Json::Value match(vector<string> images,map<string,string> options)
请求参数:
参数名称 | 是否必选 | 类型 | 可选值范围 | 说明 |
images | 是 | std::vector<std::string> | 图片数据的二进制字符串组成 的vector, 可以使用aip::get_file_conte nt函数获取单个图片信息,然 后加入vector容器 |
|
options | 否 | std::map<std::string,std::str ing> |
options["ext_fields"] = "qu alities"; 返回质量信息,取值 固定:目前支持qualities(质量 检测) options["image_liveness"] = ",faceliveness"; 对第一张 图片不做活体检测、第二张图 做活体检测 options["types"] = "7,13"; 请求对比的两张图片的类型, 示例:“7,13” 12表示带水印证件照:一般 为带水印的小图,如公安网小 图7 表示生活照:通常为手机、 相机拍摄的人像图片、或从网 络获取的人像图片等 13表示证件照片:如拍摄的 身份证、工卡、护照、学生证 等证件图片, 注:需要确保人 脸部分不可太小,通常为100 px*100px| |
返回参数:
字段 | 必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
result_num | 是 | uint32 | 返回结果数目,即:result数组中元 素个数 |
result | 是 | array(object) | 结果数据,index和请求图片index对 应。数组元素为每张图片的匹配得分 数组,top n。 得分[0,100.0] |
+index_i | 是 | uint32 | 比对图片1的index |
+index_j | 是 | uint32 | 比对图片2的index |
+score | 是 | double | 比对得分 |
ext_info | 否 | array(dict) | 对应参数中的ext_fields |
+qualities | 否 | string | 质量相关的信息,无特殊需求可以不 使用 |
+faceliveness | 否 | string | 活体分数,如0.49999。单帧活体检 测参考阈值0.393241,超过此分值以 上则可认为是活体。 注意:活体检测 接口主要用于判断是否为二次翻拍, 需要限制用户为当场拍照获取图片; 推荐配合客户端SDK有动作校验活体 使用 |
2.2.3 场景
人证合一验证, 用户认证等,可与您现有的人脸库进行比对验证
2.3 人脸库管理
人脸库管理相关接口,要完成1:N或者M:N识别,首先需要构建一个人脸库,用于存放所有人脸特征
2.3.1 功能
人脸注册:向人脸库中添加人脸
人脸更新:更新人脸库中,指定用户下的人脸信息
人脸删除:删除人脸库中的某个用户
用户信息查询:查询人脸库中某个用户的详细信息
组列表查询:查询人脸库中用户组的列表
组内用户列表查询:查询指定用户组中的用户列表
组间复制用户:将已经存在于人脸库中的用户复制到一个新的组
组内删除用户:将指定用户从某个组中删除,但不会删除用户在其它组的信息
人脸库结构
人脸库、用户组、用户、用户下的人脸层级关系如下所示:
|- (appid)
|- group_id
|- 01uid
|- faceid
|- 02uid
|- faceid
|- faceid
....
....
|- group_id
|- group_id
2.3.2 接口
为了保证识别效果,请控制注册人脸的质量(通过/detect人脸检测接口判断)
2.3.2.1 人脸注册
接口名称: Json::Value user_add(std::string uid,std::string user_info,std::string group_id,std::string image,std::map<std::string,std::string>
options(可选参数))
请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
uid | 是 | std::string | 用户id(由数字、字母、下划 线组成),长度限制128B |
|
user_info | 是 | std::string | 用户资料,长度限制256B |
group_id | 是 | std::string | 用户组id,标识一组用户(由 数字、字母、下划线组成), 长度限制128B。如果需要将 一个uid注册到多个group下 ,group_id需要用多个逗号 分隔,每个group_id长度限 制为48个英文字符。 注:gro up无需单独创建,注册用户 时则会自动创建group。 产品建议:根据您的业务需求 ,可以将需要注册的用户,按 照业务划分,分配到不同的gr oup下,例如按照会员手机尾 号作为groupid,用于刷脸支 付、会员计费消费等,这样可 以尽可能控制每个group下的 用户数与人脸数,提升检索的 准确率 |
|
image | 是 | std::string | 图片数据的二进制字符串,可 以使用aip::get_file_content 函数获取 |
|
action_type | 否 | std::string | append | 参数包含append、replace 。 如果为“replace”,则每 次注册时进行替换replace( 新增或更新)操作,默认为a ppend操作。例如:uid在库 中已经存在时,对此uid重复 注册时,新注册的图片默认会 追加到该uid下,如果手动选 择action_type:replace ,则会用新图替换库中该uid 下所有图片。 |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
error_code | 否 | uint64 | 注册失败时的错误码 |
error_msg | 否 | string | 错误信息 |
2.3.2.2 人脸更新(不支持增量更新)
用于对人脸库中指定用户,更新其下的人脸图像。
**说明:**针对一个uid执行更新操作,新上传的人脸图像将覆盖此uid原有所有图像。
**说明:**执行更新操作,如果该uid不存在时,会返回错误。如果添加了action_type:replace,则不会报错,并自动注册该uid,
操作结果等同注册新用户。
接口名称: Json::Value user_update(std::string uid,std::string user_info,std::string group_id,std::string
image,std::map<std::string,std::string> options(可选参数))
请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
uid | 是 | std::string | 用户id(由数字、字母、下划 线组成),长度限制128B |
|
user_info | 是 | std::string | 用户资料,长度限制256B | |
group_id | 是 | std::string | 更新指定groupid下uid对应 的信息 |
image | 是 | std::string | 图片数据的二进制字符串,可 以使用aip::get_file_content 函数获取 |
|
action_type | 否 | std::string | append | 目前仅支持replace,uid不存 在时,不报错,会自动变为注 册操作;未选择该参数时,如 果uid不存在会提示错误 |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
error_code | 否 | uint64 | 注册失败时的错误码 |
error_msg | 否 | string | 错误信息 |
2.3.2.3 人脸删除
用于从人脸库中删除一个用户。
人脸删除注意事项:
删除的内容,包括用户所有图像和身份信息;
如果一个uid存在于多个用户组内,将会同时将从各个组中把用户删除
如果指定了group_id,则只删除此group下的uid相关信息
接口名称: Json::Value user_delete(std::string uid,std::map<std::string,std::string> options)
options["group_id"] = "group1";
请求参数说明:
参数名称 | 是否必选 | 类型 | 说明 |
uid | 是 | std::string | 用户id(由数字、字母、下划线组成),长度限制128B |
group_id | 否 | std::string | 删除指定groupid下uid对应的信息 |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
error_code | 否 | uint64 | 注册失败时的错误码 |
error_msg | 否 | string | 错误信息 |
2.3.2.4 用户信息查询
用于查询人脸库中某用户的详细信息。
接口名称: Json::Value user_get(std::string,std::map<std::string,std::string> options)
options["group_id"] = "group1";
请求参数说明:
参数名称 | 是否必选 | 类型 | 说明 |
uid | 是 | std::string | 用户id(由数字、字母、下划线组成),长度限制128B |
group_id | 否 | std::string | 选择指定group_id则只查找group列表下的uid内容,如果不指定则查找所有group下对应uid的信息 |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
result | 是 | array(double) | 结果数组 |
+uid | 是 | string | 匹配到的用户id |
+user_info | 是 | string | 注册时的用户信息 |
+groups | 是 | array(string) | 用户所属组列表 |
2.3.2.5 组列表查询
用于查询用户组的列表。
接口名称:Json::Value group_getlist(std::map<std::string, std::string> options)
options["start"] = "0"; options["num"] = "50";
请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
start | 否 | std::string | 0 | 默认值0,起始序号 |
num | 否 | std::string | 100 | 返回数量,默认值100,最大值1000 |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
result_num | 是 | number | 返回个数 |
result | 是 | array(string) | group_id列表 |
2.3.2.6 组内用户列表查询
用于查询指定用户组中的用户列表。
接口名称:Json::Value group_getusers(std::string group_id,std::map<std::string,std::string> options)
options["start"] = "0"; options["num"] = "50"
请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
group_id | 是 | std::string | 用户组id(由数字、字母、下划线组成),长度限制128B | |
start | 否 | std::string | 0 | 默认值0,起始序号 |
num | 否 | std::string | 100 | 返回数量,默认值100,最大值1000 |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
result_num | 是 | uint32 | 返回个数 |
result | 是 | array(object) | user列表 |
+uid | 是 | string | 用户id |
+user_info | 是 | string | 用户信息 |
2.3.2.7 组间复制用户
用于将已经存在于人脸库中的用户复制到一个新的组。
说明:并不是向一个指定组内添加用户,而是直接从其它组复制用户信息 如果需要注册用户,请直接使用人脸注册接口
接口名称: Json::Value group_adduser(std::string src_group_id,std::string group_id,std::string uid,std::map<std::string,std::string>
options)
请求参数说明:
参数名称 | 是否必选 | 类型 | 说明 |
src_group_id | 是 | std::string | 从指定group里复制信息 |
group_id | 是 | std::string | 用户组id,标识一组用户(由数字、 字母、下划线组成),长度限制128B 。如果需要将一个uid注册到多个gro up下,group_id需要用多个逗号分隔 ,每个group_id长度限制为48个英文 字符。 注:group无需单独创建,注 册用户时则会自动创建group。 产品建议:根据您的业务需求,可以 将需要注册的用户,按照业务划分, 分配到不同的group下,例如按照会 员手机尾号作为groupid,用于刷脸 支付、会员计费消费等,这样可以尽 可能控制每个group下的用户数与人 脸数,提升检索的准确率 |
uid | 是 | std::string | 用户id(由数字、字母、下划线组成 ),长度限制128B |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
error_code | 否 | uint64 | 注册失败时的错误码 |
error_msg | 否 | string | 错误信息 |
2.3.2.8 组内删除用户
用于将用户从某个组中删除,但不会删除用户在其它组的信息。
说明:当用户仅属于单个分组时,本接口将返回错误,请使用人脸删除接口
接口名称:Json::Value group_deleteuser(std::string group_id,std::string uid,std::map<std::string,std::string> options)
请求参数说明:
参数名称 | 是否必选 | 类型 | 说明 |
group_id | 是 | std::string | 用户组id,标识一组用户(由数字、 字母、下划线组成),长度限制128B 。如果需要将一个uid注册到多个gro up下,group_id需要用多个逗号分隔 ,每个group_id长度限制为48个英文 字符。 注:group无需单独创建,注 册用户时则会自动创建group。 产品建议:根据您的业务需求,可以 将需要注册的用户,按照业务划分, 分配到不同的group下,例如按照会 员手机尾号作为groupid,用于刷脸 支付、会员计费消费等,这样可以尽 可能控制每个group下的用户数与人 脸数,提升检索的准确率 |
uid | 是 | std::string | 用户id(由数字、字母、下划线组成 ),长度限制128B |
返回信息说明:
字段 | 是否必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
error_code | 否 | uint64 | 注册失败时的错误码 |
error_msg | 否 | string | 错误信息 |
2.3.3 场景
构建您的人脸库,如会员人脸注册, 已有用户补全人脸信息等。
2.4 人脸查找
2.4.1 功能
1:N人脸识别:也称为1:N识别,在指定人脸集合中,找到最相似的人脸;
1:N人脸认证:基于uid维度的1:N识别,由于uid已经锁定固定数量的人脸,所以检索范围更聚焦;
M:N多人脸识别:也称为M:N识别,待识别图片中含有多个人脸时,在指定人脸集合中,找到这多个人脸分别最相似的人脸;
2.4.2 接口
2.4.2.1 1:N人脸识别
用于计算指定组内用户,与上传图像中人脸的相似度。识别前提为您已经创建了一个人脸库。
**说明:**人脸识别返回值不直接判断是否是同一人,只返回用户信息及相似度分值。
说明:推荐可判断为同一人的相似度分值为80,您也可以根据业务需求选择更合适的阈值。
接口名称: Json::Value identify(std::string group_id,std::string image,std::map<std::string,std::string> options)
options["ext_fields"] = "faceliveness"; options["user_top_num"] = "3";请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
group_id | 是 | std::string | 用户组id,标识一组用户(由 数字、字母、下划线组成), 长度限制128B。如果需要将 一个uid注册到多个group下 ,group_id需要用多个逗号 分隔,每个group_id长度限 制为48个英文字符。 注:gro up无需单独创建,注册用户 时则会自动创建group。 产品建议:根据您的业务需求 ,可以将需要注册的用户,按 照业务划分,分配到不同的gr oup下,例如按照会员手机尾 号作为groupid,用于刷脸支 付、会员计费消费等,这样可 以尽可能控制每个group下的 用户数与人脸数,提升检索的 准确率 |
|
image | 是 | std::string | 图片数据的二进制字符串,可 以使用aip::get_file_content 函数获取 |
|
ext_fields | 否 | std::string | 特殊返回信息,多个用逗号分 隔,取值固定: 目前支持faceliveness(活体 检测)。 注:需要用于判断活 体的图片,图片中的人脸像素 面积需要不小于100px*100p x,人脸长宽与图片长宽比例 ,不小于1/3 |
|
user_top_num | 否 | std::string | 1 | 返回用户top数,默认为1, 最多返回5个 |
返回信息说明:
字段 | 必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
result_num | 是 | uint32 | 返回结果数目,即:result数组中元 素个数 |
ext_info | 否 | array | 对应参数中的ext_fields |
+faceliveness | 否 | string | 活体分数,如0.49999。单帧活体检 测参考阈值0.393241,超过此分值以 上则可认为是活体。 注意:活体检测 接口主要用于判断是否为二次翻拍, 需要限制用户为当场拍照获取图片; 推荐配合客户端SDK有动作校验活体 使用 |
result | 是 | array(object) | 结果数组 |
+group_id | 是 | string | 对应的这个用户的group_id |
+uid | 是 | string | 匹配到的用户id |
+user_info | 是 | string | 注册时的用户信息 |
+scores | 是 | array(double) | 结果数组,数组元素为匹配得分,to p n。得分[0,100.0] |
2.4.2.2 1:N人脸认证用于识别上传的图片是否为指定用户,即查找前需要先确定要查找的用户在人脸库中的id。接口名称:Json::Value verify(std::string uid,std::string group_id,std::string image,std::map<std::string,std::string> options)options["top_num"] = "3"; options["ext_fields"] = "faceliveness";请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
uid | 是 | std::string | 用户id(由数字、字母、下划 线组成),长度限制128B |
|
group_id | 是 | std::string | 用户组id,标识一组用户(由 数字、字母、下划线组成), 长度限制128B。如果需要将 一个uid注册到多个group下 ,group_id需要用多个逗号 分隔,每个group_id长度限 制为48个英文字符。 注:gro up无需单独创建,注册用户 时则会自动创建group。 产品建议:根据您的业务需求 ,可以将需要注册的用户,按 照业务划分,分配到不同的gr oup下,例如按照会员手机尾 号作为groupid,用于刷脸支 付、会员计费消费等,这样可 以尽可能控制每个group下的 用户数与人脸数,提升检索的 准确率 |
|
image | 是 | std::string | 图片数据的二进制字符串,可 以使用aip::get_file_content 函数获取 |
|
top_num | 否 | std::string | 1 | 返回用户top数,默认为1 |
ext_fields | 否 | std::string | 特殊返回信息,多个用逗号分 隔,取值固定: 目前支持faceliveness(活体 检测)。 注:需要用于判断活 体的图片,图片中的人脸像素 面积需要不小于100px*100p x,人脸长宽与图片长宽比例 ,不小于1/3 |
返回信息说明:
字段 | 必选 | 类型 | 说明 |
log_id | 是 | uint64 | 请求唯一标识码,随机数 |
result_num | 是 | uint32 | 返回结果数目,即:result数组中元 素个数 |
result | 是 | array(double) | 结果数组,数组元素为匹配得分,to p n。 得分范围[0,100.0]。推荐得分超过80 可认为认证成功 |
ext_info | 否 | array | 对应参数中的ext_fields |
+faceliveness | 否 | string | 活体分数,如0.49999。单帧活体检 测参考阈值0.393241,超过此分值以 上则可认为是活体。 活体检测接口主 要用于判断是否为二次翻拍,需要限 制用户为当场拍照获取图片;推荐配 合客户端SDK有动作校验活体使用 |
2.4.2.3 M:N多人脸识别待识别的图片中,存在多张人脸的情况下,支持在一个人脸库中,一次请求,同时返回图片中所有人脸的识别结果。接口名称:Json::Value multi_identify(std::string group_id,std::string image,std::map<std::string,std::string> options)options["ext_fields"] = "faceliveness"; options["detect_top_num"] = "3"; options["user_top_num"] = "2";请求参数说明:
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
group_id | 是 | std::string | 用户组id,标识一组用户(由数字、字母、下划线组成), 长度限制128B。如果需要将 一个uid注册到多个group下 ,group_id需要用多个逗号 分隔,每个group_id长度限 制为48个英文字符。 注:gro up无需单独创建,注册用户 时则会自动创建group。 产品建议:根据您的业务需求 ,可以将需要注册的用户,按 照业务划分,分配到不同的gr oup下,例如按照会员手机尾 号作为groupid,用于刷脸支 付、会员计费消费等,这样可 以尽可能控制每个group下的 用户数与人脸数,提升检索的 准确率 |
|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content 函数获取 |
|
ext_fields | 否 | std::string | 特殊返回信息,多个用逗号分隔,取值固定: 目前支持faceliveness(活体 检测)。 注:需要用于判断活 体的图片,图片中的人脸像素 面积需要不小于100px*100p x,人脸长宽与图片长宽比例 ,不小于1/3 |
|
detect_top_num | 否 | std::string | 1 | 检测多少个人脸进行比对,默认值1(最对返回10个) |
user_top_num | 否 | std::string | 1 | 返回识别结果top人数”,当同一个人有多张图片时,只返 回比对最高的1个分数(即, scores参数只有一个值),默 认为1(最多返回20个) |
返回信息说明:
参数 | 字段 | 必选 | 类型 | 说明 |
log_id | - | 是 | uint32 | 请求标识码,随机数,唯一 |
result_num | - | 是 | float | 返回结果数目,即:result数组中元素个数(PS:最终返回的个数是小于等于“实际检测到的人脸数” *“每个人脸匹配的top人数”) |
ext_info | - | 否 | array | 对应参数中的ext_fields |
- | faceliveness | 否 | string | 活体检测分数,单帧活体检测参考阈值0.393241,超过此分值以上则可认为是活体。 注意:活体检测接口主要用于判断是否为二次翻拍,需要限制用户为当场拍照获取图片;推荐配合客户端SDK有动作校验活体使用 |
result | - | 是 | array(object) | - |
- | group_id | 是 | string | 对应的这个用户的group_id |
- | uid | 是 | string | 匹配到的用户id |
- | user_info | 是 | string | 注册时的用户信息 |
- | scores | 是 | array(double) | 结果数组,数组元素为匹配得分,得分[0,100.0];个数取决于user_top_num的设定。推荐80分以上即可判断为同一人 |
- | position | 是 | object | 人脸位置,如{top:111,left:222,width:333,height:444,degree:20} |
2.4.3 场景如人脸闸机, 考勤签到, 安防监控等。百度人脸识别API目前主要用于以下场景:远程身份认证:人脸比对门禁考勤:人脸查找安防监控:人脸查找智能相册分类:人脸检测、人脸查找人脸美颜:人脸检测
来源:https://www.cnblogs.com/berrycake/p/10383266.html