本文原载自知乎,已获作者授权转载,请勿二次转载。
https://zhuanlan.zhihu.com/p/114313640
今年活体检测(FAS)比较火热,这块的文章投稿和录用量剧增,AAAI录了2篇(上年0篇),CVPR也录了大概6篇(上年4篇)。
本文主要讲解 奥卢大学Oulu, 西工大NPU,自动化所NLPR,Aibee,明略科学院等合作的3篇文章(一篇Oral,一篇Spotlight,一篇Poster)。
值得一提的是,基于中心差分卷积 ( Central Difference Convolution CDC )[1] 和对比深度损失 ( Contrastive Depth Loss )[2],
该团队斩获CVPR2020 ChaLearn Face Anti-spoofing Attack Detection Challenge 活体检测国际大赛的 Track多模态 冠军 + Track单模态 亚军,
具体代码也已开源:https://github.com/ZitongYu/CDCN
一、CDCN [1], CVPR2020
![](https://i-blog.csdnimg.cn/blog_migrate/afa539b9199dd77ab41f3c041c0c54b2.png)
看文章的组织架构,你会发现跟谷歌的MixNet有点类似,就是先设计新的搜索操作子,然后引进NAS里,取得更好的性能。
也就是说,文章的重心是放在新型卷积操作的设计。
主要的贡献是:
提出了中心差分卷积CDC,在基本不增加参数和运算量的前提下,大大提高了网络对细节信息的表征能力,及对环境变化的鲁棒性。
第一个尝试用NAS来解决FAS问题,假定现有的架构的 repeated block 并不是最优的。
首先我们来看看Fig.1,使用普通卷积非常容易受到光照camera型号等影响,而使用CDC后网络更能捕捉到spoofing的本质特征,且不容易受到外部环境的影响。
接着我们来看看CDC的公式:
![](https://i-blog.csdnimg.cn/blog_migrate/e0d223e2d88cbdf0465a54502ce11df9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ea683e76964940c3c8f242cb085804d8.png)
分别为输入,输出的feature map;
为卷积核参数;
为当前位置,
为局部邻域
的 index。最重要的超参
,范围是 [0,1],当
时,CDC就变成普通vanilla卷积;当
时,就只用了差分信息。
当然,这参数可以手工调,也可以自动进行学习,文章里都有对应的消融实验。CDC的代码实现也非常简单,在 Pytorch 或 Tensorflow 只需要几行代码。
上图展示的是文章中用的 Baseline network [4],是18年CVPR中MSU提出来的,我们只用了其单帧伪深度预测的那部分结构。
为了公平对比,我们不改变任何的网络架构,只将原始卷积全部换成CDC,结果如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/219f1add1838091784407223156d8a9d.png)
Fig. 6 (a) 可见,在OULU-NPU的 protocol-1上,baseline( )的结果为ACER=3.8%,而随着
越来越大,性能逐渐变好,当
时,取得了最好的性能 ACER=1.0%。
也就是说,局部零阶intensity信息 和 一阶gradient差分信息 都在网络中扮演重要的角色,且在活体检测任务中,梯度信息的作用稍微重要一点。
另外我们也探讨了CDC与现有的 LBConv [5] 和 GaborConv [6] 的性能差异,如 Fig. 6 (b) 所示,CDC在活体检测任务中性能远超它们。
----------------------------------------------
最后,我们把基于CDC的搜索空间,用PC-DARTS [7] 进行low-level, mid-level和high-level的cell架构搜索;
在搜出来的backbone里再添加上多级注意力模块,进一步整合multi-level 特征,得到 CDCN++。
贴个在 OULU-NPU 数据集上的实验结果供参考:
![](https://i-blog.csdnimg.cn/blog_migrate/87f35dde09725cd54dafed871feafd45.png)
未来展望:
一方面,我们会继续对CDC进行拓展完善;
另一方面,后续会开拓CDC在其他视觉任务的应用,比如 多媒体质量评价,人脸篡改检测FaceForencis 等等。
当然,也希望未来的NAS search space里都把CDC考虑进去,毕竟普通vanilla卷积只是CDC的一种特例,使用CDC进行搜索,具有更大的可能性。
二、FAS-SGTD [2], CVPR2020 (Oral)
代码链接:https://github.com/clks-wzz/FAS-SGTD
![](https://i-blog.csdnimg.cn/blog_migrate/c9b9f115a76b78e17fc169ab5d8b6f92.png)
前几年的活体工作,对时空信息探索得较粗糙,基本都是ResBlock直接过去,然后接个LSTM,虽然都搞个CAM来可视化一下,但真的很难知道学到了什么,为什么会性能好。
FAS-SGTD致力于从 空间Spatial 和 时间Temporal 层面来揭秘活体检测。
主要的贡献有:
为了更好表征spatial信息,提出基于空间梯度幅值的 Residual Spatial Gradient Block (RSGB)。
为了更好表征temporal信息,提出多级短长时时空传播模块 Spatio-Temporal Propagation Module (STPM)。
为了让网络更好地学习到细节的spoofing patterns,提出了细粒度的监督损失:Contrastive Depth Loss (CDL) 。
提出了新型数据集 Double-modal Anti-spoofing Dataset (DMAD) ,第一次对 真实传感器感知的Depth 和 PRNet产生的伪Depth 作为监督信号时的性能差异进行实验分析。
---------------------------------------------
我们先来看看经典的 Fig.1 和 Fig.2,形象地阐述了Living face 和 presentation attacks 的一些时空差异:
![](https://i-blog.csdnimg.cn/blog_migrate/022b8693b8621e9a85d6b1138cd6efcc.png)
从上图经典 Sobel 算子出来的 spatial gradient magnitude map 可见,真实人脸具有更细致可靠的空间特征。
![](https://i-blog.csdnimg.cn/blog_migrate/8e7d49c0fc7a5261ba2d9b858956d55d.png)
从上图简单的 Structure from motion 简单示意图可见,帧间的micro motion能够更好地重构出有用的立体信息,而真实人脸和假脸的立体信息也是有差异的。
----------------------------------------------
残差空间梯度模块 RSGB:
![](https://i-blog.csdnimg.cn/blog_migrate/6de7bb8ec7825ebbca56cab6bd5e96ea.png)
后面文章提交后才发现,跟 Kaiming 的这篇CVPR2019 "Feature Denoising for Improving Adversarial Robustness" [8] 想法有点撞车了。
不过出发点是相反的,文[8]中是为了尽量不受 Adversarial 扰动的影响,所以在 feature map level 进行 denosing 残差操作;
而本文RSGB更关注局部细节信息,故在 feature map level 进行 sobel 残差操作。
做计算机视觉任务的有趣地方就是,不同任务需要涉及 task-aware knowledge, 很难有像 machine learning一样通杀。
--------------------------------------------
多级短长时时空传播模块 STPM:
![](https://i-blog.csdnimg.cn/blog_migrate/d660cf1caa82ce3a167e772a61b4e715.png)
不同于OFF [9] 的是,我们考虑到了未来帧的spatial gradient features,这对多帧活体检测任务是非常重要的,具体关于STPM的消融实验请阅读原文。
---------------------------------------------
对比深度损失 CDL:
![](https://i-blog.csdnimg.cn/blog_migrate/2fed2800e8dea810e1cb0eb6674ed627.png)
在Pixel to Pixel 的传统MSE loss基础上,加上 Local to Local 的CDL,能保证网络学到更细粒度的特征表达。
-------------------------------------------
双模态活体检测数据集 DMAD:
![](https://i-blog.csdnimg.cn/blog_migrate/fca2c729474cc70e0db5cf95f5de8db3.png)
内含多种material材质,且包含多帧的真实depth信息,对于研究 Temporal Depth 很棒~
--------------------------------------------
最后来贴个很challenging的跨数据集的实验结果,FAS-SGTD 非常鲁棒:
![](https://i-blog.csdnimg.cn/blog_migrate/e1b59d7f595b51650fdff3735f73acf8.png)
三、AIM-FAS [3], AAAI2020 (Spotlight)
代码及Protocol链接:https://github.com/qyxqyx/AIM_FAS
![](https://i-blog.csdnimg.cn/blog_migrate/0f131096c0058ef3cf1787ca112ce23e.png)
本文的出发点是,由于市面上的 zero-shot 和 domain generalization 的FAS文章并不能全面地定义人脸防伪在实际应用中的问题。比如说:
现有的protocol没有充分对跨domain跨攻击跨模态进行组合定义;
实际应用中一般可快速得到少量新场景的数据,应当充分利用这些few data来进行可靠地部署。
因此本文提出了:
把FAS定义为一个 zero- & few-shot learning 的问题,并提出了 Adaptive Inner-update Meta Face Anti-Spoofing (AIM-FAS)。
建立了新的 FAS benchmarks (OULU-ZF, Cross-ZF 和 SURF-ZF) 来进行zero- & few-shot 活体检测研究。
----------------------------------------------
先来看看什么是 zero- & few-shot FAS:
![](https://i-blog.csdnimg.cn/blog_migrate/7cda3b0574dd142696e172547547ecca.png)
给定 Pre-defined 的Living 和 spoofing types 和 scenes 进行训练,直接在没见过的新场景(新攻击类型)下进行测试,这属于 Zero-shot;
当引入少量新场景(新攻击类型)的数据进行训练,这时就变成 Few-shot。
--------------------------------------------
为了同时解决 zero- & few-shot FAS 问题,我们提出了能自适应在Inner-update阶段进行学习的meta learning方法,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/0cf257bcc8571de0d7ba79d615e13fd5.png)
我们以更细粒度的方式重新组织了FAS的数据集,并以下面的步骤来产生 K-shot 任务:
从细粒度的FAS数据集中,采样 living 和 spoofing 各一类,作为 pre-defined living 类型
和 spoofing类型
。采样其他的 living 和 spoofing 类别作为 unseen living 类型
和 spoofing 类型
。
对 pre-defined 的 living 或者 spoofing 类型,采样
个人脸图。对于 unseen living 或者 spoofing 类型,采样
个人脸图。
使用
个 pre-defined,及
个 unseen 的living 和 spoofing 人脸图,来当成 support set。使用剩余的
个 unseen 人脸图当成 query set.
通过上述的方式,我们可以对 meta-learner 进行 zero- & few-shot 的 fusion training。
这里的meta算法是基于经典的MAML,也是分为 Inner-update阶段 和 Optimizing阶段。
不同于MAML里的 Inner-update阶段的fixed学习率,我们让meta-learner根据不同的step进行自适应地调整学习率,这就是 Adaptive Inner-update Meta(AIM)的由来:
![](https://i-blog.csdnimg.cn/blog_migrate/a0b659fbeda9b4abca78889770741ff6.png)
这里的 都是可学习的标量,而
是inner-update的step次数。
---------------------------------------------
Zero- & few-shot FAS Benchmarks:
1) OULU-ZF:single domain
![](https://i-blog.csdnimg.cn/blog_migrate/4980fe95c2b394789312c92c245d2452.png)
2) Cross-ZF: cross domain
![](https://i-blog.csdnimg.cn/blog_migrate/7df1303f4a01d782387a8438fea8bef1.png)
3) SURF-ZF: cross modal
![](https://i-blog.csdnimg.cn/blog_migrate/044dbae7b0f4521efefa03a6dbbb3344.png)
-----------------------------------------------
实验部分:
如Table 5所示,在提出的三个FAS benchmarks上,AIM-FAS能取得比之前专治zero-shot FAS的DTN [10] 更好的性能。
注意到,SURF-ZF所有方法的性能都很低,可见跨模态测试是非常challenging。
![](https://i-blog.csdnimg.cn/blog_migrate/034eaceedafb2c48df829dce1a6c3f55.png)
同时文中也给出来inner-update阶段的自适应参数曲线变化,随着学习step的增加,AIM-FAS倾向于使用更大的 :
![](https://i-blog.csdnimg.cn/blog_migrate/ef65278401f26000353738e77fb1f6f7.png)
-----------------------------------------------
Reference:
[1] Zitong Yu et al., Searching Central Difference Convolutional Networks for Face Anti-Spoofing, CVPR2020
[2] Zezheng Wang et al., Deep Spatial Gradient and Temporal Depth Learning for Face Anti-spoofing, CVPR2020 (Oral)
[3] Yunxiao Qin et al., Learning Meta Model for Zero- and Few-shot Face Anti-spoofing, AAAI2020 (Spotlight)
[4] Yaojie Liu et al., Learning deep models for face anti-spoofing: Binary or auxiliary supervision, CVPR2018
[5] Felix Juefei-Xu et al., Local binary convolutional neural networks, ICCV2017
[6] Shangzhen Luan et al., Gabor convolutional networks, TIP2018
[7] Yuhui Xu et al., PC-DARTS: Partial Channel Connections for Memory-Efficient Differentiable Architecture Search, ICLR2020
[8] Cihang Xie et al., Feature Denoising for Improving Adversarial Robustness, CVPR2019
[9] Shuyang Sun et al., Optical flow guided feature: A fast and robust motion representation for video action recognition, CVPR2018
[10] Yaojie Liu et al., Deep tree learning for zero-shot face anti-spoofing, CVPR2019
END
备注:活体
活体检测交流群
人脸活体检测等技术,
若已为CV君其他账号好友请直接私信。
我爱计算机视觉
微信号:aicvml
QQ群:805388940
微博知乎:@我爱计算机视觉
投稿:amos@52cv.net
网站:www.52cv.net
在看,让更多人看到