您的位置:首页 > 其它

DeepId人脸识别算法学习

2016-03-29 11:40 176 查看
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所示。



上面的是十张区域图片,左五张是弱一致脸,右五张是基于5个面部特征点为中心的五个区域。下面是最具代表的两个patch三个尺度的图片。对这60个patch分别使用60个卷积网络做训练,每个计算出2个160维特征向量(patch和它的水平翻转),最终得到的特征数目为2*160*60=19200,通过组成训练,最终得到的特征使用PCA降维产出150维特征向量。

人脸验证使用组合贝叶斯方法。如图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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: