人脸识别算法


REVISION HISTORY

Revision No.
Description
Date
100
  • Initial release
  • 04/27/2023
    101
  • Add Face Arrribute Recognition
  • 07/04/2023
    102
  • Sync with latest api & add error code
  • 05/20/2024
    200
  • Sync with latest api & add error code
  • 08/01/2024

    1. 算法描述

    人脸识别主要是对人脸进行区分,判断抓拍人脸是否是白名单人员。整个算法包含人脸检测、人脸属性识别、人脸表情识别、人脸关键点、人脸过滤、人脸跟踪、人脸对齐、特征提取以及人脸比对。 其中,人脸属性可以判断人脸的眼镜、性别、口罩、胡子、年龄五个属性;人脸表情可以判断人脸7个表情,分别是正常、高兴、难过、惊讶、害怕、厌恶、生气。

    • 算法精度

      ALGO 阈值 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
      FR TAR% 99.4 98.9 98.5 98.1 97.6 96.9 96.4 95.2 93.9 93.4 92.1 90.9 89.1 86.7 85.4 84.2
      FR FAR% 2.3 1.8 1 0.7 0.4 0.1 0 0 0 0 0 0 0 0 0 0
    • 算法性能

      model 功能 耗时 rom ram 分辨率(w*h) 输入格式
      fr_det_y24s.img 人脸检测 7.4ms 0.93m 2.3m 480*288 yuvsp420_nv12
      fr_det_y36s.img 人脸检测 11.8ms 0.94m 3.2m 640*352 yuvsp420_nv12
      fr_feature_as.img 人脸特征提取(小) 13.4ms 3.3m 5.0m 112*112 BGRA8888
      fr_feature_am.img 人脸特征提取(中) 18.5ms 7.3m 8.9m 112*112 BGRA8888
      fr_feature_al.img 人脸特征提取(大) 19.2ms 23.4m 25.2m 112*112 BGRA8888
      fr_angle_y66.img 人脸角度估计 1.4ms 1.1m 1.3m 64*64 yuvsp420_nv12
      fr_cos256.img 人脸特征比对模型 0.5ms 0.03m 0.3m 256*512 INT16
      far101_224y_emo.img 人脸表情识别模型 5.0ms 3.6m 4.8m 224*224 yuvsp420_nv12
      far101_224y_emo_s45.img 人脸表情识别模型(小) 2.4ms 0.9m 1.7m 224*224 yuvsp420_nv12
      far103_224y.img 人脸属性识别模型 2.5ms 1.1m 1.7m 224*224 yuvsp420_nv12

    2. 接口调用流程

    人脸识别主要包含两个过程,一个是人脸注册过程,这个过程是生成人脸白名单(底库)。另外一个是人脸识别过程,这个过程就是对抓拍到的人脸进行识别,判断是否是白名单人员。

    2.1. 注册过程

    注册过程的接口调用:ALGO_FR_CreateHandle → ALGO_FR_InitHandle → ALGO_FR_SetParams → ALGO_FR_GetInputAttr → ALGO_FR_Detect → ALGO_FR_Align → ALGO_FR_FeatureExtract, 最后将提取到的特征保存起来成为底库。

    2.2. 识别过程

    识别过程的接口调用为:ALGO_FR_CreateHandle → ALGO_FR_InitHandle → ALGO_FR_SetParams → ALGO_FR_GetInputAttr → ALGO_FR_Detect → ALGO_FR_Align → ALGO_FR_FeatureExtract → ALGO_FR_FeatureCompare,通过抓拍到的图片特征和底库的特征进行比对,判断是不是同一个人。

    2.3. 人脸属性识别过程

    人脸属性识别的接口调用:ALGO_FR_CreateHandle → ALGO_FR_InitHandle → ALGO_FR_SetParams → ALGO_FR_GetInputAttr → ALGO_FR_Detect → ALGO_FR_Attr,通过抓拍到的人脸图片进行人脸属性识别。 注意:裁剪后送入该接口的人脸图像需要做一定范围的外扩,外扩的宽高分别为:1.25 × bbox_w, 1.25 × bbox_h

    3. 功能模块API

    API名 功能
    ALGO_FR_CreateHandle 创建句柄
    ALGO_FR_InitHandle 初始化句柄
    ALGO_FR_GetInputAttr 获取模型的输入属性信息
    ALGO_FR_SetParams 设置算法可配置参数
    ALGO_FR_Detect 人脸检测
    ALGO_FR_Align 人脸对齐
    ALGO_FR_Attr 人脸属性识别
    ALGO_FR_FaceQuality 执行人脸角度估计以及质量过滤
    ALGO_FR_FeatureExtract 特征提取
    ALGO_FR_FeatureCompare 特征比对
    ALGO_FR_BatchFeatureCompare 执行批量人脸特征比对(需要拷贝一份比对特征)
    ALGO_FR_BatchFeatureCompareV2 执行批量人脸特征比对(不需要拷贝比对特征)
    ALGO_FR_DeinitHandle 反初始化句柄
    ALGO_FR_ReleaseHandle 释放句柄

    3.1. ALGO_FR_CreateHandle

    • 功能

      创建句柄。

    • 语法

      MI_S32 ALGO_FR_CreateHandle(void **handle);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.2. ALGO_FR_InitHandle

    • 功能

      初始化句柄。

    • 语法

      MI_S32 ALGO_FR_InitHandle(void *handle, const FrInit_t *init_info);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      init_info 算法初始化参数,详见FrInit_t 输入
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    • 举例

      {
          int ret=0;
          FrInit_t initParam;
          std::string bin = "/config/dla/ipu_firmware.bin";
          std::string detModelPath = "./models/fr_det_y24s.img";
          std::string attrModelPath = "./models/far103_224y.img";
          std::string featureModelPath = "./models/fr_feature_am.img";
          std::string cosModelPath = "./models/fr_cos256.img";
          std::string qualityModelPath = "./models/fr_angle_y66.img";
          std::string emoModelPath = "./models/far101_224y_emo.img";
          memcpy(initParam.ipu_firmware_path, bin.c_str(), bin.length()+1);
          memcpy(initParam.det_model_path, detModelPath.c_str(), detModelPath.length()+1);
          memcpy(initParam.attr_model_path, attrModelPath.c_str(), attrModelPath.length()+1);
          memcpy(initParam.feature_model_path, featureModelPath.c_str(), featureModelPath.length()+1);
          memcpy(initParam.cos_model_path, cosModelPath.c_str(), cosModelPath.length() + 1);
          memcpy(initParam.quality_model_path, qualityModelPath.c_str(), qualityModelPath.length() + 1);
          memcpy(initParam.emo_model_path, emoModelPath.c_str(), emoModelPath.length() + 1);
          initParam.create_device = true;
          initParam.destroy_device = true;
          initParam.fr_mode = FR_MODE_FACE_RECOG | FR_MODE_FACE_DET | FR_MODE_FACE_QUALITY;
          ret = ALGO_FR_InitHandle(handle, &initParam);
      }
      

    3.3. ALGO_FR_GetInputAttr

    • 功能

      获取人脸检测模型、人脸属性模型、人脸质量模型的属性信息,包括模型输入分辨率以及输入数据的类型。

    • 语法

      MI_S32 ALGO_FR_GetInputAttr(void *handle, FrInputAttr_t *det_input_attr, FrInputAttr_t *attr_input_attr, FrInputAttr_t *quality_input_attr);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      det_input_attr 保存人脸检测模型输入属性的指针,详见FrInputAttr_t 输入/输出
      attr_input_attr 保存人脸属性模型输入属性的指针,详见FrInputAttr_t 输入/输出
      quality_input_attr 保存人脸质量模型输入属性的指针,详见FrInputAttr_t 输入/输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.4. ALGO_FR_SetParams

    • 功能

      设置算法的可配置参数。

    • 语法

      MI_S32 ALGO_FR_SetParams(void *handle, const FrParams_t *params);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      params 算法参数,详见FrParams_t 输入
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.5. ALGO_FR_Detect

    • 功能

      人脸检测。

    • 语法

      MI_S32 ALGO_FR_Detect(void *handle, const FrInput_t *algo_input, const FrDetectMode_e *detect_mode, FrBox_t bboxes[MAX_FR_OBJECT], MI_S32 *num_bboxes);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      algo_input 输入图像的buffer信息,详见FrInput_t 输入
      detect_mode 检测的模式,详见FrDetectMode_e 输入
      bboxes 用于保存人脸检测结果框的数组,详见FrBox_t 输出
      num_bboxes 用于保存人脸检测结果框个数的指针 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.6. ALGO_FR_Align

    • 功能

      人脸对齐。

    • 语法

      MI_S32 ALGO_FR_Align(void *handle, MI_U8* image_data, MI_S32 type, FrBox_t *detect_box, MI_U8* out_data);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      image_data 原图像数据指针,图像的宽高要等于初始化参数FrInit_t设置中的disp_width、disp_height 输入
      type 图像类型,yuv420_nv12为1,argb8888为0 输入
      detect_box 在输入图像上,需要进行对齐的人脸检测框,详见FrBox_t 输入
      out_data 输出对齐后的112x112ARGB888数据,不能为空 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.7. ALGO_FR_Attr

    • 功能

      人脸属性识别。

    • 语法

      MI_S32 ALGO_FR_Attr(void *handle, const FrInput_t *algo_input, FrAttr_t *results);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      algo_input 输入图像的buffer信息,详见FrInput_t 输入
      results 人脸属性结果,详见FrAttr_t 输出
    • 说明

      传入到该接口的人脸buff需要做一定范围的外扩操作,外扩的宽高分别为:+0.25 × bbox_w,+0.25 × bbox_h

    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.8. ALGO_FR_FaceQuality

    • 功能

      执行人脸角度估计以及质量过滤。

    • 语法

      MI_S32 ALGO_FR_FaceQuality(void *handle, const FrInput_t *algo_input, FrBox_t *detect_box, FaceQualityAngle_t *angle);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      algo_input 输入图像的buffer信息,详见FrInput_t 输入
      detect_box 人脸检测输出框指针,详见FrBox_t 输入/输出
      angle 人脸角度输出结果,详见FaceQualityAngle_t 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.9. ALGO_FR_FeatureExtract

    • 功能

      人脸特征提取。

    • 语法

      MI_S32 ALGO_FR_FeatureExtract(void *handle, MI_U8* image_data, MI_S16* out_feature);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      image_data 输入Algin接口出来的112*112图像数据 输入
      out_feature 人脸的特征数据,长度为512的MI_S16特征 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.10. ALGO_FR_FeatureCompare

    • 功能

      特征比对。

    • 语法

      MI_S32 ALGO_FR_FeatureCompare(MI_S16* feature1, MI_S16* feature2, MI_S32 length, MI_FLOAT* similarity);
      
    • 形参

      参数名称 描述 输入/输出
      feature1 第一张人脸的特征 输入
      feature2 第二张人脸的特征 输入
      length 特征长度,当前版本为512 输入
      similarity 两张人脸的相似度 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.11. ALGO_FR_BatchFeatureCompare

    • 功能

      执行批量人脸特征比对(需要拷贝一份比对特征)。

    • 语法

      MI_S32 ALGO_FR_BatchFeatureCompare(void *handle, MI_S16* single_feature, MI_S16* batch_features, MI_S32 batch, MI_FLOAT* similarity);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      single_feature 特征比对的目标特征(1个) 输入
      batch_features 特征比对的源特征(batch个) 输入
      batch 特征比对的源特征个数 输入
      similarity 特征比对输出的相似度 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.12. ALGO_FR_BatchFeatureCompareV2

    • 功能

      执行批量人脸特征比对(不需要拷贝比对特征)。

    • 语法

      MI_S32 ALGO_FR_BatchFeatureCompareV2(void *handle, const FrInput_t *single_feature, const FrInput_t *batch_features, MI_S32 batch, MI_FLOAT* similarity);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
      single_feature 特征比对的目标特征(1个),以MMA buffer形式传入 输入
      batch_features 特征比对的源特征(batch个),以MMA buffer形式传入 输入
      batch 特征比对的源特征个数 输入
      similarity 特征比对输出的相似度 输出
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.13. ALGO_FR_DeinitHandle

    • 功能

      停止算法,反初始化句柄。

    • 语法

      MI_S32 ALGO_FR_DeinitHandle(void *handle);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    3.14. ALGO_FR_ReleaseHandle

    • 功能

      释放句柄。

    • 语法

      MI_S32 ALGO_FR_ReleaseHandle(void *handle);
      
    • 形参

      参数名称 描述 输入/输出
      handle 句柄 输入
    • 返回值

      返回值 描述
      0 成功
      其它 失败(详见错误码
    • 依赖

      头文件:algo_fr_api.h

      库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

    4. 数据类型

    数据类型 定义
    FrMode_e 算法模式
    FrInit_t 算法的初始化参数
    FrInputAttr_t 模型输入属性结构体
    FrParams_t 算法可配置参数结构体
    FrInput_t 模型输入属性结构体
    FrDetectMode_e 人脸检测模式
    FrPoint_t 关键点坐标结构体
    FrBox_t 人脸检测框结构体
    FrAttr_t 人脸属性信息结构体
    FaceQualityAngle_t 人脸角度输出结构体

    4.1. FrMode_e

    • 说明

      算法模式。

    • 定义

      typedef enum{
          FR_MODE_FACE_DET=0x01,
          FR_MODE_FACE_RECOG=0x02,
          FR_MODE_FACE_ATTR=0x04,
          FR_MODE_FACE_EMOTION=0x08,
          FR_MODE_FACE_QUALITY=0x10,
      }FrMode_e;
      
    • 成员

      成员名称 描述
      FR_MODE_FACE_DET 人脸检测
      FR_MODE_FACE_RECOG 人脸识别
      FR_MODE_FACE_ATTR 人脸属性识别
      FR_MODE_FACE_EMOTION 人脸表情识别
      FR_MODE_FACE_QUALITY 人脸角度估计以及质量过滤
    • 相关数据类型及接口

      FrInit_t

      ALGO_FR_InitHandle

    4.2. FrInit_t

    • 说明

      算法的初始化参数。

    • 定义

      typedef struct
      {
          char ipu_firmware_path[MAX_FR_STRLEN];       // ipu_firmware.bin path
          char det_model_path[MAX_FR_STRLEN];          // detect model path, set when chose FR_MODE_FACE_DET mode
          char feature_model_path[MAX_FR_STRLEN];      // feature extraction model path, set when chose FR_MODE_FACE_RECOG mode
          char cos_model_path[MAX_FR_STRLEN];          // feature comparasion model path, set when chose FR_MODE_FACE_RECOG mode
          char attr_model_path[MAX_FR_STRLEN];         // face attr model path, set when chose FR_MODE_FACE_ATTR mode
          char emo_model_path[MAX_FR_STRLEN];          // face emotion model path, set when chose FR_MODE_FACE_EMOTION mode
          char quality_model_path[MAX_FR_STRLEN];     // face angle model path, set when chose FR_MODE_FACE_QUALITY mode
          MI_BOOL create_device;                       // set false to create ipu device outside algo lib
          MI_BOOL destroy_device;                      // set false to destroy ipu device outside algo lib
          MI_U8 fr_mode;
      } FrInit_t;
      
    • 成员

      成员名称 描述
      ipu_firmware_path ipu_firmware_path路径
      det_model_path 检测模型的路径
      feature_model_path 特征提取模型的路径
      cos_model_path 相似度模型的路径
      attr_model_path 人脸属性识别模型的路径
      emo_model_path 人脸表情识别模型的路径
      quality_model_path 人脸质量模型的路径
      create_device 是否在算法库内进行IPUDevice的创建,默认为true,即在库内创建,在需同时调用算法库时可设置为false并在外部手动创建IPUDevice
      destroy_device 是否在算法库内进行IPUDevice的销毁,默认为true,即在库内销毁,在需同时调用算法库时可设置为false并在外部手动销毁IPUDevice
      fr_mode 算法模式,默认为人脸识别模式
    • 相关接口

      FrMode_e

      ALGO_FR_InitHandle

    4.3 FrInputAttr_t

    • 说明

      模型输入属性结构体

    • 定义

      typedef struct
      {
          MI_U32 width;
          MI_U32 height;
          MI_IPU_ELEMENT_FORMAT format;
      } FrInputAttr_t;
      
    • 成员

      成员名称 描述
      width 模型输入数据的宽
      height 模型输入数据的高
      format 模型输入pixel的类型
    • 相关数据类型及接口

      ALGO_FR_GetInputAttr

    4.4. FrParams_t

    • 说明

      算法可配置参数结构体

    • 定义

      typedef struct
      {
          MI_S32 disp_width;
          MI_S32 disp_height;
      
          // detect
          MI_FLOAT det_threshold;
          MI_S32  box_min_size;
          MI_FLOAT face_angle_ratio;
          MI_FLOAT eye_distance;
      
          // attr, emotion
          MI_FLOAT attr_threshold;
      
          // track
          MI_FLOAT motion_sensitive;
      
          // face quality
          MI_FLOAT face_quality_threshold;
      } FrParams_t;
      
    • 成员

      成员名称 描述
      disp_width 显示码流的分辨率宽度(用于映射检测框位置和作为人脸对齐的原图尺寸)
      disp_height 显示码流的分辨率高度(用于映射检测框位置和作为人脸对齐的原图尺寸)
      det_threshold 最小人脸检测score,取值0.0~1.0,建议值0.5,数值调大:误检减少但召回率降低,数值调高:召回率提升但误检增多
      box_min_size 最小人脸检测框大小,建议值为20(像素)
      face_angle_ratio 头部偏转/俯仰角度,要求(0.0~1.0),值越大要求角度越正,建议值为0.25
      eye_distance 最小人脸瞳距,建议值为20(像素)
      attr_threshold 人脸属性识别、人脸表情识别的score阈值,取值0.0~1.0,建议值0.5
      motion_sensitive 人脸运动幅度要求,取值0.0~1.0,值越大要求人脸运动幅度越小
      face_quality_threshold 人脸质量的score阈值,取值0.0~1.0,建议值0.3
    • 相关数据类型及接口

      ALGO_FR_SetParams

    4.5 FrInput_t

    • 说明

      模型输入属性结构体

    • 定义

      typedef struct
      {
          void *p_vir_addr;
          MI_PHY phy_addr;
          MI_U32 buf_size;
          MI_U64 pts;
      } FrInput_t;
      
    • 成员

      成员名称 描述
      p_vir_addr 输入buffer的虚拟地址
      phy_addr 输入buffer的物理地址
      buf_size 输入buffer的长度
      pts 输入buffer时间戳
    • 相关数据类型及接口

      ALGO_FR_Detect

      ALGO_FR_Attr

      ALGO_FR_FaceQuality

    4.6. FrDetectMode_e

    • 说明

      人脸检测模式。

    • 定义

      typedef enum{
          FR_DETECT_MODE_DET_MAX_FACE=0,
          FR_DETECT_MODE_DET_ALL_FACE,
          FR_DETECT_MODE_TRACK_MAX_FACE,
          FR_DETECT_MODE_TRACK_ALL_FACE,
      }FrDetectMode_e;
      
    • 成员

      成员名称 描述
      FR_DETECT_MODE_DET_MAX_FACE 表示检测,取最大人脸
      FR_DETECT_MODE_DET_ALL_FACE 表示检测,取所有人脸
      FR_DETECT_MODE_TRACK_MAX_FACE 表示视频输入,取最大人脸,加入跟踪id
      FR_DETECT_MODE_TRACK_ALL_FACE 表示视频输入,取所有人脸,加入跟踪id
    • 相关数据类型及接口

      ALGO_FR_Detect

    4.7. FrPoint_t

    • 说明

      关键点坐标结构体。

    • 定义

      typedef struct FrPoint_
      {
          MI_FLOAT x;
          MI_FLOAT y;
      }FrPoint_t;
      
    • 成员

      成员名称 描述
      x 关键点像素的横坐标
      y 关键点像素的纵坐标
    • 相关数据类型及接口

      FrBox_t

      ALGO_FR_Detect

      ALGO_FR_Align

      ALGO_FR_FaceQuality

    4.8. FrBox_t

    • 说明

      人脸检测框结构体。

    • 定义

      typedef struct FrBox_
      {
          MI_FLOAT x1;
          MI_FLOAT y1;
          MI_FLOAT x2;
          MI_FLOAT y2;
          MI_FLOAT score;
          FrPoint_t landmark[FR_POINT_LEN];
          MI_U64 face_id;                    // track id
          MI_BOOL befiltered;
          MI_FLOAT move_sensitive;   // 越小表示人脸运动幅度越大
      }FrBox_t;
      
    • 成员

      成员名称 描述
      X1 人脸框的左上点的x坐标
      Y1 人脸框的左上点的y坐标
      X2 人脸框的右下点的x坐标
      Y2 人脸框的右下点的y坐标
      score 人脸的置信度
      landmark 人脸5个关键点
      face_id 人脸的跟踪id
      befiltered 人脸是否被过滤,True为被过滤了
      move_sensitive 人脸运动幅度,取值0.0~1.0,值越大表示人脸运动幅度越小
    • 相关数据类型及接口

      FrPoint_t

      ALGO_FR_Detect

      ALGO_FR_Align

      ALGO_FR_FaceQuality

    4.9. FrAttr_t

    • 说明

      人脸属性信息结构体。

    • 定义

      typedef struct FrAttr_t_
      {
          MI_BOOL   eye_glass;
          MI_BOOL   male;
          MI_BOOL   mask;
          MI_S32    age;
          MI_BOOL   mustache;
          MI_S32    emotion;
      }FrAttr_t;
      
    • 成员

      成员名称 描述
      eye_glass 是否带眼镜
      male 是否为男性
      mask 是否带口罩
      age 年龄
      mustache 是否有胡子
      emotion 表情类别,对应关系如下:0:正常、1:高兴、2:难过、3:惊讶、4:害怕、5:厌恶、6:生气
    • 相关数据类型及接口

      ALGO_FR_Attr

    4.10. FaceQualityAngle_t

    • 说明

      人脸角度输出结构体

    • 定义

      typedef struct FaceQualityAngle_
      {
          MI_FLOAT pitch;
          MI_FLOAT yaw;
          MI_FLOAT roll;
          MI_FLOAT quality;
      }FaceQualityAngle_t;
      
    • 成员

      成员名称 描述
      pitch 人脸俯仰角
      yaw 人脸偏航角
      roll 人脸翻滚角
      quality 人脸角度综合得分
    • 相关数据类型及接口

      ALGO_FR_FaceQuality

    5. 错误码

    错误码 数值 描述
    E_ALGO_SUCCESS 0 操作成功
    E_ALGO_HANDLE_NULL 1 算法句柄为空
    E_ALGO_INVALID_PARAM 2 无效的输入参数
    E_ALGO_DEVICE_FAULT 3 硬件错误
    E_ALGO_LOADMODEL_FAIL 4 加载模型失败
    E_ALGO_INIT_FAIL 5 算法初始化失败
    E_ALGO_NOT_INIT 6 算法尚未初始化
    E_ALGO_INPUT_DATA_NULL 7 算法输入数据为空
    E_ALGO_INVALID_INPUT_SIZE 8 无效的算法输入数据维度
    E_ALGO_INVALID_LICENSE 9 无效的license许可
    E_ALGO_MEMORY_OUT 10 内存不足
    E_ALGO_FILEIO_ERROR 11 文件读写操作错误
    E_ALGO_INVALID_OUTPUT_SIZE 12 无效的算法输出数据维度
    E_ALGO_INVALID_DECODE_MODE 13 无效的解码模式
    E_ALGO_MODEL_INVOKE_ERROR 14 模型invoke错误
    E_ALGO_INVALID_FILE 15 无效的文件