DeepId人脸识别算法学习

来源:互联网 发布:发音标准的软件 编辑:程序博客网 时间:2024/06/05 11:39

DeepID的目标是人脸验证(判断两张图片是否是一个人),同时衍生出人脸识别(多次人脸验证)。使用近期比较火的卷积神经网络学习特征,输入一张图片,产出160维的特征向量,然后使用现成的浅层机器学习组合贝叶斯进行分类。由于卷积神经网络计算的特征紧凑且区分度大,所以得到的效果较好。同时,为了得到更好的效果,DeepID采用增大数据集的方法,一是增加新的数据,celebFaces(87628张图片,5436个人),celebFaces+(202599张图片,10177个人);二是裁剪图片,多区域、多尺度、多通道裁剪,然后将计算的向量组合,使用PCA降维。

1.DeepID流程

这里写图片描述
图1
图1描述的是特征提取的过程,每层的数字表示的是每个卷积网络神经元的数量,随着层数的增加,神经元的数量会减少,最终产出160维度的向量。

2.DeepID网络结构

这里写图片描述
图2 网络结构

图2描述的是DeepID的网络结构,和卷积神经网络的结构类似,却别在于倒数第二层的DeepID层,同时和最后第四层的卷基层和第三层的Max-pooling层全连接,层数越高对于特征的概括越高(视野越大),包含的神经元也越少,容易造成信息损失,加上第三层的的特征,降低了信息损失。

3.DeepID实验

DeepID使用CelebFaces数据集,包含87628张图片,5436个人,采用80%即4349个人作为卷积神经网络的训练集,其余20%用于识别模型训练。
在特征提取过程中,首先检测5个人脸特征点,即两个眼睛中心点,1个鼻子和2个嘴巴边界点,基于两眼的中心和嘴边界两个点的中心做对其。然后将人脸分成60个patch,包含10个子区域、3个尺度和颜色通道。如图3所示。
图3
上面的是十张区域图片,左五张是弱一致脸,右五张是基于5个面部特征点为中心的五个区域。下面是最具代表的两个patch三个尺度的图片。对这60个patch分别使用60个卷积网络做训练,每个计算出2个160维特征向量(patch和它的水平翻转),最终得到的特征数目为2*160*60=19200,通过组成训练,最终得到的特征使用PCA降维产出150维特征向量。
人脸验证使用组合贝叶斯方法。如图4所示。
图4贝叶斯
图4
方法验证中引入CelebFaces+数据集,使用5种不同的scale将patchs数目增加至100,最终产出160*2*100维度特征,使用PCA降维至150维,基于组合贝叶斯训练的模型在LFW上得到97.2%的准确率。

4.DeepID实验结论

1.使用multi-scale 多patches的结果比只使用一个只有整张人脸的patch的效果要好。
这里写图片描述
2.使用DeepID神经网络的最后一层softmax层作为特征表示,效果很差,损失的信息太多。
3.训练集人数越多,分类的准确率都会增加。
这里写图片描述
4.DeepID自身的分类错误率较高。
这里写图片描述
5.DeepID准确率
这里写图片描述

5.引用文献

Deep learning face representation from predicting 10,000 classes

0 0
原创粉丝点击