开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
人脸识别

    Linux-ARM-SDK

    版本日志

    版本 日期 更新说明
    v5.0 2021.04.30 1、升级了人脸检测模型,重点优化了复杂光线场景下的人脸检测能力;
    2、升级了RGB、NIR和Depth三种模态的活体检测模型,优化后2D照片攻击防御能力和复杂光线场景真人活体检测能力提升明显;
    3、升级了最新的人脸特征抽取与比对模型(人脸识别模型),升级后识别模型对老人、儿童等极端年龄群体的泛化行提升明显;
    4、在RK3288主板上,端到端全流程耗时缩短到<300ms;
    5、增加了最优图像帧功能,提升识别准确率;
    6、修复跨平台第三方依赖缺失问题;
    7、兼容性拓展:兼容三星4418、6818开发板,同时在支持ubuntu系统的RK3288验证开发;
    注:由于该版本的SDK更换了特征抽取与比对的模型,因此从旧版本升级到该版本的用户需要重新注册人脸底库进行刷库
    v4.1 2020.07.20 1、升级Paddle Lite版本,降低端到端全流程人脸识别耗时;
    2、增加口罩检测功能,支持对用户是否佩戴口罩这个属性进行检测;
    3、新增激活工具,该工具支持在连网状态下通过授权序列号完成激活
    v4.0 2020.02.27 1、全面升级人脸检测、关键点检测模型,提升人脸检测和追踪的准确率,解决部分场景下的人脸漏检问题;
    2、全面升级三模态活体检测模型,提升RGB、NIR、Depth三模态活体检测的准确率;
    3、全面优化人脸特征抽取和特征比对模型,提升人脸识别模型的准确率和泛化性;
    4、全面重构SDK的接口设计,降低二次开发难度的同时提升了二次开发的灵活性

    目录

    1、快速使用说明
        1.1 配置环境准备
        1.2 构建demo工程
        1.3 运行demo示例
        1.4 二次开发介绍
    2、接口文档说明
        2.1 状态码说明
        2.2 SDK实例对象
            2.2.1 创建人脸SDK实例对象
            2.2.2 销毁人脸SDK实例对象
        2.3 图像实例对象
            2.3.1 创建图像实例
            2.3.2 销毁图像实例
            2.3.3 图像实例转换
            2.3.4 图像实例转换
        2.4 预测库接口
            2.4.1 获取预测库默认配置
        2.5 日志系统
            2.5.1 控制日志输出接口
            2.5.2 获取指定日志类型的开启状态
        2.6 人脸检测接口
            2.6.1 获取检测默认配置参数
            2.6.2 加载人脸检测能力
            2.6.3 卸载人脸检测能力
            2.6.4 人脸检测接口
        2.7 人脸关键点提取接口
            2.7.1 获取align默认配置参数
            2.7.2 加载人脸关键点检测能力
            2.7.3 卸载人脸关键点检测能力
            2.7.4 提取人脸关键点
        2.8 人脸静默活体检测接口
            2.8.1 获取活体检测默认配置参数
            2.8.2 加载静默活体检测能力
            2.8.3 卸载静默活体检测能力
            2.8.4 静默活体检测接口
        2.9 人脸特征值提取
            2.9.1 获取特征值默认配置参数
            2.9.2 加载特征提取能力
            2.9.3 卸载人脸识别能力
            2.9.4 人脸特征值提取接口
            2.9.5 人脸RGBD特征提取接口
            2.9.6 人脸特征值比对接口
        2.10 人脸属性接口
            2.10.1 获取属性默认配置参数
            2.10.2 加载人脸属性检测能力
            2.10.3 卸载人脸属性检测能力
            2.10.4 人脸属性检测
        2.11 人脸模糊度检测接口
             2.11.1 获取人脸模糊度检测默认配置参数
             2.11.2 加载人脸模糊度检测能力
             2.11.3 卸载人脸模糊度检测能力
             2.11.4 人脸模糊度检测
        2.12 人脸检测接口
             2.12.1 加载图像抠图能力
             2.12.2 卸载扣图能力
             2.12.3 根据给定的人脸关键点进行扣图
             2.12.4 根据给定的人脸框进行扣图
        2.13 注意力检测接口
             2.13.1 获取注意力默认配置参数
             2.13.2 加载注意力检测能力
             2.13.3 卸载注意力检测能力
             2.13.4 注意力检测接口
        2.14 人脸姿态角检测
             2.14.1 加载人脸姿态角检测能力
             2.14.2 卸载人脸姿态角检测能力
             2.14.3 人脸姿态角检测
        2.15 人脸光照检测接口
             2.15.1 加载人脸光照强度检测能力
             2.15.2 卸载人脸光照强度检测能力
             2.15.3 人脸光照强度检测接口
        2.16 闭嘴检测接口
             2.16.1 获取属性默认配置参数
             2.16.2 加载人脸嘴巴闭合检测能力
             2.16.3 卸载人脸嘴巴闭合检测能力
             2.16.4 人脸闭嘴检测接口
        2.17 眼睛闭合状态检测接口
             2.17.1 获取闭眼默认配置参数
             2.17.2 加载眼睛闭合检测能力
             2.17.3 卸载眼睛闭合检测能力
             2.17.4 眼睛闭合检测接口
        2.18 人脸遮挡度检测接口
             2.18.1 获取人脸遮挡默认配置参数
             2.18.2 加载人脸遮挡检测能力
             2.18.3 卸载人脸遮挡检测能力
             2.18.4 人脸遮挡检测接口
        2.19 人脸跟踪接口
             2.19.1 获取人脸跟踪默认配置参数
             2.19.2 加载人脸跟踪能力
             2.19.3 卸载人脸跟踪能力
             2.19.4 人脸跟踪接口
             2.19.5 清除历史人脸跟踪数据接口
        2.20 动作活体
             2.20.1 获取动作活体默认配置
             2.20.2 加载动作活体能力
             2.20.3 卸载动作活体能力
             2.20.4 动作活体检测接口
             2.20.5 清除动作活体检测历史数据

    本文主要介绍如何使用交叉编译方式快速生成示例demo及运行,供用户参考进行二次开发

    1、快速使用说明

    1.1 配置环境准备

    • 1、x86_64的宿主机PC一台,搭载Linux操作系统(建议ubuntu-16.04或18.04发行版)
    • 2、cmake工具,版本大于3.2 (ubuntu系统可通过apt install cmake安装)
    • 3、交叉编译工具链(与您的arm开发板相匹配,通常开发板厂商会提供对应的交叉编译工具)

    根据arm开发板的架构不同,所使用的交叉编译器也不一样,具体对应方式如下:

    开发板架构 对应编译器
    armv7 arm-linux-gnueabi-gcc
    armv7hf arm-linux-gnueabihf-gcc
    armv8 aarch64-linux-gnu-gcc

    可通过以下方法查看开发板的架构:

    # 登录开发板终端,输入下面命令
    uname -a 

    请确认宿主机的交叉编译工具已经安装成功
    验证方法:可通过在宿主机的终端里输入以下三条命令中的对应一条命令(根据开发板架构选择对应测试命令)

    # 测试armv7交叉编译工具是否安装成功 
    arm-linux-gnueabi-gcc -v
    # 测试armv7hf交叉编译工具是否安装成功
    arm-linux-gnueabihf-gcc -v
    # 测试armv8交叉编译工具是否安装成功
    aarch64-linux-gnu-gcc -v

    如果输入对应命令后,终端输出了交叉编译器的版本信息,则表示环境已经就绪,可跳至第二节进行后续工程配置;
    如果未能输出对应的交叉编译器版本信息,则表示您的交叉编译环境未配置成功,请重新配置您的交叉编译器(参考下面分割线内的流程),直至上述验证通过。


    以下安装流程仅供参考,具体对应编译器请以你手中的开发板厂商提供的为准

    1. 假设您的开发板为armv7hf架构,对应交叉编译器安装包为gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf.tar.gz
    2. 首先将其解压到宿主机的某个路径下,例如:
    # 解压编译工具至/opt目录
    tar -xJf gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/
    1. 此时编译器arm-linux-gnueabihf-gcc所在的绝对路径为/opt/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/,将该路径添加到系统环境变量PATH里,执行下面的命令
    # 增加环境变量
    echo "export PATH=/opt/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH" >> ~/.bashrc
    source ~/.bashrc
    # 测试查看编译器版本信息,若正常输出版本信息则为安装成功
    arm-linux-gnueabihf-gcc -v

    1.2 构建demo工程

    步骤一:首先请您确认已获取armlinux 4.0压缩包:Baidu_Face_Offline_SDK_Linux_Cpp_ARM.zip

    步骤二:将其解压后,获得两个压缩包与一个说明文档,将这两个压缩包分别解压后,得到的整个目录结构如下图所示:
       ├── BaiduFace_Offline_SDK_Linux_Cpp_ARM.zip
    └── '百度人脸离线识别SDK_Linux ARM版'
    ├── face-sdk
    ├── face-sdk-demo
    ├── 人脸离线识别SDK_Linux ARM版.zip
    ├── 人脸离线识别SDK_Linux ARM版_Demo.zip
    └── 人脸离线识别SDK_Linux ARM版
    接口文档.pdf

    请您务必确认在后续编译或运行时face-sdk文件夹与face-sdk-demo文件夹都在同一目录下

    步骤三:进入face-sdk-demo路径:

    cd face-sdk-demo

    步骤四:根据您的开发板架构选择下述命令之一进行demo的交叉编译:

    # 编译用于armv7开发板的用户demo
    ./build_cross_compiler.sh armv7
    # 编译用于armv7hf开发板的用户demo
    ./build_cross_compiler.sh armv7hf
    # 编译用于armv8开发板的用户demo
    ./build_cross_compiler.sh armv8

    编译成功后会在face-sdk-demo/build路径下生成可执行程序face_demo

    1.3 运行demo示例

    步骤一:将编译成功后的face-sdk文件夹与face-sdk-demo文件夹拷贝至您的开发板

    依旧请务必缺认:face-sdk与face-sdk-demo在开发板上也是同一路径下

    步骤二:通过开发板终端进入face-sdk-demo路径
    步骤三:运行demo,根据开发板架构选择下述命令之一:

    # 运行armv7版demo
    ./run.sh armv7
    # 运行armv7hf版demo
    ./run.sh armv7hf
    # 运行armv8版demo
    ./run.sh armv8

    步骤四:获取硬件指纹(device id)
    运行成功会打印出device id,如果您未获取授权文件,则显示授权失败,此时,您需要联系百度AI的对应工作人员并提供这个device id,获取对应授权文件并按指示放在对应路径下,即可成功运行整个demo程序

    1.4 二次开发介绍

    • face-sdk 是百度AI为您提供的核心功能库及其接口,详细接口功能及参数请参考文档《人脸离线识别SDKLinux ARM版接口文档.pdf》
    • face-sdk-demo 是以源码形式为您展示的快速使用示例,您可以参考里面的使用代码快速实现您的人脸AI业务

    2、接口文档说明

    2.1 状态码说明

    enum BDFaceStatusCode {
    OK = 0 , // 成功
    ILLEGAL_PARAMS = -1, // 非法的参数
    MEMORY_ALLOCATION_FAILED = -2, // 内存分配失败
    INSTANCE_IS_EMPTY = -3, // 实例对象为空
    MODEL_IS_EMPTY = -4, // 模型内容为空
    UNSUPPORT_ABILITY_TYPE = -5, // 不支持的能力类型
    UNSUPPORT_INFER_TYPE = -6, // 不支持的预测库类型
    NN_CREATE_FAILED = -7, // 预测库对象创建失败
    NN_INIT_FAILED = -8, // 预测库对象初始化失败
    IMAGE_IS_EMPTY = -9, // 图像数据为空
    ABILITY_INIT_FAILED = -10, // 人脸能力初始化失败
    ABILITY_UNLOAD = -11, // 能力未加载
    ABILITY_ALREADY_LOADED = -12, // 人脸能力已加载
    NOT_AUTHORIZED = -13, // 未授权
    ABILITY_RUN_EXCEPTION = -14, // 人脸能力运行异常
    UNSUPPORT_IMAGE_TYPE = -15, // 不支持的图像类型
    IMAGE_TRANSFORM_FAILED = -16, // 图像转换失败
    };

    2.2 SDK 实例对象

    typedef void* BDFaceInstance; // 人脸SDK实例对象指针

    2.2.1 创建人脸SDK实例对象

    # bdface_create_instance
    enum BDFaceStatusCode bdface_create_instance(BDFaceInstance* face_instanc
    e);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance* 指向人脸SDK实例对象的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode

    2.2.2 销毁人脸SDK实例对象

    # bdface_destroy_instance
    enum BDFaceStatusCode bdface_destroy_instance(BDFaceInstance face_instanc
    e);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 指向人脸SDK实例对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.3 图像实例对象

    /* 图片类型枚举 */
    enum BDFaceImageType {
    BDFACE_IMAGE_TYPE_RGB = 0 , // RGB图像
    BDFACE_IMAGE_TYPE_BGR = 1 , // BGR图像
    BDFACE_IMAGE_TYPE_RGBA = 2 , // RGBA图像
    BDFACE_IMAGE_TYPE_BGRA = 3 , // BGRA图像
    BDFACE_IMAGE_TYPE_GRAY = 4 , // 灰度图
    BDFACE_IMAGE_TYPE_DEPTH = 5 , // 深度图
    BDFACE_IMAGE_TYPE_YUV_NV21 = 6 , // YYYYVUVU
    BDFACE_IMAGE_TYPE_YUV_NV12 = 7 , // YYYYUVUV
    BDFACE_IMAGE_TYPE_YUV_YV12 = 8 , // YYYYVVUU
    };
    /* 图片实例对象结构体 */
    struct BDFaceImageInstance {
    int rows; // 行数
    int cols; // 列数
    enum BDFaceImageType type; // 图像类型
    unsigned char* data; // 图像数据指针
    }

    2.3.1 创建图像实例

    # bdface_create_img_instance
    enum BDFaceStatusCode bdface_create_img_instance(
    int rows,
    int cols,
    enum BDFaceImageType type,
    unsigned char* data,
    struct BDFaceImageInstance** img_instance);

    参数说明:

    参数名 类型 说明
    rows int 行数
    cols int 列数
    type enum BDFaceImageType 图像类型
    data unsigned char* 指向图像数据的指针
    img_instance struct BDFaceImageInstance** 指向图像实例的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.3.2 销毁图像实例

    # bdface_destroy_img_instance
    enum BDFaceStatusCode bdface_destroy_img_instance(struct BDFaceImageInsta
    nce* img_instance);

    参数说明:

    参数名 类型 说明
    img_instance struct BDFaceImageInstance** 指向图像实例的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.3.3 图像实例转换

    将图像实例对象转换为指定类型的另一种图像实例

    # bdface_convert_img_instance
    enum BDFaceStatusCode bdface_convert_img_instance(
    struct BDFaceImageInstance* src_instance,
    float angle,
    int is_mirror,
    enum BDFaceImageType dst_type,
    struct BDFaceImageInstance** dst_instance);

    参数说明:

    参数名 类型 说明
    src_instance struct BDFaceImageInstance* 原图像实例指针
    angle float 图像顺时针旋转角度
    is_mirror 是否将图片做镜像处理
    dst_type enum BDFaceImageType 要转换的目标类型
    dst_instance struct BDFaceImageInstance** 指向转换结果图像实例的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    备注:目前支持的图像转换类型如下:

    源类型 -> 目标类型
    BDFACE_IMAGE_TYPE_BGRA -> BDFACE_IMAGE_TYPE_BGR
    BDFACE_IMAGE_TYPE_RGBA -> BDFACE_IMAGE_TYPE_BGR
    BDFACE_IMAGE_TYPE_YUV420 -> BDFACE_IMAGE_TYPE_BGR
    BDFACE_IMAGE_TYPE_YUV420 -> BDFACE_IMAGE_TYPE_BGRA

    2.3.4 图像实例转换

    一次性完成目标图像类型的转换,目前仅支持YUV_NV21到BGR的转换

    # bdface_create_img_instance_with_convert 
    enum BDFaceStatusCode bdface_create_img_instance_with_convert(
    int rows,
    int cols,
    enum BDFaceImageType src_type,
    unsigned char* data,
    int angle,
    int is_mirror,
    enum BDFaceImageType dst_type,
    struct BDFaceImageInstance** img_instance);

    参数说明:

    参数名 类型 说明
    rows int 行数
    cols int 列数
    src_type enum BDFaceImageType 源图像类型
    data unsigned char* 源图像数据指针
    angle float 图像顺时针旋转角度
    is_mirror 是否将图片做镜像处理
    dst_type enum BDFaceImageType 目标图像类型
    dst_instance struct BDFaceImageInstance** 指向目标图像实例的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.4 预测库接口

    /* 预测库类型枚举 */
    enum BDFaceInferenceType {
    BDFACE_INFERENCE_CAFFE = 0 , // caffe预测库(废弃)
    BDFACE_INFERENCE_ANAKIN = 1 , // anakin预测库(废弃)
    BDFACE_INFERENCE_PADDLE = 2 , // paddle预测库
    BDFACE_INFERENCE_PADDLE_LITE = 3 , // paddle-lite预测库
    };
    /* 使用Anakin预测库的运行模式枚举(在未来版本废弃) */
    enum BDFaceAnakinRunMode {
    BDFACE_ANAKIN_RUN_AT_BIG_CORE = 0 , // 运行在大核
    BDFACE_ANAKIN_RUN_AT_SMALL_CORE = 1 , // 运行在小核
    BDFACE_ANAKIN_RUN_AUTO = 2 , // 自动选择
    };
    /* 使用anakin预测库的配置结构体(在未来版本废弃) */
    struct BDFaceInferenceAnakinConf {
    enum BDFaceAnakinRunMode mode; // 运行模式
    int core_num; // 运行的核数
    };
    /* 使用paddle预测库的配置结构体 */
    struct BDFaceInferencePaddleConf {
    int cpu_thread_num; // 设置CPU线程数
    bool enable_mkldnn; // 开启mkldnn加速
    };
    /**
    * @brief 使用paddle lite预测库的运行模式枚举, 推荐使用LITE_POWER_NO_BIND模式
    */
    enum BDFacePaddleLitePowerMode{
    LITE_POWER_HIGH = 0 ,
    LITE_POWER_LOW = 1 ,
    LITE_POWER_FULL = 2 ,
    LITE_POWER_NO_BIND = 3 ,
    LITE_POWER_RAND_HIGH = 4 ,
    LITE_POWER_RAND_LOW = 5
    };
    /* 使用paddle-lite预测库的配置结构体 */
    struct BDFaceInferencePaddleLiteConf{
    enum BDFacePaddleLitePowerMode power_mode; // 运行模式
    int core_num; // 运行的核数
    };
    /* 预测库的配置结构体 */
    struct BDFaceInferenceConf {
    enum BDFaceInferenceType infer_type; // 使用的预测库
    类型
    struct BDFaceInferenceAnakinConf anakin_conf; // anakin预测
    库配置(在未来版本废弃)
    struct BDFaceInferencePaddleConf paddle_conf; // paddle预测
    库配置
    struct BDFaceInferencePaddleLiteConf paddlelite_conf; // paddle-lit
    e预测库配置
    };

    2.4.1 获取预测库默认配置

    # bdface_inference_get_default_conf
    enum BDFaceStatusCode bdface_inference_get_default_conf(struct BDFaceInfe
    renceConf* conf);

    参数说明:

    参数名 类型 说明
    conf struct BDFaceInferenceConf* 指向预测库配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.5 日志系统

    /* 日志类型枚举 */
    enum BDFaceLogType {
    BDFACE_LOG_TYPE_ERROR = 0 , // 打印错误日志
    BDFACE_LOG_TYPE_VALUE = 1 , // 打印值日志
    BDFACE_LOG_TYPE_PERF = 2 , // 打印性能日志
    BDFACE_LOG_TYPE_ALL = 3 , // 打印所有日志
    };

    2.5.1 控制日志输出接口

    # bdface_manage_log 
    enum BDFaceStatusCode bdface_manage_log(const enum BDFaceLogType type, co
    nst int status);

    参数说明:

    参数名 类型 说明
    type const enum BDFaceLogType 日志类型
    status const int 日志开启状态 0 :关闭; 1 :开启

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.5.2 获取指定日志类型的开启状态

    # bdface_get_log_status 
    int bdface_get_log_status(const enum BDFaceLogType type);

    参数说明:

    参数名 类型 说明
    type const enum BDFaceLogType 日志类型

    返回值说明:

    返回类型 说明
    int 日志开启状态 0 :关闭; 1 :开启

    2.6 人脸检测接口

    /* 人脸检测类型枚举 */
    enum BDFaceDetectType {
    BDFACE_DETECT_TYPE_RGB = 0 , // 可见光照片人脸检测
    BDFACE_DETECT_TYPE_NIR = 1 , // 近红外照片人脸检测
    };
    /* 人脸包围盒结构体 */
    struct BDFaceBBox {
    int index; // 人脸索引值
    float center_x; // 人脸中心点x坐标
    float center_y; // 人脸中心点y坐标
    float width; // 人脸宽度
    float height; // 人脸高度
    float angle; // 人脸角度
    float score; // 人脸置信度
    };
    /* 人脸包围盒列表 */
    struct BDFaceBBoxList {
    int num; // 人脸框个数
    BDFaceBBox* boxes; // 人脸框数据指针
    };
    /* 人脸检测参数配置 */
    struct BDFaceDetectConf {
    int max_detect_num; // 需要检测的最大脸数目
    float min_face_size; // 需要检测的最小脸大小
    float not_face_threshold; // 过滤非人脸的阈值(检测分值大于该
    阈值认为是人脸)
    float scale_ratio; // 人脸检测图像缩放系数
    struct BDFaceInferenceConf infer_conf; // 预测库配置
    }

    2.6.1 获取检测默认配置参数

    # bdface_detect_get_default_conf
    eunm BDFaceStatusCode bdface_detect_get_default_conf(
    enum BDFaceDetectType type,
    struct BDFaceDetectConf* conf);

    参数说明:

    参数名 类型 说明
    type enum BDFaceDetectType 人脸检测类型
    conf struct BDFaceDetectConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.6.2 加载人脸检测能力

    # bdface_load_detect
    enum BDFaceStatusCode bdface_load_detect(
    BDFaceInstance face_instance,
    enum BDFaceDetectType type,
    const long model_length,
    const char* model_memory,
    struct BDFaceDetectConf* conf);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceDetectType 人脸检测类型
    model_length const long 模型长度
    model_memory const char* 模型数据地址
    conf struct BDFaceDetectConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.6.3 卸载人脸检测能力

    # bdface_unload_detect
    enum BDFaceStatusCode bdface_unload_detect(
    BDFaceInstance face_instance,
    enum BDFaceDetectType type);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceDetectType 人脸检测类型

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.6.4 人脸检测接口

    # bdface_detect
    enum BDFaceStatusCode bdface_detect(
    const BDFaceInstance face_instance,
    const BDFaceImageInstance* img_instance,
    enum BDFaceDetectType type,
    struct BDFaceBBoxList** box_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    img_instance const struct BDFaceImageInstance* 指向图像实例的指针
    type enum BDFaceDetectType 人脸检测类型
    box_list struct BDFaceBBoxList** 指向人脸框数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.7 人脸关键点提取接口

    /**
    * @brief 人脸关键点枚举类型
    */
    enum BDFaceAlignType {
    BDFACE_ALIGN_TYPE_RGB_ACCURATE = 0 , // rgb高精度关键点
    BDFACE_ALIGN_TYPE_RGB_FAST = 1 , // rgb快速关键点
    BDFACE_ALIGN_TYPE_NIR_ACCURATE = 2 , // nir高精度关键点
    BDFACE_ALIGN_TYPE_150_RGB_ACCURATE = 3 , // rgb 150高精度关键点
    };
    /* 人脸关键点数据结构体 */
    struct BDFaceLandmark {
    int index; // landmark索引
    int size; // landmark大小
    float* data; // landermark数据指针
    float score; // 人脸置信度
    };
    /* 人脸关键点列表 */
    struct BDFaceLandmarkList {
    int num; // 人脸关键点数量
    BDFaceLandmark* landmarks; // 人脸关键点数据指针
    }
    /* 人脸关键点提取参数配置 */
    struct BDFaceAlignConf {
    float threshold; // 过滤非人脸的阈值(分值大于该阈值
    认为是人脸)
    struct BDFaceInferenceConf infer_conf; // 预测库配置
    }

    2.7.1 获取align默认配置参数

    # bdface_align_get_default_conf
    enum BDFaceStatusCode bdface_align_get_default_conf(
    enum BDFaceAlignType type,
    struct BDFaceAlignConf* conf);

    参数说明:

    参数名 类型 说明
    type enum BDFaceAlignType 使用的关键点类型
    conf struct BDFaceAlignConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.7.2 加载人脸关键点检测能力

    # bdface_load_align
    enum BDFaceStatusCode bdface_load_align(
    BDFaceInstance face_instance,
    enum BDFaceAlignType type,
    const long model_length,
    const char* model_memory,
    struct BDFaceAlignConf* conf);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceAlignType 使用的关键点类型
    model_length const long 模型长度
    model_memory const char* 模型数据地址
    conf struct BDFaceAlignConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.7.3 卸载人脸关键点检测能力

    # bdface_unload_align
    enum BDFaceStatusCode bdface_unload_align(
    BDFaceInstance face_instance,
    enum BDFaceAlignType type);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceAlignType 使用的关键点类型

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.7.4 提取人脸关键点

    # bdface_align
    enum BDFaceStatusCode bdface_align(
    const BDFaceInstance face_instance,
    enum BDFaceAlignType type,
    const struct BDFaceImageInstance* img_instance,
    const struct BDFaceBBoxList* box_list,
    struct BDFaceLandmarkList** landmarks_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceAlignType 使用的关键点类型
    img_instance const struct BDFaceImageInstance* 指向图像实例的指针
    box_list const struct BDFaceBBoxList* 指向人脸框数据(人脸检测结果数据)的指针针
    landmarks_list struct BDFaceLandmarkList** 指向人脸关键点数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.8 人脸静默活体检测接口

    /* 静默活体类型枚举 */
    enum BDFaceSilentLiveType {
    BDFACE_SILENT_LIVE_TYPE_RGB = 0 ,
    BDFACE_SILENT_LIVE_TYPE_NIR = 1 ,
    BDFACE_SILENT_LIVE_TYPE_DEPTH = 2 ,
    };
    /**
    * @brief 静默活体分值列表
    */
    struct BDFaceSilentLiveList {
    int num; // 活体分值个数
    float* scores; // 活体数据地址
    };
    /* 静默活体配置结构体 */
    struct BDFaceSilentLiveConf {
    struct BDFaceInferenceConf infer_conf; // 预测库配置
    }

    2.8.1 获取活体检测默认配置参数

    # bdface_silent_live_get_default_conf
    enum BDFaceStatusCode bdface_silent_live_get_default_conf(
    enum BDFaceSilentLiveType type,
    struct BDFaceSilentLiveConf* conf);

    参数说明:

    参数名 类型 说明
    type enum BDFaceSilentLiveType 静默活体类型
    conf struct BDFaceSilentLiveConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.8.2 加载静默活体检测能力

    # bdface_load_silent_live
    enum BDFaceStatusCode bdface_load_silent_live(
    BDFaceInstance face_instance,
    enum BDFaceSilentLiveType type,
    const long model_length,
    const char *model_memory,
    struct BDFaceSilentLiveConf *conf);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceSilentLiveType 静默活体类型
    model_length const long 模型长度
    model_memory const char* 模型数据地址
    conf struct BDFaceAttributeConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.8.3 卸载静默活体检测能力

    # bdface_unload_silent_live
    enum BDFaceStatusCode bdface_unload_silent_live(
    BDFaceInstance face_instance,
    enum BDFaceSilentLiveType type);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceSilentLiveType 静默活体类型

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.8.4 静默活体检测接口

    # bdface_silent_live
    enum BDFaceStatusCode bdface_silent_live(
    const BDFaceInstance face_instance,
    const struct BDFaceImageInstance *img_instance,
    const enum BDFaceSilentLiveType type,
    const struct BDFaceLandmarkList *landmark_list,
    struct BDFaceSilentLiveList** silent_live_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    img_instance const struct BDFaceImageInstance* 指向图像实例的指针
    type const enum BDFaceSilentLiveType 静默活体类型
    landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
    silent_live_list struct BDFaceSilentLiveList** 指向静默活体检测数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.9 人脸特征值提取

    /* 人脸特征提取结构体 */
    struct BDFaceFeature {
    int size; // feature维度
    float* data; // feature的数据指针
    };
    /**
    * @brief 人脸feature数据列表
    */
    struct BDFaceFeatureList {
    int num; // feature个数
    BDFaceFeature* features; // feature数据指针
    };
    /* 识别类型枚举 */
    enum BDFaceFeatureType {
    BDFACE_FEATURE_TYPE_LIVE_PHOTO = 0 , // 生活照特征提取
    BDFACE_FEATURE_TYPE_ID_PHOTO = 1 , // 证件照特征提取
    BDFACE_FEATURE_TYPE_NIR = 2 , // 证件照特征提取
    BDFACE_FEATURE_TYPE_RGBD = 3 , // 证件照特征提取
    };
    /* 人脸配置结构体 */
    struct BDFaceFeatureConf {
    struct BDFaceInferenceConf infer_conf;
    };

    2.9.1 获取特征值默认配置参数

    # bdface_feature_get_default_conf
    enum BDFaceStatusCode bdface_feature_get_default_conf(
    enum BDFaceFeatureType type,
    struct BDFaceFeatureConf* conf);

    参数说明:

    参数名 类型 说明
    type enum BDFaceFeatureType 人脸识别类型
    conf struct BDFaceFeatureConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.9.2 加载特征提取能力

    # bdface_load_feature
    enum BDFaceStatusCode bdface_load_feature(
    BDFaceInstance face_instance,
    enum BDFaceFeatureType type,
    const long model_length,
    const char* model_memory,
    struct BDFaceFeatureConf* conf);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceFeatureType 人脸识别类型
    model_length const long 模型长度
    model_memory const char* 模型数据地址
    conf struct BDFaceAttributeConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.9.3 卸载人脸识别能力

    # bdface_unload_feature
    enum BDFaceStatusCode bdface_unload_feature(
    BDFaceInstance face_instance,
    enum BDFaceFeatureType type);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    type enum BDFaceFeatureType 人脸识别类型

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.9.4 人脸特征值提取接口

    # bdface_feature
    enum BDFaceStatusCode bdface_feature(
    const BDFaceInstance face_instance,
    const BDFaceImageInstance* image,
    const enum BDFaceFeatureType type,
    const struct BDFaceLandmarkList* landmark_list,
    struct BDFaceFeatureList** feature_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    image const struct BDFaceImageInstance* 指向图像实例的指针
    type const enum BDFaceFeatureType 人脸识别类型
    landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
    feature_list struct BDFaceFeatureList** 指向人脸特征值数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.9.5 人脸RGBD特征提取接口

    # bdface_rgbd_feature
    enum BDFaceStatusCode bdface_rgbd_feature(
    const BDFaceInstance face_instance,
    const struct BDFaceImageInstance* image,
    const struct BDFaceImageInstance* image_depth,
    const enum BDFaceFeatureType type,
    const struct BDFaceLandmarkList* landmark_list,
    struct BDFaceFeatureList** feature_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    image const struct BDFaceImageInstance* RGB图像句柄
    image_depth const struct BDFaceImageInstance* Depth图像句柄
    type const enum BDFaceFeatureType 人脸识别类型,固定BDFACE_FEATURE_TYPE_RGBD有效
    landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
    feature_list struct BDFaceFeatureList** 指向人脸特征值数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.9.6 人脸特征值比对接口

    # bdface_feature_compare
    enum BDFaceStatusCode bdface_feature_compare(
    const BDFaceInstance face_instance,
    const struct BDFaceFeature* feature_first,
    const struct BDFaceFeature* feature_second,
    const enum BDFaceFeatureType type,
    int is_percent,
    float* score);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    feature_first const struct BDFaceFeature* 人脸特征值数据地址
    feature_second const struct BDFaceFeature* 人脸特征值数据地址
    type const enum BDFaceFeatureType 人脸识别类型
    is_percent int 是否转换为百分制
    score float* 比对分值

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.10 人脸属性接口

    /* 人脸表情属性枚举 */
    enum BDFaceAttributeEmotionType {
    BDFACE_ATTRIBUTE_EMOTION_FROWN = 0 , // 皱眉
    BDFACE_ATTRIBUTE_EMOTION_SMILE = 1 , // 笑
    BDFACE_ATTRIBUTE_EMOTION_CALM = 2 , // 平静
    };
    /* 人脸种族属性枚举 */
    enum BDFaceRace {
    BDFACE_RACE_YELLOW = 0 , // 黄种人
    BDFACE_RACE_WHITE = 1 , // 白种人
    BDFACE_RACE_BLACK = 2 , // 黑种人
    BDFACE_RACE_INDIAN = 3 , // 印第安人
    };
    /* 眼睛状态属性枚举 */
    enum BDFaceGlasses {
    BDFACE_NO_GLASSES = 0 , // 无眼镜
    BDFACE_GLASSES = 1 , // 有眼镜
    BDFACE_SUN_GLASSES = 2 , // 墨镜
    };
    /* 性别属性枚举 */
    enum BDFaceGender {
    BDFACE_GENDER_FEMAILE = 0 , // 女性
    BDFACE_GENDER_MALE = 1 , // 男性
    };
    /* 人脸属性结构体 */
    struct BDFaceAttribute {
    int age; // 年龄
    BDFaceRace race; // 种族
    BDFaceAttributeEmotionType emotion; // 表情
    BDFaceGlasses glasses; // 眼镜
    BDFaceGender gender; // 性别
    };
    /**
    * @brief 人脸属性数据列表
    */
    struct BDFaceAttributeList {
    int num; // 人脸属性数量
    struct BDFaceAttribute* attributes; // 人脸属性数据指针
    };
    /* 人脸属性参数配置结构体 */
    struct BDFaceAttributeConf {
    struct BDFaceInferenceConf infer_conf; // 预测库配置
    };

    2.10.1 获取属性默认配置参数

    # bdface_attribute_get_default_conf
    enum BDFaceStatusCode bdface_attribute_get_default_conf(struct BDFaceAttr
    ibuteConf* conf);

    参数说明:

    参数名 类型 说明
    conf struct BDFaceAttributeConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.10.2 加载人脸属性检测能力

    # bdface_load_attribute
    enum BDFaceStatusCode bdface_load_attribute(
    BDFaceInstance face_instance,
    const long model_length,
    const char* model_memory,
    struct BDFaceAttributeConf* conf);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    model_length const long 模型长度
    model_memory const char* 模型数据地址
    conf struct BDFaceAttributeConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.10.3 卸载人脸属性检测能力

    # bdface_unload_attribute
    enum BDFaceStatusCode bdface_unload_attribute(BDFaceInstance face_instanc
    e);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.10.4 人脸属性检测

    # bdface_attribute
    enum BDFaceStatusCode bdface_attribute(
    const BDFaceInstance face_instance,
    const BDFaceImageInstance* img_instance,
    const struct BDFaceLandmarkList* landmark_list,
    struct BDFaceAttributeList** attr_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    img_instance const struct BDFaceImageInstance* 指向图像实例的指针
    landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
    attr_list struct BDFaceAttributeList** 指向人脸属性数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.11 人脸模糊度检测接口

    struct BDFaceBlurConf {
    struct BDFaceInferenceConf infer_conf; // 预测库相关配置
    };
    /**
    * @brief 人脸模糊度数据列表
    */
    struct BDFaceBlurList {
    int num; // 模糊度分值个数
    float* scores; // 模糊度分值数据指针
    };

    2.11.1 获取人脸模糊度检测默认配置参数

    # bdface_blur_get_default_conf
    enum BDFaceStatusCode bdface_blur_get_default_conf(struct BDFaceBlurConf*
    conf);

    参数说明:

    参数名 类型 说明
    conf struct BDFaceBlurConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.11.2 加载人脸模糊度检测能力

    # bdface_load_blur
    enum BDFaceStatusCode bdface_load_blur(
    BDFaceInstance face_instance,
    const long model_length,
    const char* model_memory,
    struct BDFaceBlurConf* conf);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针
    model_length const long 模型长度
    model_memory const char* 模型数据地址
    conf struct BDFaceBlurConf* 指向配置对象的指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.11.3 卸载人脸模糊度检测能力

    # bdface_unload_blur
    enum BDFaceStatusCode bdface_unload_blur(BDFaceInstance face_instance);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.11.4 人脸模糊度检测

    # bdface_blur
    enum BDFaceStatusCode bdface_blur(
    const BDFaceInstance face_instance,
    const struct BDFaceImageInstance* img_instance,
    const struct BDFaceLandmarkList* landmark_list,
    struct BDFaceBlurList** blur_list);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance sdk实例对象指针
    img_instance const struct BDFaceImageInstance* 指向图像实例的指针
    landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
    blur_list struct BDFaceBlurList** 指向人脸模糊度检测数据的二级指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.12 人脸检测接口

    2.12.1 加载图像抠图能力

    # bdface_load_crop_image
    enum BDFaceStatusCode bdface_load_crop_image(BDFaceInstance face_instanc
    e);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.12.2 卸载扣图能力

    # bdface_unload_crop_image
    enum BDFaceStatusCode bdface_unload_crop_image(BDFaceInstance face_instan
    ce);

    参数说明:

    参数名 类型 说明
    face_instance BDFaceInstance 人脸SDK实例对象指针

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.12.3 根据给定的人脸关键点进行扣图

    # bdface_crop_image_with_landmark
    enum BDFaceStatusCode bdface_crop_image_with_landmark(
    const BDFaceInstance face_instance,
    const struct BDFaceImageInstance* src_img,
    struct BDFaceLandmark* landmark,
    struct BDFaceImageInstance** dst_img,
    int* is_outof_boundary,
    float enlage_ratio = 1 ,
    bool correction = false);

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    src_img const struct BDFaceImageInstance* 输入图像句柄
    landmark struct BDFaceLandmark* 人脸关键点
    dst_img struct BDFaceImageInstance** 图像扣图结果
    is_outof_boundary int* 输出值:扣图是否超出图像范围(是否有黑边)
    enlage_ratio float 扣图框放大倍数:默认值 1
    correction bool 是否进行人脸矫正

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.12.4 根据给定的人脸框进行扣图

    # bdface_crop_image_with_box
    enum BDFaceStatusCode bdface_crop_image_with_box(
    const BDFaceInstance face_instance,
    const struct BDFaceImageInstance* src_img,
    struct BDFaceBBox* face_box,
    struct BDFaceImageInstance** dst_img,
    int *is_outof_boundary,
    float enlage_ratio = 1 );

    参数说明:

    参数名 类型 说明
    face_instance const BDFaceInstance 人脸SDK实例对象指针
    src_img const struct BDFaceImageInstance* 输入图像句柄
    face_box struct BDFaceBBox* 人脸关键点
    dst_img struct BDFaceImageInstance** 图像扣图结果
    is_outof_boundary int* 输出值:扣图是否超出图像范围(是否有黑边)
    enlage_ratio float 扣图框放大倍数:默认值 1

    返回值说明:

    返回类型 说明
    enum BDFaceStatusCode 状态码,详见状态码说明

    2.13 注意力检测接口

    /* 双眼注意力信息 */
    enum BDFaceGazeDirection {
    BDFACE_GAZE_DIRECTION_UP = 0 , // 向上看
    BDFACE_GAZE_DIRECTION_DOWN = 1 , // 向下看
    BDFACE_GAZE_DIRECT