活体检测 学习度量而非直接分类 Deep Anomaly Detection for Generalized Face Anti-Spoofing

Deep Anomaly Detection for Generalized Face Anti-Spoofing
Daniel Pérez-Cabo, David Jiménez-Cabello, Artur Costa-Pazo, Roberto J. López-Sastre
Gradiant, University of Alcala, Spain, 2019

通常,人脸活体分类被当做二分类问题,使用softmax训练。没有显式地考虑类的紧凑程度,不同的类在特征空间中可能交叠。且训练时容易过拟合数据集,因此在部署时性能会急剧下降。这篇论文以深度度量学习的方法来进行活体检测。


论文的方法如图1,训练深度模型学习到提取能有效区分训练集中活体和攻击样本的特征。在使用时,通过判断特征是否落入训练集中的活体样本特征分布,来检测攻击。

Alt text

Review on Metric Learning

在人脸识别、re-id等领域,提出了许多度量学习loss。目标是降低类内差异,提高类间分离度。

Center Loss

Center Loss的目标是将一类的样本在特征空间中聚集到类心,见公式1:

它与softmax loss一起提升类内的紧凑度,但后者不能保证正确的类间区分。

Contrastive Loss

Contrastive Loss强迫所有同类图片距离近,而不同类间的样本应被分开为距离margin m。它以正负图片对(同类、不同类)的形式训练。但是对所有不同类间的样本,都以m来区分,没有考虑到他们的视觉外观:

正样本对的$y_{p_{i}, q_{i}}=1$,否则为0。

Triplet Loss

Triplet Loss以三元图片组的形式,同时考虑了正负样本对。不过它虽然避免了负样本对的常量距离,也能获得很有辨识度的特征,但其triplet选择流程过于复杂:

其中$\left\{a_{i}, p_{i}, n_{i}\right\}$下标分别是三元组中的anchor、正、负样本。

Triplet loss成功应用于人脸识别中。但在人脸识别问题里,类的数量是非常多的,比如VGG2数据集里就有9000多个不同的身份。当类的数量够多时,其多样性能保证学到的特征的泛化能力。

Deep Anomaly Detection for Face GPAD

Triplet Focal Loss for Face GPAD

本文将Triplet loss与focal机制结合,公式如下:

通过将欧氏距离映射到指数核上,自动为困难样本加权。

三元组的生成方法能极大影响最终性能。传统方法以离线的形式进行采样,训练启动后并不会去适应。这篇论文提出了一个基于semi-hard batch negative mining流程的三元组选择方法。三元组会在每个mini-batch更新。

semi-hard batch negative mining(基于Deep face recognition[26])的目标是从batch中选出一个fairly相对难的样本作为negative,不一定要最难或最简单的。

  1. 在每个训练step,利用当前网络权重为每个类选出一大批样本
  2. 为所有正样本对计算距离$D_{a, p}$
  3. 对每个正样本对,为其anchor $f\left(x_{a}\right)$与所有可能的负样本$f\left(x_{n}\right)$计算距离
  4. 从满足$D_{a, p}-D_{a, n}<m$的负样本里随机选择,构成这个step训练所需的tuples

这样的选择策略保证了一个step里的样本与训练进程相关,而且由于对负样本的随机选择,提升了训练的收敛性。

现实里的人脸活体攻击会持续开发新的方法来欺骗系统,如材料、设备等。因此分类的方法容易过拟合见过的类别,而无法很好的泛化。训练时的anchor-positive对始终是活体,负样本则是任意的攻击类型。

Triplet Loss Regularization for a Metric Softmax

近期研究Triplet-center loss for multi-view 3d object retrieval[17] 证明triplet loss作为softmax函数的正则化能获得更有辨识力、健壮的特征。

公式6即metric-softmax。但如果公式6作为目标函数,应该是让anchor与positive特征距离变大,与negative距离变小,不知道是我理解有误还是论文撰写错误。
模型最终为图片输出特征,这篇论文使用了RBF-SVM对特征进行分类。

Experiment

实验是基于GRAD-GPAD框架进行的,一个最大的人脸活体检测数据集集合。网络为ResNet50的修改版,输入为堆叠的RGB和HSV,特征维度固定为512,等式4的$\sigma $与$m$分别为0.3和0.2。

消融测试

Baseline使用了基于分类的triplet loss模型,Model 1引入了度量学习,Model 2引入了focal机制。消融测试结果见表2:

Alt text

比较结果

本文与其余三个方法进行了比较:

  1. [25]基于quality[14, 33]计算手工特征,最终得到长度为139的特征向量
  2. [4],从YCbCr和HSV使用LBP提取特征并concate,得到非常高维的特征(19998的向量)
  3. [23]MSU的那篇基于额外深度图和rPPG信号的方法

比较结果见表3
Alt text