APP下载

基于Keras卷积神经网络的多人脸识别抗干扰研究

2022-04-05汪晨灿

关键词:池化人脸人脸识别

储 汇, 宋 陈, 汪晨灿

(安徽理工大学 机械工程学院, 安徽 淮南 232001)

随着人工智能技术的发展,人们的社会生活发生了翻天覆地的变化,人脸识别技术也得到非常迅速的发展。人脸识别技术应用场景十分广泛,特别是在安防、移动支付等领域[1]。但是,随着人脸识别应用场景的不断扩大,人们对人脸识别的准确率要求越来越高,识别环境越来越多样,识别样本越来越复杂,这就给人脸识别的稳定性和准确性带来了极大的挑战。如何在复杂多变场景中稳定、准确地识别出人脸信息成为一个研究热点,关于人脸识别抗干扰技术的研究则是人脸识别技术一个十分重要的方向[2]。影响人脸识别稳定性的主要因素包括数据源的质量、卷积神经网络的构建、优化器的选择等,需要综合考虑并权衡各种因素对识别结果的影响从而达到最佳识别率及稳定性[3]。

1 影响人脸识别稳定性的要素

1.1 数据源的质量

在采集人脸数据时,利用基于Open CV的人脸检测技术对摄像机所拍的人脸进行快速捕捉。但是在被捕捉人员面部快速移动的情况下,摄像机捕捉到光线强度的变化较快。传统人脸检测算法的稳定性较差,有可能会导致捕捉的图片出现非人脸图像或者非完整人脸。这样的不理想数据在模型训练和预测过程中会对结果会产生严重的不利影响,会导致系统有一定几率出现对非人脸物体或非目标人脸的检测识别的情况[4]。

1.2 优化器的选择

利用高阶神经网络Keras进行卷积神经网络构建,主要网络层级包括卷积层、池化层、Dropout层、平铺层、全连接层、分类层(如图1所示)。人脸识别模型在构建时常常需要采用线性堆叠式网络层,不同的层级构建产生的训练量和效果是不同的[5]。在训练模型时,需要设置训练使用的优化器,这使得优化器的适应性更强。Keras里面常用的优化器有Adam、Adadelta、Adagrad、RM Sprop、SGD、Adamax、Nadam、Ftrl等。选择不同的优化器,对人脸识别稳定性的优化效果是至关重要的[6]。

2 抗干扰的拟解决措施

影响人脸识别稳定性的因素有很多(如图1所示),每个因素在进行选择时都要考虑对整个模型的影响程度,而且每种因素之间相互干扰,需要达到一种动态平衡,即在这种情况下系统稳定性最好,识别准确性最高[7]。

图1 神经网络构建

在数据源预处理阶段增加人脸样本数据的数量,对样本中不合格的数据,主要包括非人脸物体图片和侧脸幅度较大的人脸图片及曝光量较差引起图像清晰度较差的图片进行二次纠正。否则,会对模型训练造成极大干扰,可能会出现识别图像中非人脸部分的情况。采用Open CV进行人脸数据采集时,如果不对scale Factor参数进行设置,那么该参数的默认值为1.1。如果该参数设置较大,会导致计算机运算速度加快,极易丢失对某个人脸的检测,对整个数据的人脸检测结果造成影响,识别稳定性将会降低,适当降低该参数的值有利于抗干扰性能的提升。

使用SGD(Stochastic gradient descent)优化器时,每次更新就对每个人脸图片进行梯度更新,对于人脸数据集来说,一定会存在相似的样本,采用SGD优化器在进行梯度计算时一次只进行一次更新,这样就不会冗余人脸样本,计算速度快,并且还可以增加样本,适合用于多种人脸数据训练。但是只采用SGD优化器会在ravines(曲面的一个方向比另一个方向更陡)的情况下被局限住,这时的SGD优化器会发生震荡以至于无法接近极小值,识别的结果也会不稳定。加入Momentum算法,可以加速SGD,使得在同梯度的维度上加速,在梯度方向发生变化的维度上的更新速度变慢,可以加快收敛并抑制震荡。最终在预测人脸时显示结果震荡会减少,识别准确率会变高。

3 卷积神经网络模型

采用Keras构建卷积神经网络如图1所示。输入层、隐藏层、输出层都可以包括各种网络层,以及激活函数、初始化方法、正则项、约束项。输入的图片数据经过预处理后可以用于作为训练对象、验证对象和预测对象[8]。

3.1 定义模型

创建一个序列模型用于添加网络层。每一层均可以包含一个或多个卷积、池化、Dropout、批量归一以及非线性激活函数ReLU[9]。

3.2 构建网络层

3.2.1 卷积层

人脸图片经过预处理后,得到输入图片数据y1=(W1,H1,D)。其中:W1是图片的宽,H1是图片的高,D是通道数。如果图片是RGB类型,则通道数为3,如果图片是灰度图,那么通道数为1。输入图片数据经过卷积层操作后得到输出图片数据y2=(W2,H2,D)。其中:

(1)

(2)

式中:W2是输出图片的宽,H2是输出图片的高,卷积核宽高F1,每次卷积操作的步长S1,0填充数P。

3.2.2 池化层

池化操作分为均值池化和最大池化,常用的是最大池化,其目的是减少空间信息,提高运算效率,防止过拟合。输入图片数据为卷积操作后的数据y2,池化操作后的输出图片数据为y3=(W3,H3,D)。其中:

(3)

(4)

式中:W3是输出图片的宽,H3是输出图片的高,池化核宽高F2,每次池化操作的步长S2。

3.2.3 Dropout层

Dropout层可以有效地缓解过拟合的发生,在一定程度上达到正则化的效果。Dropout层网络计算公式为

r~Bernoulli(p)

(5)

(6)

3.2.4 平铺层

3.2.5 全连接层

经过以上层的分析,得到的一维数据作为全连接层的输入数据,通过对一维数据进行加权操作和偏移量处理,最后得到输出数据

y5=wy4+b

(7)

其中:y5表示输出数据,w表示权重,y4表示输入数据,b表示偏移量。

3.2.6 分类层

softmax分类函数,又称为归一化指数函数,它是二分类函数sigmoid在多分类的推广,适用于多人脸的识别,其目的是返回分类结果的各个概率值。

(8)

3.3 编译模型

在模型中应用损失函数和优化器,由于实验的图片标签采用one-hot编码,所以损失函数选择categorical_crossentropy,分类层激活函数选择softmax,此种选择适合多类别分类的人脸识别。优化器选择SGD+Momentum的优化器后,调用compile()进行编译。

3.4 训练模型

通过调用fit()函数对数据模型进行训练。

3.5 预测

在模型训练完后,使用新的数据生成预测结果,通过调用evaluate()和predict()来完成。

4 实验结果与分析

4.1 数据源质量优化

一般来说,多人脸识别的数据量是十分庞大的,如果手动去调整工作量会变得十分庞大且效率低下,而采集人脸图片的超参数则决定了数据的质量。利用Open CV进行人脸检测时,会使用Haar级联分类器,在不同尺度下的输入图像中检测对象。detectMultiScale()函数的scale Factor参数表示一个比率,即每层图像金字塔所获得的图像与上一场的比率[10]。参数越小,图像金字塔的层级便越多,计算越慢,计算量越大,在某种程度上会获得更准确的结果,但是随着检测量变大,有时实际错误检测率也会提高[11]。scale Factor取值在1.10~1.20之间,人脸检测准确率较高,在1.10之后准确率开始骤降,如表1所示。

表1 超参数调整

4.2 优化器的选择

选择SGD+Momentum的优化器与常用的Adam优化器做对比实验,一般Momentum的超参数取值为0.9,动量公式:

vt+1=μvt-ε∇f(θt)

(9)

θt+1=θt+vt+1

(10)

其中:ε>0为系统学习率,μ∈[0,1],∇f(θt)是θt的梯度曲线,v为矢量速度。

两种识别器的对比结果如表2所示。由表2可知,SGD+Momentum优化器相较于Adam优化器能够在训练轮数较少的情况下更快速、更稳定地达到较高的准确率,而且两种优化器的准确率数值基本保持不变。最终经过30轮训练,多人脸识别准确率、验证准确率、损失率、验证损失率随训练轮数的折线图如图2、图3所示。

表2 优化器对比

图2 准确率和验证准确率

图3 损失率和验证损失率

5 结 语

通过对数据源的纠正、卷积神经网络构建的调整、优化器的选择以及超参数的调整,最终模型训练准确率最高可达99.98%,验证准确率最高可达99.73%。

猜你喜欢

池化人脸人脸识别
基于高斯函数的池化算法
人脸识别 等
卷积神经网络中的自适应加权池化
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
基于卷积神经网络和池化算法的表情识别研究
三国漫——人脸解锁
用于手写汉字识别的文本分割方法