基于近红外与可见光双目摄像头的人脸识别与活体检测,文末附 Demo

181 天前
 snowflake007

基于近红外与可见光双目摄像头的活体人脸检测原理

人脸活体检测( Face Anti-Spoofing )是人脸识别系统中的重要一环,它负责验证捕捉到的人脸是否为真实活体,以抵御各种伪造攻击,如彩色纸张打印的人脸图、电子设备屏幕中的人脸数字图像及面具等。这些攻击手段若得逞,将对金融安全、门禁管理等造成严重威胁。

基于近红外与可见光双目摄像头的活体人脸检测利用红外摄像头下视频和大部分纸张不能呈现图像的特性,有效的防止了视频中伪造人脸的攻击;同时利用近红外摄像头和可见光摄像头下真实人脸与照片人脸纹理差异和颜色差异,可以有效地区分人脸是来自真实人脸还是照片中的伪造人脸。

Android 实现双目红外活体检测 首先建议使用上图 1 的 USB 双目摄像头,能支持双头 Type-C 接口 UVC 协议的,现在的手机平板大部分都是 TypeC 接口了,千万别整公头 USB 口,需要特定的开发板才能开发调试。 然后 打通 UVC 协议摄像头预览,能正常预览才能取数据进行 AI 分析人脸识别等,目前 Android 平台的 UVC 协议摄像头库最有名的就是日本大神的 saki4510t/UVCCamera ,但是很久不维护了,文章最后的源码会集成到 Demo 中 最后 就可以拿双目摄像头中的 RGB 和 IR 图像进行活体检测人脸识别了。 ini 代码解读复制代码 /** * 初始化 IR 摄像头 * */ private void initIRCamara() { irCameraManager.initCameraHelper(); irCameraManager.setOpeningMultiCamera(true); irCameraManager.setCameraView(binding.irCameraTextureView,true); irCameraManager.selectUsbCamera(UsbCameraEnum.IR);

    irCameraManager.setOnDeviceStatuesCallBack(new UsbCameraManager.OnDeviceStatuesCallBack() {
        @Override
        public void onAttach(UsbDevice device) {
        }

        @Override
        public void onDeviceOpen(UsbDevice device, boolean isFirstOpen) {

         }
    });

    irCameraManager.setPreviewHeight(PREVIEW_HEIGHT);
    irCameraManager.setFrameCallback(frame -> {
        Size currentPreviewSize = irCameraManager.getCurrentPreviewSize();
        int width = PREVIEW_WIDTH;
        int height = PREVIEW_HEIGHT;
        if (currentPreviewSize != null) {
            width = currentPreviewSize.width;
            height = currentPreviewSize.height;
        }
        Bitmap bitmap = DataConvertUtils.NV21Data2Bitmap(frame, width, height, 0, 0, false);
        if (bitmap != null) {
            faceVerifySetBitmap(bitmap, FaceVerifyUtils.BitmapType.IR);
        }
    }, UVCCamera.PIXEL_FORMAT_NV21);
}

初始化 RGB 和 IR 数据后把数据转为 Bitmap 后送入引擎开始人脸识别,双目活体检测了 ini 代码解读复制代码 faceVerifyUtils.goVerifyWithIR(irBitmap, rgbBitmap);

注意事项

目前的 USB 双目摄像头的带宽普遍不足,但好在人脸识别,双目活体检测不需要太高分辨率,1280*720 足够了 需要宽动态抗逆光摄像头,调试的时候经常经常用手触摸镜头需要保持镜头整洁 确保两个摄像头都正常稳定同步的输出了影像画面

演示接入代码 Demo 和体验 App 下载 上述的 UVC 协议摄像头管理已经放在工程目了 libs 下面了打包成了 AAR 文件,整个项目代码 GitHub 搜索 AnyLifeZLB/FaceVerificationSDK 或者点击:github.com/AnyLifeZLB/… 手上有双目摄像头的连接设备可以立马体验效果

1993 次点击
所在节点    Android
2 条回复
Shatyuka
181 天前
这是从哪复制来的,格式乱七八糟,甚至链接都缩略了,广告机器人?
“调试的时候经常经常用手触摸镜头需要保持镜头整洁”,怪。
snowflake007
181 天前
从我的博客复制过来的,准备把主题下沉 10 天。

直接看 GitHub 主页 https://github.com/AnyLifeZLB/FaceVerificationSDK

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1117570

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX