bgnArcFace

来自于:布谷鸟模块工作室立即使用

概述

模块概述

bgnArcFace封装了ArcSoft虹软提供的离线人脸识别ArcFace v2.0 SDK,使用该模块可以轻松实现人脸识别功能,目前该模块只提供了人脸注册与人脸对比两个功能;虹软Face SDK支持活体检测有效防止使用静态图片的人脸攻击。最关键虹软Face SDK是免费提供的SDK。人脸采集与识别过程不需要任何服务端支持。

模块使用攻略

使用之前须从虹软AI开放平台申请开发者账号并创建应用,并在自己的应用下申请ArcFace 2.0 SDK,拿到APP_ID与SDK_KEY;注意安卓与iOS下的SDK_KEY不同,需要根据你自己的需求申请对应的SDK,虽然目前该模块只支持安卓系统但接下来我们会持续开发对iOS系统的支持。

使用此模块之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:bgnArcFace
  • 参数:appId、sdkKey
  • 配置示例:
 <feature name="bgnArcFace"> 
    <param name="appId" value="GUSLW8f8vZUDS3SiptSwur6dRJfKw8ejrc4sA7Zqg6eh"/>  
    <param name="sdkKey" value="CAcsn8YdyLGVJAPpx62uvmyHUR95TKvQZ5ezkffoMqxN"/> 
  </feature>

注意:sdkKey是指的安卓系统下的SDK KEY,开发者可以使用配置示例中的appId与sdkKey进行测试,但最后发布系统时使用自己的appId与sdkKey,因为这只是我们测试时使用的个人开发者帐号下的appId与sdkKey

模块接口

active

SDK激活

虹软的ArcFace人脸识别模块在安装到设备上后第一次使用需要对其进行联网激活操作,之后该设备在使用SDK时可以在离线网络状态下使用,但该接口并不是必须调用的接口,开发者可以根据自己的业务特性选择使用,我们已经在activeregister接口中做了默认激活操作。提供该接口的目的是方便开发者能更加灵活的在自己的APP使用场景中控制在线与离线状态。注意:当APP被从设备上卸载后重新安装依然需要进行激活操作。

active(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔型;true|false,true表示激活成功,false表示激活失败
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型,错误码
    msg:         //错误消息
}

示例代码

  var bgnArcFace = api.require('bgnArcFace');
  bgnArcFace.active(function(ret,err){
    if(ret.status){
       alert("激活成功");
    }else{
       alert("激活失败");
    }
   });

可用性

Android系统

可提供的1.0.0及更高版本

register

人脸注册

register(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: "success",      //字符串;success|error|cancelled,success表示成功,error表示错误,cancelled表示用户取消操作
    image:"",                   //获取到的人脸图片路径
    faceFeature:""           //获取到的人脸特征数据
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型,错误码
    msg:         //错误消息
}

示例代码

  var bgnArcFace = api.require('bgnArcFace');
  bgnArcFace.register(function(ret,err){
  if(ret.status=="success"){
      if(ret.image){
               document.getElementById("image").src=ret.image;
               faceFeature = ret.faceFeature;
       }
 }else if(ret.status=="cancelled"){
    alert("用户取消");
 }else{
     alert(JSON.stringify(err));
 } });

可用性

Android系统

可提供的1.0.0及更高版本

compare

人脸对比

compare({params}, callback(ret, err))

params

faceFeature:

  • 类型:字符串
  • 描述:(必填项)通过人脸注册时获取到的人脸特征数据。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: "success",      //字符串;success|error|cancelled,success表示成功,error表示错误,cancelled表示用户取消操作
    score:0,                     //float型 取值从0到1;数值越大表示相似度越高,建议用户取值0.9以上表示同一张人脸。
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型,错误码
    msg:         //错误消息
}

示例代码

var bgnArcFace = api.require('bgnArcFace');
function compare(){
    bgnArcFace.compare({
        "faceFeature":faceFeature
    },function(ret,err){
        if(ret.status=="success"){
            if(ret.score>0.95){
                      alert("是同一个人");
                }else{
                       alert("不是同一个人");
                }
        }else if(ret.status=="cancelled"){
           alert("用户取消");
        }else{
           alert(JSON.stringify(err));
        }
    });
}

可用性

Android系统

可提供的1.0.0及更高版本

错误代码

错误码名十六进制十进制错误码说明
MOK 0 0 成功
MERR_UNKNOWN 1 1 错误原因不明
MERR_INVALID_PARAM 2 2 无效的参数
MERR_UNSUPPORTED 3 3 引擎不支持
MERR_NO_MEMORY 4 4 内存不足
MERR_BAD_STATE 5 5 状态错误
MERR_USER_CANCEL 6 6 用户取消相关操作
MERR_EXPIRED 7 7 操作时间过期
MERR_USER_PAUSE 8 8 用户暂停操作
MERR_BUFFER_OVERFLOW 9 9 缓冲上溢
MERR_BUFFER_UNDERFLOW A 10 缓冲下溢
MERR_NO_DISKSPACE B 11 存贮空间不足
MERR_COMPONENT_NOT_EXIST C 12 组件不存在
MERR_GLOBAL_DATA_NOT_EXIST D 13 全局数据不存在
MERR_FSDK_INVALID_APP_ID 700128673 无效的App Id
MERR_FSDK_INVALID_SDK_ID 7002 28674 无效的SDK key
MERR_FSDK_INVALID_ID_PAIR 7003 28675 AppId和SDKKey不匹配
MERR_FSDK_MISMATCH_ID_AND_SDK 7004 28676 SDKKey和使用的SDK不匹配
MERR_FSDK_SYSTEM_VERSION_UNSUPPORTED 7005 28677 系统版本不被当前SDK所支持
MERR_FSDK_LICENCE_EXPIRED 7006 28678 SDK有效期过期,需要重新下载更新
MERR_FSDK_FR_INVALID_MEMORY_INFO 12001 73729 无效的输入内存
MERR_FSDK_FR_INVALID_IMAGE_INFO 12002 73730 无效的输入图像参数
MERR_FSDK_FR_INVALID_FACE_INFO 12003 73731 无效的脸部信息
MERR_FSDK_FR_NO_GPU_AVAILABLE 12004 73732 当前设备无GPU可用
MERR_FSDK_FR_MISMATCHED_FEATURE_LEVEL 12005 73733 待比较的两个人脸特征的版本不一致
MERR_FSDK_FACEFEATURE_UNKNOWN 14001 81921 人脸特征检测错误未知
MERR_FSDK_FACEFEATURE_MEMORY1400281922 人脸特征检测内存错误
MERR_FSDK_FACEFEATURE_INVALID_FORMAT 14003 81923 人脸特征检测格式错误
MERR_FSDK_FACEFEATURE_INVALID_PARAM 14004 81924 人脸特征检测参数错误
MERR_FSDK_FACEFEATURE_LOW_CONFIDENCE_LEVEL 14005 81925 人脸特征检测结果置信度低
MERR_ASF_EX_BASE_FEATURE_UNSUPPORTED_ON_INIT 15001 86017 Engine不支持的检测属性
MERR_ASF_EX_BASE_FEATURE_UNINITED 15002 86018 需要检测是属性未初始化
MERR_ASF_EX_BASE_FEATURE_UNPROCESSED 15003 86019 待获取的属性未在process中处理过
MERR_ASF_EX_BASE_FEATURE_UNSUPPORTED_ON_PROCESS 15004 86020 PROCESS不支持的检测属性,例如FR,有自己独立的处理函数
MERR_ASF_EX_BASE_INVALID_IMAGE_INFO 15005 86021 无效的输入图像
MERR_ASF_EX_BASE_INVALID_FACE_INFO 15006 86022 无效的脸部信息
MERR_ASF_BASE_ACTIVATION_FAIL 16001 90113 SDK激活失败,请打开读写权限
MERR_ASF_BASE_ALREADY_ACTIVATED 16002 90114 SDK已激活
MERR_ASF_BASE_NOT_ACTIVATED 16003 90115 SDK未激活
MERR_ASF_BASE_SCALE_NOT_SUPPORT 16004 90116 detectFaceScaleVal不支持
MERR_ASF_BASE_VERION_MISMATCH 16005 90117 SDK版本不匹配
MERR_ASF_BASE_DEVICE_MISMATCH 16006 90118 设备不匹配
MERR_ASF_BASE_UNIQUE_IDENTIFIER_MISMATCH 16007 90119 唯一标识不匹配
MERR_ASF_BASE_PARAM_NULL 16008 90120 参数为空
MERR_ASF_BASE_LIVENESS_EXPIRED 16009 90121 活体检测功能已过期
MERR_ASF_BASE_VERSION_NOT_SUPPORT 1600A 90122 版本不支持
MERR_ASF_BASE_SIGN_ERROR 1600B 90123 签名错误
MERR_ASF_BASE_DATABASE_ERROR 1600C 90124 数据库插入错误
MERR_ASF_BASE_UNIQUE_CHECKOUT_FAIL 1600D 90125 唯一标识符校验失败
MERR_ASF_BASE_COLOR_SPACE_NOT_SUPPORT 1600E 90126 颜色空间不支持
MERR_ASF_BASE_IMAGE_WIDTH_HEIGHT_NOT_SUPPORT 1600F 90127 图片宽度或高度不支持
MERR_ASF_BASE_READ_PHONE_STATE_DENIED 16010 90128 android.permission.READ_PHONE_STATE权限被拒绝
MERR_ASF_BASE_ACTIVATION_DATA_DESTROYED 16011 90129 激活数据被破坏,请删除激活文件,重新进行激活
MERR_ASF_NETWORK_BASE_COULDNT_RESOLVE_HOST 17001 94209 无法解析主机地址
MERR_ASF_NETWORK_BASE_COULDNT_CONNECT_SERVER 17002 94210 无法连接服务器
MERR_ASF_NETWORK_BASE_CONNECT_TIMEOUT 17003 94211 网络连接超时
MERR_ASF_NETWORK_BASE_UNKNOWN_ERROR 17004 94212 网络未知错误