- 💂 个人网站:【海拥】【摸鱼小游戏】【开发文档导航】
- 🤟 风趣幽默的人工智能学习网站:👉人工智能
- 💬 免费且实用的计算机相关知识题库:👉进来逛逛
给大家安利一个免费且实用的前端刷题(面经大全)网站,👉点击跳转到网站。
静态生物特征验证是一种常用的 AI 功能,它可以实时捕捉人脸,并可以在不提示用户移动头部或面部的情况下确定人脸是否属于真人。通过这种方式,该服务有助于提供获得积极反馈的便捷用户体验。
技术原理
静态生物特征验证需要 RGB 摄像头,并且能够通过细节(例如莫尔图案或纸上的反射)区分真人的面部和欺骗攻击(例如面部和面罩的图像或屏幕截图)照片)在相机拍摄的图像中。该服务支持来自各种场景的数据,包括不同的照明条件、面部配饰、性别、发型和面具材料。该服务分析面部周围环境以检测可疑环境。
静态生物特征验证模型采用轻量级卷积模块,在推理阶段通过重新参数化将线性计算转化为单个卷积模块或全连接层。MindSpore Lite 推理框架可用于模型部署,从而裁剪操作员。然后缩小模型的封装尺寸,使其更便于集成。
应用场景
活体检测通常在人脸验证之前使用。例如,当用户使用面部识别解锁手机时,活体检测首先确定捕获的面部是否真实。如果是,则人脸验证将检查人脸是否与系统中记录的人脸匹配。这两种技术相互补充,以保护用户的设备免受未经授权的访问。
所以可以肯定地说,静态生物特征验证为应用程序提供了严格的保护,我在这里说明如何集成它。
整合程序
准备工作
调用服务有两种模式:
通话模式 | 活体检测过程 | 活体检测界面 | 功能 |
---|---|---|---|
默认查看模式 | 由 ML Kit 处理 | 提供的 | 确定一张脸是否真实。 |
自定义查看模式 | 由 ML Kit 处理 | 自定义 | 确定一张脸是否真实。 |
默认查看模式
1.创建回调获取静态生物特征验证结果。
private MLLivenessCapture.Callback callback = new MLLivenessCapture.Callback() { @Override public void onSuccess(MLLivenessCaptureResult result) { // 验证成功时回调,结果表明面部是否为真人。 }
@Override public void onFailure(int errorCode) { // 验证失败时回调。例如,摄像头异常(CAMERA_ERROR)。 添加处理逻辑来处理失败。 }
};
2.创建静态生物特征验证实例并开始验证。
MLLivenessCapture capture = MLLivenessCapture. getInstance();
capture.startDetect(activity, callback);
自定义查看模式
1.创建一个 MLLivenessDetectView 实例并将其加载到活动布局中。
/**
-
- 将摄像头预览画面绑定到远程视图,设置活体检测区域。
- 在相机预览流中,静态生物特征验证确定人脸是否在图像中间。 为提高通过率,建议将人脸框置于屏幕中间,并将活体检测区域设置为略大于人脸框。
-
- 设置是否检测掩码。
-
- 设置结果回调。
将 MLLivenessDetectView 加载到活动中。
*/
@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 的矩形。
.setFaceRect(new Rect(0, 0, 0, 200))
// 设置结果回调。
.setDetectCallback(new OnMLLivenessDetectCallback() {
@Override
public void onCompleted(MLLivenessCaptureResult result) {
// 验证完成时回调。
}@Override public void onError(int error) { // 验证过程中发生错误时的回调。 } @Override public void onInfo(int infoCode, Bundle bundle) { // 收到验证提示消息时回调。 此消息可以显示在 UI 上。 // if(infoCode==MLLivenessDetectInfo.NO_FACE_WAS_DETECTED){ // No face is detected. // } // ... } @Override public void onStateChange(int state, Bundle bundle) { // 验证状态变化时回调。 // if(state==MLLivenessDetectStates.START_DETECT_FACE){ // Start face detection. // } // ... }
}).build();
mPreviewContainer.addView(mlInteractiveLivenessDetectView);
mlInteractiveLivenessDetectView.onCreate(savedInstanceState);
}
2.为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();
}
📣尾注:
人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。在这里,我们只讨论了人工智能的基本知识
💌 欢迎大家在评论区提出意见和建议!💌