知物由学 | 基于DNN的人脸识别中的反欺骗机制
“知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充《论衡·实知》。人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道。“知物由学”希望通过一篇篇技术干货、趋势解读、人物思考和沉淀给你带来收获的同时,也希望打开你的眼界,成就不一样的你。当然,如果你有不错的认知或分享,也欢迎通过邮件(zhangyong02@corp.netease.com)投稿。
以下是正文:
本文作者:ArturBaćmaga,YND的AI专家。
想象一下,只需使用脸部即可解锁手机,无需指纹扫描或触摸。它会在没有任何用户干预的情况下自动且完美地工作。是的,目前已经可以做到了这一点,它被称为iPhone X,你可能已经在使用它了。
更好的未来是:使用人脸识别进行用户身份验证的潜力比这更大!在不远的将来,我们能够通过展示我们独特的面部特征来租一辆车,并签署法律文件。
实际上,我们已经开始看到需要身份验证的某些服务(如银行和其他类型的交易系统)。在这种情况下,所提供的法律数据将与文件上的ID和面部图像上的数据进行交叉检查,并与所有者的面部进行比较。但是,像大多数新技术一样,技术在创新,骗子也在创新。而欺骗人脸识别机制的最流行方式之一是“人脸欺骗”攻击。
欺骗攻击是指通过使用照片、视频或授权人脸部的其他替代品来获取其他人的特权或访问权。
一些欺骗攻击的例子:
- 打印攻击:攻击者将别人的照片打印或者显示在数字设备上。
- 重播/视频攻击:诱骗系统的更复杂的方式,通常需要一个受害者脸部的循环视频。与保持某人的照片相比,这种方法可以确保行为和面部运动看起来更自然。
- 3D掩码攻击:在这种类型的攻击中,掩码被用作欺骗的首选工具。这是一个比利用脸部视频更复杂的攻击。除了自然的面部运动之外,它还可以欺骗一些额外的保护层,例如深度传感器。
欺骗检测方法
欺骗的方法有很多种,对应的我们有许多不同的方法来应对它们的挑战。最流行的反欺骗最先进的解决方案包括:
- 面部生命力检测:一种基于分析测试面如何“活着”的机制。这通常通过检查眼球运动来完成,例如闪烁和脸部运动。
- 上下文信息技术:通过调查图像的周围环境,我们可以尝试检测扫描区域中是否有数字设备或照片纸。
- 纹理分析:在这里探测输入图像的小纹理部分,以便在欺骗和真实图像中查找图案。
- 用户互动:通过要求用户执行动作(将头部向左/向右转动,微笑,闪烁的眼睛),机器可以检测动作是否以与人类互动类似的自然方式进行。
当然,我们不能忽视房间里的大象(指某种巨大到不可能被忽视的真相,而事实上如此巨大的大象常常被集体忽略。)——iPhone X上的FaceID。在最新的硬件迭代中,Apple推出了先进的深度映射和3D感应技术,可以以前所未有的精度实现欺骗检测。但是,由于这种高端硬件在不久的将来将无法在大多数消费类设备上使用,所以我们不得不进化我们的技术以保证我们可以避免被欺骗。
事实上,在我们的研究和实施过程中,我们发现使用中等质量的2D相机也可以实现极高水平的实时欺骗检测。到底是什么让2D相机拥有如此高的检测水准?答案就是当下最火的深度学习解决方案和自定义的神经网络。
我们通过与现有的文档化方法进行交叉检查来验证我们的方法。
交叉检查1:图像质量评估
该解决方案基于将原始图像与用高斯滤波处理的图像进行比较。该论文的作者[1]证明了假图像之间的差异与真实图像之间的差异,并且可以自动检测。为了做到这一点,我们提取了14种流行的图像质量特征,例如:均方误差,平均差或边缘/角差。下一步是将它们发送给分类器,以确定它是“真实”的脸还是“假的”脸。

图1. IQA分类处理流程:将图像转换为灰度,使用高斯滤波器,从原始图像和滤波图像之间的差异中提取14个特征,将特征传递给分类器。
交叉检查2:图像失真分析
四种不同的特征(镜面反射、模糊、色度矩和色彩多样性)被发送分类器用于分类。分类器由多个模型构建而成,每个模型都训练出不同类型的欺骗攻击矢量。

图2. IDA分类过程流程:提取4个失真特征,将它们传递给一组分类器,将结果传递给负责欺骗/非欺骗决策的分类器
最终方法:深度神经网络模型
这是基于用CNN(卷积神经网络,这是图像分析中最流行的神经网络)建立的模型。裁剪后的人脸图像被传递到神经网络,然后通过神经层进行处理,以将其分类为真实/假的。

图3. DNN分类处理流程:将面部图像传递到CNN
训练系统
上述所有解决方案都包含了需要监督学习才能返回正确结果的模型。训练集是从站在摄像机前面的人们的图像构建的,或者拿着一个设备,并在其上显示他们的脸部。所有的面孔被裁剪并分成两组:真实的和假的。这些图像是由中等分辨率的800万像素相机拍摄的,这是一款在工业应用中使用的流行款式,三种方法都使用相同的训练集。

训练集示例
比较结果
对于性能测试,我们使用简单的精确度、召回率和F1分数。所有三个实验的结果显示在下表中:

准确性和性能总结

欺骗示例
下一步是什么?
所呈现的最先进的解决方案仅适用于2D重放/视频攻击。为了增加对更多类型攻击的抵抗能力,DNN模型还可以通过使用纸质打印的攻击示例扩展训练数据来调整。另外,3D欺骗尝试可以通过附加传感器来处理(例如深度)。
安全是一个不断变化的问题,因为一旦引入新的保护方法,攻击者就会不断发现新的方法来破坏系统,我们需要不断发明一些新的方法来对抗那些攻击者!
知物由学 | 基于DNN的人脸识别中的反欺骗机制的更多相关文章
- 【计算机视觉】基于OpenCV的人脸识别
一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...
- 基于 OpenCV 的人脸识别
基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...
- 基于node.js人脸识别之人脸对比
基于node.js人脸识别之人脸对比 Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O ...
- (转载)人脸识别中Softmax-based Loss的演化史
人脸识别中Softmax-based Loss的演化史 旷视科技 近期,人脸识别研究领域的主要进展之一集中在了 Softmax Loss 的改进之上:在本文中,旷视研究院(上海)(MEGVII Re ...
- 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用
深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...
- 浅谈人脸识别中的loss 损失函数
浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别 版权声明:本文为博主原创文章,遵循CC 4.0 ...
- 基于MATLAB的人脸识别算法的研究
基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...
- 基于 HTML5 的人脸识别技术
基于 HTML5 的人脸识别技术 https://github.com/auduno/headtrackr/
- 机器学习:PCA(人脸识别中的应用——特征脸)
一.思维理解 X:原始数据集: Wk:原始数据集 X 的前 K 个主成分: Xk:n 维的原始数据降维到 k 维后的数据集: 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = ...
随机推荐
- 使用domain模块捕获异步回调中的异常
和其他服务器端语言相比,貌似node.js 对于异常捕捉确实非常困难. 首先你会想到try/catch ,但是在使用过程中我们会发现并没有真正将错误控制在try/catch 语句中. 为什么? 答案是 ...
- C++基于范围循环(range-based for loop)的陷阱
C++的基于范围的循环是C++11出现的新特性,很方便,一定程度上替代了使用迭代器的for循环用法.不过基于范围的for循环有一个隐藏的陷阱,如果不注意可能会出现严重的内存错误. 举例说明 看下面这个 ...
- 【Python】 配置解析ConfigParser & 命令行参数解析optparser
ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] ...
- python 函数基础2
一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点:1.约束函数的调用者必须按照Kye=value的形式传值. 2,.约束函数的调用者必须用我们指定的Key名. def aut ...
- java基础(5)----面向对象
编程思想: 简单的说一下,我们学习编程,最重要的就是要有编程思想,而编程思想无非就是面向过程和面向对象,以下谈谈我对编程思想的理解. 面向过程: 从过程入手,第一步,第二步--.借助过程与过程的配合, ...
- Python中安装模块的方法
1.*nix系统上有一个地方专门有一个地方来放置安装的Python模块 比如在Mac上,这个目录的路径为: /usr/lib/python2.7 将要安装的文件拷贝到这里即可 2.下载模块包,解压后, ...
- JavaWeb学习笔记六 JSP
JSP技术 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java s ...
- SaaS的那些事儿
前两年... 大一大二期间,不知道软件架构.云服务器.数据库为何物,偶尔听过却从未用过.天天学的写的东西都是一些命令行代码,所幸在学完<数据结构>和<算法导论>后能够独立实 ...
- 《Language Implementation Patterns》之 增强解析模式
上一章节讲述了基本的语言解析模式,LL(k)足以应付大多数的任务,但是对一些复杂的语言仍然显得不足,已付出更多的复杂度.和运行时效率为代价,我们可以得到能力更强的Parser. Pattern 5 : ...
- django搭建web (五) views.py
http请求: HttpRequest http响应: HttpResponse 所在位置:django.http isinstance(request,HttpResponse) True-> ...