CVPR2019 人脸活体检测专题

作者:Fisher Yu余梓彤
本文转自知乎专栏:SIGAI


file
看了下今年CVPR,正会有4篇face anti-spoofing的文章,里面有三篇都制作了新的数据集,给人感觉真是没新数据集都不敢撸了~~

[1] CASIA-SURF,中科院和京东发布的多模态数据集(RGB+Depth+NIR),并搞了个基于SE block 多模态融合的baseline;并搞了对应的workshop比赛,一下子就被刷爆了,恐怕这集废了,后面可以follow下比赛前几名的方案。

[2] Deep Tree Network,MSU的文章,专门收集了个新数据集 SiW-M 来做zero-shot。

[3] Multi-adversarial Discriminative Deep Domain Generalization, HKBU的文章,学习多个数据集间共有的discriminative特征,更好地generalize到 target数据集。

[4] 基于Region Attention 的网络,有一个创新点RAM模块。

因为第一篇是数据集,后面有空看看workshop再聊;下面主要讲讲后面三篇文章。




一、Deep Tree Network [2],CVPR2019

文章的出发点是考虑到越来越多未知的spoofing attack类型会陆续出现,那么给定一个unknown的spoofing attack,算法是否能检测出来呢?文章定义其为Zero-Shot FaceAnti-spoofing 问题。

那么问题来了,当前几个主流数据集都只含有print, replay 或者 mask 攻击,市面上还缺那么一个多种丰富的攻击类型来验证已有的算法是否能在zero-shot下有效。故MSU基于上个版本的 SiW 数据集,拓展了更丰富的攻击类型,提出了 SiW-M 数据集,暂时还没公开:
file
△SiW-M数据集


上图的第二行是对应的攻击二值mask map伪ground truth提取得有点偏差(后三个Partial Attack),问题不大。作者公开数据集时候顺便把这个label也带开了会更好,方便后人对比。里面的一些攻击类型也太假,有点凑数嫌疑,对实际场景作用不大。


算法部分,主要的网络架构是follow这篇 ICCV2015的多“模态”人脸识别文章[5],先来看看人脸识别这篇Conditional CNN是怎么做的:

  1. 构造了depth=3, node=4的决策树结构网络,每一层由可卷积层和分离函数split function 公式(4) 组成(下图红色点),分离函数作用就是投影卷积激活后的结果到latent space,并根据公式(3) 自分配到左右子集 :
    file


    2.最后沿着决策路径,可以到达最终的nodeleaf,简单的FC分类器预测结果即可。
    file
    △Conditional CNN with Modality-aware Projection Tree



关于网络的训练,使用了公式(5)中的无监督约束,使每个node间所有samples的mean尽量为0,且最大化左右两个subclusters间的距离。最后联训的函数,还需加上最后的 cross-entropy loss。
file

Conditional CNN对不同姿态人脸的结果如下图所示,可见不同层次的leaf node基本按照coarse2fine来细分姿态。
file
△samples in leaf nodes


说回Deep Tree Network这篇文章,借鉴了Conditional CNN的思想,构造了depth=4 的决策树网络:
file
△Deep Tree Network


并针对活体检测任务进行如下改进:
file

实验结果:
1.在已有数据集上zero-shot测试的性能好得夸张。比较好奇它这个在cross-dataset上测性能如何?
file


2.在SiW-M上zero-shot测 ACER 比 Auxiliary好很多,而且模型也小很多。
file



说下文中的一些小局限:

1.涉及得超参太多了,就损失函数那里就6个了

2.决策threshold很confused,对比Auxiliary时强行用了same 0.2




二、Multi-adversarial Discriminative Deep Domain Generalization[3],CVPR2019

这文章题目很clear说明了要干的就是Domain Generalization,而实现手段为:

1.Multi-adversarial:先在不同Domain数据集下各自用Cross entropy loss训练得到各自模型。把各个domain训好的模型fixed住参数,用来提特征,接着训练特征生成器和domain的判别器。直到生成器输出的特征能成功骗过各个domian的判别器,就算学到了generalized feature space 的表达了。

2.Discriminative :1) 除了传统的同一个domain下的 triplet loss,还设计了domain间的triplet loss,即对于每个subject希望其cross-domain 的postive距离要小于cross-domian的negative。2) 生成器出来的特征,额外有一个类似Auxiliary预测depth的branch,增强可判别性。
file
△算法框架图



实验结果:

总共选取了4个已有数据集当成4个domain,把其中的三个作为source domian来训,测试在剩下的target domain,结果如下:
file




三、Region Attention[4],CVPR2019

文章的算法总框架如下:

1)TASM:首先对M frames提取CNN特征,并进行LSTM propagation,来预测真假

2)RAM:对 TASM 中CNN提取到的deep feature进行另一个branch操作来预测region attention,预测出每帧K个region的offset,并对原图对应位置crop

3)SASM:RAM输出的patches送进share参数的CNN,最后融合进行预测。
file
△网络总框架


先说说该文的创新点RAM模块:

下图阐述了RAM的工作原理,即学习一个mapping from 特征M204877 to 变换系数MK*2。比较有价值的是文中探讨了集中初始化的方式,比如说可以简单初始化为图像的中间点,然后平移变换系数是基于中间点的offset;文中提出了使用Grad-Gram来产生coarse localization map来初始化attention region的位置,效果更佳。
file
△RAM模块


关于本文的疑惑:

1)Main contribution那里一直强调如何spatio-temporal对这个attention等帮助很大。没有任何对比实验证明加上LSTM比去掉就好多少,也没可视化或说明这个LSTM究竟学到了啥spatio-temporal。

OULU-NPU实验结果:

Ours+表示额外加入了私人收集数据集来训。
file



总结与展望:

方向越来越接地气了,cross-dataset的泛化能力的提升,对未知attack更好地预测,都是落地的有力支撑。个人倒是希望后续能更深入探讨spatio-temporal这块,而不是整个LSTM啥都没说明,就扔一个结果出来,让人很怀疑只是各种调参出来~~


Reference:

[1] Shifeng Zhang et al., CASIA-SURF: A Dataset and Benchmark for Large-scale Multi-modal Face Anti-spoofing, CVPR2019

[2] Yaojie Liu et al., Deep Tree Learning for Zero-shot Face Anti-Spoofing, CVPR2019

[3] Rui Shao et al. ,Multi-adversarial Discriminative Deep Domain Generalization for Face Presentation Attack Detection, CVPR2019

[4] Xiao Yang et al. ,Face Anti-Spoofing: Model Matters, So Does Data, CVPR2019

[5] Chao Xiong et al. ,Conditional Convolutional Neural Network for Modality-aware Face Recognition, ICCV2015


原文链接:https://zhuanlan.zhihu.com/p/69733383


推荐阅读:
CVPR 2019 论文大盘点-人脸技术篇
500 万面孔 | 15 个免费人脸识别数据集
CVPR2019 专题直播 | 帝国理工邓健康:ArcFace 构建高效的人脸识别系统 (已开源)