• Stars
    star
    234
  • Rank 171,005 (Top 4 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An android wrapper of MegviiFacepp SDK (the mobile SDK).

Facepp人脸检测SDK集成说明文档

一、简介

Facepp人脸检测SDK是旷视科技推出的人脸检测工具包,提供快速,简洁的开发接口,支持Android4.2及以上的移动设备上实现人脸检测

功能特性

  • 支持人脸的fast检测
  • 支持人脸的robust检测
  • 支持获取人脸关键点
  • 支持人脸比对
  • 支持获取人脸框
  • 支持检测年龄性别
  • 支持获取3dpose
  • 支持 ARMv7a和ARM64v8a架构
  • 支持Android 4.2及以上系统
  • 快速,库文件小,贴合度高

组件及资源

FaceppSDK包含demo、sdk、docs三部分,demo和sdk可以查看github

  • demo部分:里面包含一个示例工程,实现了人脸检测的功能,有完整的源代码。
  • sdk部分:里面包含了一套jni的封装,可以实现aar和c的两种集成方式。
  • 库文件:人脸检测的实现库,路径以及目录如下sdk/src/main/jniLibs ├── armeabi-v7a │ ├── libmegface-new .so │ ├── libMegviiFacepp-0.5.2 .so ├── arm64-v8a │ ├── libmegface-new .so │ ├── libMegviiFacepp-0.5.2 .so
  • 模型文件:人脸检测的训练模型,模型目前分在线授权和离线授权两种,路径/faceppdemo/src/main/res/raw/megviifacepp_0_5_2_model

试⽤版SDK有使用时间和使用次数的限制,如需正式版请通过Face++官网联系商务合作。

二、开发指南

阅读对象

本文档为技术文档,需要阅读者具有基本的Android开发能力,如果想对c定制开发需要有基本的c开发能力。

文档综述

FaceppSDK是适用android平台下的人脸检测SDK,提供aar,jar,c的三种接入方式,提供了简捷的接口方便接入。

开发准备

在线授权的准备

  1. 官网注册账号
  2. 申请key和secret,用于在线授权。
  3. 申请Bundle ID(applicationId),用于模型的验证。

集成SDK

  1. 启动Android Studio,并导入工程(以MegviiFacepp-Android-SDK 0.5.2版本为例)
  2. 已有工程导入SDK
  • Demo Project目录如下:

红色:为demo module,展示用户集成部分 蓝色:为sdk module,如果需要定制开发,或者更高的效率,可以自己开发jni部分。

  • Demo Module的目录如下:

红色:sdk module编译的aar,如非需要定制可直接使用 蓝色:为联网授权aar,如果是离线授权可以去掉,另外联网授权申请的key和secret需要添加到/faceppdemo/src/main/java/com/facepp/demo/util/Util.java,还需要申请一个工程的applicationId的bundle。 绿色:为申请到的module,是人脸检测的训练模型

功能使用和API接口介绍

下面采用最常用的获取人脸关键流程来讲解,常用API。

1. 初始化SDK

初始化实例

facepp = new Facepp();

初始化模型,如果模型加载失败,会有相应的code提示

String errorCode = facepp.init(this, ConUtil.getFileContent(this, R.raw.megviifacepp_0_5_2_model), isOneFaceTrackig ? 1 : 0);

2. 检测参数设置

主要根据需要的模型的能力去设置detectionMode,其他的参数使用默认即可

Facepp.FaceppConfig faceppConfig = facepp.getFaceppConfig();
faceppConfig.detectionMode = Facepp.FaceppConfig.DETECTION_MODE_TRACKING_FAST;
facepp.setFaceppConfig(faceppConfig);

3.人脸检测

这里会获取检测到人脸的数目,和人脸框置信度等基本信息。参数为检测图片的属性,imageMode目前支持两种bgr nv21

final Facepp.Face[] faces = facepp.detect(imgData, width, height, Facepp.IMAGEMODE_NV21);

4.获取关键点

获取人脸的关键点,tracking检测的会做平滑,参数pointNum有81点和106点

facepp.getLandmarkRaw(faces[c], Facepp.FPP_GET_LANDMARK81);

5.释放资源

释放资源

facepp.release();

6.切换摄像头

切换摄像头需要重置track

facepp.resetTrack();

版本更新

v0.5.2

  • sdk
  1. 增加detect_rect模式:只输出人脸框
  2. 删除track_normal模式,内部将track_normal映射成track_robust,并提示用户此模式已废弃,以后会在接口中直接删除
  3. 接口变化 3.1 增加 CreateApiHandleWithMaxFaceCount,在初始化时设置最大跟踪的人脸数。config中one_face_tracking被废弃 3.2 增加 GetJenkinsNumber 输出jenkins打包时版本号,方便调试 3.3 增加 ResetTrack 清除track缓存 3.4 增加 GetRect 在detect_rect模式下,输出人脸框信息 3.5 更新 GetAlgorithmInfo ,增加返回限制的bundleid 3.6 更新 MG_FPP_APICONFIG, 增加 face_confidence_filter,人脸置信度过滤阈值,低于此值的数据将被过滤掉,默认 0.1 3.7 单脸跟踪需在初始化时设置,初始化接口增加了最多跟踪几张人脸的参数。默认为0,不限制。设置中的one_face_tracking已失效
  • demo
  1. 简化在线授权的逻辑。
  2. module的合并
  3. 增加人脸比对