deepface

作者:Fire_Light_
原文:https://blog.csdn.net/Fire_Light_/article/details/79558759

论文地址:DeepFace: Closing the Gap to Human-Level Performance in Face Verification

对齐

使用3D人脸进行对齐:

deepface_第1张图片

上图的解释:

a. 人脸检测
b. 二维剪切,将人脸部分裁剪出来
c. 定位67个Landmarks,然后以landmarks为顶点进行Delaunay三角化
d. 通过一个3d人脸库计算出来的一个平均3d人脸模型转化为2d图的样子
e. 这是在3d人脸模型上根据landmarks分割出来的三角网格
f. 使用3d人脸模型的67个landmarks组成的小三角形为基准,对要对齐的人脸进行一个分片仿射变换,f图展示了将人脸拉正之后的样子
g. 最终成果
h. 使用3D模型同样可以构造人脸其他角度的样子(在论文中没有用到)

deepface 网络的结构

deepface_第2张图片

前三层:卷积、池化、卷积的作用是提取一些低层次的特征,如边缘和纹理。

论文中写到,池化层的作用是使得网络对一些局部的变化更加鲁棒。

然而,池化次数太多会导致网络丢掉一些纹理的位置信息,所以只使用了一层池化层。

这几层的作用是将输入转化为一些简单的局部特征信息。

接下来的局部连接层*L4,5,6,像卷积层一样也使用了滤波器组,但是区别在于不同区域使用的滤波器不一样,即可以理解为没有权值共享的卷积层*
这样做的原因是作者认为由于对齐好的图像,不同的区域具有不同的局部统计量,卷积的空间平稳性假设不能成立,因此不同的区域需要使用不同的卷积核

最后,f7和f8是全连接层,这些层能够捕捉人脸图像中较远部分的特征之间的相关性,比如眼睛的形状与位置和嘴巴的形状与位置,f7层作为特征(4096D)。

特征的标准化(normalization)处理:

1.特征的每个维度都会除以它在训练集中的最大值。(为了降低光照的影响)

\bar{G}(I)_{i}=\frac{G(I)_{i}}{max(G_{i},\epsilon )}

2.L2范数归一化:

f(I):\underline{=} \frac{\bar{G}}{\left \| \bar{G}(I) \right \| _{2}}

训练集: Social Face Classification (SFC) dataset:4.4M张人脸/4030人

测试集:%5的SFC数据,用来测试分类能力。

最优分类错误率8.74%

验证方法:

1)简单的求两个特征向量的内积。经过标准化之后,内积越大越相似。(为了评价该特征对对人脸的判别能力)
其实这就相当于现在广泛使用的余弦距离判别方法
LFW准确率:95%

2)在LFW上训练一个感知机,即Siamese network,类似一个全连接层,以全连接层提取出来的特征作比较,计算两张图片距离的方式如下,最高达到了LFW上97.35%的准确率。
d(f_{1},f_{2})=\sum \alpha _{i}\left | f_{1}\left [ i \right ] - f_{2}\left [ i \right ]\right |
 

你可能感兴趣的:(案例:人脸)