Hardware Architecture Design Of Face Recognition System Based On FPGA

摘要

本文提出了一种新颖的人脸识别系统硬件结构。为了使系统成本有效利用,我们还使用了一种高效人脸识别算法。 我们已经在cyclone III 可编程门阵列 (FPGA)芯片上设计、实现并验证了我们的算法。我们在装有cyclone III芯片的Altera DE0开发板上进行调试。 我们还确保低功率损耗,以便芯片可以普遍应用在安防系统中。为了在数字硬件上开发一个简单且高效的人脸识别算法,(如PCA, FFT等),我们已经使用MATLAB研究了许多人脸识别算法,并比较了它们在不同姿势和背景下的检测效率 以及算法复杂度。在获得可接受的识别水平的同时,为了节约硬件资源和时间,我们选择了快速傅里叶变换(FFT)算法。

1. 引言

  人脸识别系统是从图片或视频中自动识别或验证一个人的计算机应用。因此有两种人脸识别的方法。一种是基于图片的,一种是基于视频的。现在有了更多的分类。一种是部分自动系统,另一种是全自动系统。人脸识别已经成为了图像分析、理解和计算机视觉非常流行的研究领域。这个话题吸引了很多计算机科学研究人员、神经学家和心理学家的兴趣。从基础来说,在我们的人脸识别案例中仍然是静止的人脸图像;它能用一个存储人脸的数据库来识别一个或多个人脸。 为了便于研究,以及创建了许多数据库。研究方向包括室外图像、非正面面部图像的识别,对人口因素对性能的影响的理解,开发性能更优的模型,在非常大的图库预测识别性能以及[1]中的更多。[3]中分析了一个基于主成分分析(PCA)和径向基函数(RBF)的神经网络的人脸识别算法。但独立成分分析(ICA)在人脸识别中比PCA更有效[2]。另一方面,基于快速傅里叶变换(FFT)的人脸识别系统比基于离散余弦变换(DCT)的系统性能更加好[4]。在本文中,我们选择PCA和FFT来进行人脸识别性能分析。我们从一个新的角度设计了硬件架构。大部分可用算法都是在软件上实现的。因此,识别速度不是很理想。硬件实现有很多好处,因此我们主要研究在硬件上的实现。我们提高了系统的鲁棒性、速度以及准确性。FPGA可以提供必要的资源来达到人脸识别中的相应提升。这些资源包括内置块、各种通讯接口、数以百万计的逻辑门、运行C代码到数字硬件电路,高级设计工具,性能,长期维护,可靠性等。
  论文安排如下:第2节A部分描述了主成分分析法(PCA)的原理,B部分 描述了基于快速傅里叶变换(FFT)方法的人脸识别。第3节展示了实验结果,第4节展示了硬件结构和框架设计。最后第5节进行总结。

2.人脸识别算法

A.主成分分析法(PCA)

  这个被称为主成分分析法的算法在一幅人脸图像中提取相关信息并把信息编码成合适的数据结构。算法采样图片,并把它们以同样的方法编码,比较编码图像集以进行识别。从数学角度来说,我们想要找到图片协方差矩阵的特征值和特征向量,其中一个图片是高维[nn]空间中的一个点, nn是图片的维数。一个协方差矩阵可能有很多特征向量,但它们中只有一些是主要的。每一个特征向量可以用来寻找人脸图像的不同变化。然而我们只强调主要的特征向量,因为它们统计了图像中很重要的变化。它们可以展示图像维度中最重要的关系。最大的特征值所对应的特征向量就是图片集的主成分。 忽视一些没那么重要的成分可能会导致我们丢失部分信息。但是特征值小的话,丢失的信息就不会太多。 使用这些特征向量的集合,我们可以构建Eigen faces。基于PCA算法的人脸识别方法如下:

  1. 把N*N大小的人脸图片转换成大小为 N 2 N^2 N2的向量。
  2. 对数据集中所有人脸图片重复步骤1
  3. 计算人脸向量的平均值 m − = 1 M ∑ i = 1 M x i m-={1\over M}∑_{i=1}^Mx_i m=M1i=1Mxi
  4. 每个人脸向量都减去平均值 r i = x i – m r_i=x_i–m ri=xim . i=1, 2…m.
  5. 使用向量r构建大小为 N 2 ∗ M N^2*M N2M的矩阵A, A = [ r 1 , r 2 , r 3 , r 4 … r m ] A=[r_1,r_2,r_3,r_4…r_m] A=[r1,r2,r3,r4rm]
  6. 计算协方差矩阵 C = A A T C=AA^T C=AAT
  7. 计算协方差矩阵的特征向量V,创建人脸图片空间U,U=AV
  8. 对一个新的输入人脸,重复步骤1和4
  9. 计算这个新的人脸图片在人脸空间的投影Ω, Ω = U T ( r i ) Ω=U^T(r_i) =UT(ri)
  10. 根据Eigen faces重建人脸。S=UΩ
      PCA允许我们计算一个从高维空间到低维子空间的线性变换数据映射[6]。 图2分别显示了输入图像,Eigen face和重新构建的图像。
    在这里插入图片描述
    图1:长度-N的DFT到两个长度-N的频分法
    在这里插入图片描述
    图2。输入灰度图像(左上)、特征脸(右上)、基于PCA的识别图像(中下)。
B. 快速傅里叶变换(FFT)

  快速傅里叶变换是一个重要的图像处理工具,用于把一个图像分解成正弦、余弦或者谐波。无疑,FFT的输出表示频域的图像,而输入图像是空间域或时间域的等效图像。在傅里叶域的图像中,每一个点表示空间域图像中包含的特定频率 。有两个不同的radix-2算法,称为时分算法Decimation in Time’ (DIT) 和频分算法‘Decimation in Frequency’ (DIF) 。这两种算法都将一个N点变换递归分解成2(N/2)点变换。在图1中,radix-2频分FFT是通过[8]分治法得到的重要算法。
  图4显示了人脸识别的FFT方法流程图,图3为输入人脸图像、灰度图像和FFT图像。二维图像的FFT及其逆变换由下式给出:
F ( x ) = ∑ n = 0 N − 1 f ( n ) e − j 2 π n N , ( 1 ) F(x)=∑_{n=0}^{N-1}f(n)e^{-j2π{n\over N}},(1) F(x)=n=0N1f(n)ej2πNn(1)
f ( n ) = 1 N ∑ n = 0 N − 1 F ( x ) e j 2 π n N , ( 2 ) f(n)={1\over N}∑_{n=0}^{N-1}F(x)e^{j2π{n\over N}},(2) f(n)=N1n=0N1F(x)ej2πNn(2)
  每个点的值决定了对应频率的相位。就像在强度图中一样,我们可以识别出与原始图像中的图案相对应的垂直和水平线。在这项工作中,同时考虑了幅度和相位部分。
在这里插入图片描述
图3.输入彩色图像(左)、灰度图像(中)、FFT图像(右)
在这里插入图片描述
图4.人脸识别的FFT方法流程图。
  当图像匹配时,取阈值50。从图4可以清楚地看出,基于FFT的人脸识别方法能够识别表情变化不大的人脸。如果输入的图像是一个不同与训练数据库图像的表情,仿真后才进行匹配。
在这里插入图片描述
图5.人脸识别
  训练数据如图6所示。值得注意的是,在数据库中,图像是不统一的。一个图像有光效应,另一个可能没有。一个在微笑,另一个没有。这样做是有目的的,因此我们可以自然地识别FFT的局限性。考察FFTs的性能,考虑到光照效果和不同的表达方式是否能够匹配。主成分分析对不同姿态给出了更好的结果。快速傅里叶变换可以识别人脸,但如果任何一个人在微笑,如果图像包含了太多的光,那么FFT的结果是较差的。图7和图8分别为基于PCA和FFT的识别。
在这里插入图片描述
图6.训练数据集
在这里插入图片描述
图7.基于PCA算法的识别结果
在这里插入图片描述
图8.基于FFT算法的识别结果

3 硬件架构设计

  人脸识别设备必须处理实时数据。为了避免复杂性和节省时间,我们设计了基于FFT的方法的硬件体系结构,在对不同光照强度下的面部表情和图像进行轻微变化时,该方法能提供可接受的精度。本工作采用Altera公司的FPGA板。FPGA板来自Cyclone III器件家族,其型号为DE0[5]。在我们的项目中,我们广泛使用了“Qsys”。Qsys是Altera的系统集成工具。“Qsys”系统集成工具通过自动生成连接知识产权(IP)功能和子系统的互连逻辑,在FPGA设计过程中节省了大量的时间和精力。Qsys是下一代SOPC Builder工具,它采用了一种新的fpga优化的芯片上网络(NoC)技术,与SOPC Builder相比,具有更高的性能、增强的设计重用和更快的验证速度。图9给出了我们“Qsys”部分问题公式的框图。图像由FPGA板兼容相机模块TRDB_D5M捕获。输出像素或原始数据采用拜耳颜色模式。因此,数据通过拜耳色图传输到30位RGB(红、绿、蓝)模块。一旦像素是RGB格式,它们就被转换为灰度(减少平面的数量,在本例中从3个平面减少到1个平面,以减少数据操作的复杂性)。然后,通过外部桥接总线和SDRAM控制器,这些灰度数据(或捕获的图像)被存储在内存(SDRAM)中。在这个阶段,为了验证数据是否确实存储在SDRAM中,我们可以在解码器中包括VGA控制器和视频,并在液晶监视器上显示数据。一旦数据(或图像)被存储在SDRAM,数据被访问从SDRAM通过散射收集DMA(直接内存访问)控制器和被传递到FFT块(快速傅里叶变换块)。输出,即FFT后的数据再次存储在SDRAM中,这次存储在不同的内存位置(以便同时保存所存储的数据)。在这个阶段,另一个DMA控制器用于传输这些数据并访问SDRAM。那么这两组数据现在在SDRAM中都是可用的。再次执行上述步骤,以保存另一个映像的信息(创建数据库的概念)。然后NIOS II对两幅图像进行进一步的比较和识别处理(FFT值比较)。图9显示了我们提出的设计的合成RTL原理图。可以从RTL查看器查看数据路由,以获得我们使用的不同块的逻辑门实现的想法。
在这里插入图片描述
图9.我们提议的架构的框图。
在这里插入图片描述
图10.建议设计的RTL原理图。
在这里插入图片描述
图11.基于Altera ModelSim的FFT输出时序图

4 总结

  人脸识别是一种生物特征识别,通过扫描一个人的脸,并将其与一组已知的脸进行匹配。本项目的最终成果是在FPGA上开发一个人脸识别系统。在FPGA上开发该系统的一个优点是能够通过使用系统的新版本对FPGA重新编程来更新功能或纠正任何错误。本系统针对门禁、人脸数据库、人脸识别、人机交互、执法、智能卡等重要特性来实现这一目标。基于PCA方法的复杂度较高,设计了FFT方法的硬件体系结构。在未来,我们将尝试开发基于PCA的人脸识别设备,通过优化我们的设计使其更适合,从而使成本降低到一个相当大的水平。

Guess you like

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