基于卷积神经网络的人脸识别算法研究

2022-04-20 06:47段金成张风霞朱晓庆
科学技术创新 2022年10期
关键词:张量检测器数据流

段金成 张风霞* 朱晓庆

(黑龙江科技大学电子与信息工程学院,黑龙江 哈尔滨 150022)

在最近几年间,人工智能成为被媒体关注的热点。人脸识别作为人工智能应用的一个方面,现如今也被广泛应用,安全实用的人脸识别在科学应用和研究中都具有广阔的应用前景。虽然过去的研究已经奠定了这一领域的基础和成果,但视角的不确定性、表达的夸张性等都造成了复杂的人脸识别环境使其难以识别。深度学习的出现使这些特殊问题变得简单,深度学习在人脸识别中的应用可以更本质地表达原始的人脸信息,通过网络的深度学习提取特征自主学习,人脸识别率从而进一步提高。

1 理论基础

1.1 Tensorflow框架

TensorFlow 是一种端到端的开源机器学习平台。它具备一个包含全面而灵活的各种工具、库和社区资源的生态系统,这有助于科研人员对先进相关机器学习技术的研究,这也对要构建和部署机器学习驱动应用程序的有关开发人员有所帮助。如图1 所示为Tensorflow的系统框架,上一部分是可编程的客户端,其编程语言可以用Java、C++、Python 等;中间部分为C 的API 接口;下一部分为后端执行系统。客户端系统会提供多语言编程模型以及创建计算图,Tensorflow运行时的系统就是后端执行系统,其主要工作是计算图执行过程。例如计算图的剪枝、子图算法等。

图1 Tensorflow 系统框架

1.2 数据流图

TensorFlow 使用符号计算图,与Theano 相比,TensorFlow的简洁性更加突出。其本身就表明了自身的工作原理是由两部分组成:节点和边,也就是其具备的两个基本数据结构,tensor 就是张量代表了n 维数组,flow就代表了有向图的计算,而有向图就是数据流程中的图。如图2 是一个简洁的数据流图,包括任何操作都必须具备的基本类型操作:输入和输出,它们代表的是数据的起点和重点,边作为节点与节点之间输入输出关系的桥梁,具有不可或缺的作用。

图2 数据流图

在图2 中,数据流图由节点a、b、c、d、e 和相应的边组成,有两个输入和一个输出,其运算可通过以下代码实现:

a=Input1;b=Input2

c=a*b;d=a+b

e=c+d

当a=2,b=4, 就可以完成计算e=2*4+(2+4)=14

我们可以把数据流图看作一个构件,把其他数据流图作为它的输入或输出,在可视化过程中把每一个数据流图内部的运算掩盖起来,因此可以更好的展示其运算的结构链路。

1.3 Keras 框架

Keras 框架是一种基于底层张量库(如TensorFlow等)的高层神经网络构建框架。为了快速提供掉用接口的一致性,同时隐藏底层张量库的差异性,Keras 对不同底层张量库提供了不同的封装,并在该层API 的设计上保持了一致性,使得同一套代码可以在以不同的张量库为底层的Keras 框架下运行,从而有效避免了由于框架更替带来的额外的代码维护成本。使用keras 搭建一个神经网络的步骤,Keras 具有极具特色的特性,例如:高度模块化、极简特性和可扩充特性等。

2 人脸识别

2.1 图像获取

通过摄像头把人脸图像采集下来。

2.2 人脸检测

在摄像头中给定任意人脸,找到其中是否存在一个或多个人脸,并框出每个人脸的位置。

2.3 人脸定位

通过人脸的五官及其外在特征来对其定位,确定具体的位置信息。

2.4 预处理

此步骤主要对应用的图像进行相关处理操作,包括灰度变换、过滤等相关处理操作,考虑到图像可能会具有像清晰度、距离等外在因素和眼镜、表情等自身因素的很多干扰操作,因此需要训练大量的数据,使其提取出具有意义的特征。

2.5 特征提取

特征提取是将机器学习算法中不能检测和识别到的原始数据变换成可以检测和识别的数据特征过程。如图3 所示为传统机器学习与深度学习的一些异同。

图3 传统机器学习与深度学习间的区别

2.6 人脸特征

根据人脸具备的特有特征,寻找像眼镜、嘴巴等具有特点的位置,利用特征点间的距离、曲率来对特征分量进行,最后将找到的相关特征点连接成一定长度的特征向量。

2.7 对比识别

通过模型训练,让其回答反应出每张人脸是否属于数据库中的人脸数据集。

2.8 输出结果

用摄像头识别任意人脸,使其与数据库中的人脸进行比对,最终给出识别率。

3 人脸图片收集与处理

要实现基于深度学习的人脸识别,需要收集大量的图片来供电脑进行学习。目前国内外有多种有关人脸的数据库和数据集,例如MIT 人脸数据集、UMIST 图像集、YALE 和ORL 人脸数据集等。本次研究将基于卷积神经网络提取人脸特征,在摄像头的视频流中获取人脸数据集进行实验,接下来将采集到的人脸数据集进行图像预处理,最后作为训练输入。

第一,运用Opencv 的人脸识别分类器,实现人脸检测相关功能,人脸检测效果如图4 所示。而人脸识别分类器的具体功能操作如下:

图4 人脸检测效果

人脸默认检测器:haarcascade_frontalface_default.xml

人脸快速Harr 检测器:haarcascade_frontalface_alt2.xml

人脸侧视检测器:haarcascade_profileface.xml

眼部左眼检测器:haarcascade_leftye_2splits.xml

眼部右眼检测器:haarcascade_righteye_2splits.xml

嘴巴部位检测器:haarcascade_mcs_mouth.xml

鼻子部位检测器:haarcascade_mcs_nose.xml

身体部位检测器:haarcascade_fullbody.xml

人脸检测器(快速LBP):lbpcascade_frontalface.xm

第二,进行捕获人脸数据库,本次研究采集了五个人的人脸数据集,每人200 张,共计1000 张,存储在data2 这一文件夹中。

第三,对采集到的图像进行预处理,将图片像素设置为64*64,使输入的所有图片转换为四维数组,尺寸为200*5*64*64*3,并将图像设置为灰度图,预处理后的数据集。处理结果如图5 所示。

图5 图片预处理运行结果

4 卷积神经网络模型搭建及训练

卷积神经网络模型训练过程由前向传播和反向传播两部分组成,主要以反向传播阶段为主,如图6 所示为反向传播阶段的训练过程。

图6 卷积神经网络训练过程

本文的卷积神经网络结构图是参考LeNet-5 网络结构所设计的,本次研究的网络卷积层共有10 层网络层,包括4 个卷积层、2 个全连接层、2 个池化层、1 个flatten层和1 个softmax 层。

训练步骤依次为:导入需要的库、定义预处理后的图片所在目录、规范图片学习轮数120 轮和学习率0.001、定义变量及神经网络层、训练模型。次研究训练模型的训练结果如图7 所示。

图7 训练模型部分结果

5 结论

本文基于卷积神经网络的人脸识别技术是机器学习中深度学习的一个重要应用,本次研究检测人脸识别的测试可以达到90%以上的正确率。采用Pycharm 作为代码编译工具,设计采用Python 编程语言进行开发,Tensorflow 框架作为后端支撑,Keras 作为一种基于底层张量库的高层神经网络构建框架,对不同的底层张量库提供了不同的封装,利用python 中的cv2 进行图像预处理,用dlib 库进行人脸检测,利用卷积神经网络模型进行图像识别,经过大量的实验与测试,算法最终实现了研究的目标结果。

猜你喜欢
张量检测器数据流
一类张量方程的可解性及其最佳逼近问题 ①
数据流计算研究进展与概述
严格对角占优张量的子直和
汽车维修数据流基础(上)
四元数张量方程A*NX=B 的通解
汽车维修数据流基础(下)
一类结构张量方程解集的非空紧性
基于二次否定剪切选择的入侵检测方法*
AADL端对端数据流一致性验证方法
车道微波车辆检测器的应用