FPGA Based Hardware Design of PCA for Face Recognition

摘要

  本文主要研究了目前最流行的线性无监督降维算法——主成分分析法(PCA)所需模块的硬件实现。利用主成分分析算法对数据库进行降维,其中存储了多幅人脸图像,用于人脸识别。此外,它还被用于查找应该用于在数据集中保留一定数量方差的特征面孔的总数。这些特征脸后来被用来确定一个新的输入的脸图像是否可以被识别。使用xcvu11p-flga2577-1-e装置,在Vivado HLS中完成了高级合成。这项工作的目的是使PCA技术成为一种便携式的人脸识别设备,用于实时应用,如识别罪犯。

1 引言

  用最简单的术语来说,机器学习可以被定义为一种研究领域,它使计算机能够在没有明确编程的情况下进行学习[1]。在涉及机器学习应用的分类任务问题中,往往存在大量的因素,最终的分类任务是在这些因素的基础上完成的。这些因素也被称为特征。有时候,我们需要处理的特征的数量可能会非常大,这使得我们很难将训练集可视化然后处理它[2]。此外,根据情况,这些特征中的一些可能在它们之间表现出高度的相关性[3]。在我们最终的分类任务中考虑所有这些特征可能没有好处,因为它们传达了冗余的信息。这就是降维发挥作用的地方。减少我们必须处理的数据集的维数也将减少系统[4]的内存需求。降维的一个直观例子可以用一个简单的机器学习问题来讨论——我们想用一个包含n个特征的训练集来预测土地的价格。假设其中两个特征,恰好是地块的长度和宽度。现在,如果地块碰巧是矩形的,那么我们可以使用单一的特征——地块的面积,而不是使用这两个特征。
  图1为一组具有一定长度和宽度的地块的二维空间点。PCA的降维算法就是找到一个新的一维空间这些点可以沿着这个空间进行投影以保持数据集中最大的方差。基本上,在这个问题中,它试图最小化这些点的投影误差。虚线表示新的一维空间,红色标记表示二维空间中特定点在这个新的一维空间上的投影。
在这里插入图片描述
  对所有点进行类似的处理,结果在一维空间上的投影如图2所示。
在这里插入图片描述
图2.点表示在新的一维空间上的投影

2 方法论

A.人脸图像表示

  为了应用PCA算法降维,首先取M幅图像的训练集,每幅图像的大小为 p × p p×p p×p个像素,然后用大小为 p 2 × 1 p^2×1 p2×1的向量表示每幅图像。用 □ i □_i i 表示第i个图像向量。例如:设每幅图像的大小为3×3像素(p = 3),那么该假设图像的像素矩阵如图3所示。
在这里插入图片描述
图3.像素矩阵的假设图像大小为3x3像素
  现在将矩阵扁平化为一个向量,对所有的图像进行类似的处理。
在这里插入图片描述
图4.每个图像的扁平化向量

B.平均和平均中心人脸

  通过下面的程序计算平均的人脸图像
在这里插入图片描述
在这里插入图片描述
图5.平均人脸图像的计算
  每个人脸和平均脸的差 ひ I = Γ i − μ ひ_I=Γ_i-μ I=Γiμ,这叫做以均值为中心的人脸。
在这里插入图片描述
图6.以均值为中心的人脸图像的扁平向量

C.协方差矩阵和eigen-faces

  协方差矩阵被定义为 C = A A T C=AA^T C=AAT,其中 A = [ ひ 1 , ひ 2 , . . . ひ M ] A=[ひ_1,ひ_2,...ひ_M] A=[1,2,...M],C矩阵大小 p 2 × p 2 p^2×p^2 p2×p2
  然后使用MATLAB函数[U, S, V] = SVD( C )来创建了一个与C维度相同的对角矩阵S,具有非负降序对角元素,以及酉矩阵U和V,使 C = U ∗ S ∗ V ′ C = U^*S^*V' C=USV
  通过计算C矩阵的协方差矩阵和对矩阵C应用奇异值分解函数,得到了矩阵C的特征向量和相应的特征值。
  这些特征向量构成了特征人脸空间。现在我们只保留那些对应较大特征值的特征脸,而放弃那些对应特征值较低的特征脸。我们系统的准确性取决于我们保留了多少张特征脸。
  根据特征脸在描述图像之间的变化时的有用性,对其进行排序。如果我们想在数据集中保留99%的方差,我们需要选择k作为保留的特征人脸的数量,k根据下式计算:
在这里插入图片描述
  我们数据库中的人脸图像在该人脸空间上的投影为:
在这里插入图片描述
其中 Γ k − μ Γ_k-μ Γkμ是以均值为中心的图像。因此,可以获得每个图像的投影 Ω 1 , Ω 2 Ω_1,Ω_2 Ω1,Ω2等等。

D.识别的步骤

  测试图像,θ投射到人脸空得到矢量β:
在这里插入图片描述
  β到每个投影数据库的脸图像的距离称为欧几里得距离,记作
在这里插入图片描述
其中k = 1,2,3,……M, Ω k Ω_k Ωk代表数据库中第k类投影人脸。
  使 ε k ε_k εk最小的人脸显示了我们数据库中展示的与测试人脸最相似的人脸,因此就可以识别出输入人脸的身份。

3 实现

A.人脸图像数据库

  本文中使用的人脸图像数据库共有30幅图像,其中包括5个不同人的6幅图像。每个图像的大小是16 x 16像素。
在这里插入图片描述
图7.数据库图像[5]

B.平均人脸和以均值为中心的人脸

  平均人脸由下式计算
在这里插入图片描述
其中 Γ 1 , Γ 2 , . . . Γ M Γ_1,Γ_2,...Γ_M Γ1,Γ2,...ΓM为人脸图像对应的向量。使用 ひ i = Γ i − μ ひ_i=Γ_i-μ i=Γiμ进行进一步的计算。图8和图9为数据库中人脸图像的平均人脸图像和减去平均人脸图像。
在这里插入图片描述
图8.平均人脸图像
在这里插入图片描述
图9.减去平均值的面部图像

C.Eigen Faces

  通过计算协方差矩阵和对协方差矩阵应用奇异值分解函数,得到了数据库中人脸图像的特征人脸。在我们的实现中保留了15个主成分,以便在数据集中保留95%的方差。这些主成分或特征面如图10所示。
在这里插入图片描述
图10.特征脸的图片

D.测试人脸图像

  用于测试的人脸图像很少。需要指出的是,这些图像并不是我们面部图像数据库的一部分(但这些人的其他照片都已经在训练集中出现过)。这些面孔作为系统的输入,在数据库中与它们表现出最大相似度的面孔编号作为输出。
在这里插入图片描述
图11.测试人脸

4.电路方框图

  主成分分析算法硬件实现中各模块的互连如图12所示。
在这里插入图片描述
图12.电路框图
  将人脸图像的训练集输入到模块1,模块1计算人脸图像数据集的均值,然后对均值中心的人脸图像进行评估。其次是相关矩阵的计算,该操作涉及大量的矩阵乘法。
  利用模块1的输出,利用MATLAB进行特征人脸的计算。模块2计算在数据集中保留特定变异性百分比所需的特征面数量,并仅保留该数量的特征面或特征向量。
  将需要识别的测试图像输入到模块3,模块3进行将测试图像投影到人脸空间的计算。
  模块4计算测试投影图像与所有其他数据库投影图像之间的欧氏距离,并给出数据库中欧氏距离最小的图像的数量作为输出

5 结果

  下面是模块3中作为系统输入而提供的用于测试的人脸,以及系统从维护的数据库中生成的作为输出而被识别的人脸。
在这里插入图片描述

A.硬件利用率统计

  下面是用于实现PCA算法的模块的硬件使用统计数据。
在这里插入图片描述
表1 -模块1的硬件使用统计数据
在这里插入图片描述
表2 -模块2的硬件使用统计数据
在这里插入图片描述
表3 -模块3的硬件使用统计数据
在这里插入图片描述
表4 -模块4的硬件使用统计数据

B.电路图

在这里插入图片描述
图13.模块1的RTL原理图
在这里插入图片描述
图14.模块2的RTL原理图
在这里插入图片描述
图15.模块3的RTL原理图
在这里插入图片描述
图16.模块4的RTL原理图

6 总结

  本文主要研究了主成分分析算法所需模块的硬件实现。特征向量的计算采用MATLAB。然后PCA算法被用来减少数据库的维度显著脸图像储存,通过寻找eigen-faces拥有最高的特征值,然后将它们存储在内存,可以用来识别是否一个新的输入图像像在场的人在我们的脸图像数据库。高水平的合成是在Vivado HLS中使用xcvu11p-flga2577-1-e进行的。HLS大大减少了设计的开发时间。这项工作的目的是使PCA技术成为可携式设备,用于人脸识别应用于各种应用,比如罪犯的识别。
  需要注意的是,硬件实现PCA算法所需的矩阵乘法运算数量相当大。矩阵乘法所涉及的延迟量是显著的,因此我们可以使用一些新的乘法技术来进一步优化设计。

Guess you like

Origin blog.csdn.net/chenaxin/article/details/107325710