APP下载

基于树莓派的PCA 人脸识别系统

2023-07-09陈涛杰刘双曹稳李青阳

电子制作 2023年10期
关键词:树莓人脸识别人脸

陈涛杰,刘双,曹稳,李青阳

(1.郑州科技学院,河南郑州,450000;2.温州医科大学,浙江温州,325000)

1 绪论

1.1 研究背景

近年来,随着基于深度学习的人工智能技术的进步,人脸识别也在不断地应用到了各种领域各种场景,其身影已经完全融进我们的生活。 以前主流的人脸识别技术主要是通过脸部反射的光形成的图像进行识别,这种方式虽然很常见,但是对于光照环境的依赖性太高,只要光照环境微微变化就会使识别效果得到改变,已经不能够满足实际使用中的需求,而解决这一问题的方案有两种:一种是基于3D 图像的人脸识别,另一种是基于热成像原理的人脸识别,但是这两种方案目前的技术还不是太成熟太完善,应用使用的效果还没有达到理想的效果[1]。

1.2 研究意义

从现实角度来看,随着科学技术的发展和社会的进步,指纹识别等一些相对成熟性的识别方式都具有一定的不便性,而人脸识别技术的研究可以使人们在无接触的情况下自动进行,基于树莓派的人脸识别技术更是带有一定的便携性,具有低成本易安装的优点,由此看来,进行快速的人脸识别技术能够便利人们的生活。

从学术角度上来看,脸部具有相对复杂的细节变化的一些自然结构,在检测过程中会面临一些挑战,比如人脸的可变性以及脸部的一些附属物,这表明当代人脸识别技术仍需进一步地完善,其中人脸检测的因素、收集的信息是人脸识别技术的重中之重,只有这两方面有所突破,人脸识别技术才能突飞猛进。

综上而言,研究基于树莓派的特定人脸识别,能够便捷人们的日常生活,提升生活品质;同时也可以降低生产成本,促进市场上的人脸识别装置的改进和优化,具有一定的实际应用价值以及良好的市场前景。

1.3 研究思路

本次系统主要研究的是以OpenCV 作为视觉识别库的人脸识别。OpenCV 提供的算法中可以让图像显示得更加清晰,特征更加容易区别,同时OpenCV 提供了完善的Python 接口,能够达到调用的作用。所实现的特定人脸识别系统囊括多种平台资源技术,从底层硬件到驱动层软件再到应用层第三方及业务算法逻辑接口函数,硬件是系统的根基,这一层决定着上层部件是否能运行牢固。应用层软件包括基于树莓派Linux 操作系统平台图像处理的一段流程,具体为图像预处理、下一链条编解码、框架模型推理、最终识别易引擎训练的过程。

基于以上的因素考虑,本次系统研究最终决定采用OpenCV 视觉库,树莓派开发板、摄像头、继电器的实现架构,具体的,通过树莓派开发板为CPU 处理器算法运行核心和网络载体,摄像头采集获取人脸图像,板卡部署树莓派linux 系统和OpenCV 环境,映射端口网络驱动,安装摄像头图像传输软件实时查看本地图像,远程连接工具远程登录板卡系统,运行人脸识别编译的Python 脚本,输入账号信息,运行算法模型,后台推理采集到的人脸图像是否匹配后台预处理的图像库,如果是,则返回识别成功指令到树莓派IO 处理器端口,继而继电器得以响应。

2 方案设计与论证

2.1 人脸识别系统组成结构

人脸识别系统主要有四大块:人脸头像检测及拍摄、人脸头像优化处理、人脸头像特殊区域提取以及对照与分析[2]。

关于实现人脸识别主要包含如下几个步骤:

(1)获取捕获高清的图像。

(2)人脸识别比对,比对也影响着3 个要点,即人脸预处理,特征提取,特征比对,到最后一步就是人脸识别结果输[3]。

人脸识别的一个更困难的方面是它受到光线和环境的影响[4]。在光线不足的情况下,人脸信息仍然可以完全提取,这是一项重要的技术升级。从人脸预处理,到人脸检测和人脸对齐,再到实时识别,可以描述为一个连锁过程。对应框图详见图1。

图1 人脸识别系统结构流程框图

2.2 系统实现

为了搭建一个比较完善的人脸识别系统,本次研究完成了以下三个阶段:

(1)人脸的检测与收集数据;

(2)训练识别器;

(3)人脸识别。

第1 步:材料清单件:树莓派3500 万像素 1080p 传感器 OV5647 迷你摄像头模块。

第2 步:检测摄像头是否正常。

第3 步:使用OpenCV 中人脸检测函数对检测人脸进行特征点提取。

人脸检测是实现人脸识别最基础的一项任务,首先需要对人脸图像进行捕捉,也就是第一阶段,这样才可以和捕捉到新的人脸图像进行对比并且去识别新的人脸图像,也就是第三阶段[5]。

第4 步:收集上一步所提取的特征点数据,并运用算法简化收集的数据。

对灰度图的每个ID 人脸图像采集40 个样本,在最后一个条件语句中修改要提取的样本数;如果要识别新用户或修改现有用户的照片,则必须编写脚本注释。

第5 步:训练。

在第二阶段,需要在数据库里面提取出用户的人脸图像数据,并练习识别器。可以使用特定功能执行此步骤,本研究采用OpenCV 提供的Lbph(localbinary patternshistograms)人脸识别器。

第6 步:识别器。

识别器是实现人脸识别技术的最后一步,利用摄像头抓捕人脸图像,当人脸图像是属于数据库中的图像时,识别器会返回预测的“id”号和索引,并且会显示出该人脸图像的可信度;若不是,则只会显示人脸图像的可信度。

2.3 硬件组成

本系统所实现的人脸识别系统硬件由树莓派3B+开发板、Pi 摄像头和普通键盘组成。硬件框图如图2 所示。

图2 硬件构成框图

摄像头为CSI 接口,排线接入开发板,连接图如图2所示,像素越高越有利于人脸图像的识别,但同时耗费的计算资源也就会变高,有可能树莓派运行不起来,或者会变得卡顿。

在标准模块扩展性方面,树莓派 3B+它拥有非常好的特性。在它主板上有预留的接口,该接口可与它配套的树莓派摄像头进行无条件对接,而且有40 个GPIO 引脚。

2.4 软件设计

考虑本系统的任务要求的准确率较高,且具有便携性,树莓派的性能不足以进行快速的深度学习,所以采用基于OpenCV 的人脸识别。具有下面功能:

(1)拍摄图像并对图像进行处理,下载人脸识别数据并通过拍摄图片建立人脸识别数据。

(2)当人脸进行采集时,可在图像识别的过程之前进行计算,将采集到的图像数据进行优化处理。

OpenCV 使用Haar 级联分类器的人脸检测器,通过XML 文件中的数据确定每个局部搜索图像的位置,并通过内置的函数库进行脸部特征检测。使用分类器对矩形区域进行分类,包含图像中的目标对象,将这些区域划分为一系列矩形形状,并将最后的结果保存在变量中。在这个过程中,其主要的方式与方法和处理手段,是通过PCA 算法完成的。

PCA 算法通过对人脸的投影在这些低维线性空间可以分离,然后这些投影可以用来作为特征的特征向量。它的本质是一种线性的映射算法[6]。在图像识别中可以对提取出的图像特征点进行压缩,找到一个低维空间,将一组数据映射到这个低维空间中,采用更少数据量表示重要的信息,它有如下算法步骤:

式(1)中μ 为观测样本的均值向量,因为 xj是一个零向量,所以μ 为零值向量[8],∑是n×n矩阵,求解得出:

根据运算的要求和需要,我们将新特征向量组进行相对应的转化和改变。

那么,∑的第i 个特征值等于方差,第i 个主成分的方差贡献率为:

继而在累计方差贡献率这一方面,前面的m 个主成分的相应贡献率为:

在累计方差贡献方面上来说,如果这m 个贡献率足够大,然后只取前m 个主成分作为新特征,对L-m 个新特征进行取整,最终实现初始观测数据的特征提取。此时重构误差的极小值为:

重构误差的极大值为:

该方法的基本思想是将图像从高维向量转化为低维向量作为空间模型,然后把人脸绘制到低维空间,将预测系统作为识别人脸的向量。输出识别模板对应的编号并与数据库中模板的输出编号进行比较,以确定哪一个是最接近的,PCA 算法流程图如图3 示。

图3 PCA 算法处理流程图

图4 人脸识别结果图

(1)模型训练

具有的重要环节有下面所涉及的几个部分:

①通过采集或下载的方式,得到一个人脸照片集用于训练。

②求出各个训练的人脸图像的特征值,并保存最大特征值所对应的M 个图像。这M 个图像可以定义为“特征脸空间”,添加新面时,可以更新和重新计算特征面[9]。

③在“特征平面空间”中,要识别的每个单独的图像被投影到每个轴(特征平面)上,并且计算m 维权重向量。简单来说就是计算每个个体的M 个权重空间对应的坐标值[10]。

(2)身份识别

①将新收集的图像投影到每个特征面上获得权重集(权重向量)。

②判断新的头像中是否有符合人脸特征的区域。

③如果头像中具有人脸特征的区域,系统就会计算每个个体的权重,并将其与之前的权重进行比对,选择距离最近的一个,识别该个体,如果超过了设置的阈值,直接跳过,识别下一个个体。

④更新特征面或权重模式。

⑤若检测到某个陌生的人脸图像多次出现,系统会自动计算该图像的权重集,并加入已知的人脸图像中。

3 测试结果

分别测试系统在不同侧脸度数的识别率,测试结果如表1 所示,然后测试在单人环境和多人环境中平均识别出人脸的时间,结果如表2 所示。根据测试结果得知对于侧脸的识别,识别率会明显降低一些,在单人环境中的识别率也高于多人环境中的识别率,光照条件以及侧脸度数的高低会影响识别率,在加入PCA 算法后的系统与传统人脸识别系统在识别准确度方面有明显的提升。

表1 测试结果

表2 测试结果

4 结论

本研究以人脸识别智能门禁为研究背景,设计了一个基于树莓派PCA 算法的人脸识别系统。针对主流人脸识别系统对光照环境的依赖太高,利用人脸生物特征的唯一性,对传统人脸识别系统加入PCA 算法,进行降维处理,将多个变量进行线性变换,在少数重要变量当中选择一个,这样便可以将人脸检测的难度降低,在识别准确度上有所提升。

当然,本次研究设计离实际的市场产品的开发还相差甚远,只是实现了功能需求而已,系统还有待迭代优化,为了更好地与市场产品开发接轨,接下来会基于本需求重点思考性能点,以用户的角度去设计开发,以前沿技术的角度去完善该系统。

猜你喜欢

树莓人脸识别人脸
人脸识别 等
有特点的人脸
揭开人脸识别的神秘面纱
基于树莓派的骑行智能头盔设计
三国漫——人脸解锁
基于树莓派的远程家居控制系统的设计
响应面法优化红树莓酒发酵工艺
基于类独立核稀疏表示的鲁棒人脸识别
马面部与人脸相似度惊人
长得象人脸的十种动物