基于深度神经网络与自动标记的人脸识别算法

2020-10-13 07:36赵卫东
攀枝花学院学报 2020年5期
关键词:人脸人脸识别神经网络

赵卫东,秦 锋

(1.滁州职业技术学院,安徽 滁州 239000;2.安徽工业大学,安徽 马鞍山 243002)

0 引言

随着社会生产力的提高,计算机视觉技术越来越多地用于各行各业,比如人脸识别,金融行业中的刷脸支付、公司里的人脸考勤、安防监控中的可疑人员识别等等[1-2]。人脸识别是计算机视觉技术在现实世界中的落地点之一,是较为通用的技术落地突破口。但是,识别算法对同一个人在不同时间段不同背景不同的穿戴情况有较高的要求。

在人脸识别方面,国内研究人员已经取得了一定研究成果,如任飞凯[3]提出基于LBP和数据扩充的CNN人脸识别研究,针对卷积神经网络在人脸识别存在的数据集比较少的问题,容易发生过拟合,提出了对人脸进行局部二值模式处理,提升图像特征;再引入深度卷积生成对抗网络对局部二值化的人脸进行生成,有效的扩充数据集,提升卷积神经网络的泛化能力。该研究从扩展数据展开讨论,虽然解决部分问题,但扩展效果有限,在部分场景中,算法泛化能力仍然不理想。司琴[4]利用局部二值模式信息与原图信息相结合作为SDFVGG网络的输入,使得提取的人脸特征更加丰富且更具表征能力;SDFVGG网络是将VGG网络进行深浅特征相融合后的网络,将网络深浅特征相融合。该研究从学习算法展开讨论,虽然解决部分问题,但未考虑数据量不足问题,在部分训练数据不足的项目场景中,效果达不到工程要求。黄法秀[5]提出了数据增广下的人脸识别,针对训练数据缺乏问题,提出了利用滤波、亮度调节和腐蚀操作3种传统图像处理方法 ,增加数据量和数据的多样性,进而来提高识别算法性能;将原始数据和增广数据作为训练数据训练模型,选择了从不同地方拍摄的视频上截取的人脸图像组成了四个测试集,增广方式对提升识别性能有一定效果,但考虑算法与数据增广兼容的问题,在定制化场景中,算法识别效果往往会有所下降。

本研究的识别对象是人脸,算法需要排除拍摄环境的各种干扰。本研究的目的为了精准识别人脸信息,对抗光照干扰,对抗复杂环境干扰。本文结合自动标记工程与深度神经网络,设计并实现了一套人脸图像智能识别算法。本文解决了两个问题:实现数据标记的大规模快速化和自动化,解决数据标记工作量大的问题;基于深度神经网络,解决人脸识别稳定性和准确度问题。

1 本文人脸识别解决算法

在实际应用场景中,同一个人在不同时间段、不同环境、不同穿戴和不同表情下拍摄的图像会有一定的差异,这些对于人脸识别算法都有一定的挑战。开发出一套准确且稳定,能够排除各种干扰的人脸识别算法,具有很高的使用价值和社会价值。针对人脸识别项目中的问题,本文算法流程设计如图1所示。本研究基于扫描仪图像制式SDK,完成人脸图像的读取与分解。首先采集大数据样本库,其中包含了大量人脸图像,由于传统人工标记时间过长、商业版本标记软件付费过高,本算法开发了自动标记算法,基于直方图均衡化和OpenCV函数,在完成90%人脸自动检测和标记基础上,对剩下的10%机器检测不确定的图像,进行人工干预,完成整个数据工作的人脸标记,同时保证了效率和质量。接着,本研究从深度神经网络的原理出发,深度分析了网络组成和训练机理,形成人脸识别系统。最后结合自动标记和深度神经网络,形成本研究的人脸识别系统。待识别原图如图2所示,图像中人物戴了帽子,对人脸识别算法有一定干扰,本文后续将对其进行识别和讨论。

1.1 深度神经网络

为了展开人脸识别研究工作,首先进行数据收集,即采集大量包含人脸的图像,并且图像中的人脸信息(姓名)也包含在采集信息内。然后进行数据清洗,将人脸所在图像区域,按照统一大小进行原清晰度截取,截取出包含人脸图像的图像块,本研究中统一大小为256*256像素。由此构成本研究的图像学习库,图像库中包含10万帧图像块,为了达到样本库全面覆盖性,从而保证深度学习算法都学习到,样本库种类覆盖各个年龄层、各种表情以及各个角度,每个图像块都有对应的人脸信息。深度神经网络的隐藏层上有激活函数和偏移值,假设首先建立M个隐藏层,依据一定的顺序将输入层和隐藏层进行联结,然后嵌入激活函数和偏移值,而每个节点有自己的激活函数和偏移值。建立和训练深度神经网络的过程就是求解每个隐藏层节点激活函数、权重和偏移值的过程。

其中的激活函数是对各输入求和之后,做增强的函数,典型激活函数有:Sigmoid、tanh、ReLU。由于ReLU函数的增强效果都体现在X轴以上[6-7],更适合本研究中的人脸识别问题,各激活函数如下所示:

(1)

tanh=tanh(x) (2)

ReLU=max(0,x) (3)

式中x代表输入值,等式左侧代表输出值。深度神经网络的本质就是权值乘以输入值加上偏移值。对于求解权值和偏移值,可以通过反向传播和梯度下降相结合的方式来求解,开始时采用随机数初始化各个节点的权值,然后通过深度神经网络计算输出值跟真实输出值做比对。如果这个比对值相差比较大,则修改当前层节点的权重[8]。当这个比对值相差不大时,则修改更低一层的权重。按照这个规则一直往前推,逐步推荐到第一层的权值。

深度神经网络存在3个原生缺陷:梯度消失、训练耗时过长、存在过度拟合。深度神经网络求解是基于反向传播和梯度下降,但是反向传播从输出层开始一步一步推进到第一层时,越到低层,节点权值变化越小,直到没变化,即出现了梯度消失的现象[9]。本研究的解决方法是:使用ReLU作为激活函数,不选择传统的随机设置方式,采用特定标准差来初始化节点权重。根据本研究大量经验性实验,每层将输入值转化以0为中心的分布。最后,在反向传播过程中限制梯度不超过某个阈值,如果超过就减去相应的阈值。

对于训练时间过长的问题,通常采用已有的训练好的网络,在此基础上再进行训练,本研究基于公开基本框架,减少一定的训练时间。除此之外,本函数对无标签训练数据,以类似聚类算法进行训练,可以提取较为核心特征,通过这样的规则一步步得到整个隐藏层,最后再用有标签数据来矫正性训练最终网络。

对于过拟合的问题,本研究采用早停止模式,一旦发现验证集上性能下降就停止训练。添加模型复杂度惩罚项,模型用到的节点权值越大,惩罚越大,不仅使偏差最小化,同时使模型简单化。接着使用丢包方式,每次随机选择一些节点不参与训练,只有在最终输出时这些节点生效,这些节点输出值乘以概率值,降低了节点之间的依赖性。本研究的样本库经过数据的不断补充,不仅数据量大,而且质量高,用来做训练可以提升算法泛化能力。

经过本研究系统的训练和优化方案,对大数据样本库中人脸图像块和人脸信息,进行训练,生成人脸识别模型框架,后续只要输入疑似人脸图像块,就可以输出人脸信息结果。

1.2 自动标记

在实际工业级项目中,需要采集大量的图像用于学习,训练深度学习框架,本研究采集了10万帧人脸图像,如此庞大的数据库,需要进行高质量的精确标注。目前传统的做法是人工标注或者购买比较好用的商业版本自动标注软件。人工标注的方法需要大量的人力成本,在当下人力成本昂贵的大背景下,人工标注成本巨大,所需时间较长,而且不排除主观误差的可能,如果采用人工标注,对项目的进度、成本和质量都构成了较高风险。付费的商业版本自动标注软件比较好用,可以提高标注效率和质量,但是存在成本较高的问题,尤其越好用的标注软件往往价格昂贵,而价格低廉的标注软件解决不了项目标注工程中的痛点问题。在此背景下,本研究提出了一套自动标记方案,并且在项目中进行了实施。

首先采用基于OpenCV的人脸检测,这种方式可以检测出大部分人脸,为标注做好准备,少部分情况,比如斜脸和带帽等等干扰,检测效果会受到影响,但是这种情况较少,可以采取人工介入的半自动化检测的方式。这样既保证了标注效率,又保证了标注质量。

为了增强人脸图像特性,进行直方图均衡化处理[10]:

H、W代表图像高、宽,histo(k)代表像素灰度值是k的像素个数。

histo代表输出图的直方图,histi代表输入图的直方图,建立一个均衡化映射关系。

上式代表累加直方图的数学模型。进行转化,得到q值:

q值代表经过均衡化后的像素映射值。进行图像矩阵化处理:

式中O代表像素值,I代表输入像素值。完成直方图均衡化处理后,开始检测人脸,本研究利用开源视觉库函数检测并保存目标外接矩形大小。该函数进行多尺度多目标检测,通过检测符合的模板匹配对象,可有多个目标,均输出到数据集向量中[11]。

完成检测后,进行标记库特征训练,准备2种样本,正样本为人脸图像特征,负样本为非人脸图像的其它图像特征,得到正、负样本集以及描述文件后开始训练。启动Haartraining训练函数,载入正、负样本图像特征,训练并判断是否达到指定目标,根据训练结果值与实际值比对结果,识别率和误报率如果达标,则生成相应的xml文件,否则进行纠偏并继续训练直到达到指定目标[12]。

在本文系统中,先建立深度神经网络框架并训练,形成识别机制,达到精准识别人脸的目的;同时建立自动标记,在数据采集后达到自动标记,保证了数据工程的效率和质量。

如图3所示,大量人脸图像经过自动标记后,红色标记框准确的在人脸图像区域上。如图4所示,结合自动标记和深度神经网络的识别算法处理图2,得到识别结果,可见识别精准,识别信息会在后续实验部分的软件界面中显示。

图3 自动标记结果 图4 人脸识别结果

2 实验与讨论

本文系统基于QT平台开发实现,深度学习环境基于英伟达1080TI显卡部署完成,算法实验参数:ReLu= 0.286。

如图5所示,本系统算法界面功能有:“自动标记”、“深度神经网络”、“人脸识别”、“识别结果”和“数据库图像”。 如图6所示,待识别的人脸图像不但戴了帽子还是侧脸,由于周边信息干扰较大,对人脸识别算法有较大干扰。如图7所示,本研究耦合自动标记、OpenCV函数和深度神经网络,检出人脸和调出的数据库图像是同一个人,可见本研究检测正确、识别正确。

为了对比已有类似算法,验证本算法的先进性,设立对照组1、2两组,分别来自文献3、4的技术,本研究将其应用在本系统内进行测试对比。文献3提出了对人脸进行局部二值模式处理,提升图像特征;再引入深度卷积生成对抗网络对局部二值化的人脸进行生成,有效的扩充数据集,提升卷积神经网络的泛化能力[3]。该研究从扩展数据展开讨论,虽然解决部分问题,但扩展效果有限,在部分落地场景中,算法泛化能力仍然不理想,如图8所示,虽然检测正确,但是识别有误,未能很好的完成人脸识别。文献4将局部二值模式信息与原图信息相结合作为SDFVGG网络的输入,使得提取的人脸特征更加丰富且更具表征能力[4]。该研究从学习算法展开讨论,虽然解决部分问题,但未考虑数据量不足问题,在部分训练数据不足项目场景中,识别效果达不到工程要求。如图9所示,检测有误,直接导致识别不出结果。

图9 文献[4]算法

3 结论

为了解决人脸图像特征难识别和标记工程量过大的问题,本文分别从大数据样本自动标记、传统图像目标检测方面,利用深度神经网络复杂数据和隐藏特性的分析计算能力,根据人脸图像特征,对大数据样本图像库进行分析,区分人脸图像与非人脸图像,结合传统OpenCV人脸检测和深度学习,建立起一套健壮的人脸识别机制。为人脸识别的准确度和稳定性,给出了算法保证和数据基础。下一步要解决的问题是将算法从电脑端移植到移动端,同时保证算法的效率和识别精度。

猜你喜欢
人脸人脸识别神经网络
基于神经网络的船舶电力系统故障诊断方法
基于递归模糊神经网络的风电平滑控制策略
人脸识别 等
有特点的人脸
一起学画人脸
玻璃窗上的人脸
揭开人脸识别的神秘面纱
智能人脸识别考勤系统
基于神经网络的中小学生情感分析
基于Q-Learning算法和神经网络的飞艇控制