单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

点击我爱计算机视觉标星,更快获取CVML新技术


前段时间,52CV正式运营子品牌OpenCV中文网公众号,旨在分享最新的OpenCV实用技术与计算机视觉突破,无意中分享了两篇活体检测的代码:

CVPR 2019 活体检测比赛第二名、第三名方案开源

OpenCV活体检测

(强烈推荐大家点击上述链接关注OpenCV中文网)

不想竟然引起了52CV人脸识别群友们的热切关注,后来新开了活体检测群,群内筹划后续系统性总结相关论文和数据集。

今天的文章来自52CV群友王哲的知乎专栏活体检测论文分享,原文地址:

https://zhuanlan.zhihu.com/p/60155768

该文解读了CVPR 2018 活体检测论文《Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision》。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

原论文作者来自美国密歇根州立大学。

所属范畴:单目可见光静默活体

简介:

作者认为现存大多数活体算法用binary classification监督不够合理,也不能说明预测结果的依据(模型是否学习到真正的活体与攻击之间差异),故提出CNN-RNN框架,采用pixel-wise的深度图监督方式和sequence-wise的rPPG信号监督方式(如下图),并提出高分辨率+丰富PIE的数据集SiW;试验在cross-test取得了state-of-the-art。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

主要贡献:

  • 提出用深度图和rPPG信号作为CNN学习的监督信息,提高模型泛化能力;

  • 提出CNN-RNN框架,支持深度图和rPPG信号的end-to-end训练;

  • 发布全新数据集,包含多种PIE和其他影响因素,并取得sota。

方法介绍:

首先我们看rPPG是什么,Remote Photoplethysmography (rPPG)是在不接触人体皮肤的情况下,跟踪如心率等重要信号的技术。作者引用了很多文献来解释rPPG的发展,然而结论却是,分析这种信号的解决方案太容易实现了,那么它一定很容易受到PIE变化的影响!因此,作者用RNN来学习从人脸视频到rPPG信号的映射,对于PIE变化可能不够鲁棒,但是足够区分真人和攻击。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

1. Face Anti-Spoofing with Deep Network

如Figure 2所示,先用CNN提取特征,用深度图做监督信息,然后把预测的深度图和最后一层的特征图输入到non-rigid registration layer,获得aligned后的特征图,再用aligned的特征图和rPPG监督信息训练RNN,使其通过视频序列获得区分真人和攻击的能力。

2. 深度图监督

深度图是二维图像的三维信息表达,表示不同区域和相机之间不同距离。这种表达比二维标签传达出更多的信息,可以从根本上区分真人与打印、视频回放的攻击方式。作者用DeFA估计3D信息(具体的没太看懂),考虑到绝对深度不方便训练也没太大作用,就将深度归一化到[0, 1],再用z-Buffer算法把归一化的z值映射回2D图像,这样作为CNN部分pixel-wise监督信息的“ground truth”就产生了。

3. rPPG 监督

rPPG信号最近已经被用到活体识别领域了,为face liveness提供时域信息,这类信息与血液流动高度相关。传统的rPPG信号提取方法有三个弊端:对姿态太敏感,很难跟踪某个特定的面部区域;对光照敏感,额外的光照会影响皮肤反光的总量;对于活体识别而言,从视频提取的rPPG信号可能无法与真实视频区分。

作者认为用RNN去估计rPPG信号可以有效解决上述所有问题,假设,同一subject的视频在不同PIE条件下的ground truth rPPG信号是相同的。由于同一人的心跳在视频中(拍摄时间小于5分钟)是相似的,所以假设有效。作者把某个subject的constrained(PIE 无变化)视频中提取出的rPPG信号作为这个subject所有rPPG信号的groundtruth。这种可持续的监督信息有助提升CNN和RNN的鲁棒性。作者用DeFA提取人脸区域用于计算两个正交色度信号,然后FFT变换至频域。

4. CNN网络

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

作者用了全卷积网络,包含三个block,每个block的输出都resize到64*64再合并。合并后的feature分别输入到两个分支,第一个分支用于估计深度图,目标函数:

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读D为CNN参数,Nd为训练集样本总数。第二个分支输入到non-rigid registration layer。

5. RNN网络

RNN网络基于图像序列估计rPPG信号,然后FFT变换到频域,目标函数:

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读R是RNN参数,Fj是frontalized feature map,Ns是图像序列的总数。作者在FFT之后对FFT求Loss,那么bp的时候怎么FFT过乘求导呢?先IFFT么?既然FFT没有参数,为什么不把fc的输入接入loss呢,不解。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

6. 实现

1)ground truth

作者按照2. 中方法生成深度图的ground truth,并把攻击样本的深度设为一个平面,如全部设为“0”;同样,按照3. 中方法生成rPPG的ground truth,并做L2归一化,攻击样本的rPPG设为“0”

2)训练策略

作者合并CNN和RNN,做端到端训练。CNN部分需要的数据需要打乱所有subject的所有样本,再分成多个batch,以此来维持训练的稳定性和模型的泛化能力,但是RNN模型需要某个subject的较长视频序列来利用跨帧的时域信息。这两方面是互相矛盾的,也对显存要求很高,为此作者设计了two-stream 策略:第一个stream满足CNN,输入为RGB图片和深度图“ground truth”;第二个stream满足RNN,输入是视频序列,深度图“ground truth”,预测的3Dshapes和rPPG “ground truth”。训练时,交替训练两个stream,训练CNN时只更新CNN参数,训练RNN时更新CNN和RNN的参数(很难理解,怎么通过non-rigid registration反传回去的)。

3)测试

输入视频序列,得到预测的深度图和rPPG信号,计算最后的

得分:

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

为常数权重,用来合并两个输出。

4)Non-rigid registration 层

作者设计non-rigid registration层,用于RNN输入数据的预处理。这一层用预测的稠密3Dshape align CNN输出的feature map的activations,确保RNN跟踪和学习到不同人脸同一部分的变化。如下图,该层有三个输入:CNN输出的feature map T,估计的深度图Dhat,3D shape S;首先把Dhat二值化,得到V,然后计算V和T的内积,得到U,相当于把V当成T的mask来使用。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

最后,用S frontalize U(不理解):

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

作者认为该层对整个网络有三个贡献:输入数据被对齐,RNN在学习特征是不受到面部姿态和表情的影响;减少feature map中背景的影响;对于攻击样本,深度图几乎接近0,因此和feature做内积时,极大弱化了feature map的activation,有利于RNN学习并输出的rPPG信号为0,因此,rPPG loss也有助于CNN产生值为0的深度图。

实验与结论:

作者在tf框架下进行试验,学习率为 3e-3,10个epoch,CNN stream batch 为10,CNN-RNN stream batch 为2,视频序列长度为5,公式(6)中为0.015,公式(7)的阈值为0.1。作者用APCER,BPCER,ACER,HTER作为测试的metric,ablation 测试结果如下:

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

Model 1: CNN + pooling layer + fc layer + softmax

Model 2: CNN + depth map

Model 3: CNN + RNN + depth map + rPPG(w/o non-rigid registration)

Model 4: 作者提出的框架

作者用SiW数据集中的20个subject进行试验,显然本文提出的框架效果最好,作者还研究了不同视频长度对结果的影响,见下图,视频序列越长取得效果越好,对显存要求也就越高。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

其他测试结果如下:

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

其他

1)可视化

从下图可以看到,辅助的监督信息是有效的。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

CV君在网上找了下,目前还未发现该文有开源代码,如果各位读者有推荐的相关代码,欢迎留言。

加群交流

关注活体检测相关技术,欢迎加入52CV-活体检测交流群,下方扫码CV君拉你入群,验证信息请务必注明:活体检测(不然不会通过好友验证)。

单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

喜欢在QQ交流的童鞋可以加52CV官方QQ群:702781905

(不会时时在线,如果没能及时通过还请见谅)


单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读

长按关注我爱计算机视觉