直接跳到末尾 参与评论送书
静态生物特征验证是一种常用的 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 实例并将其加载到活动布局中。
/*** 1. 将摄像头预览画面绑定到远程视图,设置活体检测区域。* 在相机预览流中,静态生物特征验证确定人脸是否在图像中间。 为提高通过率,建议将人脸框置于屏幕中间,并将活体检测区域设置为略大于人脸框。* 2. 设置是否检测掩码。* 3. 设置结果回调。* 4. 将 MLLivenessDetectView 加载到活动中。*/@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_liveness_custom_detection); mPreviewContainer = findViewById(R.id.surface_layout); // ObtainLLivenessDetectViewmlLivenessDetectView = 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设置生命周期监听器。
@Overrideprotected void onDestroy() { super.onDestroy(); mlLivenessDetectView.onDestroy();}@Overrideprotected void onPause() { super.onPause(); mlLivenessDetectView.onPause();}@Overrideprotected void onResume() { super.onResume(); mlLivenessDetectView.onResume();}@Overrideprotected void onStart() { super.onStart(); mlLivenessDetectView.onStart();}@Overrideprotected void onStop() { super.onStop(); mlLivenessDetectView.onStop();}
?参与评论送书
本次送书 3 本,以后每周新文评论区至少抽三位朋友送书
内容简介
人工智能被广泛应用和普及,极大地提高了人们学习和工作的效率。而要深入理解人工智能,必须全面理解底层各类机器学习算法的基本原理。只有全面掌握机器学习的基础知识,才能更好地理解、提高和驾驭人工智能的各种应用。
本书内容系统、全面,理论知识覆盖面广,且保留了推导过程。实践案例中,深入浅出地讲解和展示了机器学习应用的具体流程。本书适合在各行业工作的数据科学家、在校学习人工智能和数据科学专业的学生、科技公司的管理者和决策者,以及人工智能的初学者和爱好者阅读。
觉得自己抽不到,想自己买的也可以参考此链接:https://item.jd.com/13156145.html
【抽奖方式】关注博主、点赞收藏文章后,评论区留言:人生苦短,我爱AI!!!博主会用爬虫代码随机抽取 3 人送书!
【开奖时间】:截止到周日晚8点
本期中奖名单:
?尾注:
人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。在这里,我们只讨论了人工智能的基本知识,想要获取更多人工智能相关的知识,或者就是想每周参与抽奖白嫖一本书,你可以私信我加入 CSDN官方人工智能交流群
? 欢迎大家在评论区提出意见和建议!?