人脸检测 -奇异果体育app竞彩官网下载
人脸识别接口分为v2和v3两个版本,本文档为v3版本接口的说明文档,请确认您在百度智能云后台获得的是v3版本接口权限,再来阅读本文档。
辨别接口版本的方法是:在百度智能云后台进入【应用列表】,点击【应用名称】,在【api列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读。 如果您对文档内容有任何疑问,可以通过以下几种方式联系奇异果体育app竞彩官网下载:
- 在百度智能云控制台内 ,咨询问题类型请选择人工智能服务;
- 如有需要讨论的疑问,欢迎进入 与其他开发者们一同交流。
能力介绍
接口能力
- 人脸检测:检测图片中的人脸并标记出位置信息。
- 人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。
- 人脸属性值:展示人脸属性信息,如年龄、性别等。
- 人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。
业务应用
典型应用场景:如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等。
说明:检测响应速度,与图片中人脸数量相关,人脸数量较多时响应时间会有些许延长。
质量检测
如果需要判断一张图片中的人脸,是否符合后续识别或者对比的条件,可以使用此接口,在请求时在face_field
参数中请求quality
。基于返回结果quality
中,以下字段及对应阈值,进行质量检测的判断,以保证人脸质量符合后续业务操作要求。
指标 | 字段与解释 | 推荐数值界限 |
---|---|---|
遮挡范围 | occlusion,取值范围[0~1],0为无遮挡,1是完全遮挡 含有多个具体子字段,表示脸部多个部位 通常用作判断头发、墨镜、口罩等遮挡 |
left_eye : 0.6, #左眼被遮挡的阈值 right_eye : 0.6, #右眼被遮挡的阈值 nose : 0.7, #鼻子被遮挡的阈值 mouth : 0.7, #嘴巴被遮挡的阈值 left_cheek : 0.8, #左脸颊被遮挡的阈值 right_cheek : 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为人脸都在图像边界内 |
视业务逻辑判断 |
人脸大小 | 人脸部分的大小 建议长宽像素值范围:80*80~200*200 |
人脸部分不小于100*100像素 |
在线调试
您可以在 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
调用方式
请求url数据格式
向api服务地址使用post发送请求,必须在url中带上参数access_token
,可通过后台的api key和secret key生成,具体方式请参考“”。
示例代码
#!/bin/bash
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【应用的ak】&client_secret=【应用的sk】'
function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}
$posturl = $url;
$curlpost = $param;
$curl = curl_init();//初始化curl
curl_setopt($curl, curlopt_url,$posturl);//抓取指定网页
curl_setopt($curl, curlopt_header, 0);//设置header
curl_setopt($curl, curlopt_returntransfer, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($curl, curlopt_post, 1);//post提交方式
curl_setopt($curl, curlopt_postfields, $curlpost);
$data = curl_exec($curl);//运行curl
curl_close($curl);
return $data;
}
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$post_data['grant_type'] = 'client_credentials';
$post_data['client_id'] = '你的 api key';
$post_data['client_secret'] = '你的 secret key';
$o = "";
foreach ( $post_data as $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = request_post($url, $post_data);
var_dump($res);
?>
package com.baidu.ai.aip.auth;
import org.json.jsonobject;
import java.io.bufferedreader;
import java.io.inputstreamreader;
import java.net.httpurlconnection;
import java.net.url;
import java.util.list;
import java.util.map;
/**
* 获取token类
*/
public class authservice {
/**
* 获取权限token
* @return 返回示例:
* {
* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
* "expires_in": 2592000
* }
*/
public static string getauth() {
// 奇异果体育app竞彩官网下载官网获取的 api key 更新为你注册的
string clientid = "百度云应用的ak";
// 奇异果体育app竞彩官网下载官网获取的 secret key 更新为你注册的
string clientsecret = "百度云应用的sk";
return getauth(clientid, clientsecret);
}
/**
* 获取api访问token
* 该token有一定的有效期,需要自行管理,当失效时需重新获取.
* @param ak - 百度云奇异果体育app竞彩官网下载官网获取的 api key
* @param sk - 百度云奇异果体育app竞彩官网下载官网获取的 securet key
* @return assess_token 示例:
* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
*/
public static string getauth(string ak, string sk) {
// 获取token地址
string authhost = "https://aip.baidubce.com/oauth/2.0/token?";
string getaccesstokenurl = authhost
// 1. grant_type为固定参数
"grant_type=client_credentials"
// 2. 奇异果体育app竞彩官网下载官网获取的 api key
"&client_id=" ak
// 3. 奇异果体育app竞彩官网下载官网获取的 secret key
"&client_secret=" sk;
try {
url realurl = new url(getaccesstokenurl);
// 打开和url之间的连接
httpurlconnection connection = (httpurlconnection) realurl.openconnection();
connection.setrequestmethod("get");
connection.connect();
// 获取所有响应头字段
map<string, list<string>> map = connection.getheaderfields();
// 遍历所有的响应头字段
for (string key : map.keyset()) {
system.err.println(key "--->" map.get(key));
}
// 定义 bufferedreader输入流来读取url的响应
bufferedreader in = new bufferedreader(new inputstreamreader(connection.getinputstream()));
string result = "";
string line;
while ((line = in.readline()) != null) {
result = line;
}
/**
* 返回结果示例
*/
system.err.println("result:" result);
jsonobject jsonobject = new jsonobject(result);
string access_token = jsonobject.getstring("access_token");
return access_token;
} catch (exception e) {
system.err.printf("获取token失败!");
e.printstacktrace(system.err);
}
return null;
}
}
# encoding:utf-8
import requests
# client_id 为奇异果体育app竞彩官网下载官网获取的ak, client_secret 为奇异果体育app竞彩官网下载官网获取的sk
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【奇异果体育app竞彩官网下载官网获取的ak】&client_secret=【奇异果体育app竞彩官网下载官网获取的sk】'
response = requests.get(host)
if response:
print(response.json())
#include
#include
#include
#include "access_token.h"
// libcurl库下载链接:https://curl.haxx.se/download.html
// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
// 获取access_token所需要的url
const std::string access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials";
// 回调函数获取到的access_token存放变量
// static std::string access_token_result;
/**
* curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在result中
* @param 参数定义见libcurl库文档
* @return 返回值定义见libcurl库文档
*/
static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
// 获取到的body存放在ptr中,先将其转换为string格式
std::string s((char *) ptr, size * nmemb);
// 开始获取json中的access token项目
json::reader reader;
json::value root;
// 使用boost库解析json
reader.parse(s,root);
std::string* access_token_result = static_cast<std::string*>(stream);
*access_token_result = root["access_token"].asstring();
return size * nmemb;
}
/**
* 用以获取access_token的函数,使用时需要先在百度云控制台申请相应功能的应用,获得对应的api key和secret key
* @param access_token 获取得到的access token,调用函数时需传入该参数
* @param ak 应用的api key
* @param sk 应用的secret key
* @return 返回0代表获取access token成功,其他返回值代表获取失败
*/
int get_access_token(std::string &access_token, const std::string &ak, const std::string &sk) {
curl *curl;
curlcode result_code;
int error_code = 0;
curl = curl_easy_init();
if (curl) {
std::string url = access_token_url "&client_id=" ak "&client_secret=" sk;
curl_easy_setopt(curl, curlopt_url, url.data());
curl_easy_setopt(curl, curlopt_ssl_verifypeer, 0);
curl_easy_setopt(curl, curlopt_ssl_verifyhost, 0);
std::string access_token_result;
curl_easy_setopt(curl, curlopt_writedata, &access_token_result);
curl_easy_setopt(curl, curlopt_writefunction, callback);
result_code = curl_easy_perform(curl);
if (result_code != curle_ok) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(result_code));
return 1;
}
access_token = access_token_result;
curl_easy_cleanup(curl);
error_code = 0;
} else {
fprintf(stderr, "curl_easy_init() failed.");
error_code = 1;
}
return error_code;
}
using system;
using system.collections.generic;
using system.net.http;
namespace com.baidu.ai
{
public static class accesstoken
{
// 调用getaccesstoken()获取的 access_token建议根据expires_in 时间 设置缓存
// 返回token示例
public static string token = "24.adda70c11b9786206253ddb70affdc46.2592000.1493524354.282335-1234567";
// 百度云中开通对应服务应用的 api key 建议开通应用的时候多选服务
private static string clientid = "百度云应用的ak";
// 百度云中开通对应服务应用的 secret key
private static string clientsecret = "百度云应用的sk";
public static string getaccesstoken() {
string authhost = "https://aip.baidubce.com/oauth/2.0/token";
httpclient client = new httpclient();
list<keyvaluepair<string, string>> paralist = new list<keyvaluepair<string, string>>();
paralist.add(new keyvaluepair<string, string>("grant_type", "client_credentials"));
paralist.add(new keyvaluepair<string, string>("client_id", clientid));
paralist.add(new keyvaluepair<string, string>("client_secret", clientsecret));
httpresponsemessage response = client.postasync(authhost, new formurlencodedcontent(paralist)).result;
string result = response.content.readasstringasync().result;
console.writeline(result);
return result;
}
}
}
var https = require('https');
var qs = require('querystring');
const param = qs.stringify({
'grant_type': 'client_credentials',
'client_id': '您的 api key',
'client_secret': '您的 secret key'
});
https.get(
{
hostname: 'aip.baidubce.com',
path: '/oauth/2.0/token?' param,
agent: false
},
function (res) {
// 在标准输出中查看运行结果
res.pipe(process.stdout);
}
);
注意:
access_token
的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token;
例如此接口,使用https post发送:
https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=24.f9ba9c5341b67688ab4added8bc91dec.2592000.1485570332.282335-8574074
post中body的参数,按照下方请求参数说明选择即可。
提示:如果您为百度智能云老用户,正在使用其他非ai的服务,可以参考发送请求,虽然请求方式和鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。
请求说明
注意事项:
- 请求体格式化: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/detect
url参数:
参数 | 值 |
---|---|
access_token | 通过api key和secret key获取的access_token,参考“” |
header:
参数 | 值 |
---|---|
content-type | application/json |
body中放置请求参数,参数详情如下:
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图片信息(总数据大小应小于10m),图片上传方式根据image_type来判断 |
image_type | 是 | string | 图片类型 base64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2m; url:图片的 url地址( 可能由于网络等原因导致下载图片时间过长); face_token: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的face_token,同一张图片多次检测得到的face_token是同一个。 |
face_field | 否 | string | 包括age,expression,face_shape,gender,glasses,landmark,landmark150, quality,eye_status,emotion,face_type,mask,spoofing信息 逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度 |
max_face_num | 否 | uint32 | 最多处理人脸的数目,默认值为1,根据人脸检测排序类型检测图片中排序第一的人脸(默认为人脸面积最大的人脸),最大值120 |
face_type | 否 | string | 人脸的类型 live表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等 idcard表示身份证芯片照:二代身份证内置芯片中的人像照片 watermark表示带水印证件照:一般为带水印的小图,如公安网小图 cert表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片 默认live |
liveness_control | 否 | string | 活体控制 检测结果中不符合要求的人脸会被过滤 none: 不进行控制 low:较低的活体要求(高通过率 低攻击拒绝率) normal: 一般的活体要求(平衡的攻击拒绝率, 通过率) high: 较高的活体要求(高攻击拒绝率 低通过率) 默认none |
face_sort_type | 否 | int | 人脸检测排序类型 0:代表检测出的人脸按照人脸面积从大到小排列 1:代表检测出的人脸按照距离图片中心从近到远排列 默认为0 |
display_corp_image | 否 | int | 是否显示检测人脸的裁剪图base64值 0:不显示(默认) 1:显示 当取值为1时,max_face_num字段的取值上限按5计算,即最多可返回5张人脸的裁剪图 |
说明:face_field参数,默认只返回人脸框、概率和旋转角度,age等更多属性,请在此参数中添加。
示例代码
提示一:使用示例代码前,请记得替换其中的示例token、图片地址或base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
人脸检测与属性分析
curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513bcb9","image_type":"face_token","face_field":"faceshape,facetype"}' -h 'content-type:application/json; charset=utf-8'
/**
* 发起http post请求(rest api), 并获取rest请求的结果
* @param string $url
* @param string $param
* @return - http response body if succeeds, else false.
*/
function request_post($url = '', $param = '')
{
if (empty($url) || empty($param)) {
return false;
}
$posturl = $url;
$curlpost = $param;
// 初始化curl
$curl = curl_init();
curl_setopt($curl, curlopt_url, $posturl);
curl_setopt($curl, curlopt_header, 0);
// 要求结果为字符串且输出到屏幕上
curl_setopt($curl, curlopt_returntransfer, 1);
curl_setopt($curl, curlopt_ssl_verifypeer, false);
// post提交方式
curl_setopt($curl, curlopt_post, 1);
curl_setopt($curl, curlopt_postfields, $curlpost);
// 运行curl
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
$token = '[调用鉴权接口获取的token]';
$url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' . $token;
$bodys = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"face_token\",\"face_field\":\"faceshape,facetype\"}"
$res = request_post($url, $bodys);
var_dump($res);
package com.baidu.ai.aip;
import com.baidu.ai.aip.utils.httputil;
import com.baidu.ai.aip.utils.gsonutils;
import java.util.*;
/**
* 人脸检测与属性分析
*/
public class facedetect {
/**
* 重要提示代码中所需工具类
* fileutil,base64util,httputil,gsonutils请从
* https://ai.baidu.com/file/658a35abab2d404fbf903f64d47c1f72
* https://ai.baidu.com/file/c8d81f3301e24d2892968f09ae1ad6e2
* https://ai.baidu.com/file/544d677f5d4e4f17b4122fbd60db82b3
* https://ai.baidu.com/file/470b3acca3fe43788b5a963bf0b625f3
* 下载
*/
public static string facedetect() {
// 请求url
string url = "https://aip.baidubce.com/rest/2.0/face/v3/detect";
try {
map<string, object> map = new hashmap<>();
map.put("image", "027d8308a2ec665acb1bdf63e513bcb9");
map.put("face_field", "faceshape,facetype");
map.put("image_type", "face_token");
string param = gsonutils.tojson(map);
// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
string accesstoken = "[调用鉴权接口获取的token]";
string result = httputil.post(url, accesstoken, "application/json", param);
system.out.println(result);
return result;
} catch (exception e) {
e.printstacktrace();
}
return null;
}
public static void main(string[] args) {
facedetect.facedetect();
}
}
# encoding:utf-8
import requests
'''
人脸检测与属性分析
'''
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
params = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"face_token\",\"face_field\":\"faceshape,facetype\"}"
access_token = '[调用鉴权接口获取的token]'
request_url = request_url "?access_token=" access_token
headers = {'content-type': 'application/json'}
response = requests.post(request_url, data=params, headers=headers)
if response:
print (response.json())
#include
#include
// libcurl库下载链接:https://curl.haxx.se/download.html
// jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
const static std::string request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect";
static std::string facedetect_result;
/**
* curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
* @param 参数定义见libcurl文档
* @return 返回值定义见libcurl文档
*/
static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
// 获取到的body存放在ptr中,先将其转换为string格式
facedetect_result = std::string((char *) ptr, size * nmemb);
return size * nmemb;
}
/**
* 人脸检测与属性分析
* @return 调用成功返回0,发生错误返回其他错误码
*/
int facedetect(std::string &json_result, const std::string &access_token) {
std::string url = request_url "?access_token=" access_token;
curl *curl = null;
curlcode result_code;
int is_success;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, curlopt_url, url.data());
curl_easy_setopt(curl, curlopt_post, 1);
curl_slist *headers = null;
headers = curl_slist_append(headers, "content-type:application/json;charset=utf-8");
curl_easy_setopt(curl, curlopt_httpheader, headers);
curl_easy_setopt(curl, curlopt_postfields, "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"face_token\",\"face_field\":\"faceshape,facetype\"}");
result_code = curl_easy_perform(curl);
if (result_code != curle_ok) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(result_code));
is_success = 1;
return is_success;
}
json_result = facedetect_result;
curl_easy_cleanup(curl);
is_success = 0;
} else {
fprintf(stderr, "curl_easy_init() failed.");
is_success = 1;
}
return is_success;
}
using system;
using system.io;
using system.net;
using system.text;
using system.web;
namespace com.baidu.ai
{
public class facedetect
{
// 人脸检测与属性分析
public static string facedetect()
{
string token = "[调用鉴权接口获取的token]";
string host = "https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=" token;
encoding encoding = encoding.default;
httpwebrequest request = (httpwebrequest)webrequest.create(host);
request.method = "post";
request.keepalive = true;
string str = "{\"image\":\"027d8308a2ec665acb1bdf63e513bcb9\",\"image_type\":\"face_token\",\"face_field\":\"faceshape,facetype\"}";
byte[] buffer = encoding.getbytes(str);
request.contentlength = buffer.length;
request.getrequeststream().write(buffer, 0, buffer.length);
httpwebresponse response = (httpwebresponse)request.getresponse();
streamreader reader = new streamreader(response.getresponsestream(), encoding.default);
string result = reader.readtoend();
console.writeline("人脸检测与属性分析:");
console.writeline(result);
return result;
}
}
}
返回说明
返回参数
- 返回结果
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
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最大。 |
face_shape | 否 | array | 脸型,当face_field包含face_shape时返回 |
type | 否 | string | square: 正方形 triangle:三角形 oval: 椭圆 heart: 心形 round: 圆形 |
probability | 否 | double | 置信度,范围【0~1】,代表这是人脸形状判断正确的概率,0最小、1最大。 |
gender | 否 | array | 性别,face_field包含gender时返回 |
type | 否 | string | male:男性 female:女性 |
probability | 否 | double | 性别置信度,范围【0~1】,0代表概率最小、1代表最大。 |
glasses | 否 | array | 是否带眼镜,face_field包含glasses时返回 |
type | 否 | string | none:无眼镜,common:普通眼镜,sun:墨镜 |
probability | 否 | double | 眼镜置信度,范围【0~1】,0代表概率最小、1代表最大。 |
eye_status | 否 | array | 双眼状态(睁开/闭合) face_field包含eye_status时返回 |
left_eye | 否 | double | 左眼状态 [0,1]取值,越接近0闭合的可能性越大 |
right_eye | 否 | double | 右眼状态 [0,1]取值,越接近0闭合的可能性越大 |
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代表最大。 |
mask | 否 | array | 口罩识别 face_field包含mask时返回 |
type | 否 | int | 没戴口罩/戴口罩 取值0或1 0代表没戴口罩 1 代表戴口罩 |
probability | 否 | double | 置信度,范围0~1 |
landmark | 否 | array | 4个关键点位置,左眼中心、右眼中心、鼻尖、嘴中心。face_field包含landmark时返回 |
landmark72 | 否 | array | 72个特征点位置 face_field包含landmark时返回 |
landmark150 | 否 | array | 150个特征点位置 face_field包含landmark150时返回 |
quality | 否 | array | 人脸质量信息。face_field包含quality时返回 |
occlusion | 否 | array | 人脸各部分遮挡的概率,范围[0~1],0表示完整,1表示不完整 |
left_eye | 否 | double | 左眼遮挡比例,[0-1] ,1表示完全遮挡 |
right_eye | 否 | double | 右眼遮挡比例,[0-1] , 1表示完全遮挡 |
nose | 否 | double | 鼻子遮挡比例,[0-1] , 1表示完全遮挡 |
mouth | 否 | double | 嘴巴遮挡比例,[0-1] , 1表示完全遮挡 |
left_cheek | 否 | double | 左脸颊遮挡比例,[0-1] , 1表示完全遮挡 |
right_cheek | 否 | double | 右脸颊遮挡比例,[0-1] , 1表示完全遮挡 |
chin | 否 | double | 下巴遮挡比例,,[0-1] , 1表示完全遮挡 |
blur | 否 | double | 人脸模糊程度,范围[0~1],0表示清晰,1表示模糊 |
illumination | 否 | double | 取值范围在[0~255], 表示脸部区域的光照程度 越大表示光照越好 |
completeness | 否 | int64 | 人脸完整度,0或1, 0为人脸溢出图像边界,1为人脸都在图像边界内 |
spoofing | 否 | double | 判断图片是否为合成图 |
corp_image_base64 | 否 | string | 检测人脸框的人脸图片base64值 |
关于合成图检测spoofing的判断阈值选择,可参考以下数值信息:
阈值 | 误拒率(frr) | 通过率(tar) | 攻击拒绝率(trr)) |
---|---|---|---|
0.00023 | 5% | 95% | 94.93% |
0.00048(推荐) | 1% | 99% | 89.71% |
0.00066 | 0.5% | 99.5% | 88.02% |
0.00109 | 0.1% | 99.9% | 84.57% |
0.00171 | 0.05% | 99.95% | 81.52% |
0.00547 | 0.01% | 99.99% | 65.52% |
关于以上数值的概念介绍:
- 拒绝率(trr):如99%,代表100次作弊假体攻击,会有99次被拒绝。
- 误拒率(frr):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。
- 通过率(tar):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。
- 阈值(threshold):高于此数值,则可判断为是合成图攻击。
-
返回示例
{ "face_num": 1, "face_list": [ { "face_token": "35235asfas21421fakghktyfdgh68bio", "location": { "left": 117, "top": 131, "width": 172, "height": 170, "rotation": 4 }, "face_probability": 1, "angle" :{ "yaw" : -0.34859421849251 "pitch": 1.9135693311691 "roll" :2.3033397197723 } "landmark": [ { "x": 161.74819946289, "y": 163.30244445801 }, ... ], "landmark72": [ { "x": 115.86531066895, "y": 170.0546875 }, ... ], "age": 29.298097610474, "expression": { "type": "smile", "probability" : 0.5543018579483 }, "gender": { "type": "male", "probability": 0.99979132413864 }, "glasses": { "type": "sun", "probability": 0.99999964237213 }, "face_shape": { "type": "triangle", "probability": 0.5543018579483 } "quality": { "occlusion": { "left_eye": 0, "right_eye": 0, "nose": 0, "mouth": 0, "left_cheek": 0.0064102564938366, "right_cheek": 0.0057411273010075, "chin": 0 }, "blur": 1.1886881756684e-10, "illumination": 141, "completeness": 1 } } ] }
72个关键点分布图(对应landmark72个点的顺序,序号从0-71):
150个关键点分布图,红色关键点为在72关键点基础上增加的关键点(对应landmark150个点的顺序,序号从0-149,且每个关键点有对应的英文命名作为参数名,请参考图片下方表格):
关键点名称如下图,
错误码
请参考