基于VPM642的人脸识别算法的实现
2015-11-26亢洁王晓东潘思璐
亢洁++王晓东++潘思璐
摘 要:由于PC环境下的人脸识别系统体积大、成本高、稳定性差、应用局限性大,因此设计了基于VPM642的人脸识别系统。该系统首先将待检人脸图片或视频使用主成分分析算法提取图像当中的人脸特征,然后用最近邻法进行分类识别。再通过Visual Studio 2010开发平台中的C语言进行软件设计,最终将算法移植到VPM642硬件平台上,并采取系统的相关优化措施实现DSP上的人脸识别。通过分析测试,优化后系统的运行速度得到了提高,能够实现人脸识别的实时处理。
关键词:人脸识别;VPM642;PCA;算法优化
中图分类号:TP391.41 文献标识码:A 文章编号:2095-1302(2015)11-00-03
0 引 言
随着物联网中各种支撑技术的飞速发展,以生物特征识别技术为主的识别设备已成为门禁系统的新产品并逐步占领了市场。一系列的科技动态显示,人脸识别市场正在迅猛发展,业界估计,截至2018年,全球生物特征识别市场年复合增长率约为22.9%,其中,人脸识别市场增长约为27.7%,人脸识别将成为未来生物特征识别市场的爆发性增长点[1]。
1 人脸识别系统
一个完整的人脸识别系统主要包括人脸检测及定位、人脸特征提取及人脸识别比对三部分内容[2],大致流程如图1所示。首先,我们对输入的图像或视频流的一帧进行检测并定位出人脸,然后对人脸数据进行人脸特征提取,最后将其与数据库中的人脸样本进行匹配,根据所比对的相似值鉴别出身份。
图1 人脸识别系统的基本流程图
人脸识别系统通常要求有较高的准确性及实时性,要实现一个高精度的快速人脸识别系统,不仅需要设计的算法简单有效,还对系统的整体架构及具体实现有较高的要求。现有的人脸识别系统多是针对PC环境下的应用,大都使用图像采集卡加PC机进行人脸识别,该方案一是体积大,成本高,不易携带[3];二是随着数据量的加大,PC的数据运算处理能力有限,处理速度直接影响用户体验,由此催生了嵌入式人脸识别系统。
随着数字信号处理器(DSP)的飞速发展,DSP以高速、准确的性能为图像获取带来了新的途径,而且用硬件来实现人脸图像识别价格比较低廉。TI公司的DM642是一款功能强大的DSP芯片,它在音视频和图像处理方面的强大功能使得DM642在人脸识别嵌入式系统中被广泛应用。由于直接在DSP上进行算法开发,实现周期较长且调试不便,因此,本文先通过Visual Studio 2010开发平台中的C语言进行软件设计,最终移植到DSP上,然后针对DSP芯片硬件特性,借助DSP开发环境CCS软件进行相关后期优化处理。
基于上述原因,本文选用合众达公司的SEED-VPM642开发板作为人脸识别系统的实现平台,该算法首先采用PCA进行特征提取,然后用最近邻法分类识别,最终将算法移植到该硬件平台上,从而实现DSP上的人脸识别。
2 硬件开发平台
SEED-VPM642开发板是合众达研发的一款可广泛应用于多路视频监控、视频服务器、数字视频录像机(DVR)等场合的嵌入式软硬件平台。其核心芯片DM642是专用于数字媒体应用的高性能32位定点DSP,工作主频高达720 MHz,处理性能可达5 760 MIPS,能够实时实现多路数字视频/音频的编码运算,如:MPEG4、H.264、G.729;4路标准PAL/NTSC制模拟视频输入,1路标准PAL或NTSC制模拟视频输出;2路可编程切换的RS 232/RS 422/RS 485异步串口,8路数字输入以及8路数字输出,可用于控制相关设备;标准的ATA硬盘接口用于本地大容量数据存储;标准的32位33MHz支持主/从模式的PCI2.2 总线或10/100 M以太网接口,方便实现视频服务器或网络摄像机的功能;实时时钟为数字音/视频提供实时时基信号。此外,软硬件加密功能更好地保护开发者的知识产权[4]。
本系统采用合众达VPM642开发板,通过DSP开发板上的Video Port模块对人脸图像进行采集,对图像进行特征提取之后,将人脸特征送入分类器进行分类识别。该系统的硬件结构框图如图2所示。
图2 系统硬件结构框图
本系统分两部分处理。第一部分是视频流处理:即利用CCD摄像机采集视频,视频图像经过解码芯片TVP5150解码后保存为YUV格式,然后进入视频口VPIN,由EDMA搬运至片上进行处理,处理完后再由EDMA搬运至视频口VOUT,经编码芯片SAA7121编码后输出到显示器;第二部分是实时仿真控制:DSP目标板通过SEED-XDS560仿真器与主机相连,主机端则通过CCS 与仿真器建立连接,实现对DSP的实时JTAG仿真。
3 人脸识别算法及软件设计
PCA(Principal Components Analysis)即主成分分析算法,是一种常用的基于变量协方差矩阵对信息进行处理的方法,由于其在降维和特征提取方面的有效性,在人脸识别领域得到了广泛的应用。它的基本原理是:把原先的n个特征数目用更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合可最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射中捕获数据中的固有差异性[5-8]。
本文利用PCA抽取人脸的主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,通过与各个人脸图像比较进行识别。采用Visual Studio 2010开发平台中的C语言进行软件设计,该算法软件设计的基本流程如图3所示。
图3 人脸识别算法的软件设计流程图
3.1 训练阶段
该训练阶段分六步进行,如下所示:
(1)选取ORL人脸库200个样本作为训练集,由灰度图组成,每个样本大小为112×92。则训练样本矩阵为:x=(x1,x2,…,x200)T,其中,向量xi为由第i个图像的每一列向量堆叠成一列的10 304维列向量。
(2)计算训练样本的平均脸。
(3)计算每一张人脸与平均脸的差值。
di=xi-Ψ,i=1,2,…,200
(4)构建协方差矩阵。
(5)求协方差矩阵的特征值和特征向量,构造特征脸空间。协方差矩阵的维数为10 304×103 04,考虑其维数过大,计算量很大,所以采用奇异值分解定理,通过求解ATA的特征值和特征向量来获得AT的特征值和特征向量。求出ATA的特征值λi及其正交归一化特征向量Vi。根据特征值的贡献率选取前p个最大特征向量及其对应的特征向量。求出原协方差矩阵的特征向量,则特征脸空间为:W=(u1,u2,…,up)。
(6)将每一幅人脸与平均脸的差值脸矢量投影到特征脸空间,即:Ωi=wTdi(i=1,2,…,200)。
3.2 识别阶段
该识别阶段分三步进行,如下所示:
(1)将待识别的人脸图像Γ与平均脸的差值脸投影到特征空间,得到其特征值向量:ΩΓ=wT(Γ-Ψ)。
(2)用欧氏距离来计算ΩΓ与每个人脸的距离:
。
(3)选取εi的最小值所对应的人脸图像作为识别结果。
4 算法优化
直接移植的算法程序由于没有考虑到DSP自身的硬件特点,未能合理利用片上资源,无法发挥DSP强大的并行处理能力,因此执行效率低下,不能满足实时要求。本节针对 DM642上的片上资源对人脸识别系统进行优化,以实现更快的执行速度,主要使用了4种优化方法[9-11]。
4.1 浮点转定点
由于在人脸识别系统中,对于处理精度都要求较高,因此程序中广泛使用浮点类型作为数据处理类型,但是DM642是一款定点处理芯片,处理浮点操作数的速度远低于处理定点操作数的速度,因此,本文在程序移植的过程中尽可能地将浮点数据转换为定点数据来减少所耗费的不必要的指令周期。采用定标法,浮点数与定点数Xq转换关系为:Xq=(int)X*2Q,现以加法为例,float X=1.5 ,Y=2.7 ;Z=4.2 ;
查表可知,Qx=14,Qy=13,Qz=12,则定点加法为:
int x,y,z; long temp;
x= 24576,y= 22118;//均采用向下取整
temp = y<<(Qx|Qy) = 22118<<1 = 44236;
temp = x + temp = 68812;
z = (int)(temp>>(Qx|Qz))=(int)(68812L>>2) =17203;
由于z的Q值为12,所以定点值z=17 203即为浮点值z=17 203/4 096=44.2。
4.2 编译器优化
内嵌在CCS集成开发环境中的C/C++编译器提供了多种优化选项,可以完成大量的代码优化工作,选择不同的编译器选项,将产生性能差异很大的汇编代码。本文的编译器选项设置为-o3。
4.3 存储空间的优化
DM642中的二级缓存共享片内RAM,因此增大了Cache,会使得片内可用空间减少。需要将经常使用到的数据放在L2里,此举会大大提高数据访问速度。在程序中使用伪指令pragma进行存储空间的指定。经过实验测试,本文将256 KB的L2中的128 KB分配给RAM,其余作为Cache使用。
4.4 线性汇编优化
线性汇编语言是一种效率接近汇编语言但编程比汇编语言简单很多的编程语言。通过CCS中profile下的clock工具找出程序中计算效率低下的代码,使用线性汇编语言重写该代码中的多重循环部分,线性汇编优化器会合理分配寄存器及功能单元的使用,使指令并行性更好,转换得到的汇编代码效率更高。
5 测试结果及分析
在硬件系统中移植人脸识别算法后,将ORL人脸库作为数据集对算法进行了测试。ORL人脸库共有40个不同年龄、不同种族、不同性别的对象。每个对象有10幅,库中共计400幅灰度图像。人脸的表情和细节均有变化,人脸姿态也有变化,深度旋转和平面旋转可达20度,人脸尺寸有多达10%的变化。由于该库中含有大量的比较结果,成为目前使用最广泛的标准数据库。
将人脸库每个人前5张图片划分为一个训练集,后5张划分为一个测试集。即训练图片200张,测试图片200张时,其实验结果如图4所示,其中图4(a)为CCS软件仿真结果图,图4(b)为测试图片,图4 (c)为识别匹配结果图片,可以看到图片显示的是同一个人。
最终由程序当中统计的识别率可达82%,通过改变训练样本与测试样本的数目,识别率如表1所列。
对于大小为112×92像素的一幅ORL人脸图像,和人脸模板库进行一对一识别时,优化前完成一次操作需要15 s,根本无法满足视频图像中的嵌入式人脸识别系统的要求,采用上述优化策略后,完成一次操作只需要367 ms,相比于优化前的速度大大提高,基本满足实时人脸识别的要求。
6 结 语
随着物联网技术的不断发展,人脸识别技术在生活中的应用也越来越广泛。本文描述了基于PCA的人脸识别算法,并在VPM642硬件平台上实现该算法,之后针对硬件特性采取了相关优化措施。通过实验测试证明,本文的人脸识别系统基本能达到人脸识别实时处理的要求。
参考文献
[1]勾蕊.6年突破200亿美元&人脸识别市场大爆发[EB/OL]. http://security.zol.com.cn/381/3811 420.html, 2013-06-24.
[2]钱玥.基于物联网技术的实名制检票系统[D].苏州:苏州大学,2012.
[3]王昶.TMS320DM6446 DSP车牌识别系统设计与优化[J].中国交通信息化, 2012(5):68-73.
[4]合众达电子.SEED-VPM642用户指南(Rev. B) [Z].2005.
[5] Elarian Y, Abdel-Aal R, Ahmad I, et al. Handwriting synthesis: classifications and techniques[J].DocumentAnalysis & Recognition, 2014, 17(4):455-469.
[6]李康顺, 李凯, 张文生.一种基于改进BP神经网络的PCA人脸识别算法[J].计算机应用与软件, 2014,31(1):158-161.
[7] Zhang S, Zhang C. Maize disease recognition based on local discriminant algorithm[J]. Transactions of the Chinese Society of Agricultural Engineering, 2014, 30(11):167-172.
[8] Xiang X, Yang J, Chen Q. Color face recognition by PCA-like approach[J]. Neurocomputing, 2015:231–235.
[9]朱明, 陆小锋, 陆亨立,等. AdaBoost人脸检测算法在DSP上的移植与优化[J]. 计算机工程与应用, 2014,50(20):197-201.
[10]汤达, 牛照东, 王丁禾,等.光学图像高斯平滑滤波的DSP优化[J]. 激光与红外, 2013, 43(12):1411-1415.
[11]苑玮琦, 张丽丽.虹膜识别算法的DSP移植及其优化[J]. 微计算机信息, 2010(26):37-39.