博舍

基于Python的人脸识别方法 关于人脸识别技术的好处

基于Python的人脸识别方法

摘要:得益于计算机硬件技术的进步以及软件算法的不断改进,近些年来人工智能技术得到了前所未有的发展,基于深.度学习的人脸识别技术也已经得到了广泛的应用,特别是在安保、金融等需要安全系数较高的领域。提出了一种基于机器学习并利用Python编程语言和第三方OpenCv库实现的脸识别跟踪方法。

关键词:人脸识别,Python,OpenCV

1 人脸识别介绍

通过生物特征进行对人脸进行识别的过程被称为人脸识别",它是属于计算机视觉领域的一个研究问题。上个世纪 60年代,Bledsoe和Chen设计的人脸识别系统是人脸识别研究的起源的代表作。如今加强反恐安保问题已经成为各国政府的共识,特别是在美国9.11事件发生后这一全球性的安全问题变得更为突出。从2010年起国际民航组织要求其成员国以及地区必须使用机读护照,而其中人脸识别又是其首推模式。从北京奥运会开始使用人脸识别系统,再到今天的铁路身份认证系统的投入使用,标志人脸识别系统在我国的大规模使用。相对于虹膜、指纹等的其他生物特征识别,人脸识别技术有着信息利于采集及验证等的优势”。随着技术的成熟,人脸识别已经广泛应用在各个领域中。人脸识别技术经过几十年的发展,已成为计算机视觉领域的一个研究热点.随着人脸识别算法的趋于成熟,人脸识别技术已经在公安、支付、身份验证、美颜相机等领域得到了非常广泛的应用.本文利用Python语言的第三方库,通过机器深度学习实现人脸识别,该方法具有编程简单、易于实现、准确率高等优势.

2 人脸识别的过程

观察一个人的脸可以直接、自然地获得一个人的许多消息,比如:年龄、性别情绪等。虽然不同的人脸检测系统所使用的算法原理各不相同,但是大都可以归结为以下步骤:

1)人脸检测:即从图像信息中检测出人脸并返回位置范围。

2)人脸规范化:校正因为在光照强度、图像像素等问题下人脸所发生的变化。

3)人脸特征的提取:将识别到的人脸中的特征提取出来。

4)人脸识别:将提取的到的特征与数据库中已有的特征进行匹配,进行人脸识别。

本文所使用的是基于深度学习并利用Python编程语言以及OpenCV第三方库进行人脸识别的方法。

3实现过程

3.1OpenCV库介绍

使用Python语言开发具有高效性,得益于其丰富的第三方库,Python能够将其他语言制作的模块快速轻松地连接在一起。本文所使用的OpenCV就是可以通过Python语言进行调用的一个第三方视觉库。OpenCV于1999年由Intel创立至今经过多年的发展已经成为当今计算机视觉领域一款功能强大且通用的图像视觉处理库。本文使用OpenCV中CV2库中的CascadeClassifie这一级联分类器进行人脸的检测,使用LBPHFaceRecognizer这一LBPH(局部二值模式直方图)人脸识别器进行人脸匹配。

计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:

1、研究代码(慢,不稳定,独立并与其他库不兼容)

2、耗费很高的商业化工具(比如Halcon,MATLAB+Simulink)

3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。

OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(IntegratedPerformancePrimitives)得到更快的处理速度。

pp3.2人脸检测原理

OpenCV提供三个人脸识别器分别为基于PCA的特征面识别器以及基于LDA的Fisherface分类器和本文所用的LBPH分类器。相比于其他两种分类算法LBPH算法有着受光源影响较小的优点。该方法是通过检测图像的局部信息来获特征值,通过比较图像中的每个像素点与临近像素点之间的灰度值获得特征信息。将RGB图片转化为灰度图片后取3x3的矩阵,当灰度值大于中心图像时采用0表示,当等于小于时使用1表示,以此得到一个由0和1组成的二进制列表。将图片中每一个像素都进行处理后并将其转化为十进制后统计得到-张直方图,该直方图即是特征直方图。

【calib3d】——这个模块名称是由calibration(校准)和3D这两个单词的缩写组合而成,通过名字我们可以知道,模块主要包含相机标定与立体视觉等功能,例如物体位姿估计、三维重建、摄像头标定等。

【core】——核心功能模块,模块主要包含OpenCV库的基础结构以及基本操作,例如OpenCV基本数据结构、绘图函数、数组操作相关函数、动态数据结构等。

【dnn】——深度学习模块,这个模块是OpenCV4版本的一个特色,其主要包括构建神经网络、加载序列化网络模型等。但是该模块目前仅适用于正向传递计算(测试网络),原则上不支持反向计算(训练网络)。

【features2d】——这个模块名称是由features(特征)和2D这两个单词的缩写组合而成,其功能主要为处理图像特征点,例如特征检测、描述与匹配等。

【flann】——这个模块名称是FastLibraryforApproximateNearestNeighbors(快速近似最近邻库)的缩写,这个模块是高维的近似近邻快速搜索算法库,主要包含快速近似最近邻搜索与聚类等。

【gapi】——这个模块是OpenCV4.0中新增加的模块,旨在加速常规的图像处理,与其他模块相比,这个模块主要充当框架而不是某些特定的计算机视觉算法。

【highgui】——高层GUI图形用户界面,包含创建和操作显示图像的窗口、处理鼠标事件以及键盘命令、提供图形交互可视化界面等。

【imgcodecs】——图像文件读取与保存模块,主要用于图像文件读取与保存。

【imgproc】——这个模块名称是由image(图像)和process(处理)两个单词的缩写组和而成,是重要的图像处理模块,其主要包括图像滤波、几何变换、直方图、特征检测与目标检测等。

【ml】——机器学习模块,主要为统计分类、回归和数据聚类等。

【objdetect】——目标检测模块,主要用于图像目标检测,例如检测Haar特征。

【photo】——计算摄影模块,主要包含图像修复和去噪等。

【stitching】——图像拼接模块,主要包含特征点寻找与匹配图像、估计旋转、自动校准、接缝估计等图像拼接过程的相关内容。

【video】——视频分析模块,主要包含运动估计、背景分离、对象跟踪等视频处理相关内容。

【videoio】——视频输入输出模块,主要用于读取与写入视频或者图像序列。

通过对OpenCV4.1的模块构架的介绍,相信读者已经对OpenCV4.1整体架构有了一定的了解。其实简单来说OpenCV就是将众多图像处理模块集成在一起的软件开发包(SoftwareDevelopmentKit,SDK),其自身并不复杂,只要通过学习都可以轻松掌握其使用方式。

3.3方法实现

在实现方法前首先需要配置好Python开发环境和OpenCV库(本文使用3.3.1版本)并且下载CascadeClassifie进行分类所需的训练集。本文的实现过程主要有以下几个步骤:

1)采集被测对象的人脸信息;

2)遍历图像进行灰度处理;

3)识别图像脸部区域进行截取;

4)对应截取区域每个像素点生成二值矩阵;

5)生成没张图像的特征直方图;

6)将被测对象脸部进行LBPH转化后进行标签匹配。

程序运行的步骤如下:首先使用摄像头对被对象进行图像信息的采,使用cascadeclasifier分类器对视频中的每-帧进行检测,当确认识到识别脸部后后会对该图片打上标签后作为训练集进行保存。对采集到的照片进行LPBH算法分析,提取特征值生成特征直方图。使用摄像头捕捉图像,将视频每帧图像的脸部信息进行分析后生成特征直方图后与采集的训练集进行比对,打上标签后在视频信息中进行标记。以下为该方法实现用到的主要函数。

1)该函数的功能为识别人脸有效区域。

deffunction1(img):

gray=cv2.cvtColor(img,CV2.COLOR_BGR2GRAY)#对图片进.

行灰度转化

img_two=img

cap=cv2.CascadeClassifier(face__discren.xml")#识别是否有

有效人脸

faceRects=cap.detectMultiScale(gray,scaleFactor=1.2)

iflen(faceRects)==0:

if_have_face=0

iflen(faceRects):

if_have__face=1

returnimg_two,if_have_face#返回原始图像以及是否有人脸

的确认数值

2)该函数是对图像被测对象图像进行采集。

deffunction2(number)#number是采集照片的数目

the__wh__number=1

while(1):

ret,imga=cap.read()#读取摄像头图像

 

参考文献

[1]张华方,郭玉.基于Python的深度学习人脸识别方法[J].网络安全技术与应用,2019,000(007):46-47

[2] OpenCV各版本差异与演化,从1.x到4.0 

基于Python的人脸识别方法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇