靜默式活體檢測,是華為HMS Core機器學習服務所屬的人臉活體檢測能力,即無需用戶配合做出張嘴、扭頭、眨眼等動作,便可實時捕捉人臉,快速判斷是否為活體,用戶使用程序便捷,綜合體驗感較佳,
技術原理
靜默活體檢測能力使用RGB攝像頭,通過螢屏拍攝出現的摩爾紋、紙質照片反光等一些細節資訊進行甄別攝像頭前的檢測物是真實人臉,還是人臉翻拍圖片、人臉翻拍螢屏、人臉面具等假臉攻擊,同時,靜默活體檢測能力的活體資料覆寫光照、臉部飾品、性別、發型、面具材質等場景,對人臉存在的宏觀環境進行分析,排除明顯不可能存在人臉的場景,

靜默活體檢測能力的模型設計采用輕量化卷積模塊,同時將模型的線性計算通過重引數化思想在推理階段轉成單個卷積或全連接模塊,模型部署采用Mindspore-lite推理框架,對算子進行裁剪,實作極致的包大小,更利于開發者集成應用,
應用場景
活體檢測技術通常應用在人臉對比技術之前,比如在人臉識別手機解鎖時,首先需要通過活體檢測技術判別機器前出現的人臉是真臉還是假臉,然后再對比當前人臉與系統已錄入人臉是否是同一人,這樣可以防止當事人不在場的情況下,有人假冒當事人解鎖手機,造成個人資訊泄露等嚴重損失,
那么,如何才能集成靜默活體檢測能力呢?
集成步驟
1.開發準備
詳細步驟可參考華為開發者聯盟官網中的應用開發介紹:https://developer.huawei.com/consumer/cn/doc/development/hiai-Guides/liveness-detection-0000001051386243?ha_source=hms1
靜默活體檢測提供兩種呼叫方式,您可以根據需求選擇相應的呼叫方式構建活體檢測服務,

2.默認掃描界面
2.1 創建靜默活體檢測結果回呼,用于獲取檢測結果,
private MLLivenessCapture.Callback callback = new MLLivenessCapture.Callback() {
@Override
public void onSuccess(MLLivenessCaptureResult result) {
// 檢測成功的處理邏輯,檢測結果可能是活體或者非活體,
}
@Override
public void onFailure(int errorCode) {
// 檢測未完成,如相機例外CAMERA_ERROR,添加失敗的處理邏輯,
}
};
2.2 創建靜默活體檢測實體,啟動檢測,
MLLivenessCapture capture = MLLivenessCapture. getInstance();
capture.startDetect(activity, callback);
3.自定義掃描界面
3.1 創建MLLivenessDetectView,并加載到Activity布局,
- I.系結相機預覽界面,設定活體識別區域,
在相機預覽流中,靜默活體檢測會對人臉在不在影像的中間進行判斷,為了提高活體的通過率,建議人臉框放在螢屏中間,且活體識別區域比繪制的人臉框范圍略大,
-
II.設定是否檢測口罩,
-
III.設定結果回呼,
-
IV.將MLLivenessDetectView加載到Activity,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_liveness_custom_detection);
mPreviewContainer = findViewById(R.id.surface_layout);
// ObtainLLivenessDetectView
mlLivenessDetectView = new MLLivenessDetectView.Builder()
.setContext(this)
//設定是否檢測口罩
.setOptions(MLLiveness DetectView.DETECT_MASK)
//設定人臉框相對于MLLivenessDetectView的Rect
.setFaceRect(new Rect(0, 0, 0, 200))
//設定結果回呼
.setDetectCallback(new OnMLLivenessDetectCallback() {
@Override
public void onCompleted(MLLivenessCaptureResult result) {
// 靜默活體檢測完成時的結果回呼
}
@Override
public void one rror(int error) {
// 活體檢測發生錯誤時的錯誤碼回呼
}
@Override
public void onInfo(int infoCode, Bundle bundle) {
// 靜默活體檢測提示資訊回呼,可用于界面提示
// if(infoCode==MLLivenessDetectInfo.NO_FACE_WAS_DETECTED){
// 當前沒有檢測到人臉
// }
// ...
}
@Override
public void onStateChange(int state, Bundle bundle) {
// 靜默活體檢測狀態切換回呼
// if(state==MLLivenessDetectStates.START_DETECT_FACE){
// 開始人臉檢測
// }
// ...
}
}).build();
mPreviewContainer.addView(mlInteractiveLivenessDetectView);
mlInteractiveLivenessDetectView.onCreate(savedInstanceState);
}
4.對MLLivenessDetectView設定生命流程監聽,
@Override
protected void onDestroy() {
super.onDestroy();
mlLivenessDetectView.onDestroy();
}
@Override
protected void onPause() {
super.onPause();
mlLivenessDetectView.onPause();
}
@Override
protected void onResume() {
super.onResume();
mlLivenessDetectView.onResume();
}
@Override
protected void onStart() {
super.onStart();
mlLivenessDetectView.onStart();
}
@Override
protected void onStop() {
super.onStop();
mlLivenessDetectView.onStop();
}
更多關于機器學習服務介紹,請訪問華為開發者聯盟官網,
如果您在集成SDK或上架應用到華為應用市場時遇到問題,都可以在線提單,
了解更多詳情>>
訪問華為開發者聯盟官網
獲取開發指導檔案
華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間了解 HMS Core 最新技術資訊~
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/436380.html
標籤:其他
