随着人脸识别技术在金融、医疗等多个领域的加速落地,网络安全、信息泄露等问题愈为突出,用户对应用稳定性和安全性的要求也更为严格。
华为机器学习服务的动作活体检测能力,支持实时捕捉人脸,根据用户配合做动作可以判断是真实活体,还是非活体攻击(比如:翻拍图片、翻拍视频以及面具等)。
此前,动作活体检测能力通过采用指令动作配合的方式进行活体检测,在眨眼、张嘴、左摇头、右摇头、注视、点头六种动作中随机选择三种,让用户按指令完成动作。目前,动作活体检测能力新增了自定义扫描动作,开发者可以自己设定扫描动作进行人脸检测,以此判断机器前的人脸是否为真实人脸。
使用人脸关键点及人脸追踪技术,通过连续的图片,计算变化距离与不变距离的比值,进行上一帧图像与下一帧图像的对比,从而验证用户是否为真实活体本人操作,对照片、视频和面具的攻击具有很好的防御效果,是人脸识别能否有效应用的前提条件。以此实现更加友好的交互体验,打造安全可靠的活体检测能力。
自定义扫描动作
不设置自定义扫描动作时会默认从1-6个动作中按照默认规则随机生成三个动作进行检测,如果想自己设定检测动作,可以通过调用MLInteractiveLivenessConfig的setActionArray(int[] actionArray, int num, boolean isRandomable)来设置自定义扫描动作。
动作说明:
参数说明:
actionArray:
自定义动作数组,数组元素的取值在[1,6]之间,数组的长度大于等于num并且最大长度不超过6,当isRandom=false时sdk会取数组的前num个动作元素进行验证,当isRandom=true时数组的元素禁止重复并且需要满足以下规则:
1.当数组长度和num相等并且值为2时,[眨眼,注视] [左摇头,右摇头]同一组合中的动作元素不能同时存在;
2.当num = 4时,数组中的动作元素必须包含眨眼。
说明
a.当数组为null或者数组长度为0时,返回错误码11405;
b.当数组中的元素不在[1,6]之间时,返回错误码11405;
生成动作组合,当isRandom=true时,sdk会根据生成动作规则自动抛弃不合规的动作组合,生成动作规则如下:
1.当num=2时,[眨眼,注视] [左摇头,右摇头]同一组合中的动作元素不会同时存在并且相邻的动作不会相同;
2.当num=3时,[眨眼,注视]组合中的动作元素不会同时存在并且相邻的动作元素不会相同;
3.当num=4时,眨眼动作元素有且仅有1次,注视动作元素最多出现1次,[眨眼,注视]组合中的动作元素不会相邻,相邻的动作元素不会相同。
num:
用户需要生成检测动作的个数,num取值范围[1,4]并且小于等于actionArray的长度。
isRandom:
生成检测的动作是否随机,取值true表示在actionArray数组中随机取num个动作进行检测,值为false表示定序检测actionArray数组前num个动作。
MLInteractiveLivenessConfig interactiveLivenessConfig = new MLInteractiveLivenessConfig.Builder()
// actionArray 自定义动作int数组,actionArrayNum检测动作数目,isRandom动作是否随机
.setActionArray(actionArray, num, isRandom)
.build();
了解更多详情>>
访问机器学习服务联盟官网
获取机器学习服务开发指导文档