Learning Hierarchical Representations for Face Verification with Convolutional Deep Belief Networks
话说这深度学习如火如荼的,在imageNet上斩获无数,在人脸识别这个领域,深度学习也不甘示弱,本系列将介绍人脸识别领域应用深度学习的工作。
这是CVPR2012的一篇工作,利用CDBN来做层次特征学习,来处理unrestricted face verification问题。由于人脸的特殊性,CDBN除了直接在灰度图像上训练,同时在LBP图像上训练(取了59维的 Uniform LBP Feature),按文中观点,CDBN可以用来提取local feature中的高阶统计信息。另外一方面,人脸被划分为若干相互重叠的块,每个块只和部分隐结点发生关联,CRBM的建模如下:
最后输出的特征进一步用CSML进行测度学习,过程依旧是先做PCA,再学测度。
实验部分在LFW数据集上进行,文章在不同网络架构下比较了random filter和基于CDBN模型的learned filter,得出结论是learned filter比random filter对网络架构鲁棒性更强,性能普遍更优。
重头戏是LFW View2上的确认实验,注意CDBN网络的参数是在View1上调出来滴。实验结果如下:
Table 1中,在Kyoto这个自然图像数据集上训练的CRBM model放在人脸上也不错。另外一个费解的地方就是,多层的CRBM提升不大,Kyoto数据集上,2层CRBM的性能甚至比一层的还要低。深度学习的拥护者普遍认为,不充分的深度是有害的。单个数据源性能最高的是Kyoto,同时使用LBP和pixel训练CRBM,Accuracy达到了86.60%,居然比人脸数据训练出的模型还高。
Table2就有些惨不忍睹了,虽然说Hand-crafted那个87.18%的性能是融合多个描述子出来的,本文工作中的86.88%也是用的SVM融合,这个CDBN和hand-crafted孰优孰劣,至少从目前这个工作中,我们得不出结论。要知道Sun Jian CVPR2013的最新工作Blessing of Dimensionality: High-dimensional Feature and Its Efficient Compression for Face Verification,利用稠密采样的多尺度LBP特征在LFW数据集上已经到达了95%的逆天性能。
Deep Convolutional Network Cascade for Facial Point Detection
本文是CVPR2013汤晓欧课题组的最新工作,利用级联深度卷积网络进行面部特征点定位。
1. Deep Covolutional Network
Deep Covolutional Network深度卷积神经网络,正是我们所熟悉的CNN(Covolutioanl neural network),CNN在上了世纪末年就已经成型[1],现如今深度学习如日中天,加个Deep顿时就高端起来了。
Figure.1 给出了Deep CNN的结构图,Deep CNN通过多层的卷积结构来提取层次特征(Hierarchical Feature),并通过max-pooling层下采样获取不变性,最后通过最上层一个全连接的MLP(hidden layer + logistic regression)[2]来实现分类。
2. Cascaded Convolutional Network
图2是整个系统的结构图,“Cascaded"就体现在这样的一个层次结构上,F1、EN1和NM1首先是一层粗的定位,后面再通过更加精细LE21等第二层检测器以及LE31等第三层检测器实现更为精细的位置修正。图中的黄色区域是每层检测器的扫描区域。注意第一层卷积网络的标识为Deep CNN,这表示第一层网络所采用的是Figure.1所示的深度结构。注意,LE21和LE22都是用来预测左眼中心的位置,区别在于扫描区域。
3. 实现细节
Level 1-3的网络结构见下表:
注意Level2-3所采用的网络结构均为S2。
下表则给出了的Level 2-3各个卷积网络的扫描区域。
从Table2可以清晰的看出LE21和LE22在扫描区域上的区别。
4. 实验
Figure.4比较了多种网络结构,Figure.5显示了多层级联结构的优势。:
Figure.6 在BioID和LFPW两个库上将本文方法与state-of-the-art方法进行了比较。可见本文方法的性能相比传统方法有较大提升(50% Accuracy improvement)。
Figure.8给出了一些检测结果,本文作者用C++实现了该方法,检测速度为0.12second/per image,相当于8frames/s,客观的说,这个速度不算快,但是检测精度的确非常给力。
参考文献
[1] LeNet-5
[2] Multilayer Perceptron
实验结果: