当前位置: 首页 > 后端技术 > Java

动作活体检测能力,构建安全可靠的支付级“刷脸”体验

时间:2023-04-01 13:39:24 Java

动作、活体检测能力构建安全可靠的支付级“刷脸”体验带来极大便利,但无法识别人脸是否真实。例如,使用高仿真图片、精密石膏或3D建模面具,可以轻松突破人脸识别算法。单独使用这个能力有很大的安全隐患。华为机器学习服务的动作检测能力,利用命令-动作协同进行活体检测,在眨眼、张嘴、左摇头、右摇头、凝视、点头六个动作中随机选取三个动作,让用户根据命令完成动作,利用人脸关键点和人脸跟踪技术,通过连续的图片,计算出变化距离与恒定距离的比值,将上一帧图像与下一帧图像进行对比,从而验证用户是否是真人.对照片、视频和面具的攻击都有很好的防御效果,这是人脸识别有效应用的前提。此外,在使用运动检测能力的过程中,支持对遮挡、光线差等检测场景的引导检测,如及时显示“暗光提醒”、“人像虚化”、“墨镜、口罩遮挡”、“人脸太近、太远”等提示信息,实现更友好的交互体验,打造安全可靠的支付级活体检测能力。与不需要用户配合的静默活体检测相比,交互式运动活体检测能力更适用于银行、金融、医疗等需要人机交互的场景。例如,在金融领域使用该技术,用户无需亲自前往银行现场,即可远程进行金融开户、保险理财等操作;线下超市等自助支付场景,用户需要通过移动侦测完成支付,确保个人资金安全;在社保、医保、个税等处理场景中,还需要通过动作检测准确验证操作者是否为活人,提高操作安全性。那么如何整合运动检测能力呢?进行如下操作。1开发步骤在开发之前,需要完成必要的开发准备工作。同时请确保您的项目中已经配置了HMSCoreSDK的Maven仓库地址,并且已经完成了该服务的SDK集成。方法一:在fullSDK方法中集成依赖{//引入动作活体检测采集包。implementation'com.huawei.hms:ml-computer-vision-interactive-livenessdetection:3.2.0.122'}方法二:基础SDK集成依赖{//导入活体检测插件包。implementation'com.huawei.hms:ml-computer-vision-interactive-livenessdetection-plugin:3.2.0.122'}Action活体检测提供了两种调用方式,您可以根据需要选择相应的调用方式构建活体检测服务。1.1默认扫描接口1.创建活体检测结果回调,获取检测结果。privateMLInteractiveLivenessCapture.Callbackcallback=newMLInteractiveLivenessCapture.Callback(){@OverridepublicvoidonSuccess(MLInteractiveLivenessCaptureResultresult){//检测成功的处理逻辑。检测结果可能是活的,也可能不是。swich(result.getStateCode()){caseInteractiveLivenessStateCode.ALL_ACTION_CORRECT://验证通过后对应的具体操作caseInteractiveLivenessStateCode.IN_PROGRESS://检测进行时对应的具体操作...}@OverridepublicvoidonFailure(interrorCode){//检测不完整,如摄像头异常CAMERA_ERROR,添加失败处理逻辑。}};2。创建活体检测实例并启动检测。MLInteractiveLivenessConfiginteractiveLivenessConfig=newMLInteractiveLivenessConfig.Builder().build();MLInteractiveLivenessCaptureConfigcaptureConfig=newMLInteractiveLivenessCaptureConfig.Builder().setOptions(MLInteractiveLivenessCaptureConfig.DETECT_MASK).setActionConfig(interactiveLivenessConfig).setDetectionTimeOut(TIME_OUT_THRESHOLD).build();MLInteractiveLivenessCapture捕获=MLInteractiveLivenessCapture。getInstance();capture.startDetect(activity,callback);1.2自定义扫描界面1.创建MLInteractiveLivenessDetectView,加载到Activity布局中。/***一、绑定摄像头预览界面,设置活体识别区域。*在摄像头预览流中,活体检测会判断人脸是否在预览视频流中不存在的人脸框中。为了提高活体的通过率,建议人脸框放在屏幕中间,活体识别区域画的人脸框的范围稍微大一点。*二。设置是否检测口罩。*三。设置结果回调。*四。将MLInteractiveLivenessDetectView加载到Activity。*/@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_liveness_custom_detection);mPreviewContainer=findViewById(R.id.surface_layout);MLInteractiveLivenessConfiginteractiveBuilderLivenessConfig=new();mlInteractiveLivenessDetectView=newMLInteractiveLivenessDetectView.Builder().setContext(this)//设置是否检测masks.setOptions(MLInteractiveLivenessCaptureConfig.DETECT_MASK)//设置检测动作,静音为0,动作为1..setType(1)//设置摄像头视频流的预览位置(左上右下像素值以预览视图为准).setFrameRect(newRect(0,0,1080,1440))//设置动作活跃度call.setActionConfig(interactiveLivenessConfig)//设置人脸框相对于预览视图的位置(左上右下以640*480图片坐标为准,建议长宽比符合到实际人脸比例),人脸框的作用是检测人脸的距离和是否偏移。setFaceRect(newRect(84,122,396,518))//设置检测超时时间,是建议在10000毫秒左右。.setDetectionTimeOut(10000)//设置结果回调.setDetectCallback(newOnMLInteractiveLivenessDetectCallback(){@OverridepublicvoidonCompleted(MLInteractiveLivenessCaptureResultresult){//活体检测完成时的结果回调swich(result.getStateCode()){caseInteractiveLivenessStateCode.ALL_ACTION_CORRECT://验证通过后对应的具体操作caseInteractiveLivenessStateCode.IN_PROGRESS://检测时对应的具体操作...}}@OverridepublicvoidonError(interror){//活体检测错误时的错误码回调}}).建造();mPreviewContainer.addView(mlInteractiveLivenessDetectView);mlInteractiveLivenessDetectView.onCreate(savedInstanceState);}2.对于MLInteractiveLivenessDetectView设置生命进程监控@OverrideprotectedvoidonDestroy(){super.onDestroy();MLInteractiveLivenessDetectView.onDestroy();}@OverrideprotectedvoidonPause(){super.onPause();MLInteractiveLivenessDetectView.onPause();}@OverrideprotectedvoidonResume(){super.onResume();MLInteractiveLivenessDetectView.onResume();}@OverrideprotectedvoidonStart(){super.onStart();MLInteractiveLivenessDetectView.onStart();}@OverrideprotectedvoidonStop(){super.onStop();MLInteractiveLivenessDetectView。onStop();}了解更多详情>>访问机器学习服务官网访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资料~