Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection
论文简介
该论文提出的方法已经部署到百万台终端,整篇文章底气十足。作者设计多任务网络,包含两个分支,一个用于预测深度图并做二分类,另一个回归光验证码,只有被识别对象同时通过两个分支的考验,才能被判断为活体,如下图;本人感觉满篇全是亮点:又快又准的深度图预测、无需额外硬件的光验证码校验机制、Light presentation回归网络以及不知道怎么采集却又超精确的深度图ground truth……
下图(Figure 2)对整个算法流程进行说明,特别提到需要使用手机或其他有前置摄像头和光源的设备,并置于测试对象前方;然后随机产生一个包含色调和光照强度的参数序列,比如,r = {(αi , βi )}ni=1 ,n为拍摄帧数。通过控制屏幕以r的顺序闪光,同时拍摄n张图像Fr ,用于估计normal cues,再输入到多任务网络,预测深度图+标签+光验证码信号,最后结合两个分支网络的输出取并集作为最终的识别结果。下面对算法各模块详细介绍:
1. 光反射的Normal Cues
给定人脸反射帧{Fri }ni=1 ,通过估计目标人脸上的反射增益,提取normal cues(实在不知道怎么翻译)。粗糙的表面会将接收到的光线漫反射出去,然后被相机接收并成像。在Lambert反射模型和弱透视相机的假设下,假设图像包含目标表面的反射,我们可以度量图像之间的幅度变化。Lambert 定律认为漫反射表面的反射光在所有方向上均相等,换言之,对于在特定光照Lr下拍摄的照片上任意一点p,强度Fr§ 公式:
Ka是环境的权重,Kr是漫反射的权重,l是光源方向,ρp 是反照率,np是该点的法线。当光迅速变化,Ka和l不会随之变换,可以看作是常量。作者用PRNet预测人脸关键点然后,做仿射变换,人脸对齐。在光照Lr′ 下另一张图中和p对应的p′ 的强度可以表示为:
然后可以获得图像上每一点的内积N∆r§ :
此处N∆r§ 构成的内积图就是normal cue。
2. 多任务CNN
得到normal cues之后,作者用两个分支分别实现活体分类和光验证码的回归。作者强调这个网络结构是任务驱动,促使双验证机制在实际场景中对于模态攻击的鲁棒性更好。
1)活体分类
受光照环境的影响,从人脸反射帧提取的normal cues往往是粗糙的、伴随噪声的。为了从normal cues高效获取高精度深度图,作者采用了一个编解码网络(encoder-decoder network)。复原出的深度图被输入到一个简单的分类网络来给出二分类的结果,如Figure 3所示。
从视频中获取m帧的normal cues,N1, N2, …, Nm loss函数:
S表示包含两个卷积层的(最左边红色的)部分,C表示活体预测网络U,U表示深度图复原网络,ci表示第i个normal cue的活体标签,λdepth 是深度图的权重。在预测深度图时,作者做了pixel-wise的分类,每个点都做标签为1-256的softmax分类。dk§ 是p点k通道特征图上的激活,特征图作为U最后的输出。
2)光·参数回归(实在不知道怎么翻,抱歉)
作者为了强化模型在模态攻击下的安全性,通过特定光照对图像加密,再用回归分支对特征解码,以此作为第二个活体验证机制。同深度图分类一样,回归分支被输入同样的normal cues,loss函数:
R是回归分支网络,∆ri 是Fri 和 Fri−1 的光参数残差的ground truth。
假设训练集中视频总数为V,整个网络的loss函数:
Θ 是参数空间,λreg 是光验证码回归损失权重。实际上,作者实验时随机只用四种光的排列组合,是鲁棒性和时间复杂度的trade off,并控制光源变化的频率和帧率一致,共取m+1帧图像,用信噪比(SNR,Signal to Noise Ratio)衡量预测值和ground truth的匹配度。
3. 数据集
作者以30fps的帧率收集不同设备、不同光照下样本视频,攻击类型主要是2D,作者生产环境中认为3D的攻击成本太高了,没什么人愿意花那个功夫,所以就没怎么收集。相比于Siw,CASIA-surf,Oulu等其他数据集,作者提出的数据集有三大优势:首先是现存活体数据集中最大的,包含1.2w个活体和攻击视频,200个subjects,平均时长3秒;包含的设备最广泛,几乎是涵盖了智能手机发展的历史,从Figure 4可以看到,一共18种!最后,该数据集包含了最全面的攻击方式,打印,回放,模态或其他光投影产生的攻击类型。作者把样本根据攻击类型分为三部分:纸质攻击、屏幕攻击和其他复杂攻击(裁剪的纸,投影等),又把每部分分为训练集、验证集和测试集,如Table 1所示。除此之外,数据集中真人和攻击样本的数量相等,真人数据也是在各种不同光照、噪声和姿态下收集的,攻击样本更是包含足够多的PIE类型。
主要贡献:
- 提出高效简洁的人脸活体识别方法,并且在实际场景中应用时不需要额外设计硬件外设;
- 提出cost-free的深度图网络,在分类任务中,通过从反射帧(reflection frames)中提取的normal cues估计人脸深度图;
- 提出全新的光验证码检查机制,对于不同类型的假冒攻击,尤其是模态攻击(modality spoofing)安全性显著提升;
- 提出新的活体数据集,包含多种图片质量和移动终端、多种假冒攻击方式的人脸样本。
实验
1. 实现细节
1)训模型
作者用的Pytorch框架,Kaiming初始化方法(ICCV 2016)初始化卷积层和全连阶层,RMSprop优化算法;训练过程在单个Tesla P100上耗时5小时,迭代300个epoch。
2)测试
作者采用常用的计算方式测试模型精度,如FRR,FAR,HTER。
2. 模型简化测试
1)深度图监督的有效性
效果很明显了,见Table 2.
2)光验证码回归研究
虽然仅靠深度图分支已经可以搞定大部分2D攻击,但仍有一种攻击方式是上述方法束手无策的:模态攻击。模态攻击可以直接假冒所需要的反光模式,在这两种情况下,模态攻击可使算法失效:把事先录好的含有特定反光模式的人脸视频在高分辨率屏幕上播放;在攻击试验的捕获过程中,投射光不会干扰视频帧中的原始面部反射。Figure 5说明光验证码抵御模态攻击的原理,Figure 6证明回归分支信噪比小雨0.35并且和ground truth很接近,证明其的确可以区分四种关照。
作者为了验证光验证码机制的作用,用四种光照的排列组合制作模态攻击,如Figure 5所示(最上面的虚线框),重复播放视频3000次。换言之,固定的视频循环必须匹配到随机产生的光验证码才能通过验证。Table 3可以说明系统的安全性非常高了。
3. 与SOTA算法对比
1)深度图预测
Figure 7能看出AG的深度图精度非常好,Aux的深度图ground truth是通过3D人脸估计模拟+z-buffer算法然后归一化做出来的,攻击样本则全写为“0”,AG的深度图如何获取通篇没有提到过,从这几个例子来看,本人觉得这是用某些手机的前置拍的(比如iPhone X),攻击样本的深度图也是实际拍的,和人工生成的完全不一样,可见做样本是花了大功夫的!
2)Face anti-Spoofing
Table 5为在本文提出的数据集上训练,在两个小测试集上的交叉测试结果,这个精度和泛化能力没谁了。作者还将数据集的三个部分(纸质、屏幕和其他)两两组合(一个为训练集,一个为测试集),把AG系统和Deep LBP全比较了一遍,结果自然是LBP被碾压的稀碎。
3)运行时间比较
作者把AG与其他SOTA算法比较跨平台的运行时间,GPU是服务器端的,CPU分别有基于x86和arm的,结果也很感人,如下图,不知道作者是不是估计用绿色字写“Red”,用红色字写“Green”,emmm
4)与基于硬件的方案比较
如下表 Table 6:
更多信息请关注公众号: