首页 > 其他分享 >“面面俱到”!人脸活体检测让应用告别假面攻击

“面面俱到”!人脸活体检测让应用告别假面攻击

时间:2025-01-07 10:33:18浏览次数:1  
标签:活体 面面俱到 err 检测 人脸 假面 跳转 interactiveLiveness

随着人脸识别技术在金融、医疗等多个领域的加速落地,网络安全、信息泄露等问题愈为突出,用户对应用稳定性和安全性的要求也更为严格。

HarmonyOS SDK 场景化视觉服务(Vision Kit)提供人脸动作活体检测能力,增强对于非活体攻击的防御能力和活体通过率。在投资理财、在线支付等高风险金融服务场景中,通过检测用户的组合动作等来验证用户为真实活体操作,抵御攻击,提高安全性,降低业务风险,全方位保障用户体验及信息安全。

动作活体检测支持实时捕捉人脸,采用指令动作配合的方式进行活体检测,开发者可以自定义检测的动作数量(最多为4个),系统会从6种预设动作(眨眼、张嘴、左摇头、右摇头、注视、点头)中随机生成所填数量的动作,用户按指令完成动作就可以判断是真实活体,还是非活体攻击(比如:人脸翻拍图片、人脸面具等)。

能力优势

端侧闭环:人脸活体检测作为纯端侧能力,数据不保存,杜绝篡改和泄漏,确保数据安全和用户隐私。

空间小,响应快:实现了高频攻击增强防护,同时保持ROM空间占用小,响应时间毫秒级,提供流畅的用户体验。

防护升级: Vision Kit的防护系统通过自研算法升级,能够有效抵御高精视频和高精面具攻击。

开发简单:支持UI定制,以满足个性化需求。经过两年以上的持续演进,积累了亿级数据和千万级的API调用量,成熟稳定。

功能演示

image

开发步骤

1.将实现人脸活体检测相关的类添加至工程。

import { interactiveLiveness } from '@kit.VisionKit';

2.在module.json5文件中添加CAMERA权限,其中reason,abilities标签必填,配置方式参见requestPermissions标签说明

"requestPermissions":[
  {
    "name": "ohos.permission.CAMERA",
    "reason": "$string:camera_desc",
    "usedScene": {"abilities": []}
  }
]

3.简单配置页面的布局,选择人脸活体检测验证完后的跳转模式。如果使用back跳转模式,表示的是在检测结束后使用router.back()返回。如果使用replace跳转模式,表示的是检测结束后使用router.replaceUrl()去跳转相应页面。默认选择的是replace跳转模式。

Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
  Text("验证完的跳转模式:")
    .fontSize(18)
    .width("25%")
  Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
    Row() {
      Radio({ value: "replace", group: "routeMode" }).checked(true)
        .height(24)
        .width(24)
        .onChange((isChecked: boolean) => {
          this.routeMode = "replace"
        })
      Text("replace")
        .fontSize(16)
    }
    .margin({ right: 15 })

    Row() {
      Radio({ value: "back", group: "routeMode" }).checked(false)
        .height(24)
        .width(24)
        .onChange((isChecked: boolean) => {
          this.routeMode = "back";
        })
      Text("back")
        .fontSize(16)
    }
  }
  .width("75%")
}

4.如果选择动作活体模式,可填写验证的动作个数。

Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
  Text("动作数量:")
    .fontSize(18)
    .width("25%")
  TextInput({
    placeholder: this.actionsNum != 0 ? this.actionsNum.toString() : "动作数量最多4个"
  })
    .type(InputType.Number)
    .placeholderFont({
      size: 18,
      weight: FontWeight.Normal,
      family: "HarmonyHeiTi",
      style: FontStyle.Normal
    })
    .fontSize(18)
    .fontWeight(FontWeight.Bold)
    .fontFamily("HarmonyHeiTi")
    .fontStyle(FontStyle.Normal)
    .width("65%")
    .onChange((value: string) => {
      this.actionsNum = Number(value) as interactiveLiveness.ActionsNumber;
    })
}

5.点击"开始检测"按钮,触发点击事件。

Button("开始检测", { type: ButtonType.Normal, stateEffect: true })
  .width(192)
  .height(40)
  .fontSize(16)
  .backgroundColor(0x317aff)
  .borderRadius(20)
  .margin({
    bottom: 56
  })
  .onClick(() => {
    this.privateStartDetection();
  })

6.触发CAMERA权限校验。

// 校验CAMERA权限
private privateStartDetection() {
  abilityAccessCtrl.createAtManager().requestPermissionsFromUser(this.context, this.array).then((res) => {
    for (let i = 0; i < res.permissions.length; i++) {
      if (res.permissions[i] === "ohos.permission.CAMERA" && res.authResults[i] === 0) {
        this.privateRouterLibrary();
      }
    }
  }).catch((err: BusinessError) => {
    hilog.error(0x0001, "LivenessCollectionIndex", `Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
  })
}

7.配置人脸活体检测控件的配置项InteractiveLivenessConfig,用于跳转到人脸活体检测控件。配置中具体的参数可参考API文档

let routerOptions: interactiveLiveness.InteractiveLivenessConfig = {
  isSilentMode: this.isSilentMode as interactiveLiveness.DetectionMode,
  routeMode: this.routeMode as interactiveLiveness.RouteRedirectionMode,
  actionsNum: this.actionsNum
};

8.调用interactiveLiveness的startLivenessDetection接口,判断跳转到人脸活体检测控件是否成功。

// 跳转到人脸活体检测控件
private privateRouterLibrary() {
  if (canIUse("SystemCapability.AI.Component.LivenessDetect")) {
    interactiveLiveness.startLivenessDetection(routerOptions).then((DetectState: boolean) => {
      hilog.info(0x0001, "LivenessCollectionIndex", `Succeeded in jumping.`);
    }).catch((err: BusinessError) => {
      hilog.error(0x0001, "LivenessCollectionIndex", `Failed to jump. Code:${err.code},message:${err.message}`);
    })
  } else {
    hilog.error(0x0001, "LivenessCollectionIndex", 'this api is not supported on this device');
  }
}

9.检测结束后回到当前界面,可调用interactiveLiveness的getInteractiveLivenessResult接口,验证人脸活体检测的结果。

// 获取验证结果
private getDetectionResultInfo() {
  // getInteractiveLivenessResult接口调用完会释放资源
  if (canIUse("SystemCapability.AI.Component.LivenessDetect")) {
    let resultInfo = interactiveLiveness.getInteractiveLivenessResult();
    resultInfo.then(data => {
      this.resultInfo = data;
    }).catch((err: BusinessError) => {
      this.failResult = {
        "code": err.code,
        "message": err.message
      }
    })
  } else {
    hilog.error(0x0001, "LivenessCollectionIndex", 'this api is not supported on this device');
  }
}

了解更多详情>>

访问场景化视觉服务联盟官网

获取人脸活体检测开发指导文档

标签:活体,面面俱到,err,检测,人脸,假面,跳转,interactiveLiveness
From: https://www.cnblogs.com/HarmonyOSSDK/p/18657067

相关文章

  • 人脸识别-人脸活体检测
    本节通过人脸活体检测业务实例,详细介绍业务接入的基本流程和操作方案建议,消除客户业务操作实践困惑,帮助客户快速获得更优的体验。背景信息对于首次使用人脸活体检测业务的用户,如希望快速的解决业务需求问题,可参照本实践案例,通过应用场景、产品功能、前提条件、前期准备、实践......
  • Node.js视频活体识别接口集成示例
    在数字时代的浪潮中,信息安全成为了一个不可忽视的议题。随着网络服务的日益普及,从银行金融到社交媒体,各种在线平台都需要确保其用户的身份真实可靠。在需求的推动下,视频活体识别技术应运而生,并迅速发展成为保护网络安全的重要手段。视频活体识别技术是一种通过分析用户的......
  • 人脸静态活体检测(高精度版)
    人脸静态活体检测(高精度版)API对接说明本文将介绍人脸静态活体检测(高精度版)API对接说明,它可用于对用户上传的静态图片进行防翻拍活体检测,以判断是否是翻拍图片。接下来介绍下人脸静态活体检测(高精度版)API的对接说明。注册试用链接注册试用链接申请流程要使用API......
  • 人脸静态活体检测(高精度版) API 对接说明
    人脸静态活体检测(高精度版)API对接说明本文将介绍人脸静态活体检测(高精度版)API对接说明,它可用于对用户上传的静态图片进行防翻拍活体检测,以判断是否是翻拍图片。接下来介绍下人脸静态活体检测(高精度版)API的对接说明。申请流程要使用API,需要先到人脸静态活体检测(......
  • Python学习—函数篇 面面俱到,细致讲解
    目录1.函数目的2.函数定义3.函数的调用4.函数的形参,实参5.函数的返回值1.返回一个值2.返回多个值3.没有返回值4.返回None6.函数的参数类型1.必需参数2.关键字参数3.默认参数4.可变参数5.关键字可变参数7.匿名函数基本语法示例1.函数目的在编程中,定......
  • 基于深度学习的活体人脸检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
    摘要:本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的活体人脸检测系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的活体人脸检测系统(Python+PySide6界面+训练代码)
    摘要:本篇博客详细讲述了如何利用深度学习构建一个活体人脸检测系统,并且提供了完整的实现代码。该系统基于强大的YOLOv8算法,并进行了与前代算法YOLOv7、YOLOv6、YOLOv5的细致对比,展示了其在图像、视频、实时视频流和批量文件处理中识别活体人脸的准确性。文章深入讲解了YOLOv8算法......
  • m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要        随着人工智能技术的快速发展,人脸识别技术已经广泛应用于身份验证、安全监控、智能支付等领域。活体人脸和视频人脸识别系统是其中的重要分支,旨在通过深度学习网络对人脸进行高效、准确......
  • 动作活体检测能力支持自定义扫描动作,开发者接入更高效
    随着人脸识别技术在金融、医疗等多个领域的加速落地,网络安全、信息泄露等问题愈为突出,用户对应用稳定性和安全性的要求也更为严格。华为机器学习服务的动作活体检测能力,支持实时捕捉人脸,根据用户配合做动作可以判断是真实活体,还是非活体攻击(比如:翻拍图片、翻拍视频以及面具等)。......
  • 【代码分享】PHP对接网易易盾活体检测代码风险,简单粗暴实现
    在一些日常应用中,有些敏感数据或者功能,需要用到对应真实本人进行业务操作,所以我们就会用到活体实人认证的功能,在对接过程中,发现网易易盾的较为好用,现在把实现代码贴出来,本案例仅提供数据端,前端模板大家可以自行设置接入步骤第一步注册网易易盾账号,进行业务申请获取参数所需......