人脸防欺骗——基于皮肤斑块的快速安全的生物识别实现人脸识别防欺骗方法

本文主要是介绍人脸防欺骗——基于皮肤斑块的快速安全的生物识别实现人脸识别防欺骗方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 概述

深度学习的进步促使面部识别技术在许多领域得到应用,例如在线身份验证(eKYC)和电子设备的安全登录。面部识别是一种生物识别技术,对安全性要求很高。近年来,为了提高人脸识别技术的可靠性,人们引入了人脸防欺骗(FAS)技术。然而,现有方法在实践中存在一些问题。在服务器端部署 FAS 模型,集成多个组件,会引发隐私和安全问题。由于用户的面部图像是通过网络传输并存储在服务器上的,因此隐私泄露的风险很高。此外,发送图像的过程非常耗时,会影响用户体验。

本文提出了一种新型面部防欺骗(FAS)模型,利用面部图像中的皮肤斑块来解决这些问题。传统方法会将整个面部图像发送到服务器,因此存在隐私泄露的风险,而本文提出的模型只将特定区域的皮肤发送到服务器。此外,传统方法需要花费大部分处理时间对要发送的图像进行加密和解密,而建议的模型只发送不包含任何个人身份信息的皮肤斑块,因此无需对图像进行加密和解密。

为了评估新方法的有效性和鲁棒性,我们从准确性和延迟等多个方面进行了实验,结果发现,该方法在保持低延迟的同时,还能高精度地检测伪造信息。 在安卓设备上演示时,该方法能准确检测伪造攻击,延迟时间小于 100 毫秒。
论文地址:https://arxiv.org/pdf/2308.04798.pdf

2. 算法架构

如上所述,传统人脸防欺骗技术的主要风险来自传输和存储图像的过程。例如,一个模型的加密和解密耗时约 240 毫秒,而主要功能–卷积神经网络(CNN)推理–仅需 20 毫秒。传输整个面部图像会造成严重的延迟,而且在存储数据时还会引发隐私问题。

以往的研究已经探讨了在人脸防伪应用中分离人脸图像结构和纹理的方法。基于补丁的人脸伪造检测算法主要有两种方法。一种是提取特定面部特征(如眼睛、鼻子、嘴巴)的补丁图像作为输入特征,如下图所示。另一种方法是通过将人脸分割成多个子补丁来提取人脸作为输入特征。然而,这两种方法都会带来隐私风险。此外,第一种方法需要为每个面部部分使用四个不同的模型,可能会造成相当大的计算负担。

以往的研究表明,面部皮肤贴片可有效地用作各种深度学习分类任务的输入,因此我们假设面部皮肤贴片也可用于面部防欺骗。

研究建议采用以下方法

我们将人脸识别反欺骗定义为一项区分真假人脸的分类任务。我们设计了一个模型来从图像中确定这一点,并使用特定的阈值来确定人脸的真假。然后,需要大量的人脸图像数据来训练这个模型。本文使用了一个名为 CelebASpoofing 的大型高质量图像数据集。在每次迭代中,都会使用 RetinaFace 对原始图像中的人脸区域进行裁剪。然后将裁剪后的面部图像输入脸部模型,以获得面部地标。这些地标用于识别与面部特征不重叠的皮肤斑块。提取的皮肤斑块不会包含个人身份信息。最终收集了 10,000 多个皮肤斑块,包括真实样本和不同类型的攻击实例。为了从面部图像中提取面部补丁,我们还使用了一种名为 “补丁提取模块”(PEM)的技术。面网模型用于识别输入面部图像上的地标。然后对人脸图像进行对齐,以提取高质量的人脸补丁。候选区域的选择侧重于那些缺乏显著面部特征的区域,尤其是左脸颊、右脸颊和下颌区域。CNN 用于从提取的斑块中提取特征。该模型将两个不同的斑块结合起来,以做出更准确的判断。

3. 实验结果

评估人脸防欺骗模型性能的三个指标是:攻击呈现分类错误率(APCER)、真实呈现分类错误率(BPCER)和平均分类错误率(ACER)。误差率(BPCER)和平均分类误差率(ACER)。这些指标的计算方法如下。

  • apcer = fp / (tn + tp)
  • bpcer = fn / (fn + tp)
  • acer = (apcer + bpcer) / 2

请注意,TP(真阳性)表示被正确分类为假的人脸图像,TN(真阴性)表示被正确分类为真的人脸图像,FP(假阳性)表示被错误分类为假的人脸图像,FN(假阴性)表示被错误分类为真的人脸图像。负)代表被错误归类为真实的假人脸图像。

在对所提方法进行性能评估时,使用了三个测试数据集:Rose-Youtu、MSU 和 Mobile-Replay。结果如下表所示。在三个不同的数据集上,与各种算法相比,所提出的模型表现出了卓越的性能。特别是,虽然 CDC 在所有数据集上都表现最佳,但本文提出的模型与 CDC 相比更加轻量级,使其在后端基础设施中的部署非常方便和实用。

此外,与 FaceDs 和 FASNet 等最先进的模型相比,所提出的模型取得了不相上下的结果,并明显优于 LBP 和色彩纹理等传统算法。结果表明,所提出的模型能有效地应对面部防欺骗的挑战。

此外,还对延迟进行了实验。反欺骗的处理时间包括图像传输、加密和解密以及模型推理。对传统模式(resnet34)和建议模式(双流 resnet34)的延迟时间进行了评估,结果如下表所示。

拟议模型的传输和推理时间略大于传统模型,但总体延迟仅为传统模型的 28%。省略加密和解密部分加快了整个过程。

4. 总结

本文提出了一种新颖的面部防欺骗模型,利用面部皮肤斑块作为输入特征。该方法无需传输面部图像,也无需对面部图像进行加密和解密。与传统方法相比,它消除了个人数据泄露的风险,并将反欺骗过程的时间大幅缩短至约四分之一。

这篇关于人脸防欺骗——基于皮肤斑块的快速安全的生物识别实现人脸识别防欺骗方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010561

相关文章

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis