人脸识别门禁系统(一)

大家好!我是来自华中科技大学的一名本科生,这是关于我大四上学期的机器视觉课程的一个大作业,两人一组完成的,因为组里同学忙于考研,因此绝大部分工作是我完成的,写这篇文章希望能记录一下大作业的过程,能给大家起到一点参考作用。

问题描述

本项目要解决的问题有以下几点:

  1. 在用摄像头拍摄的图像中如何找到人脸所在的区域;
  2. 如何将找到人脸所在的区域在图像中分割出来;
  3. 分割出来的图像大小不一,如何将所有的图像对齐到同一尺度;
  4. 对齐后的图像数量较多、维度较大如何提取人脸图像的特征;
  5. 如何对所有的人脸进行分类;
  6. 如何将所有的功能集成到同一界面内,方便使用者操作使用。

拟达到目标

在系统最初使用时,通过采集使用者的姓名信息、多张多角度的人脸信息以生成分类器的训练样本,在生成分类器后,通过摄像头实时采集人脸信息,通过读取IC卡获取姓名信息,经由系统进行识别,如果姓名信息与人脸识别获取的姓名信息一致的话系统控制电磁锁使门打开,如果姓名信息与人脸识别获取的姓名信息不一致,系统将发出警告。

拟采用技术手段、方法

为了解决以上问题,达到以上目标,本项目基于MATLAB环境编写算法进行人脸检测,分类,识别。通过MATLAB与硬件进行通讯,实现对电磁锁的控制。对于人脸的检测拟采用MATLAB自带的算法实现,对图像的特征提取拟采用2DPCA(二维主成分分析)自编算法完成,对图像分类器的生成,拟采用SVM(支持向量机)算法,使用MATLAB自带的函数实现。最终的用户界面采用MATLAB自带的GUI实现。

系统功能划分与定义

图像采集

人脸识别系统最前端的是图像采集设备,该设备采集图像作为图像处理的材料。采集到的图像数据可以是连续的视频也可以是静态的图片。为减小工作难度,本项目使用的图像数据是基于电脑自带标准CCD摄像头采集的静态图像,可多次采集。

人脸检测

人脸检测的目的是从图像中找到人脸的位置,确定人脸的大小。这一阶段得到的结果是人脸识别阶段的材料基础,因此人脸检测的精确度直接影响整个系统的性能。目前人脸检测的方法主要有人工神经网络方法、AdaBoost算法、特征脸检测算法、样本学校方法。本项目使用MATLAB自带目标检测算法中的人脸检测算法,以笔者已知的知识推测该算法使用的是基于肤色模型的人脸检测和AdaBoostAdaBoost算法相结合的办法。

图像预处理

图像预处理是针对它的下一环节的要求,对图像进行相应的处理。本项目在人脸检测环节之后对图像进行处理,主要处理方法是对人脸检测后的图像,将检测到人脸的区域从图像中分割出来,再将所有的图像对齐为11292112*92的人脸图像。

特征提取

特征提取是人脸识别系统的关键技术,通过计算分析等得到一定数据用来表征人脸的过程。常用的特征提取方法主要可以分为基于几何结构特征的方法、模板匹配方法、统计模型的方法等。本项目使用的是一种基于2DPCA2DPCA的特征提取方法。

系统方案设计

本设计利用MATLAB环境实现人脸识别,其中涉及到图像的采集,人脸检测,图像预处理,特征提取,分类器生成和人脸识别几个过程。

  1. 图像获取 本项目主要应用电脑自带的摄像头采集图像,在需要时也可选择与电脑适配的USB镜头。。
  2. 人脸的检测 本项目使用MATLAB自带的算法进行人脸检测。
  3. 图像预处理 本项目使用MATLAB中ComputerVisionToolboxComputer Vision Toolbox中的函数对图像进行预处理。
  4. 特征提取 本项目使用自编的2DPCA2DPCA方法对图像进行特征提取。
  5. 分类器生成 本项目使用MATLAB中的libsvmlibsvm工具箱中的函数进行SVMSVM一对一分类生成分类器。
  6. 人脸识别 本项目使用摄像头采集实时图像,通过上述对图像进行处理的方法,将最终获得的图像输入SVMSVM分类器中,对其进行预测以获得信息。

系统工作的原理图:人脸识别门禁系统设计(一)

系统工作的原理图

主要模块工作原理

人脸检测模块

人脸检测模块使用的MATLAB自带的函数,对采集的图像先对其检测人脸,找到人脸所在的区域后将其从图像中分割出来,由于每张人脸分割出来后尺寸不一不利于下一步的处理,因此将所有的人脸归一化到11292112*92.

特征提取模块

特征提取模块采用2DPCA2DPCA算法[1]2DPCA2DPCA算法直接对人脸图像矩阵进行相关运算,避免了PCAPCA算法的行列向量转换而生成一个巨大维数的矩阵给后面带来复杂的运算[2]2DPCA2DPCA算法提取特征的原理和PCAPCA算法类似,都是为了寻找最优的投影特征子空间。
2DPCA2DPCA算法步骤如下:
假设训练样本图像总数为MM,每一幅人脸图像为矩阵AiA_i

  1. 求出总训练样本的平均人脸:E(A)=1Mi=1nAiE(A)=\frac{1}{M}\displaystyle\sum_{i=1}^{n} A_i
  2. 求样本的差异脸和协方差矩阵。差值脸为:Zi=AiE(A)Z_i=A_i-E(A);协方差矩阵:C=1Mi=1n(AiE(A))T(AiE(A))C=\frac{1}{M}\displaystyle\sum_{i=1}^{n} (A_i-E(A))^T(A_i-E(A))
  3. 构建最优投影矩阵。利用协方差矩阵前dd个特征值 1nd1\geq n…\geq d及其对应的单位正交特征向量[1,2,,d][1,2,…,d]构建最优投影特征子空间矩阵:U=[1,2,,d]U=[1,2,…,d]
  4. 将差值脸映射到投影特征子空间的特征人脸TiT_i:Ti=ZiUiT_i=Z_iU_i

这里dd的值可以选择,选择的原则为前dd个特征值的总和与特征值总和的比为85%-90%。
实验中dd值的选取使用自己编写的脚本,2DPCA特征提取使用自己编写的函数完成。

分类器模块

SVM分类器是一种基于统计学习理论和结构风险最小原理的分类算法,用来提高学习机的泛化能力,实现经验风险和期望风险最小化[3]。 SVM的学习策略是间隔最大化,寻找能够分开两类样本并具有最大分类间隔的最优分类超平面。
SVM分类器的原理是通过非线性变换将低维空间中的非线性分类的样本映射成高维空间中的线性可分样本,然后在映射后的高维空间线性样本中构建最优的分类超平面。其非线性变换是由选择适当的内积函数得到的,内积函数称为SVM 核函数,即xjxjψxiψxjψRnRDK(x_j ,x_j )=ψ(x_i )·ψ(x_j )其中ψ:R^n → R^D即低维空间到高维空间的非线性变换,这样将低维空间中非线性的样本变换到高维空间中的线性样本,并且把高维空间中的内积运算简化为通过核函数xixjK(x_i, x_j)来计算。
对于多分类的情况,SVM分类器可采用一对一分类的方式,即每两类之间生成一个超平面的方法来实现多分类。
本项目中使用MATLAB自带的分类器函数实现分类。

系统软件与操作界面

为方便操作者使用,本项目对所有内容进行了良好的集成,将其所有内容接入到了GUI界面中,如图1所示。
人脸识别门禁系统设计(一)

图1

其中,输入姓名信息是为了获得样本的标签名称,显示采集张数是为了是操作者易知已采集样本的张数以使得每个样本的数量一致,统一处理样本图像集成了人脸检测与图像预处理,最终的结果是得到一系列尺寸为11292112*92的样本集。清除按钮是为了清除输入的姓名信息和显示的张数以及显示的采集图像,以方便下一个样本的采集工作,进入识别模块按钮会关闭本模块界面进入人脸识别模块。

图2所示是本系统人脸识别模块。生成分类器按钮是调用libvsmlibvsm工具箱的函数运用SVMSVM生成分类器,输入姓名信息是为了获取识别图像的标签,处理图像按钮与图1中统一处理样本图像的原理相同,将采集的图像变为11292112*92的图像,识别按钮是为了对采集的图像进行预测。
人脸识别门禁系统设计(一)

图2

项目缺点

本项目经过多次实验发现存在以下问题:

  1. 识别率受光照影响大
  2. 多张人脸只识别人脸面积占比较大的
  3. 对背景单一的ORL人脸数据集识别率极高
  4. 采集样本与识别时人脸的姿态一致时识别率提高
  5. 人脸倾斜角度较大时,人脸检测阶段会出现问题。

项目改进

由于本项目对输入分类器的11292112*92的图像未进行处理,因而光照对其影响较大,所以对其改进可集中在对输入图像的处理方面。
可通过GammaGamma校正来减弱光照对图像的影响,对低灰度像素范围采用γ<1γ<1的灰度校正,对于高灰度像素范围采用γ>1γ>1的灰度校正[4],实现了低灰度像素范围向高灰度拉伸,高灰度像素范围向低灰度拉伸,公式如下:
Yxy={[I(x,y)/0.5]0.20.5,if I(x,y)0.5 { [I(x,y)0.5]/0.5}30.5+0.5if I(x,y)>0.5 Y(x,y)= \begin{cases} [I(x,y)/0.5]^{0.2}*0.5, & \text {if $I(x,y) \leq 0.5$ } \\ \{\ [I(x,y)-0.5]/0.5 \}^3*0.5+0.5 &\text{if $I(x,y)>0.5$} \end{cases}

其中IxyI(x,y)为原图像像素灰度值,YxyY(x,y)为处理后图像像素灰度值。图像II为双精度图像,像素值为0到1.

参考文献

[1]谭子尤,梁靖.基于PCA+2DPCA的人脸识别方法分析[J].吉首大学学报(自然科学版),2011,32(03):55-58.
[2]李德福,黄新.基于二维PCA和SVM算法的人脸识别系统[J].桂林电子科技大学学报,2017,37(05):391-395.
[3]郑岚.支持向量机在人脸识别中的应用研究[J].计算机仿真,2010,27(12):271-274.
[4]慕春雷. 基于HOG特征的人脸识别系统研究[D].电子科技大学,2013.

代码部分由人脸识别门禁系统(二)给出
由于第一次写博客,时间、能力、精力有限,文中尚有很多不足或者错误之处,还望读者可以指出。笔者联系方式 360812049@qq.com[email protected]

未经允许,禁止转载!

相关文章:

  • 2021-07-29
  • 2021-05-27
  • 2021-04-15
  • 2021-11-29
  • 2021-04-12
  • 2021-12-27
  • 2021-07-03
  • 2022-01-24
猜你喜欢
  • 2021-05-02
  • 2021-07-15
  • 2021-06-14
  • 2021-06-30
  • 2021-10-17
  • 2021-05-10
  • 2021-11-23
相关资源
相似解决方案