资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

人脸对比

人脸识别接口分为V2和V3两个版本,本文档为V2版本接口的说明文档,请确认您在百度云后台获得的是V2版本接口权限,再来阅读本文档。

辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v2】标识,则您具有的是v2权限,可以阅读本文档;若请求地址中带有【v3】标识,则您具有的是v3权限,应该去阅读v3文档。 如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

  • 在百度云控制台内 提交工单,咨询问题类型请选择人工智能服务
  • 如有需要讨论的疑问,欢迎进入 AI社区 与其他开发者们一同交流。

能力介绍

接口能力

  • 两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值;
  • 多种图片类型:支持生活照证件照身份证芯片照带网纹照四种类型的人脸对比;
  • 活体检测:基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。);
  • 质量检测:返回模糊、光照等质量检测信息,用于辅助判断图片是否符合识别要求;

业务应用

用于比对多张图片中的人脸相似度并返回两两比对的得分,可用于判断两张脸是否是同一人的可能性大小。

典型应用场景:如人证合一验证用户认证等,可与您现有的人脸库进行比对验证。

调用方式

请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

获取access_token的示例代码

{% AccessToken %}

注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

例如此接口,使用HTTPS POST发送:

https://aip.baidubce.com/rest/2.0/face/v2/match?access_token=24.f9ba9c5341b67688ab5added8bc91dec.2592000.1485570332.282335-8574075

POST中Body的参数,按照下方请求参数说明选择即可。

提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

请求说明

注意事项

  • 请求体格式化:Content-Type为application/x-www-form-urlencoded,通过urlencode格式化请求体。
  • Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,
  • 图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片
  • 人脸识别接口分为V2和V3两个版本,本文档为V2版本接口的说明文档,请确认您在百度云后台获得的是V2版本接口权限,再来阅读本文档。

辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v2】标识,则您具有的是v2权限,可以阅读本文档;若请求地址中带有【v3】标识,则您具有的是v3权限,应该去阅读v3文档。

请求示例

HTTP方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/face/v2/match

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header:

参数
Content-Type application/x-www-form-urlencoded

Body中放置请求参数,参数详情如下:

请求参数

参数 必选 类型 说明
images string 分别base64编码后的2张图片数据,需urlencode,半角逗号分隔,单次请求最大不超过20M
ext_fields string 返回质量信息,取值固定,目前支持qualities(质量检测)(对所有图片都会做改处理)
image_liveness string 返回的活体信息,“faceliveness,faceliveness” 表示对比对的两张图片都做活体检测;“,faceliveness” 表示对第一张图片不做活体检测、第二张图做活体检测;“faceliveness,” 表示对第一张图片做活体检测、第二张图不做活体检测;
注:需要用于判断活体的图片,图片中的人脸像素面积需要不小于100px*100px,人脸长宽与图片长宽比例,不小于1/3
types string 请求对比的两张图片的类型,示例:“7,13”
7表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等
11表示身份证芯片照:二代身份证内置芯片中的人像照片
12表示带水印证件照:一般为带水印的小图,如公安网小图
13表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片,:需要确保人脸部分不可太小,通常为100px*100px

说明:两张请求的图片请分别进行base64编码。

请求代码示例

提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

{% Face-API-Match %}

返回说明

返回参数

字段 必选 类型 说明
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 比对得分,推荐80分作为阈值,80分以上可以判断为同一人,此分值对应万分之一误识率
ext_info array(dict) 对应参数中的ext_fields
+qualities string 质量相关的信息,无特殊需求可以不使用
+faceliveness string 活体检测分数,单帧活体检测参考阈值0.3,超过此分值以上则可认为是活体。注意:活体检测接口主要用于判断是否为二次翻拍,需要限制用户为当场拍照获取图片;推荐配合客户端SDK有动作校验活体使用

返回示例

//请求两张图片
{
    "log_id": 73473737,
    "result_num":1,
    "result": [
        {
            "index_i": 0,
            "index_j": 1,
            "score": 44.3
        }
    ]
}

关于活体检测faceliveness的判断阈值选择,可参考以下数值信息

阈值(Threshold) 误拒率(FRR) 通过率(TAR) 攻击拒绝率(TRR))
0.05 0.01% 99.99% 97.75%
0.1 0.05% 99.95% 98.33%
0.3 (推荐 0.1% 99.9% 98.82%
0.5 0.5% 99.5% 99.67%
0.9 1% 99% 99.77%

关于以上数值的概念介绍

  • 拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。
  • 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。
  • 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。
  • 阈值(Threshold):高于此数值,则可判断为活体。

错误码

请参考人脸识别错误码

上一篇
人脸检测
下一篇
人脸查找