人脸识别算法


目录

 

1. 算法描述¶

2. 接口调用流程¶

2.1. 注册过程¶

2.2. 识别过程¶

2.3. 人脸属性识别过程¶

2.4. 获取人脸模糊度的过程¶

3. 功能模块API¶

3.1. ALGO_FR_CreateHandle¶

 4.  参考实例

 5.  立即开始


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 功能 分辨率(w*h) 输入格式
    fr_det_y24s.img 人脸检测 480*288 yuvsp420_nv12
    fr_det_y36s.img 人脸检测 640*352 yuvsp420_nv12
    fr_det_y48s.img 人脸检测 800*480 yuvsp420_nv12
    fr_feature_as.img 人脸特征提取(小) 112*112 BGRA8888
    fr_feature_am.img 人脸特征提取(中) 112*112 BGRA8888
    fr_feature_al.img 人脸特征提取(大) 112*112 BGRA8888
    fr_angle_y66.img 人脸角度估计 64*64 yuvsp420_nv12
    fr_cos256.img 人脸特征比对模型 256*512 INT16
    far101_224y_emo.img 人脸表情识别模型 224*224 yuvsp420_nv12
    far101_224y_emo_s45.img 人脸表情识别模型(小) 224*224 yuvsp420_nv12
    far103_224y.img 人脸属性识别模型 224*224 yuvsp420_nv12
    fr_blur_as.img 人脸模糊度估计(小) 112*112 BGRA8888

2. 接口调用流程

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

2.1. 注册过程

注册过程的接口调用:ALGO_FR_CreateHandle → ALGO_FR_InitHandle → ALGO_FR_SetParams → ALGO_FR_GetInputAttr → ALGO_FR_Detect → ALGO_FR_AlignRegist → 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

2.4. 获取人脸模糊度的过程

获取人脸模糊度的接口调用过程为:ALGO_FR_CreateHandle → ALGO_FR_InitHandle → ALGO_FR_SetParams → ALGO_FR_GetInputAttr → ALGO_FR_Detect → ALGO_FR_Align → ALGO_FR_FaceBlur,将检测到且对对齐后的人脸送入ALGO_FR_FaceBlur接口获取模糊分值。

3. 功能模块API

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

3.1. ALGO_FR_CreateHandle

  • 功能

    创建句柄。

  • 语法

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

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

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

    头文件:sgs_fr_api.h

    库文件:libsgsalgo_fr.so, libsgsalgo_fr.a

更多详细介绍请点击这里

 4.  参考实例

示例请点击这里进一步的了解

 5.  立即开始

加入Comake开发者社区

 主页地址: CoMake开发者社区

SDK下载: CoMake开发者社区

文档中心: CoMake开发者社区

马上购买 : 首页-Comake开发者社区商店

更多推荐