人脸识别

    H5活体检测

    如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

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

    能力介绍

    业务能力

    H5视频活体检测产品,是由两个接口组合而成,主要用于在H5场景下,通过用户新录制并上传一个视频,来进行活体检测的判断。相对于APP有动作校验+静默图片活体静默图片活体这两种方式,H5视频活体方案比APP方案更加灵活,同时比单张图片活体方式更加安全。其主要功能如下所示:

    • 语音校验码:为防止用户提交非当前操作的视频,在录制视频时,随机分配一个数字,用户需要读出这个数字,声音存于视频当中,并在后续识别时校验,以判断是否为此次会话。语音校验码作为辅助性质的验证条件,是一个可选项,如果应用场景比较嘈杂或方言口音比较重,可以不使用语音验证。
    • 视频多帧活体检测:录制并上传的视频,会在云端进行随机抽帧分析,并得出最终的活体检测分数。

    以上两项能力,分为两个接口,使用顺序为语音校验码->视频多帧校验,具体调用逻辑可以参考我们的。Demo体验地址(电脑端用谷歌、火狐浏览器):
    Mobile:https://ai.baidu.com/face-verify/mobile.html
    PC:https://ai.baidu.com/face-verify/pc.html

    主要适用场景

    • 微信服务号:用于对操作用户真实性要求严格的场景,用于依托于微信服务号的金融开户、实名认证、账户信息变更二次验证等服务。
    • APP内Webview:对于如Cordova架构开发的APP,或者APP内变更频繁的身份信息页等情况,可以采用此方案完成活体检测。
    • 浏览器:如果仅是一个H5宣传页,或者Wap版本网页等,可以通过此方法快速集成更加安全的活体检测功能。

    此方案的优劣势

    • 优势:相对于APP有动作校验、单张图片静默判断,此方法在没有APP情况下,可以更快速、轻量级地实现活体检测,同时保障一定安全性。
    • 劣势:由于视频较大,上传时间可能较长,另由于不同手机的浏览器内核差异较大,容易出现兼容性问题。

    调用方式

    请求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/identify?access_token=24.f9ba9c5341b67688ab4added8bc91dec.2592000.1485570332.282335-8574074

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

    语音校验码接口

    接口描述

    此接口主要用于生成随机码,用于视频的语音识别校验使用,以判断视频的即时性,而非事先录制的,提升作弊的难度。

    请求说明

    请求示例

    HTTP方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/face/v1/faceliveness/sessioncode

    URL参数:

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

    Header:

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

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

    请求参数

    参数 必选 类型 说明
    appid string 百度云创建应用时的唯一标识ID

    返回说明

    返回参数

    字段 必选 类型 说明
    session_id string 语音校验码会话id,有效期5分钟,请提示用户在五分钟内完成全部操作
    code string 语音验证码,数字形式,3~6位数字

    返回示例

    {
    	"err_no": 0,
    	"err_msg": "SUCCESS",
    	"result": {
    		"session_id": "S59faeeebb9111890355690",
    		"code": "9940"
    	},
    	"timestamp": 1509617387,
    	"cached": 0,
    	"serverlogid": "0587756642"
    }

    视频活体检测接口

    接口描述

    此接口一方面通过语音识别得到校验码,通过session code来判断视频是否作弊。另一方面进行视频抽帧,判断是否为活体。

    请求说明

    请求示例

    HTTP方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/face/v1/faceliveness/verify

    URL参数:

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

    Header:

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

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

    请求参数

    参数 必选 类型 说明
    session_id string 语音校验码会话id,使用此接口的前提是已经调用了语音校验码接口。
    语音校验码作为辅助性质的验证条件,是一个可选项,
    如果应用场景比较嘈杂或方言口音比较重,可以不使用语音验证。
    video_base64 string base64编码后的视频数据(视频限制:最佳为上传5-15s的mp4文件。
    视频编码方式:h264编码;音频编码格式:aac,pcm均可。)

    返回说明

    返回参数

    字段 必选 类型 说明
    score float 活体检测分数
    thresholds array 阈值参考,实际业务应用中,请以score>阈值判定通过,可直接选择不同误识别率的阈值,无需对应具体的分值,选择阈值参数即可。
    code array 语音校验码信息
    create string 生成的校验码,通过createidentify两个字段的对比,可以判断上传的视频是否为目标视频。
    identify string 语音识别出来的校验码
    pic_list array 抽取图片信息列表
    pic_list[i].face_id string face唯一ID
    pic_list[i].pic string/encryption base64编码后的图片信息

    返回示例

    {
    
    	err_no:0,
    	err_msg: 'success',
    	result: {
    		score: 0.984654366,
    		thresholds: {
    			"frr_1e-4": 0.05, //万分之一误识别率的阈值
    			"frr_1e-3": 0.3,  //千分之一误识别率的阈值
    			"frr_1e-2": 0.9   //百分之一误识别率的阈值
       		},
       		code: {
         		"create": "5789",
         		"identify": "5789"
       		},
       		pic_list: [
       			{
         			"face_id": 5745745747,
         			"pic": "gsagaheryzxv..."
       			},
       			{
         			"face_id": 5745745747,
         			"pic": "gsagaheryzxv..."
       			}
       		]
     	},
     	"timestamp": 1509611848,
     	"cached": 0,
     	"serverlogid": "2248375729"
    }

    错误码列表

    错误码 错误信息 描述
    216506 redis操作失败
    216505 redis连接失败
    216430 rtse/face 服务异常
    216502 当前会话已失效
    216501 没有找到人脸
    216508 没有找到视频信息
    216434 活体检测失败
    216908 视频中人脸质量过低(返回的错误信息
    会包含具体的错误信息包含
    illumiantion(光照不足)angle(角度) blur(人脸模糊)
    occlusion(遮挡)too large(人脸过大) 等原因
    216507 视频中有多张人脸
    216433 视频解析服务发生错误
    216432 视频解析服务调用失败
    216431 语音识别服务异常
    216500 验证码位数错误
    一篇
    在线活体检测
    一篇
    错误码