百度AI開放平臺集成人臉識別,離線採集有動作活體版本sdk

前言

    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:執行頁面跳轉

 

 

三、如有疑問請留言,如解決了道友的問題右上角點個贊可好。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章