本文章主要介绍人脸检测API能力、应用场景、请求实例、参数说明。
接口能力
人脸检测:检测图片中的人脸并标记出位置信息。
人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。
人脸属性值:展示人脸属性信息,如年龄、性别等。
人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。
应用场景
如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等。
说明
检测响应速度,与图片中人脸数量相关,人脸数量较多时响应时间会有些许延长。
下载SDK
支持PHP版本:5.3+
人脸识别 PHP SDK目录结构
下载SDK 网址
请求参数
参数 | 必选 | 类型 | 说明 |
image | 是 | string | 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断 |
image_type | 是 | string | 图片类型 |
face_field | 否 | string | 包括age,expression,face_shape,gender,glasses,landmark,landmark150, |
max_face_num | 否 | uint32 | 最多处理人脸的数目,默认值为1,根据人脸检测排序类型检测图片中排序第一的人脸(默认为人脸面积最大的人脸),最大值120 |
face_type | 否 | string | 人脸的类型 |
liveness_control | 否 | string | 活体控制 检测结果中不符合要求的人脸会被过滤 |
face_sort_type | 否 | int | 人脸检测排序类型 |
display_corp_image | 否 | int | 是否显示检测人脸的裁剪图base64值 |
说明:face_field参数,默认只返回人脸框、概率和旋转角度,age等更多属性,请在此参数中添加。
请求实例
/*
* 人脸识别实例
* @Yjl
*/
require_once 'AipFace.php';
// 应用API ID
const APP_ID = '应用API ID';
// 应用API KEY
const API_KEY = '应用API KEY';
// 应用 SECRET KEY
const SECRET_KEY = '应用 SECRET KEY';
class FaceAuth{
/**
* 人脸检测
* author: YJL
* @param $imageType
* @param $image:取决于image_type参数,传入 BASE64字符串或URL字符串或FACE_TOKEN字符串
* @return false|string
*/
public function faceCheck($imageType, $image)
{
// 传入必须参数 实例化类
$client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
// 可选参数
$options = array(
'face_field' => 'gender,age,emotion,face_type',
'max_face_num' => 2 // 最多处理人脸的数目,默认为1
);
// 调用人脸检测
$data = $client->detect($image, $imageType, $options);
// 查看 restult 的值 为空表示不含人脸
return json_encode($data);
}
}
$obj = new FaceAuth();
// 人脸检测-图片二进制
/*$image = base64_encode(file_get_contents('./img/1.jpg'));
$imageType = 'BASE64';
print_r($obj->faceCheck($imageType, $image));*/
// 人脸检测-图片链接
$imageType = 'URL';
$image = 'https://pic.3gbizhi.com/2019/1010/20191010025913837.jpg';
print_r($obj->faceCheck($imageType, $image));
返回参数
并非列举全部返回字段,因为字段有很多但并非都需要。
只是列举了默认返回字段和一部分需要face_field 参数请求后返回字段。
若觉得不全,可查看官网文档。
字段 | 必选 | 类型 | 说明 |
face_num | 是 | int | 检测到的图片中的人脸数量 |
face_list | 是 | array | 人脸信息列表,具体包含的参数参考下面的列表。 |
+face_token | 是 | string | 人脸图片的唯一标识 (人脸检测face_token有效期为60min) |
+location | 是 | array | 人脸在图片中的位置 |
++left | 是 | double | 人脸区域离左边界的距离 |
++top | 是 | double | 人脸区域离上边界的距离 |
++width | 是 | double | 人脸区域的宽度 |
++height | 是 | double | 人脸区域的高度 |
++rotation | 是 | int64 | 人脸框相对于竖直方向的顺时针旋转角,[-180,180] |
+face_probability | 是 | double | 人脸置信度,范围【0~1】,代表这是一张人脸的概率,0最小、1最大。其中返回0或1时,数据类型为Integer |
+angle | 是 | array | 人脸旋转角度参数 |
++yaw | 是 | double | 三维旋转之左右旋转角[-90(左), 90(右)] |
++pitch | 是 | double | 三维旋转之俯仰角度[-90(上), 90(下)] |
++roll | 是 | double | 平面内旋转角[-180(逆时针), 180(顺时针)] |
+age | 否 | double | 年龄 ,当face_field包含age时返回 |
+expression | 否 | array | 表情,当 face_field包含expression时返回 |
++type | 否 | string | none:不笑;smile:微笑;laugh:大笑 |
++probability | 否 | double | 表情置信度,范围【0~1】,0最小、1最大。 |
+gender | 否 | array | 性别,face_field包含gender时返回 |
++type | 否 | string | male:男性 female:女性 |
++probability | 否 | double | 性别置信度,范围【0~1】,0代表概率最小、1代表最大。 |
+emotion | 否 | array | 情绪 face_field包含emotion时返回 |
++type | 否 | string | angry:愤怒 disgust:厌恶 fear:恐惧 happy:高兴 sad:伤心 surprise:惊讶 neutral:无表情 pouty: 撅嘴 grimace:鬼脸 |
++probability | 否 | double | 情绪置信度,范围0~1 |
+face_type | 否 | array | 真实人脸/卡通人脸 face_field包含face_type时返回 |
++type | 否 | string | human: 真实人脸 cartoon: 卡通人脸 |
++probability | 否 | double | 人脸类型判断正确的置信度,范围【0~1】,0代表概率最小、1代表最大。 |
返回示例
{
"error_code":0,
"error_msg":"SUCCESS",
"log_id":3359851047,
"timestamp":1681358159,
"cached":0,
"result":{
"face_num":1,
"face_list":[
{
"face_token":"0b7add2c6f3e0c87d2a6d21e3bd9b920",
"location":{
"left":276.96,
"top":266.73,
"width":464,
"height":476,
"rotation":0
},
"face_probability":1,
"angle":{
"yaw":2.78,
"pitch":-0.26,
"roll":-3.95
},
"gender":{
"type":"female",
"probability":1
},
"age":22,
"emotion":{
"type":"neutral",
"probability":0.99
},
"face_type":{
"type":"human",
"probability":0.96
}
}
]
}
}
到此为止了,剩下的就是放到项目中与真实业务场景结合进行使用。
相关文章:
《百度人脸识别应用注册及认证》
《PHP调用百度人脸对比》