baiduFaceRec

来自于:开发者立即使用

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

baiduFaceRec模块封装了百度AI人脸识别功能,使用此模块可实现百度人脸检测(包括age,beauty,expression,faceshape,gender,glasses,landmark,race,quality,facetype信息)、人脸对比功能(比对两张图片中人脸的相似度,并返回相似度分值)。暂仅支持 android 平台。

使用说明:

      1、首先要在百度AI开放平台注册账号;
      2、创建应用,选择需要使用文字识别选项,然后获取API Key、Secret Key,后面需要使用ak、sk进行百度身份验证;
      3、具体操作可参考百度AI开发平台文档;
      4、此模块是封装了百度人脸识别V3版本,在注册应用的时候注意版本选择;

获取access_token错误说明:

      对应的是错误码、错误信息、解释(错误返回err.msg):
      error:错误码;关于错误码的详细信息请参考下方鉴权认证错误码。
      error_description:错误描述信息,帮助理解和解决发生的错误。

      errorAccess  unknown client id  API Key  不正确
      invalid_client  Client authentication failed  Secret Key不正确

识别验证错误说明:

      对应的是错误码、错误信息、描述(错误返回err.msg):
      4  Open api request limit reached  集群超限额
      6  no permission to access data  没有接口权限
      17  Open api daily request limit reached  每天流量超限额
      18  Open api qps request limit reached  QPS超限额
      19  Open api total request limit reached  请求总量超限额
      100  Invalid parameter  无效的access_token参数
      110  Access token invalid or no longer valid  Access Token失效
      111  Access token expired  Access token过期
      222001    param[] is null     必要参数未传入  
      222009    quality_conf format error     参数格式错误
      222013    param[image] format error  参数格式错误
      222015    param[image_type] format error  参数格式错误
      222016    param[max_face_num] format error  参数格式错误
      222017    param[face_field] format error     参数格式错误
      222024    param[face_type] format error  参数格式错误
      222025    param[face_token] format error  参数格式错误
      222026    param[max_star_num] format error  参数格式错误
      222201    network not available  服务端请求失败
      222202    pic not has face  图片中没有人脸
      222203    image check fail  无法解析人脸
      222204    image_url_download_fail  从图片的url下载图片失败
      222205    network not availablel  服务端请求失败
      222206    rtse service return fail  服务端请求失败
      222207    match user is not found  未找到匹配的用户    
      222208    the number of image is incorrect  图片的数量错误
      222209    face token not exist    face  token不存在
      222300    add face fail  人脸图片添加失败
      222301    get face fail  获取人脸图片失败    
      222302    system error  服务端请求失败
      222303    get face fail  获取人脸图片失败         
      223112    quality_conf format error    quality_conf  格式不正确    
      223113    face is covered  人脸有被遮挡    
      223114    face is fuzzy  人脸模糊    
      223115    face light is not good  人脸光照不好    
      223116    incomplete face  人脸不完整    
      223117    app_list is too large  app_list包含app数量过多       
      222901    system busy  系统繁忙请重新尝试
      222902    system busy  系统繁忙请重新尝试
      222903    system busy  系统繁忙请重新尝试
      222904    system busy  系统繁忙请重新尝试
      222905    system busy  系统繁忙请重新尝试
      222906    system busy  系统繁忙请重新尝试
      222907    system busy  系统繁忙请重新尝试
      222908    system busy  系统繁忙请重新尝试
      222909    system busy  系统繁忙请重新尝试
      222910    system busy  系统繁忙请重新尝试
      222911    system busy  系统繁忙请重新尝试
      222912    system busy  系统繁忙请重新尝试
      222913    system busy  系统繁忙请重新尝试
      222914    system busy  系统繁忙请重新尝试
      222915    system busy  系统繁忙请重新尝试
      222916    system busy  系统繁忙请重新尝试
      222361    system busy  系统繁忙请重新尝试

getAuth

获取access_token

getAuth({params},callback(ret, err))

params

ak:

  • 类型:字符串
  • 描述:API Key
  • 说明:字段必填,不填会返回错误信息msg

sk:

  • 类型:字符串
  • 描述:Secret Key
  • 说明:字段必填,不填会返回错误信息msg

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    access_token:  //要获取的Access Token
        session_key:  //暂无使用
        scope:  ////暂无使用
        refresh_token:  //暂无使用
        session_secret:  //暂无使用
        expires_in:  //Access Token的有效期(秒为单位,一般为1个月)
}

err:

  • 类型:JSON 对象

内部字段:

{
    msg:    //返回错误信息
}

示例代码

var baiduFaceRec= api.require('baiduFaceRec');
var param = {
    ak: 'your ak',
    sk: 'your sk',
};
baiduFaceRec.getAuth(params, function (ret, err) {
    if (ret) {
        console.log(JSON.stringify(ret));
        alert('access_token=' + ret.access_token);
    } else {
        console.log(err.msg);
        alert('错误信息:' + err.msg);
    }
});

补充说明

请确保参数ak、sk正确,身份验证在使用前验证一次即可(有效期一个月),建议每次调用接口方法先获取最新access_token

可用性

Android系统

可提供的1.0.0及更高版本

detect

人脸检测

detect({params},callback(ret, err))

params

filePath:

  • 类型:字符串
  • 描述:识别图片路径
  • 说明:字段必填,不填会返回错误信息msg

access_token:

  • 类型:字符串
  • 描述:获取的access_token
  • 说明:字段必填,不填会返回错误信息msg

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段(字段(加号表示层级) 类型 说明):

{
       error_code    int    错误编号
       error_msg    string    错误信息
       log_id    int    日志id
       timestamp    int    时间戳
       cached    int    缓存
       result    json     对比结果
       +face_num    int    检测到的图片中的人脸数量
       +face_list    array    人脸信息列表,具体包含的参数参考下面的列表。
       ++face_token    string    人脸图片的唯一标识
       ++location    array    人脸在图片中的位置
       +++left    double    人脸区域离左边界的距离
       +++top    double    人脸区域离上边界的距离
       +++width    double    人脸区域的宽度
       +++height    double    人脸区域的高度
       +++rotation        int64    人脸框相对于竖直方向的顺时针旋转角,[-180,180]
       ++face_probability    double    人脸置信度,范围【0~1】,代表这是一张人脸的概率,0最小、1最大。
       ++angel    array    人脸旋转角度参数
       +++yaw    double    三维旋转之左右旋转角[-90(左), 90(右)]
       +++pitch    double    三维旋转之俯仰角度[-90(上), 90(下)]
       +++roll    double    平面内旋转角[-180(逆时针), 180(顺时针)]
       ++age        double    年龄 ,当face_field包含age时返回
       ++beauty    int64    美丑打分,范围0-100,越大表示越美。当face_fields包含beauty时返回
       ++expression    array    表情,当 face_field包含expression时返回
       +++type    string    none:不笑;smile:微笑;laugh:大笑
       +++probability    double    表情置信度,范围【0~1】,0最小、1最大。
       ++face_shape    array    脸型,当face_field包含faceshape时返回
       +++type    double    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代表最大。
       ++race    array    人种 face_field包含race时返回
       +++type    string    yellow: 黄种人 white: 白种人 black:黑种人 arabs: 阿拉伯人
       +++probability    double    人种置信度,范围【0~1】,0代表概率最小、1代表最大。
       ++facetype        array    真实人脸/卡通人脸 face_field包含facetype时返回
       +++type    string    human: 真实人脸 cartoon: 卡通人脸
       +++probability    double    人脸类型判断正确的置信度,范围【0~1】,0代表概率最小、1代表最大。
       ++landmark    array    4个关键点位置,左眼中心、右眼中心、鼻尖、嘴中心。face_field包含landmark时返回
       ++landmark72    array    72个特征点位置 face_field包含landmark时返回
       ++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为人脸都在图像边界内
}

err:

  • 类型:JSON 对象

内部字段:

{
    msg:    //返回错误信息
}

示例代码

var baiduFaceRec= api.require('baiduFaceRec');
var param = {
    filePath: 'your filePath',
    access_token:'your access_token',
};
baiduFaceRec.detect(param, function (ret, err) {
    if (ret) {
        console.log(JSON.stringify(ret));
        alert('人脸检测数据' + JSON.stringify(ret.result.face_list));
    } else {
        console.log(err.msg);
        alert('错误信息:' + err.msg);
    }
});

补充说明

请确保参数filePath、access_token正确,filePath是图片绝对路径,可是有apicloud官方的api.getPicture()获取图片记得地址。

可用性

Android系统

可提供的1.0.0及更高版本

match

人脸对比

match({params},callback(ret, err))

params

filePath1:

  • 类型:字符串
  • 描述:识别图片路径
  • 说明:字段必填,不填会返回错误信息msg

filePath2:

  • 类型:字符串
  • 描述:识别图片路径
  • 说明:字段必填,不填会返回错误信息msg

access_token:

  • 类型:字符串
  • 描述:获取的access_token
  • 说明:字段必填,不填会返回错误信息msg

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
        error_code    int    错误编号
        error_msg    string    错误信息
        log_id    int    日志id
        timestamp    int    时间戳
        cached    int    缓存
        result    json     对比结果
        +score    int     人脸相似度得分
        +face_list    array    人脸信息列表
        ++face_token    string    人脸的唯一标志
}

err:

  • 类型:JSON 对象

内部字段:

{
    msg:    //返回错误信息
}

示例代码

var baiduFaceRec= api.require('baiduFaceRec');
var param = {
    filePath1: 'your filePath1',
    filePath2: 'your filePath2',
    access_token: 'your access_token',
};
baiduFaceRec.match(param, function (ret, err) {
    if (ret) {
        console.log(JSON.stringify(ret));
        alert('人脸对比数据' + JSON.stringify(ret));
    } else {
        console.log(err.msg);
        alert('错误信息:' + err.msg);
    }
});

补充说明

请确保参数filePath1、filePath2、access_token正确,filePath1、filePath2都为绝对路径,可以使用官方模块UIAlbumBrowser得到对比图片路径,两个参数没有先后顺序,只要保证是图片绝对路径即可。

可用性

Android系统

可提供的1.0.0及更高版本