網際網路飛速發展的今天,各種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();
// 通過bitmap建立MLFrame
MLFrame templateFrame = MLFrame.fromBitmap(bitmap);
List<MLFaceTemplateResult> results = analyzer.setTemplateFace(templateFrame);
for (int i = 0; i < results.size(); i++) {
// 處理模板圖片識別結果
}
// 通過bitmap建立MLFrame
MLFrame compareFrame = MLFrame.fromBitmap(bitmap);
• 非同步方法範例程式碼:
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 最新技術資訊~