互聯網飛速發展的今天,各種App的驗證方法也越來越方便用戶,從一開始的密碼輸入,到後來的指紋解鎖,演變成如今的刷臉認證。刷個臉,就可以解鎖設備、線上/線下支付、通過門禁、快速檢票等。與此同時也伴隨了很多安全問題,首要就是如何判斷用戶的真實性。 HMS Core機器學習服務(ML Kit)的人臉比對和 ...
互聯網飛速發展的今天,各種App的驗證方法也越來越方便用戶,從一開始的密碼輸入,到後來的指紋解鎖,演變成如今的刷臉認證。刷個臉,就可以解鎖設備、線上/線下支付、通過門禁、快速檢票等。與此同時也伴隨了很多安全問題,首要就是如何判斷用戶的真實性。
HMS Core機器學習服務(ML Kit)的人臉比對和活體檢測能力能夠快速捕捉人臉,通過識別並提取模板中的人臉特征,不需要用戶配合做動作就可以判斷是真實人臉,還是人臉攻擊,同時將模板人像和人臉進行高精度比對,輸出相似度值,進而判斷兩者是否為同一個人。
基於此,開發者可以快速構建人臉檢測能力,比如在金融類App中,比對用戶身份證照片和人臉檢測結果,判斷用戶信息真實性,可提供快速安全的身份核驗流程,適用於互聯網遠程開戶、刷臉支付等金融業務。在辦公App中,可採取刷臉考勤,識別是否為本人,有效防止代打卡等行為。
效果展示
從效果展示圖來看,活體檢測幾秒鐘就可以完成精準識別手機上的假照片。
開發步驟
開發準備
-
在AppGallery Connect中配置相關信息,具體開發準備可以參考文檔。
-
配置HMS Core SDK的Maven倉地址。
打開Android Studio項目級“build.gradle”文件。
添加AppGallery Connect插件以及Maven代碼庫。
在“allprojects”>“repositories”裡面配置HMS Core SDK的Maven倉地址。
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
在“buildscript”>“repositories”裡面配置HMS Core SDK的Maven倉地址。
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
在“buildscript”>“dependencies”裡面增加AppGallery Connect插件配置。
buildscript{
dependencies {
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
人臉比對功能開發
- 創建人臉比對檢測器實例。
MLFaceVerificationAnalyzer analyzer = MLFaceVerificationAnalyzerFactory.getInstance().getFaceVerificationAnalyzer();
- 通過android.graphics.Bitmap創建MLFrame對象用於設置模版圖片,支持的圖片格式包括:JPG、JPEG、PNG、BMP。
// 通過bitmap創建MLFrame
MLFrame templateFrame = MLFrame.fromBitmap(bitmap);
- 設置人臉比對模版圖片。如果模板中無人臉,則表示模板設置失敗,保持該實例上一次設置的模板不變。
List<MLFaceTemplateResult> results = analyzer.setTemplateFace(templateFrame);
for (int i = 0; i < results.size(); i++) {
// 處理模板圖片識別結果
}
- 通過android.graphics.Bitmap創建MLFrame對象用於設置比對圖片。支持的圖片格式包括:JPG、JPEG、PNG、BMP。
// 通過bitmap創建MLFrame
MLFrame compareFrame = MLFrame.fromBitmap(bitmap);
- 調用同步或非同步方法進行人臉比對。檢測結果主要包括比對圖片中檢測到的人臉信息、檢測到的人臉信息與模板人臉是同一個人的置信度。詳細信息請參見MLFaceVerificationResult。
• 非同步方法示例代碼:
Task<List<MLFaceVerificationResult>> task = analyzer.asyncAnalyseFrame(compareFrame);
task.addOnSuccessListener(new OnSuccessListener<List<MLFaceVerificationResult>>() {
@Override
public void onSuccess(List<MLFaceVerificationResult> results) {
// 檢測成功
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// 檢測失敗
}
});
• 同步方法示例代碼:
SparseArray<MLFaceVerificationResult> results = analyzer.analyseFrame(compareFrame);
for (int i = 0; i < results.size(); i++) {
// 檢測結果處理
}
- 檢測完成,停止分析器,釋放檢測資源。
if (analyzer != null) {
analyzer.stop();
}
活體檢測功能開發
預設掃描界面
- 創建靜默活體檢測結果回調,用於獲取檢測結果。
private MLLivenessCapture.Callback callback = new MLLivenessCapture.Callback() {
@Override
public void onSuccess(MLLivenessCaptureResult result) {
//檢測成功的處理邏輯,檢測結果可能是活體或者非活體。
}
@Override
public void onFailure(int errorCode) {
//檢測未完成,如相機異常CAMERA_ERROR,添加失敗的處理邏輯。
}
};
- 創建靜默活體檢測實例,啟動檢測。
MLLivenessCapture capture = MLLivenessCapture.getInstance();
capture.startDetect(activity, callback);
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHub、Gitee
關註我們,第一時間瞭解 HMS Core 最新技術資訊~