基于tensor-flow神经网络算法改进的人脸识别

2018-10-25 10:27邢立宁胡耀龙
深圳信息职业技术学院学报 2018年5期
关键词:人脸识别卷积准确率

邢立宁,胡耀龙

(1. 国防科技大学 系统工程学院,湖南 长沙 410072;2. 浙江大学 信息与电子工程学院,浙江 杭州 310058)

随着社会进入大数据时代,人工智能、数据挖掘等学科在近十年得到了长足的进步。但伴随数字化和网络化的普及,个人信息的安全性和保密性越来越难以保证,传统的身份认证方法难以满足人们的要求,随着对更高效的生物特征识别技术的需求,人脸识别技术与其他生物特征识别技术包括指纹识别、DNA识别、虹膜识别等应运而生。人脸识别技术由于具有非接触性、易采集和可靠性高的特点,被广泛应用于各个行业,包括缉捕中的刑侦破案、网络信息技术安全、智能机器人系统等领域[1-3]。正是如此高的应用广度与前景,如何提高在实际应用中人脸识别的效率和准确率成为了一个重要的研究课题。

第一代神经网络的提出源自于哈贝教授和威塞尔教授在研究方向选择的神经元时,在猫的大脑皮层中找到了其特殊的结构能够对神经网络的降低产生作用[4],在此基础上卷积神经网络(Convolutional Neural Networks,简称为CNN)应运而生。日本福岛的K教授在1980年使用卷积神经网络实现了新型识别机[5-6]。自1980年后,数十年间许许多多的研究者构建了不同结构的卷积神经网络以进行改进,在诸多研究成果中,最具优越性的卷积神经网络是亚历山大教授和泰勒教授所提出的“改进认知机”。“改进认知机”这种方法的创新点在于能够大幅减少在误差反向传播过程中的时耗问题[7]。如今,卷积神经网络在诸多学科领域已经大放光芒,尤其在模式识别和分类领域,因其预处理的高效性使得越来越多的研究者探索其中,以期得到更好的效果。

1 神经网络

1.1 浅层网络与深层网络

传统神经网络也称浅层神经网络,由于浅层神经网络一定程度上夸大了其生物的可信性,导致其在研究初期具有广泛的应用[8]。但从实际应用出发浅层神经网络在模式识别方面仅从较浅显的模仿生物的过程进行研究,具有诸多限制因素,因此应通过提高神经网络层数以提高识别效果[9]。

1.2 卷积神经网络

自二十一世纪以来,人脸识别算法主要由特征选取的多少分为两类:全局特征与局部特征。基于局部特征的简便性较全局特征选取稍弱,但通过一定程度的图形变换能够得到比后者更好的匹配识别效果,如今已经成为人脸识别中聚焦的热点[10]。

此外,根据现场图像识别的情况不同,可以分为受控场景人脸识别和非受控场景人脸识别[11]。近年来,伴随大数据井喷式的发展,深度学习为许多计算机视觉问题带来了根本性的改变。在实际应用中,识别技术需要能够对人脸在不同情况下如角度、光照等因素产生变化时,仍然能正确认出人脸图像。传统人脸识别方法在准确率与辨识时间上都具有局限性,而依靠深度学习带来的新方法,能够通过强大的学习本领极大地提高在人脸数据库上的准确率。

卷积神经网络(CNN)是现有神经网络中较成熟的一类,已经成为当前人脸识别领域炙手可热的研究热门。卷积神经网络在训练过程中能够对人脸进行特征提取、学习,不必对特征进行人为寻找,可以认为其实质为一种多层的神经网络结构[11],和传统的浅层网络不同之处在于其每层上都有多个二维平面,含有许多独立神经元。通过卷积神经网络能够大量减少人为提取特征所需要的工作量,同时又能够分层逐步提取特征,最终获得输入图像在高层次的特征表达,极大消除非受控状态下人脸识别问题中各种复杂的干扰,为解决非受控场景下的人脸识别中的复杂干扰提供了新的思路。

1.3 基于tensor-flow的CNN算法

在深度学习中,Tensor-flow能够解释为张量流。其中Tensor表达了经过运算后的输出值,每一个Tensor的运算不保留其数值,仅保留产生该值的处理方法。通俗来讲,如果进行1+1的运算,这种运算方式就是一个Tensor实例,而不是储存得到的和2。因此通过tensor-flow能够得到的常用api均为计算方式,当系统需要调用该计算结果时,才会计算输出一个值。

因此,通过使用Tensor能够表达一维常数甚至N维数组的值,而tensor-flow形成的卷积神经网络框架中的flow则表示其数据传输的传入传出都是tensor。本实验对针对CIFAR-10数据集的基于tensor-flow的CNN算法进行改进,得到了更高的准确率和可靠性,过程中对各部分细节的调整结果也能对卷积神经网络的构造提供理论帮助。

1.4 实验数据集

CIAFR-10数据集由Alex Krizhevsky,Vinod Nair和Geoffrey Hinton收集,是一个经典的图像识别数据集,类之间完全互斥,与实验用数据集类似,而现存CIFAR-10的神经网络算法也较多。

本实验数据集使用类似CIFAR-10的图片集,含有1311个人的图片,每个人48张,总共1311*48张,这48个人是连续存放(易于分配训练集与测试集)。每张图的大小是31*31的RGB图。Label从0-1310,使用两个byte来存储,如下图,label分别为15,128,1310。

图1 数据集表示Fig.1 Data set

2 实验过程

2.1 神经网络结构

图2 神经网络结构Fig.2 Neural network structure

该结构经过了多次尝试后确定下来,在CIFAR-10的基础上进行调整。

2.2 调整过程

2.2.1 改变特征维度与增加卷积层

通过在结构上将第一层卷积层提取的特征维度设置为48后,发现减少其特征维度后,能够大幅提高计算机的迭代过程,但准确率降低,迭代46万次后仍只有50%。

图3 抓取改变特征维度后训练日志Fig.3 Training log after changing feature dimensions

而参考ALEX的相关论文,想要在降低特征维度并提高迭代速率的基础上提高识别的准确率,应尝试通过增加卷积层的方式提高准确率。因此,将卷积层数提高到4,能够发现在迭代4万步后准确率稳定在0.6,但由于提取特征过程中的过拟合问题,即使在后续通过调整参数(改变特征维度、神经元个数)来继续提高结构的准确率,也仍然无法突破0.6。

图4 抓取增加卷积层后训练日志Fig.4 The training log after increasing the convolution layer

2.2.2 改进过拟合问题

通过初次参数调整结果分析,严重的过拟合问题限制了准确率的提升,因此在神经网络中加入正则化方法来放置过拟合,具体方法如下:

(1)权重衰减。在第一和第二个卷积层中让wd=0.0005,通过权重衰减来强调神经元的稀疏化。

(2)引入drop out。修改inference(images)函数成为inference(images , dropout)函数,即在训练的过程中引入了drop out,在eval的时候不使用drop out。

(3)对L2进行正则化处理。

(4)在max pooling的时候通过设置步长让区域重叠。

而在训练中,设置Batch size=128与初始学习率为0.1。最后一个模型的训练次数为157000步。

结果表明,使用了drop out、权重衰减和L2正则化方法能很好地避免过拟合问题,优化方法上使用梯度下降法。

2.3 最终结果

表1 迭代步数与准确率Tab.1 Iteration step and accuracy

而变化曲线和Loss函数的下降情况如图5和图6。

图5 迭代次数与准确率Fig.5 Number of iterations and accuracy

图6 Loss函数下降情况Fig.6 Loss function drop

在神经网络的训练过程中,能够发现损失函数收敛情况与准确率提升情况并不完全一致,收敛得较慢,迭代末期基本在1.4-1.2间波动,即使损失函数在一个区间内进行波动时,准确率仍能缓慢上升。神经网络层收敛情况如图7至图9。

图7 conv1损失函数收敛情况Fig.7 Conv1 loss function convergence

图8 conv2损失函数收敛情况Fig.8 Conv2 loss function convergence

图9 local3损失函数收敛情况Fig.9 Loca13 loss function convergence

3 结论与改进

在CIFAR-10框架上改进的tensor-flow模型,在调整过程中发现,在输入过程中,去除随机剪裁图片的语句,直接使用31*31图片进行训练,相比剪裁后的模型,准确率更高。

(1)减少神经网络中第一个卷积层中的特征维度能够使计算机的迭代速率变快,但不具有足够表征度的特征维度会导致最终的准确率下降,可以选择Alex的相关文献中使用主成分分析法(PCA)对图片集进一步预处理,使特征维度更清晰。

(2)神经网络的前两个卷积层中加入权重衰减、local3和local4之间以0.5的概率drop out。这样处理之后,发现loss收敛的速度减慢了,到最后一直在[1.4,1.2]之间波动,但是准确率却能一直稳健上升,最后识别能够达到0.855的准确率,相比初期提高40%,而迭代次数却只需初期的1/3。

(3)在GAUSS分布初始化权重W时,参考相关文献将均值设为0,标准差设为0.01能够得到较好的初始化结果。

(4)增加卷积层数能够使神经网络学习到更加全局化的特征,但也更容易导致过拟合问题。在增加卷积层的同时对卷积层进行正则化方法规避过拟合的风险能够进一步提高识别的准确率。

4 结束语

本文为了提高人脸识别算法的准确性和迭代速率,提出一种基于tensor-flow改进的卷积神经网络模型。首先在调整特征维度、神经元参数等,得到参数对准确率、迭代速率的影响。针对过拟合问题,使用drop out、权重衰减和L2正则化方法改善了过拟合问题,并加入梯度下降法对神经网络模型进行优化得到了新的卷积神经网络。实验结果表明,与tensor-flow神经网络相比,最终控制损失函数的收敛在可接受区间内时,准确率能不断提高,达到0.853。本实验能够对实际神经网络设计过程提供理论帮助。

猜你喜欢
人脸识别卷积准确率
人脸识别 等
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
基于傅里叶域卷积表示的目标跟踪算法