
【HarmonyOS 5】VisionKit人脸活体检测详解 原创
【HarmonyOS 5】VisionKit人脸活体检测详解
一、VisionKit人脸活体检测是什么?
VisionKit是HamronyOS提供的场景化视觉服务工具包。
华为将常见的解决方案,通常需要三方应用使用SDK进行集成。华为以Kit的形式集成在HarmoyOS系统中,方便三方应用快速开发和赋能。
而VisionKit中包含人脸活体检测的功能接口interactiveLiveness 。人脸活体检测见名知意,主要是为了检测当前人是否为活人本人,而不是照片,硅胶面具,AI视频仿真的可能。
虽然该算法接口已通过中金金融(CECA)认证。但是官方还是建议添加额外的安全措施后,在使用该人脸检测接口,尽量不要直接使用在高风险性的支付和金融场景中。推荐在低危险场景,例如登录,考勤,实名认证等业务场景进行使用。
需要注意的是**,人脸活体检测,不支持模拟器和预览器。**
详情参见官方接口:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references/vision-interactive-liveness
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/vision-interactiveliveness
二、人脸活体检测如何使用?
人脸活体检测功能interactiveLiveness ,起始版本为 5.0.0 (API12),可通过@kit.VisionKit模块导入,支持动作活体检测模式(INTERACTIVE_MODE),动作数量可配置为 3 或 4 个,包含点头、张嘴、眨眼等 6 种动作。
通过InteractiveLivenessConfig配置检测模式、跳转路径、语音播报等参数,提供startLivenessDetection和getInteractiveLivenessResult接口,能抵御照片、视频等GJ,适用于身份验证场景,需申请ohos.permission.CAMERA相机权限,错误码可参考 Vision Kit 错误码文档。
Vision Kit 错误码文档
https://developer.huawei.com/consumer/cn/doc/harmonyos-references/vision-error-code
1. 核心接口为人脸页面唤起接口:
interactiveLiveness.startLivenessDetection,该接口需要配置config进行设置人脸的模式,动作等操作。
(1) Promise 方式:仅返回跳转结果(boolean)。
(2) Promise + 回调方式:同时返回跳转结果和检测结果(仅适用于 BACK_MODE)。
2. InteractiveLivenessConfig配置接口:
调用人脸活体检测,需要填入该配置对象,进行相关设置,参数见以下表格:
-
检测模式(DetectionMode)
名称 值 说明 SILENT_MODE “SILENT_MODE” 静默活体检测(暂未支持) INTERACTIVE_MODE “INTERACTIVE_MODE” 动作活体检测(默认模式) -
动作数量(ActionsNumber)
名称 值 说明 ONE_ACTION 1 随机1个动作(暂未支持) TWO_ACTION 2 随机2个动作(暂未支持) THREE_ACTION 3 随机3个动作([眨眼,注视]不同时存在且不相邻,相邻动作不重复) FOUR_ACTION 4 随机4个动作(眨眼仅1次,注视最多1次,[眨眼,注视]不相邻,相邻动作不重复) -
跳转模式(RouteRedirectionMode)
名称 值 说明 BACK_MODE “back” 检测完成后调用router.back返回上一页 REPLACE_MODE “replace” 检测完成后调用router.replaceUrl跳转(默认模式) -
配置项(InteractiveLivenessConfig)
名称 类型 必填/可选 说明 isSilentMode DetectionMode 必填 检测模式(默认INTERACTIVE_MODE) actionsNum ActionsNumber 可选 动作数量(3或4,默认3) successfulRouteUrl string 可选 检测成功跳转路径(未填则用系统默认页面) failedRouteUrl string 可选 检测失败跳转路径(未填则用系统默认页面) routeMode RouteRedirectionMode 可选 跳转模式(默认REPLACE_MODE) challenge string 可选 安全摄像头场景挑战值(16-128位,空值表示不使用) speechSwitch boolean 可选 语音播报开关(默认开启) isPrivacyMode boolean 可选 隐私模式(需申请ohos.permission.PRIVACY_WINDOW权限,默认关闭)
人脸活体检测的配置项对象除了isSilentMode是必填,其他属性均为可选:
3. getInteractiveLivenessResult获取人脸活体检测结果:
在调用人脸活体检测成功后,可通过该接口获取检测结果。结果内容如下表格所示:
名称 | 类型 | 只读 | 可选 | 说明 |
---|---|---|---|---|
livenessType | LivenessType | 是 | 否 | 活体检测模式,值包括: - 0 (INTERACTIVE_LIVENESS,动作活体检测)- 1 (SILENT_LIVENESS,静默活体检测,暂未支持)- 2 (NOT_LIVENESS,非活体) |
mPixelMap | image.PixelMap | 是 | 是 | 检测成功后返回的最具有活体特征的图片(如包含人脸关键点的特征图),检测失败时无此数据。 |
securedImageBuffer | ArrayBuffer | 是 | 是 | 安全摄像头场景下返回的安全流数据(加密后的图像特征数据),非安全场景无此数据。 |
certificate | Array<string> | 是 | 是 | 安全摄像头场景下返回的证书链(用于验证安全流的合法性),非安全场景无此数据。 |
三、DEMO源码示例
注意:
1. 人脸活体检测支持两种模式
INTERACTIVE_MODE(动作活体检测):默认模式,需用户完成 3 或 4 个随机动作(如眨眼、点头等),通过动作组合验证活体,规则限制避免相邻动作重复或特定组合(如眨眼和注视不相邻)。
SILENT_MODE(静默活体检测):暂未支持,无需用户做动作,通过其他技术(如微表情、光线反射)检测活体。
2. 配置人脸活体检测的动作数量和跳转逻辑
通过InteractiveLivenessConfig中的actionsNum配置,可选值为 3(默认)或 4,3 个动作时(眨眼,注视) 不同时存在且不相邻,4 个动作时眨眼仅 1 次,注视最多 1 次。
通过routeMode配置跳转模式(BACK_MODE 返回上一页或 REPLACE_MODE 替换跳转,默认 REPLACE_MODE)。
successfulRouteUrl和failedRouteUrl设置成功 / 失败后的自定义跳转路径(未填则用系统默认页面)。
3. 常见错误及处理:
201(Permission denied):未申请ohos.permission.CAMERA权限
1008301002(Route switching failed):路由配置错误,检查successfulRouteUrl/failedRouteUrl路径是否正确,或routeMode是否与页面路由匹配。
1008302000-1008302004(检测相关错误):检测过程中算法初始化失败、超时或动作不符合规则,可通过回调或 Promise 的 catch 捕获错误码,提示用户重新检测并检查动作合规性。
