百度:人臉登錄集成


目錄

1、簡介
  1.1 方案概述
  1.2 功能介紹
  1.3 產品構成
    1.3.1 鑒權認證機制
    1.3.2 人臉注冊
    1.3.3 人臉識別登錄
    1.3.4 人臉認證登錄
2、集成指南
  2.1 准備工作
    2.1.1 注冊開發者
    2.1.2 創建應用
    2.1.3 獲取密鑰
    2.1.4 生成token
    2.1.5 SDK license(十分重要!)
  2.2 集成策略
    2.2.1 閾值選擇
    2.2.2 圖片壓縮
  2.3 iOS集成說明
  2.4 安卓集成說明
3、常見問題
 

1、簡介

1.1 方案概述

業務流程圖

1.2 功能介紹

人臉注冊

為人臉登錄提供人臉注冊集合,基於人臉進行無動作活體檢測、及后台在線活體檢測算法,判斷用戶為真人,保障業務環節中的用戶真實性判斷。

人臉識別登錄

也稱為1:N識別,在指定人臉集合中,找到最相似的人臉。無需用戶任何輸入,直接校驗當前操作的用戶,是否在指定人臉集合中,並返回相似度分值,用於判斷是否可以完成登錄。

人臉認證登錄

與識別登錄的區別在於:基於uid維度的1:N識別,由於uid已經鎖定固定數量的人臉,所以檢索范圍更聚焦。用戶操作時,需要指定uid的映射信息(如輸入用戶名),這樣就需要通過用戶名先獲取uid。當然也可以第一次登錄后,把uid或用戶名保存在端上,后面登錄跳過用戶獲取uid的過程。

1.3 產品構成

本方案由人臉注冊、人臉識別登錄和人臉認證登錄組成具體如下所示:

1.3.1 鑒權認證機制

調用接口https://aip.baidubce.com/oauth/2.0/token

百度AIP開放平台使用 OAuth2.0 授權調用開放API,調用API(如:人臉注冊、人臉識別、人臉認證接口)時必須在URL中帶上accesss_token參數,獲取Access Token的參見http://ai.baidu.com/docs#/Auth/top

1.3.2 人臉注冊

調用接口https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/add

人臉注冊流程見下圖,端上進行在線活體驗證、在線活體檢測(是否使用根據安全級別而定,希望防止視頻等攻擊的建議使用),從開發者服務端獲取用戶uid、注冊uid和人臉到百度人臉庫。

人臉注冊接口文檔

業務流程圖如下所示:

1.3.3 人臉識別登錄

調用接口https://aip.baidubce.com/rest/2.0/face/v2/identify

人臉識別登錄流程見下圖,本地活體采集(有無動作,開發者自行選擇。對於安全級別較高的場景,建議選用有動作)、在線活體檢測(防止視頻攻擊)、具體參見identify接口文檔)進行人臉識別,返回最相似的人臉的uid和分數。開發者可自行給定是否通過閥值(建議80分,對應萬分之一誤識率,安全級別高的建議90分)。

此方式優勢在於用戶不需要額外的輸入,不足在於一個人臉不能注冊多個帳號,identify接口將無法確定用戶使用是那個帳號。注意:調用在線identify接口需要token。

人臉識別接口文檔

業務流程圖如下所示:

1.3.4 人臉認證登錄

調用接口https://aip.baidubce.com/rest/2.0/face/v2/verify

此登錄方式與人臉識別登錄的區別在於,調用的verify接口。此接口入參中需要指定uid,但能解決同一個人注冊多用戶的問題。這樣就需要通過用戶名先獲取uid。當然也可以第一次登錄后,把uid或用戶名保存在端上,后面登錄跳過用戶獲取uid的過程。

人臉認證接口文檔

業務流程圖如下所示:

2、集成指南

2.1 准備工作

在正式集成前,需要做一些准備工作,完成一些賬號、應用及配置,具體如下:

2.1.1 注冊開發者

  • STEP1:點擊百度AI開放平台導航右側的控制台中的人臉識別,頁面跳轉登錄完畢后,進入人臉識別后台
  • STEP2:使用百度賬號完成登錄,如您還未持有百度賬戶,可以點擊此處注冊百度賬戶
  • STEP3:進入百度雲歡迎頁面,填寫企業/個人基本信息,注冊完畢,至此成為開發者。注:(如您之前已經是百度雲用戶或百度開發者中心用戶,STEP3可略過。)
  • STEP4:進入百度雲控制台,找到人工智能相關服務面板。
  • STEP5:點擊進入「人臉識別」模塊。

注一:如果您通過百度AI開放平台登錄到后台,AI相關服務模塊入口,如下圖所示:

注二:如果您通過百度雲直接登錄后台,AI相關服務模塊入口,則如下圖紅框部分所示:

說明:兩種入口只是展現形式不同,相關AI服務模塊內容完全一樣。

2.1.2 創建應用

創建好賬號后,在正式調用AI能力之前,需要您創建一下應用,這個是調用服務的基礎能力單元。選擇「人臉識別」服務,首先見到此服務的控制台概覽頁,點擊「創建應用」,即可進入應用創建界面,如下圖所示:

2.1.3 獲取密鑰

在您創建完畢應用后,平台將會分配給您此應用的相關憑證,主要為AppIDAPI KeySecret Key,以上三個信息是您應用實際開發的主要憑證,每個應用之間各不相同,請您妥善保管。如上圖所示。

注意:開發中請注意區分多份aksk(API Key、Secret Key),每個aksk代表一個人臉庫。

2.1.4 生成token

剛才所創建的應用在調用開放平台API之前,首先需要獲取Access Token(用戶身份驗證和授權的憑證)您需要使用創建應用所分配到的AppIDAPI KeySecret Key,進行Access Token的生成,方法詳見Access Token獲取,我們為您准備了幾種常見語言的請求示例代碼。

注:Access Token的有效期為30天(以秒為單位),請您集成時注意在程序中定期請求新的token,或每次請求都獲取一次token。

2.1.5 SDK license(十分重要!)

人臉SDK License:此license用於SDK離線功能使用,在您的申請人臉SDK的后台頁面,下載兩個端的license,用於接下來集成使用。

不過我們為您提供了自動化配置腳本,如下圖所示:

您可以在下載登錄示例工程的同時,直接下載已經配置好授權信息的版本。

2.2 集成策略

2.2.1 閾值選擇

登錄場景主要適用單幀檢測模式,可以通過識別接口接口中的faceliveness參數判斷,超過閾值即為活體通過。閾值設置越高,對應的安全性越高,即拒識率越高,但通過率相應下降

拒絕率(TRR) 誤拒率(FRR) 通過率(TAR) 閾值(Threshold)
0.90325733 0.1% 99.9% 0.022403
0.96254072 0.5% 99.5% 0.393241(推薦
0.97557003 1% 99% 0.649192
0.98990228 2% 98% 0.933801
0.99446254 3% 97% 0.973637
0.99641694 4% 96% 0.988479
0.99739414 5% 95% 0.994058

關於以上數值的概念介紹

  • 拒絕率(TRR):如99%,代表100次作弊假體攻擊,會有99次被拒絕。
  • 誤拒率(FRR):如0.5%,指1000次真人請求,會有5次因為活體分數低於閾值被錯誤拒絕。
  • 通過率(TAR):如99%,指100次真人請求,會有99次因為活體分數高於閾值而通過。
  • 閾值(Threshold):高於此數值,則可判斷為活體。

2.2.2 圖片壓縮

SDK拿到人臉后,可以基於本地的人臉檢測,取到人臉的標准框位置,基於人臉關鍵點進行人臉部分的進一步自動剪裁,減少圖片的大小,總而減少網絡傳輸耗時。通常建議:剪裁(人臉不小於100px)、分辨率壓縮(最小寬度200px左右)、質量壓縮(控制在0.8以上),以上三種處理方式也可以組合疊加使用。

2.3 iOS集成說明

2.3.1 自動配置授權信息集成

如果您是通過自動配置授權信息下載的示例工程,只需配置好證書即可。查看下項目中的FaceParameterConfig.h文件,已經自動配置。

配置好證書,即可運行。注意已經設置好的bundle id不要隨意改動。

2.3.2 未使用自動配置授權信息的集成

1、打開或者新建一個項目。

2、右鍵點擊項目,會出現一個添加菜單,在菜單中選擇『Add Files to"此處是你的項目名字"…… 』,如下圖所示:

3、在添加文件彈出框里面選擇申請到的license和SDK添加進來。如下圖:

注意:license為百度官方提供,剛才在后台下載的文件(文件名稱:idl-license.face-ios)

SDK包含下面三個文件:

  1. IDLFaceSDK.framework
  2. com.baidu.idl.face.faceSDK.bundle
  3. com.baidu.idl.face.model.bundle

4、確認下Bundle Identifier是否是申請license時填報的那一個。

5、注意:license和Bundle Identifier為一一對應關系,填錯了會導致SDK不可用,如下圖所示:

6、填寫正確的FACE_LICENSE_ID(即后台展示的LicenseID)

在FaceParameterConfig.h 文件中填寫下面三項。

7、選擇鏈接C++標准庫。

8、如果沒有使用pod管理第三方庫的話,請在Build Setting -> Linking -> Other Linker Flags 上面加入**-ObjC**選項。如果用了pod請忽略,因為pod會自動添加上。

2.3.3 注冊登錄說明

2.3.3.1 鑒權設置代碼

2.3.3.2 用戶注冊接口

2.3.3.3 參數設置代碼

2.3.3.4 活體檢測接口

2.3.3.5 人臉登錄接口

2.3.3.6 多次實時檢測登錄

2.4 安卓集成說明

2.4.1 自動配置授權信息集成

如果您是通過自動配置授權信息下載的示例工程,只需要謝歐冠Config類和配置簽名。您的集成將少很多步驟。

1、修改Config類中參數,自動配置已經為您修改好了licenseID和license文件,您只需要修改appKey、appSecret(即ak/sk), groupId是自己定義的,用於人臉注冊和人臉識別等接口使用。保證注冊的人臉和查找的人臉在同一個groupId即可。

2、 配置簽名(申請license時的md5為打包簽名的文件,所以必須用申請license的簽名文件) 因為SDK運行時會對比license里面的md5和簽名文件的md5,為了能debug也能使用人臉,所以需要進行下面的配置。實際發布時只要使用申請時關聯的簽名文件即可,沒有下面的配置也行。

app->build.gradle->android->signingConfigs

注意:keyAlias為你創建的打包簽名文件的別名。

2.4.2 未使用自動配置授權信息的集成

1、把申請的license(idl-license.face-android")放到到項目中assets目錄中

2、修改Config類中的參數:

licenseID為您申請license填的授權信息字符串+"-face-android"

groupId是自己定義的,用於人臉注冊和人臉識別等接口使用。保證注冊的人臉和查找的人臉在同一個groupId即可。

3、配置簽名(申請license時的md5為打包簽名的文件,所以必須用申請license的簽名文件)

因為SDK運行時會對比license里面的md5和簽名文件的md5,為了能debug也能使用人臉,所以需要進行下面的配置。實際發布時只要使用申請時關聯的簽名文件即可,沒有下面的配置也行。

app->build.gradle->android->signingConfigs

  • keyAlias為你創建的打包簽名文件的別名
  • keyPassword為你創建的打包簽名的別名密碼
  • storeFile為簽名文件的路徑
  • storePassword為簽名文件的密碼

4、修改包名 app->build.gradle->android->defaultConfig ->您申請license時填的包名

2.4.3 注冊登錄說明

2.4.3.1 注冊(RegActivity)

1、注冊初始人臉SDK,初始化放在了Application(為了注冊、人臉識別、人臉認證供用,不是必須)

同時在注冊Activity修改了初始化參數,使用了活體功能,活體動作數,您可以自行添加

2、獲取人臉,您可以從人臉檢測、人臉活體、相冊等方式獲取人臉

3、獲取人臉后,你可以選擇直接注冊或使用在線活體檢測后再注冊,在線活體檢測安全性更高在線活體請在官網控制台提交申請工單)

2.4.3.2 人臉認證登錄(VerifyLoginActivity)

1、采集人臉,調用FaceDetectActivity采集人臉。

2、 如何獲取FaceDetectActivity中的人臉,在FaceDetectyActivity類的faceDetectManager方法中,有如圖下回調函數onDetectFace,當retCode為0的時候,表示檢測到人臉(retcode為其他值的時候,可能分別表示其他意義,具體可參考代碼中得該方法說明),同時在faceDetectManager.setOnTrackListener監聽器后會有另外的方法。

onTrack,該方法中有saveFaceBmp可保存人臉圖片到手機中。

然后回到VerifyLoginActivity,可通過調用如下3所描述的verify接口校驗人臉圖片。

3、調用在線接口verify(需要指定uid,該uid為注冊使用的uid,最好為您系統中用戶的唯一標識。該接口能解決雙胞胎、重復注冊和相似度非常高的問題)獲得人臉相似度分數,超過80分認為是同一個人,認為登錄成功。安全級別更高,可以設到90。如何同時想進行在線活體檢測,可以對接口參數ext_fields指定faceLiveness

2.4.3.3 快速檢測登錄人臉登錄(DetectLoginActivity)

該方式為可以實現實時檢測即進行登錄,為推進使用的快速方法。

1、初始化SDK,為了性能關閉活體:

2、啟動人臉實時人臉檢測

3、連續回調人臉檢測信息

4、調用在線接口identify或verify進行人臉識別,判斷是否通一個人。該方式是在人臉檢測界面就多次調用人臉識別,只有分數達到預設值80或更高,就人臉登錄成功。你也可以限制次數,處理未注冊的用戶,給出登錄失敗反饋。

建議:為了防止ak/sk泄露,建議把ak/sk放在您的服務端,端上傳人臉給您的服務端,服務端調用百度人臉服務,返回結果給端。

常見問題

Q:有了license為啥還有AK/SK?
A:license是離線人臉檢測使用的。使用在線API(人臉注冊、人臉識別、人臉認證)需要使用access_token,而access_token需要AK/SK獲取。

Q:人臉識別登錄和認證登錄有什么區別?
A:識別登錄使用的是identify接口,不需要uid,傳入人臉和group_id,返回注冊庫里面相似度最大的uid和分數。認證登錄使用verify接口,需要傳入uid、人臉、group_id, 和注冊庫中相同uid人臉比對,返回分數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM