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

H5活体检测

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

  • 在百度云控制台内 提交工单,咨询问题类型请选择人工智能服务

能力介绍

业务能力

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 验证码位数错误