基于Prewitt算子的卷积神经网络人脸识别方法
2019-12-06蒋晓高玮玮杨亦乐马晓峰
蒋晓 高玮玮 杨亦乐 马晓峰
摘 要: 为了提高人脸识别算法的识别性能,提出了基于Prewitt算子的卷积神经网络人脸识别方法。首先通过直方图均衡化和Prewitt算子对人脸图像进行预处理;然后将其输入卷积神经网络进行训练,并采用指数衰减法来设置学习率加快收敛速度,使用L2正则化和Dropout来防止过拟合。该方法在ORL人脸数据库上的识别时间为0.2 s,识别率达到了98.1%。实验结果表明,利用Prewitt算子和改进的卷积神经网络能缩短识别时间,并且能提高识别率,具有一定优越性。
关键词: 人脸识别;卷积神经网络;Prewitt算子
中图分类号: TP391.41 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.10.004
本文著录格式:蒋晓,高玮玮,杨亦乐,等. 基于Prewitt算子的卷积神经网络人脸识别方法[J]. 软件,2019,40(10):1619
Convolutional Neural Network Face Recognition Algorithm Based on Prewitt Operator
JIANG Xiao, GAO Wei-wei*, YANG Yi-le, MA Xiao-feng
(College of mechanical and automotive engineering, Shanghai University of Engineering Science, Shanghai 201620, China)
【Abstract】: In order to improve the recognition performance of face recognition algorithm, a convolutional neural network face recognition method based on Prewitt operator is proposed. Firstly, the face image is preprocessed by histogram equalization and Prewitt operator. Then input it into the convolutional neural network for training, and use exponential decay method to set the learning rate to accelerate the convergence rate, and use L2 regularization and Dropout to prevent overfitting. The recognition time of this method on ORL face database is 0.2 s, and the recognition rate reaches 98.1%. The experimental results show that Prewitt operator and improved convolutional neural network can shorten the recognition time and improve the recognition rate.
【Key words】: Face recognition; Convolutional neural network; Prewitt operator
0 引言
近年来人脸识别因其识别便捷、识别对象不易伪装[1]等优点,已被广泛的应用于人机交互、门禁安全系统等领域。隨着技术的不断发展,人们对人脸识别的准确率也有了更高的要求。
传统的人脸识别算法例如DENG W提出的基于改进的主成分分析法(PCA)[2]用来描述人脸的内在结构;BELHUMEUR[3]提出的基于线性判别分析法(LDA)的人脸识别算法对人脸数据进行整体降维,映射到低维空间的方法。这些传统的人脸识别方法容易受到光照、表情、角度等因素的影响,且需要人工提取特征、过程繁琐、识别率较低、有一定局限性。
近年来,卷积神经网络在图像处理领域的表现逐年变强[4],随着HINTON[5]等掀起的深度学习的热潮,进一步推动卷积神经网络的发展。随后GoogleNet,VGG[6]等卷积神经网络将网络层数进一步加深,使得识别率不断提高。虽然这些深度卷积神经网络能将人脸识别率不断提高,但是随着层数的加深,训练难度和运算量也大大增加。
为了解决传统人脸识别算法识别率低、特征提取不便、深层次网络计算量庞大等问题,提出了一种基于Prewitt算子的改进卷积神经网络的新方法。该方法采用直方图均衡化和Prewitt算子使得人脸特征得到简化,将图像压缩后使得运算量减少。在卷积神经网络中采用指数衰减法设置学习率,激活函数使用Relu,用L2正则化和Dropout防止过拟合。
1 实验环境及数据
本实验硬件配置为Intel Core i5-4200H CPU,2.80 GHz,运行内存为4 G,显卡为NVIDIA GEFORCE GTX 950M,系统Windows 10,编程语言为python 3.7,深度学习框架为tensorflow 1.4。
采用ORL人脸库作为实验训练和测试的数据集。ORL人脸库包含40位不同性别肤色的人,每人10张照片,表情和细节均有变化,旋转尺度可达20°,照片的背景均为黑色,大小为112×92,部分人脸图像如图1所示。
2 方法
该方法首先使用直方图均衡化和Prewitt算子提取人脸的边缘特征;然后将提取的特征图输入LeNet[7]卷积神经网络模型,并且在训练时采用指数衰减法、正则化等算法来优化神经网络,提高识别率,最后再采用回归进行分类[8]。算法流程如图2所示。
2.1 图像预处理
2.1.1 人脸样本增强
直方图均衡化的基本思想是把样本图像的直方图转变为更加均匀的形式,扩大像素灰度值的动态范围[9],提高图像对比度,改善灰度值,使得样本的特征更加清晰[10]。
对数据集中的样本(如图3)采用直方图均衡化之后得到的图像如图4。
由图3和图4对比可以看出,经过直方图均衡化之后,人脸样本的特征更加突出,有利于接下来边缘特征的提取。
2.1.2 Prewitt算子
Prewitt算子是一种一阶微分算子,常用来检测图像边缘。该算法利用单个像素点与周围各点在边缘处的灰度差极值来检测边缘[11],在实际应用中通常使用水平(如图5)和垂直(如图6)两个方向模板与图像领域进行卷积来获取对应方向梯度,但若仅使用垂直和水平两个方向模板,所提取的边缘特征信息并不完善,所以通过增加45°(如图7)和135°(如图8)两个方向模板,使得人脸特征更加完整。
Prewitt算子能够有效的抑制噪声,同时也不会得到伪边缘,经过处理过后的图像特征更加明显。
2.2 卷积神经网络
卷积神经网络是一种非全连接多层的前馈型网络,因其具有较好的容错能力,并行处理能力和自学习能力所以被广泛的应用于图像处理领域。卷积神经网络结构模型如图9所示由输入层I1、卷积层(C2,C4)、池化层(P3,P5)、全连接层(F6)和输出层(O7)组成。
2.2.1 激活函数Relu
传统的卷积神经网络在使用激活函数时一般会选择sigmoid函数或者tanh函数,但sigmoid函数在训练网络时会出现梯度消失的现象[12],并且收敛速度缓慢。从图10中可以看出tanh函数的输出随着输入的不断增大而逐渐趋于饱和,所以选用Relu函数,表达式如下:
(1)
该函数具有单边抑制、相对宽阔的兴奋边界以及稀疏激活性[13]等优点,解决了饱和问题[14],使得网络的泛化能力更强。
2.2.2 指数衰减法
在训练神经网络时参数更新的幅度取决于学习率的大小。若学习率设置过大,则参数每次更新时幅度会太大,即参数在极优解两侧波动而无法到达;若学习率设置过小,则会降低收敛速度,故采用指数衰减法来动态地设置学习率,公式如下:
(2)
式(2)中为当前使用的学习率;为最初设定的学习率;为衰减系数。采用该方法后,先通过使用较大的学习率使得网络能够快速得到较优解,随着迭代次数的增加,学习率逐渐减小(如图11所示),使得模型在后期趋于稳定。
2.2.3 L2正则化
模型在已知的训练数据上能够很好的拟合每个数据甚至是噪声,而忽略了数据的整体趋势,这种情况称为过拟合。为了防止出现这种情况,采用L2正则化和Dropout技术来保证训练后的模型具有较强的泛化能力。
L2正则化就是在损失函数中加入刻画模型复杂程度的指标,即在进行优化时不是直接优化损失函数而是优化。其中表示的是该模型的复杂程度,表示模型复杂损失在所有损失中占的比例。这里的表示的是一个神经网络中的权重,计算公式如下:
(3)
由于卷积神经网络的全连接层容易出现过拟合的问题,所以在全连接层采用Dropout技术将神经元随机失活来防止过拟合。
3 实验结果与分析
本实验设计的卷积神经网络结构参数如表1所示。
在訓练时使用持续衰减的动态学习率,由于迭代次数较多,所以衰减系数一般设置为接近1的值,故设置为0.99,Dropout值设为0.5。由图12可知,优化后的网络在训练时错误率下降的速度明显大于优化前。
为了验证该算法的有效性,选取了PCA和独立成分分析法(ICA)[15]这两种传统的人脸识别算法和BP[16]、CNN[17]两种可以自动学习图像特征的算法进行对比。由于传统算法需要人工提取特征并且易受姿态、遮挡物等影响,所以采用Prewitt算子及卷积神经网络算法之后在识别率上有大幅度提升,相比于PCA提高了11.6%,同时识别时间也缩短3.6 s;相比较ICA识别率提高了4.4%。
BP神经网络由于参与运算的参数较多且易陷入局部最优解,相比较之下本算法在识别时间上提高了5 s,识别率也提高了17.2%。相比较传统的CNN,由于本算法在图像预处理阶段使用了直方图均衡化和Prewitt算子,使得图像的特征更加清晰简洁的同时也减少了参数,所以在识别时间上提高了1 s,同时识别率提高了3.7%。
4 结论
人脸图像的特征提取是提高人脸识别性能的关键之一。Prewitt算子能够有效的抑制噪声,同时也不会得到伪边缘,通过对人脸图片进行预处理后特征得到简化与加强,使得在之后的神经网络中能够提取更有区分度的信息。根据在ORL人脸库上的实验结果表明,该算法能够有效加快收敛速度和提高识别率,具有一定优越性。
参考文献
[1]赵文可, 孙玉国, 弹性RBF神经网络在人脸识别中的应用研究[J]. 软件, 2018, 39(5): 203-206.
[2]DENG W, HU J, LU J, et al, [J]. IEEE Transaction on Pattern Analysis & Machine Intelligence, 2014, 36(6): 1275-1284.
[3]BELHUMEUR P N, HESPANHA J P, KRIEGMAN D J. Pattern Analysis and Machine Intelligence[J]. IEEE Transactions on, 1997, Vol.1(7), pp. 711-720.
[4]宋婷婷, 徐世許, 基于全采样和L1范数降采样的卷积神经网络图像分类方法[J]. 软件, 2018, 39(2): 75-80.
[5]HITON G E, SALAKHUTDINOV R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504-507.
[6]YANG Z L, YUE J. et al. Vegetable Image Retrieval with Fine-tuning VGG Model and Image Hash[C]. IFAC Papers OnLine, 2018, 51(17). pp. 280-285.
[7]LECUN Y, BOTTOU L, BENGIO P, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2323.
[8]刘腾飞, 于双元, 张洪涛, 等. 基于循环和卷积神经网络的文本分类研究[J]. 软件, 2018, 39(1): 64-69.
[9]黄登斌, 胡伟文. 一种基于初级理论的直方图均衡化方法[J]. 兵工自动化, 2010(9): 45-47.
[10]安大海, 蒋砚军, 基于BP神经网络的人脸识别系统[J]. 软件, 2015, 36(12): 76-79.
[11]刘天时, 魏雨等, 自适应阈值的Prewitt地质图像边缘检测算法[J]. 小型微型计算机系统, 2016, 37(5): 1062-1065.
[12]HOCHREITER S, BENGIO Y, FRASCONI P, et al. Gradient flow in recurrent nets:the diffuctly of learning long-term dependencies[M]. Piscataway: IEEE Press, 2001: 1-15.
[13]张晓明, 伊鸿峰, 基于卷积神经网络和语义信息的场景分类[J]. 软件, 2018, 39(1): 29-34.
[14]张国云, 向灿群, 罗百通, 等. 一种改进的人脸识别CNN结构研究[J]. 计算机工程与应用, 2017, 53(17): 180-185.
[15]YANG M H. Kernel Eigenfaces vs. Kernel Fisherfaces: Face recognition using kernel methods[J]. Nips, 2002(2): 1457-1464.
[16]李康顺, 李凯, 张文生. 一种基于改进BP神经网络的PCA人脸识别算法[J]. 计算机应用与软件, 2014(1): 158-161.
[17]陈耀丹, 王连明. 基于卷积神经网络的人脸识别方法[J]. 东北师大学报: 自然科学版, 2006(2): 70-76.