卷积神经网络作为一种置换了传统网络中隐藏层的可自动提取样本特征的技术,具有较高的识别率。本文利用dlib与TensorFlow平台实现了卷积神经网络人脸识别。结果准确率达到了0.984,取的了较为理想的结果。

**

1 引言

**
人脸识别是通过提取人的脸部特征信息进行身份识别的一种技术。目前,卷积神经网络在人脸识别上具有一定的应用成果。该网络通过训练大量的人脸特征图像,学习其中的特征,进而实现对目标人脸的识别。但是像光照、无法扩展到平面以外等问题还是无法很好地解决。

2 卷积神经网络模型

2.1 卷积神经网络框架
如图所示为大体结构:
卷积神经网络(1)
卷积神经网络是一种前馈神经网络,包括卷积层、池化层、全连接层。基本结构包括特征提取层和特征映射层。卷积层是用核矩阵,依次与图像的每个像素做乘积,得到含有特征的信息矩阵。可以降低参数数量,防止过拟合。池化层则存在于卷积层之间,降低图像的空间尺寸。池化在每一个纵深维度上独自完成,因此图像的纵深保持不变。
卷积与池化的结合结构可以出现多次,模型的不同需求决定了这个组合的次数。也可以使用卷积层+卷积层+池化层的组合,这是没有限制的。最常见的CNN都是若干卷积层+池化层的组合,如上图中的CNN结构。
2.2 人脸识别的流程
2.2.1 人脸图像采集
通过摄像头把人脸有用的局部特征图采集下来,使用dlib识别人脸,在采集过程中要不停地变换脸部表情,使得图像具有多样性。另外,将大量其他人的人脸图像同样作为训练集,以提高模型的准确度。人脸的检测采用了dlib中的detector方法:dets = detector(gray_img, 1)
2.2.2 人脸图像检测
对人脸图像中的模式特征进行检验,利用概率统计与Adaboost挖取到人脸中的有用信息,建立起检验标准。特征提取器选用dlib自带的frontal_face_detector()方法。
2.2.3 人脸图像处理与特征提取
将图像进行灰度变化、过滤、锐化等处理后,利用卷积与池化将图像信息转化为数值信息,进一步转化为特征向量。
卷积计算:将输入的图像进行卷积核的过滤,得到输出值,卷积过程如公式:

卷积神经网络(1)
池化学习:卷积层越多,训练的压力变越大,参数也就越多,池化层能将每一层卷积的输入张量的各个子矩阵进行压缩,以降低空间维度。过程为公式:
卷积神经网络(1)
2.2.4 人脸图像识别
人脸识别存在着两种不同的方式,一种类似Apple的面容ID,反馈的结果为单人身份确认;另一种是多应用于安防领域中,存在于视频流中多选一的识别。在经过了大量的训练之后,利用训练得到的特征信息,对实时采集的个人面部图像进行鉴别,对大量人群中的某个身份进行追踪。

3 实验与分析

本文主要分析个人的识别,训练图集包含面部多表情、多姿态。结果会自动的将准确率大于0.98的图像保存下来。
本人训练集,用dlib分时段采集10000张图像。爬取13000张其他人的图像,作为挖取特征的对比训练集。OpenCV实时采取本人5000张测试集,初始维度为128*128,每500张作为一组,采取结束后,网络给出训练识别率。
十组的准确率变化如图:

卷积神经网络(1)
可以明确的显示出卷积神经网络较高的识别准确率,最高的达到了0.984。

4 结语

本文介绍了卷积神经网络人脸识别模型。通过识别结果看出,卷积的识别率比较高,这是因为CNN将传统的隐含层置换为了卷积层与池化层,能够自动提取图像的有效特征。自动提取有效特征。
海量的图像训练集与卷积过程使得CNN的迁移能力较弱,不同的目标需要重新进行训练,未来的研究目标将会在迁移方向展开。

相关文章: