您的当前位置:首页正文

基于Python的人脸识别技术研究

2020-03-06 来源:榕意旅游网
人工智饨与识别就术信ComputerI■与足China & Communication1B2021年第2期基于Python的人脸识别技术研究魏天琪(南京工程学院国际教育学院,江苏南京211167)摘 要:由于基因的多样性,人脸在现今社会已成为判别身份的重要标准之一,对社会安全等领域具有重要的意义.

本文对基于Python的人脸识别技术进行研究,使用Python中内置的OpenCV库函数、Keras的Tensorflow版建立卷积 神经模型并训练得到人脸模型,多次使用模型进行识别,证明模型一般有效。关键词:人脸识别;Python; OpenCV; Tensorflow中图分类号:TP391.41

文献标识码:A

文章编号:1003-9767 (2021) 02-162-03Research on Face Recognition Technology Based on PythonWEI Tianqi(School of International Education, Nanjing Institute of Technology, Nanjing Jiangsu 211167, China)Abstract: Due to the diversity of genes, in today *s society, human faces have become one of the important criteria used to identify

identity, which is of great significance to social security and other fields. This article researches and analyzes the face recognition technology of Python. Using the built-in OpenCV library functions in Python and the Tensorflow version of Keras, a convolutional

neural model is established and trained to obtain a face model. The model is used for recognition many times, and the accuracy can be Improve it to prove that the model is generally effective.Keywords: face recognition; Python; OpenCV; Tensorflow1人脸识别的原理并在主方向上用指向性最强的箭头替代,最终将图像转换成 对Python而言,人脸识别有多种方式,本实验主要采用 HOG的表达形式,可以轻松捕获面部结构。两种方式完成人脸识别:一是利用Python自带的级联分类器 1.3面部特征点估计算法进行人脸识别,可以识别人脸特征,但不能识别身份;二是

利用卷积神经网络建立人脸模型进行识别,既可以识别人脸 人脸可以朝向不同位置,朝向不同位置的人脸对计算机

特征又可以识别身份。来说是不同的东西,所以需要制定一个标准来扭曲人的面部 位置使其重叠。面部特征点估计法能够找到68个人脸上普遍 1.1将图片灰度化存在的点即特征点。根据这68个点能制定图像旋转、缩放、 颜色本身由于容易受到光照等环境因素影响,同类物体 错切使其重合的标准。颜色变化有多种,所以颜色并不能满足对关键信息的需求, 因此梯度是识别物体的重要因素。在识别物体的过程中,可

1.4训练深度卷积神经网络,生成测量值以将灰色图像看作图像的强度来求一些梯度特征,分析每个 深度卷积神经网络每次能加载3个不同的面部图像 像素和周围的像素,根据明暗度画箭头,箭头的指向代表像 (一张已知照片、一张同一人的照片和一张另一人的照片)

素逐渐变暗的方向,重复操作,得到的箭头就称为梯度2」。进行训练,并得到测量值。微调后重复步骤得到全部测量

1.2 HOG (Histogram of Oriented Gradients )方向 梯度直 值,当看到一个人的两张不同图像时,系统将给出同样的

方图

数值。方向梯度直方图是一种能够检测物体轮廓的算法,能够 1.5欧氏距离计算将图像分割成nxn像素的小方块,在每个小方块中计算梯度,

利用所得测量值计算属于一个人脸的欧氏距离,系统将

作者简介:魏天琪(2000-),男,江苏徐州人,本科在读。研究方向:软件工程。162

信■与电■2021年第2期China Computer & Communication人工智饨与钦剔孜术给它一个认为是同一个人欧氏距离的阀值,即超过这个阀值 模型需要按照顺序加载训练集(Train Set)、验证集 就认定是同一个人。(Validation Set)和测试集(Test Set)完成一个样本。同样,

2相关技术维度顺序选取必须贴合图片数据的输入顺序。像素数据的浮 点化是为了将图像的各像素值归一化在0 ~ lo在整个神经 2.1库模型的预测部分,针对采集的图像也要对像素的浮点进行归 OpenCV是一个开源的计算机视觉库,包含多种函数, 一化处理,将图像的特征与建立的模型进行比对,然后根据

能够高效地实现大部分计算机视觉的通用算法。OpenCV 二值进行分类,建立出的模型能够给出属于0和1的概率。由C/C++开发,提供接口中包含Python等的多种语言。

在构建网络层时必须构建一个空的网络模型:序贯网

Keras由Python编写,是一个深度学习程序库,能够高 络模型或函数式网络模型。本实验采用的序贯模型是一个线 效建立深度学习模型。卷积神经网络通常分为离散卷积神

性堆叠模型,在这个模型中,卷积层和池化层等只需要按照

经网络和连续卷积神经网络。卷积是计算机视觉中的常用 顺序堆叠即可。在实验中,序贯模型内部交叉堆叠了 4层卷 算法。卷积神经网络模型主要由卷积层和池化层交叉堆叠

积层,每一层卷积层会进行二位卷积运算,像滤镜一样缩 而 。小原有图像的尺寸,过滤出更加精简化的人脸特征。在实

2.2简单活体检测研究验过程中,为了提取不同的特征,一般会利用多个不同的卷 积核。实验中在每两层卷积层后添加池化层和dropout层。

活体检测指检测出能够骗过人脸识别系统的伪造的人

池化层是特殊的卷积层,通过池化层可以减少空间信息的数

脸。活体检测可以通过很多方法去完成,其中包括纹理分析、

量,能够提高整个模型的运算效率,也意味着从一定程度 频率分析、变量聚焦分析、3D脸部形状等方法。但活体检测 同样可以被视为一个二元分类问题。在准备训练数据的过程

上降低了过度拟合(Overfit)的风险。常见的池化层有平均 中,真实人脸和虚假人脸(例如照片里的人脸)被分别保存 池化(Average Pooling)和最大池化(Max Pooling) ° 最 在不同的文件夹里,在活体检测中,要尽可能减少过度拟合,

大池化运算就是从目标矩阵或者区域提取出最大特征值。 同时保证检测器能够快速地打开并实时运行。与普通卷积神

Dropout层同样是为了解决当模型过拟合而产生数据重复 经不同,活体检测liveness类由一个build方法创造。除了少 问题。量的过滤器,这个简单的CNN还应该包括两个图层集和一

3.3实验流程个带有softmax分类器的激活层。实验流程如下。第一,建立一个Python文件用来采集训

2.3神经网络结构研究练材料。文件使用OpenCV人脸级联分类器,尽管不能精准 卷积神经网络通常由3个部分构成:卷积层、池化层、

识别人脸但可以提供神经网络的训练数据。第二,通过这个

全连接层。作为卷积神经网络模型中最经典的LeNet5模型, 程序采集2个人的面部照片(每人1 000张左右)作为卷积 在选择模型之后需要构建网络层。网络层由输入层、隐藏层、

神经网络的训练数据。第三,训练数据加入神经网络,通过 输出层3个部分组成。组成这3个部分的有常用层、卷积层、 神经网络训练人脸模型得到H5文件。H5文件是层次结构、

池化层、局部连接层和循环层等,需要根据每个神经网络的 文件系统式的数据类型,是同一类型数据多维数组的数据集。

不同特性和需求进行选择。第四,使用人脸模型进行人脸识别,并得到数据。第五,得

到实验结果后进行误差分析。3实验过程4实验分析3.1 OpenCV非身份人脸识别4.1数据处理人脸级联分类器通过大数据将人脸的特征转换为数值 特征,然后通过匹配转换出的特征数据来寻找人脸。程序通

训练数据:训练组和对照组各有1 000张图片。数据处理

过摄像头采集图像,摄像头将不断按帧采集图像,图像转变 使用三个自定义脚本和卷积神经模型对训练数据进行筛选, 成灰度模式供级联分类器识别,最后将识别到的人脸图像导

筛选掉程序意外捕捉的人脸特征和非人脸照片。出。这种识别仅通过大数据匹配人脸特征,不能识别目标 4.2结果和误差分析身份。卷积神经网络利用训练数据进行模型训练,训练模型

3.2建立神经模型的过程的结果如图1所示。对数据进行验证,所测结果的准确率

利用Keras建立卷积神经网络的步骤如下:选择模型、

为99.48%,结果较理想,得到了训练人脸模型数据。通过 构建网络层、编译、训练模型和预测模型。这5个步骤是建

控制程序对模型进行验证,模型精度符合要求,说明模型

立一个神经网络的主要步骤。有效。163人工智饨与识别枝术信凰与电阿China Computer & Communication2021年第2期5==>.............]-ETA: 2:331D3392/4235的非身份人脸识别,也可以利用基于卷积神经网络的人脸识

别模型进行人脸识别,但是必须通过人脸面部特征分析或建 立合适的卷积神经网络训练人脸模型。本文采用基于Python

的人脸识别方法进行探讨,具有识别速度快、代码相对简单

的优点,可以用于日常的人脸识别。参考文献-981s 232ns/stepaccuracy: 99.48% »>图1训练结果及误差[1] 房梦婷,陈中举.基于卷积神经网络的图像识别研究[J].

电脑知识与技术,2020,16(10):196-198.结语[2] 焦双健,王志远•卷积神经网络的人脸识别门禁系统设

基于Python的人脸识别技术可以通过OpenCV进行简单

计[J].单片机与嵌入式系统应用,2020,20⑼:47・50.164

因篇幅问题不能全部显示,请点此查看更多更全内容