百度AI开放平台集成人脸识别,离线采集有动作活体版本sdk

    xiaoxiao2022-07-04  199

    前言

        Android项目Android studio环境:

        1、工程build.gradle版本号:3.2.1

        2、app目录下的build.gradle配置:compileSdkVersion 28                                                              

                                                                    minSdkVersion 16 

                                                                    targetSdkVersion 28

    一、准备工作

        1、注册百度AI开放平台账号。

        2、选择产品服务-->人脸与人体识别-->离线采集SDK。

        3、选择人脸识别-->Android-离线采集SDK下载。

        (1)账号如果没有做企业认证的先去做企业认证,否则Android-离线采集SDK将会无法下载。

        (2)账号如果已经做过企业认证的则会直接跳转到人脸识别 - 离线采集 SDK 管理。

        4、还是在3的页面你可以申请授权类型永久免费、截至有效期永久免费、授权数量也可以申请增加。

        注意:如果迟迟申请不下来可以在右上角工单按钮上创建工单,选择点击步骤:热门产品(人脸识别)-->产品问题类型(解决方案)-->右下角创建工单(立即创建)。

        基本工作日期间会回复很快,解决速度也挺快的不超过2小时,也可能是我的运气不错。

        5、在License管理中新增授权,以下都是我爬过坑之后得出的结论。

        (1)授权标识:最好是取你应用的英文名称。

        (2)应用类型:选择一个跟你应用一样的类型即可。

        (3)应用信息:如果是先弄Android的话把iOS的勾去掉,反正后续iOS也可以补充信息的。

        (4)安卓包名:app目录下的build.gradle中的applicationId  或者  manifest.xml中的package。

        (5)安卓签名MD5:你应用所创建的key.jks,且key.jks存放的目录放置和app同等级。具体如何取出key.jks的md5值请看Android studio 上获取应用签名文件(keystore文件)的MD5值。

    二、在应用中配置

        1、准备工作全部完成之后开始下载demo:开发资源下载-->Android-->有动作活体版本SDK。此时的demo中的三方库就可以直接拿来用了。

        2、将demo中的 faceplatform 和 faceplatform-ui 三方库导入到你的应用。

        (1)将 faceplatform 和 faceplatform-ui 这两个三方库直接拷贝到和app同等级的目录

        (2)在settings.gradle中加入代码

    include ':faceplatform' include ':faceplatform-ui'

        (3)将 faceplatform-ui 导入项目的module中,打开file-->project strupture-->点击app选择dependencies-->点击左下角 “+” 按钮-->点击module dependency-->选择faceplatform-ui点击OK。

       

    (4)打开faceplatform三方包中的build.gradle,注释如下代码:

    否则会报错如下:

    Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

    3、配置app下的build.gradle。

    (1)创建和app同等级的faceclock.jks的key,如图:

    (2)在app的build.gradle中的android内配置signingConfigs和buildTypes的内容,亲测不按照文档来的话,会一直处于「把脸放入框内」的语音提示:

    signingConfigs { def password = "123456" def alias = "faceclock" def filePath = "../faceclock" //如 ../facesharp.jks//签名文件路径 debug { keyAlias alias keyPassword password storeFile file(filePath) storePassword(password) } release { keyAlias alias keyPassword password storeFile file(filePath) storePassword(password) } } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug debuggable true jniDebuggable true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release debuggable false jniDebuggable false } }

     4、根据官方文档在AndroidManifest.xml上配置相关权限,这里就不截图了。

    5、将License中的证书下载下来,拷贝到app/src/main/assets目录下:

    6、简单封装人脸识别工具类。

    (1)百度AI申请的相关key:

    public static final class BaiDuFaceID { public static String licenseID = "你申请证书的ID"; public static String licenseFileName = "你assets下证书的名称"; }

    (2)百度AI人脸识别(ps:动态动作个数可随意设置)管理工具类:

    public class FaceSDKManagerUtils { private static class FaceSDKManagerHolder { private static final FaceSDKManagerUtils INSTANCE = new FaceSDKManagerUtils(); } public static FaceSDKManagerUtils getInstance() { return FaceSDKManagerHolder.INSTANCE; } public void FaceSDKInit(Activity context) { FaceSDKManager.getInstance().initialize(context, Constants.BaiDuFaceID.licenseID, Constants.BaiDuFaceID.licenseFileName); } public void FaceSDKForClockConfig() { FaceConfig config = FaceSDKManager.getInstance().getFaceConfig(); List<LivenessTypeEnum> livenessList = new ArrayList<LivenessTypeEnum>(); livenessList.clear(); livenessList.add(LivenessTypeEnum.Eye); //SDK初始化已经设置完默认参数(推荐参数),您也根据实际需求进行数值调整 config.setLivenessTypeList(livenessList); config.setLivenessRandom(false); config.setBlurnessValue(FaceEnvironment.VALUE_BLURNESS); config.setBrightnessValue(FaceEnvironment.VALUE_BRIGHTNESS); config.setCropFaceValue(FaceEnvironment.VALUE_CROP_FACE_SIZE); config.setHeadPitchValue(FaceEnvironment.VALUE_HEAD_PITCH); config.setHeadRollValue(FaceEnvironment.VALUE_HEAD_ROLL); config.setHeadYawValue(FaceEnvironment.VALUE_HEAD_YAW); config.setMinFaceSize(FaceEnvironment.VALUE_MIN_FACE_SIZE); config.setNotFaceValue(FaceEnvironment.VALUE_NOT_FACE_THRESHOLD); config.setOcclusionValue(FaceEnvironment.VALUE_OCCLUSION); config.setCheckFaceQuality(true); config.setFaceDecodeNumberOfThreads(2); FaceSDKManager.getInstance().setFaceConfig(config); } public void FaceSDKForCollectConfig() { FaceConfig config = FaceSDKManager.getInstance().getFaceConfig(); config.setSound(false); List<LivenessTypeEnum> livenessList = new ArrayList<LivenessTypeEnum>(); livenessList.clear(); livenessList.add(LivenessTypeEnum.Eye); livenessList.add(LivenessTypeEnum.HeadLeft); livenessList.add(LivenessTypeEnum.HeadRight); config.setLivenessTypeList(livenessList); config.setLivenessRandom(false); config.setBlurnessValue(FaceEnvironment.VALUE_BLURNESS); config.setBrightnessValue(FaceEnvironment.VALUE_BRIGHTNESS); config.setCropFaceValue(FaceEnvironment.VALUE_CROP_FACE_SIZE); config.setHeadPitchValue(FaceEnvironment.VALUE_HEAD_PITCH); config.setHeadRollValue(FaceEnvironment.VALUE_HEAD_ROLL); config.setHeadYawValue(FaceEnvironment.VALUE_HEAD_YAW); config.setMinFaceSize(FaceEnvironment.VALUE_MIN_FACE_SIZE); config.setNotFaceValue(FaceEnvironment.VALUE_NOT_FACE_THRESHOLD); config.setOcclusionValue(FaceEnvironment.VALUE_OCCLUSION); config.setCheckFaceQuality(true); config.setFaceDecodeNumberOfThreads(2); FaceSDKManager.getInstance().setFaceConfig(config); } }

    7、正式调用已封装好的工具类

    (1)第一步初始化人脸识别的sdk

    FaceSDKManagerUtils.getInstance().FaceSDKInit(this);

    (2)跳转人脸识别的activity或者fragment之前先设置人脸识别sdk的config,再进行intent跳转页面

    FaceSDKManagerUtils.getInstance().FaceSDKForClockConfig(); //todo:执行页面跳转

     

     

    三、如有疑问请留言,如解决了道友的问题右上角点个赞可好。

     

     

    最新回复(0)