左浩宇
(四川大学计算机学院,成都610065)
人脸识别一直是模式识别领域中的一个热点研究问题,其应用场景也很多。例如,苹果公司推出的人脸识别解锁,摄像头监控中的人脸身份识别等,在商业及安全等都有着很重要的应用。而随着人们对人脸识别的精度与鲁棒性有着越来越高的要求,如在一些极端恶劣的条件下有效的进行人脸识别。在手机的人脸识别解锁中,需要考虑人物的表情,面部装饰等其他遮挡物带来的影响;而在摄像头的视频中,需要对模糊的人脸进行身份认证。因此,人脸识别算法的研究受到了大多数研究者的重视。
快速高效的人脸识别建立在人脸区域内的关键信息特征点的鲁棒性检测和定位上,其主要是结合计算机的视觉分析模拟人脸姿态,实现对人脸信息的重构,结合特征信息对样本进行学习和训练,通过设计特定的分类器对人脸特征进行检测和识别。目前较为常见的人脸特征提取方法即使用卷积神经网络模型对人脸训练并提取特征,再将提取的特征放进其他模型中进行分类。
传统的人脸识别方法分为单样本的人脸识别与批量的人脸识别。例如主成分分析、神经网络训练,或者LBP特征提取方法等。与传统的人脸识别方法相比,卷积神经网络以原始的图像作为输入样本,在卷积的过程中一步步提取图片的特征并整合,最后输出每张图片经模型后的特征,其中减少了对训练样本的处理工作,并通过模型的学习能力抽取特征,不仅仅减少了复杂的工作量,同时提取的特征用作分类后也有着很好的效果。
昆明理工大学的赵显欢等人[1]提出了多列深度卷积神经网络,其目标针对图像分类问题专门设计的一个模型,增加了网络的层数,从而提高了网络提取图像特征的能力。构造的多列深度神经网络模型由多个图像预处理的3个深度卷积神经网络组合而成共15个深度卷积神经网络,将这些神经网络随机构成一个多列的深度卷积神经网络模型;张军朝等人[2]提出采用人脸的姿态和神经网络相结合的人脸识别算法,其中人脸的姿态通过模型自动校准,并减少了光照角度等不确定因素对人脸图片的影响,增强了人脸对环境变化的鲁棒性,最终采用随机森林分类;王灵等人[3]提出了一种改进Softmax分类器的深度卷积神经网络的方法,利用一个回归算法对网络输出的特征分类并识别;黄超等人[4]结合了卷积神经网络和支持向量机进行人脸识别。首先,对人脸图像进行卷积和下采样处理,处理后由支持向量机分类识别;李淑[6]利用卷积神经网络处理视频中的人脸识别,通过截取视频中的帧,检测当前帧中是否含有人脸,并跟踪人脸检测是否有新的人脸加入;曹金梦等人[7]搭建了一个双通道卷积神经网络,同时从人脸灰度图像与对应的LBP图像中自动提取特征,其中灰度图像倾向于面部细节的捕捉,针对图像不同特点调节网络的参数,利用Softmax进行分类。该网络能够自动提取不同通道人脸图像的特征,并进行加权融合,从而给出较为准确的表情识别结果。
上述研究学者都提出了一种在卷积神经网络的基础上对网络的结构或者分类器的模型进行改进的方案来优化人脸识别的准确率,故本文将卷积神经网络提取的特征作用在传统的分类器上,并观察其分类性能,分别使用支持向量机和朴素贝叶斯分类器对网络提取的特征分类并比较这两类分类器用作人脸识别的性能优劣。
卷积神经网络是近年来的重点研究对象,其中,神经网络的思想来自于在对动物的脑神经研究其神经元时发现脑中的独特网络结构可以降低网络的复杂度,并将其应用在计算机学科中。目前,卷积神经网络已经成为了最受欢迎的模型,特别是在图像分类领域,由于其避免了对训练集的预处理,从而可以简化工作流程,故被大多数学者应用。
1.2.1 卷积层
卷积层即模型中专门抽取图像特征的层,其一般由多个不同的卷积核构成,卷积核卷积后生成特征图,特征图之间有共享的神经权重,且每一个权重都与上一个神经元连接,其具体公式如下:
其中l表示层数,j表示第j个特征图,k表示卷积核,f表示激活函数,b为偏置。
1.2.2 池化层
池化层利用了图像的局部相关性原理,对卷积层输入的特征在一个小的区域内进行统计,在降低了维度的时候,保留了相关的信息。常用的池化层包括最大池化层、最小池化层、平均池化层。在池化操作后,输入特征图的宽度和高度缩小为原来的1/n。其中池化层的表达式如下:
其中,β表示乘性偏置,down表示池化函数。
支持向量机是一种监督式的理论研究方法,它建立在统计学习的基础之上,一般用来解决回归问题,异常点和分类问题。他的一个重要性质是模型在优化的过程中也对应了数学问题中的凸最优化问题,故其大多数的解都是全局最优解。
如果假设训练的数据集在特征空间中是线性可分的,在支持向量机中,引入了边缘的概念,被定义为决策边界与任意样本之间的最小距离。其中,决策边界被选为使边缘最大化的那个决策边界。这种算法选择了一个特征集合,并训练目标函数,使得目标函数对于划分的集合可以表示为对整个数据集的划分结果。不仅提高了训练集的划分能力,还降低了内存的消耗。
支持向量机的优点在于整个算法的训练过程训练时间短,且推广能力强,模型的建立较为简单且实验结果与实际结果较为接近[8]。
假设线性可分类样本的集合为(xi,yi),n维空间中线性判别函数通常选择如下函数:g(x)=wx+b,而分类面方程如下:
若要对样本正确的分类,则要求满足条件:
其中sgn是符号函数,b为阈值,对于样本来说通过计算f(x)来对样本分类。
朴素贝叶斯分类器是一个传统的分类器。它的主要思想即以先验概率为依据去判断样本的类别,并通过这个依据选取概率最大的类别作为样本的所属类别。贝叶斯分类器的训练过程分为两个阶段,样本训练阶段和分类阶段。分类器训练阶段的目的是生成分类器,并对一个样本进行分类。
朴素贝叶斯分类器由于其计算高效,且具有坚实的理论基础,但是其具有条件独立性这一个前提,在满足这个条件下,可以达到误分类率最小[9]。
朴素贝叶斯分类的模型如下:给定一组训练集{(x1,y1),(x2,y2)…(xm,ym) },其中m是样本的个数,每个数据集中包含n个特征,即xi=(xi1,xi2…xin)。设p(y=yi|X=x)表示输入的样本为x时输出的y为yi的概率。故分类器的依据就是找出最大的p(y=yi|X=x),就将x分为yi类。依据贝叶斯定理,有:
而由于上式的分母都是一样的,故朴素贝叶斯分类器判别公式可以写成如下形式。
算法主要包括两个框架,分别是使用SVM分类器和朴素贝叶斯分类器。主要思想是使用通过训练好的卷积神经网络模型提取人脸的特征,之后利用支持向量机以及贝叶斯分类器进行分类。算法框架如图1。
图1 算法的框架图
算法主要包括三个步骤,图像的预处理,卷积神经网络提取特征和特征分类阶段。在网络的学习过程中,利用训练的样本图像对神经网络进行训练,之后通过训练好的卷积神经网络提取输入图像的特征,将这些特征放入两个分类器进行训练。在实验的验证过程中,通过卷积神经网络提取特征后,放入分类器识别图片并于正确结果进行比较来对比分类器的性能。
在对人脸图像进行预处理的时候使用到了dlib中的人脸识别方法。dlib是一个现代的C++工具包,包含了用C++创建复杂软件来解决实际问题的机器学习算法和工具。它被广泛应用于工业界和学术界,包括机器人、嵌入式设备、手机以及大型高性能计算环境。
Dlib人脸检测使用HOG特征与级联回归树算法训练的模型,可以检测图片中人脸的数量以及位置。
在将图片放入神经网络模型训练时对人脸图像进行预处理,步骤如下:
(1)将图像转换为灰度图。通过cv2中的cvtColor函数将测试集中的图像转换为灰度图。
(2)人脸位置检测。利用dlib中的函数,识别图片中的人脸位置。
(3)图像缩放。获得了图片中的人脸位置后,通过resize函数放缩图片至人脸周围的64×64大小。
(4)图像归一化处理。将图像转换为灰度图像后,其颜色的灰度值在0~255。将缩放后的图像原始像素除以255进行归一化。
卷积网络主要是由输入层、卷积层、池化层、全连接层和输出层构成的。每一层都有神经元的个数,卷积核的个数和相关参数,池化函数等不同的特征,而训练神经网络的目的就是训练这些参数。由于目前卷积神经网络的理论知识尚不完整,故有一些参数的选取都是通过经验来选择的。本文设计的卷积神经网络结构如下:
(1)输入层由64×64的灰度图像作为输入。
(2)卷积层L1由32个3×3的大小的卷积核组成,填充后卷积得到了32个大小为64×64的图像。
(3)池化层S1在2×2的范围内对L1输出的图像进行最大值池化,得到了32个大小为32×32的图像。
(4)卷积层L2由64个3×3的大小的卷积核组成,填充后卷积得到了64个大小为32×32的图像。
(5)池化层S2在2×2的范围内对L2输出的图像进行最大值池化,得到了64个大小为16×16的图像。
(6)卷积层L3由64个3×3的大小的卷积核组成,填充后卷积得到了64个大小为16×16的图像。
(7)池化层S3在2×2的范围内对L3输出的图像进行最大值池化,得到了64个大小为8×8的图像。最后通过全连接层,输出一个512维的特征向量作为提取的特征。
具体的卷积神经网络结构如表1所示。
表1 卷积网络神经结构
实验使用的数据集是LFW人脸数据集。LFW(Labeled Faces in the Wild)人脸数据库是由美国马萨诸塞州立大学整理收集并得到的数据库,主要用来供人脸识别的训练使用。数据集中一共含有13000多张人脸图像,每张图片都标有不同的ID,其中大约1680个人包含两个或以上的样本数据。
在使用这个数据集时,选取了13,233张人脸图片。对人脸图像预处理后,放缩成为64×64的图像作为待处理的图像。其中图像由多个不同的人脸身份采集。且表情和环境都存在一定的差异。本文将原始数据集分为十份,其中九份作为训练集训练模型,一份作为测试集作为正样本测试结果,负样本则选取与正样本数量相同的非人脸数据集合。
在卷积神经网络中,卷积核的数量尺寸以及学习率的设置都会一定程度上影响神经网络的性能。
在卷积核的尺寸选择方面,为了确保卷积后的特征图为整数,且经过三层的卷积和池化后可以从64×64的图像卷积到8×8的图像,所以选择的卷积核尺寸为3×3。每一层卷积前后的图像尺寸变化可以由下式得到:
其中卷积前的图像大小为n×n,卷积核的大小为m×m,卷积后的图像大小为s×s。由于卷积时采用了填充的方法,故每次卷积过后的图像尺寸不会发生变化。
图2 训练集的人脸集合
卷积核个数的选取与卷积神经网络的准确性相关。如果卷积核的数目越多,则提取的图像特征越多,但是训练的时间也会相应的变多。且每个数据集适合不同的卷积核个数,如果卷积核个数过多,则网络中的权重参数W的个数也变多,网络变得更加复杂,而由于训练集的样本个数不够,选取的样本和可提取的特征有限,故其无法满足网络的需求,所以学习的效果也会相应的变差。所以在对不同的卷积核个数实验对比后,选择了第一层的卷积核个数为32个,后两层的卷积核个数为64个。
学习率不仅影响了网络中的训练收敛速度,同时也影响了网络的训练时间和正确率。学习率过大会导致网络不收敛,而学习率过小则会导致网络的收敛时间过慢。在实验当中选择了一个经验值0.01作为神经网络的Adam优化算法的学习率。
在支持向量机中也有参数需要设置,主要包括错误项的惩罚系数和采用的核函数是何种类型。错误项的惩罚系数越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。相反,减小错误项的惩罚系数的话,容许训练样本中有一些误分类错误样本,泛化能力强。由于实验的人脸识别中,对正确率的要求较高,所以选择了一个较高的错误想惩罚系数0.9。核函数的类型选择了高斯核函数,因为样本是图片,其具有线性不可分性,且卷积神经网络提取的特征没有包含任何的先验知识,故使用这个核函数。
3.3.1 训练过程
在使用卷积神经网络训练的过程中,使用Tensor-Board可视化工具查看训练过程。其中准确率的变化过程如图3所示。
图3 卷积神经网络训练准确率(accuracy)变化过程
可以看到,随着训练次数的增加,卷积神经网络的准确率越来越接近于1。在实验中设置的训练终止阈值为0.98,所以当训练的结果准确率大于或等于0.98时则停止训练。
定义的损失随着训练过程的变化如图4所示。
图4 卷积神经网络训练损失(loss)变化过程
在训练的过程中,损失越来越接近于0,最后收敛到了0.100附近。故整个网络的训练过程是逐渐收敛的,且收敛的速度较快,在训练到700次左右时,网络训练完成。
3.3.2 结果对比
在进行实验时,实验的训练阶段和测试阶段是分开的。故在模型训练完成后,将模型中的参数保存,在测试阶段时再读出参数来测试模型的性能。
训练神经网络采用批处理的训练方式,每次处理128张图片作为一批,在计算误差时计算一批图片的准确率,当准确率达到98%时则表示卷积神经网络训练结束。
在训练完卷积神经网络后,用训练好的网络重新提取训练集中的图片特征作为输入训练支持向量机和贝叶斯分类器,分类器的输出即为图片的识别结果。
在测试时,分别用五个不同的测试集测试了五次两个分类器的识别结果,实验结果如表2所示。
表2 支持向量机和贝叶斯分类器结果对比
从结果可以看出,贝叶斯分类器的效果每一次都比支持向量机要好。故采用卷积神经网络提取特征与贝叶斯分类器结合的模型效果识别效果更好。
目前的人脸识别技术仍然是学术界和工程界的一个热点研究问题。本文基于卷积神经网络提取的特征,分别使用两类传统分类器:支持向量机和贝叶斯分类器进行人脸识别,并比较结合了卷积神经网络后,哪一个分类器的准确率更高,效果更好。不足之处在于可以对卷积神经网络的学习率进行一定的实验对比来选择更适合的数值,且卷积神经网络的结构也可进行多次对比选择。