最近读了《LiveNet: Improving Features Generalization for Face Liveness Detection using Convolution Neural Networks》这篇文章,做一些记录,方便大家理解也方便自己查阅,可能会有不对的地方,请指出。
文章部分
摘要:
摘要部分指出了现阶段CNN进行face anti-spoof存在的问题:对于同一个数据库进行检测取得了良好的效果,但对于跨数据库或者约束不严格的检测效果不理想。文章提出了一种新的检测方法,训练数据采用小批量的、随机(如 bootstraping)从多个anti-spoof数据库中抽取的图像。实验结果表明,新的方法将训练次数降低了18.39%,跨数据库检测时HTER在CASIA-FASD和REPLAY-ATTACK分别降低了8.28%和14.14%。
1、introduction
介绍了生物识别的广泛应用、欺骗方式(paper、video、3D mask)以及anti-spoof的重要性。同时介绍了传统和CNN方式的anti-spoof。指出了当前大多数CNN模式的不足:使用一个浅的、经过预训练的Alex Net,并使用转移技术将该网络转移到自己的应用上。这个方法限制了实时性anti-spoof检测(why?)。此外,这些方法没有使用端到端学习策略,在训练CNN网络之前使用传统的特征提取方法,在训练CNN网络之后使用SVM分类器。最后,这些方法都应用在数据库内部,而不是跨数据库。
本文贡献
1、提出了一种端到端训练的CNN模型,提高了泛化的能力,不局限在某个数据库,因此可以应对未知攻击。
2、分析了该方案在数据库内部和跨数据的性能,还有不同协议下的反欺骗和活性检测。
2、Conventional CNN Network Based Face Liveness Detectio(传统的基于CNN网络的人脸活性检测)
anti-spoofing可以分为两大类:活性检测和欺骗攻击分类。活性检测是一个二分类问题,即真或假。攻击分类不仅要判断真假问题,还要找出攻击类型。
以往论文中提出的方法存在的问题:
(1)CNN太浅,层数太少,泛化能力差
(2)不是端到端
(3)跨数据库检测能力差
3、Methodology(方法论)
CNN的主要设计思想是区分真假脸,提取能够用作区分真假的特征图。在有约束的数据库上训练CNN通常会导致过拟合,因此采用下图的训练方法。
随机抽取样本不是将数所有据库中的样本打乱随机抽取,而是在每个数据库中抽取连续的小批量样本。样本总量( epoches)用ET表示,每个轮次表示为 Eps。Ek表示第k次。最小批量表示为Bs(xi^t).有:
所以,在每次训练Ek中,训练样本被抽样Eps次,总训练次数被抽样C次。每个CBB网络的前向通过和一个子训练绑定,60次子训练相当于一个完整的训练。下图分别展示了使用传统训练方法和提出的训练方法对VGG-11网络的训练:
传统训练时小批量数据可能产生过拟合问题,这是由于网络的容量大于数据量,尽管dropout层可以一定程度上解决这个问题,但是由于反欺骗数据库的图片数量太少,过拟合的问题还是存在。以下给出一些减少过拟合的方法:
1、网络对多个视频帧进行训练,使得CNN网络可以学习到更多可区分特征
2、使用端到端的网络