杨鸣鸣
(杭州电子科技大学 计算机学院,浙江 杭州 310000)
摘要:该文主要实现了在嵌入式系统上的人脸识别。采用PCA对图像数据进行降维,然后利用最短欧氏距离、支持向量机(Support Vector Machine,SVM)和BP神经网络实现了分类。在嵌入式系统上,没有使用QT、OpenCV等占用空间大的工具,而使用自己编写的C语言,以及Linux内核,节省了空间,并且处理过程中使用了BMP图片,稍微增加了存储空间,但是运算简单,处理速度较快。
关键词:PCA;SVM;神经网络;嵌入式系统;人脸识别
0引言
假如汽车上安装了嵌入式人脸识别系统,通过人脸识别才能启动汽车,那么安全系数就提高了很多。过去,大多数人借助于OpenCV等方式在嵌入式设备上进行人脸识别,大大增加了嵌入式系统的负担,本文通过使用主成分分析(Principal Component Analysis,PCA)、支持向量机(Support Vector Machine,SVM)、神经网络等算法,抛开QT图形界面、OpenCV等工具,仅借助LibSVM库,以及C语言实现了一个完整的嵌入式人脸识别系统。尽管PCA以及SVM都可以实现人脸识别,但是本文实现了一种将PCA、SVM与神经网络相结合的方法,在满足准确率要求的情况下,将运行时间降到最低。
1概述
人脸是人的主要身份信息。随着人脸识别技术的发展,用机器来识别人脸已经实现,目前的人脸识别方法主要分为以下几类:
(1)基于几何特征的方法,最早是由BLEDSOE于1966年提出,后来KANDE做出了一些改进,然而识别率也仅有45%~75%;
(2)基于模型的方法,使用的模型主要为HMM隐马尔可夫模型[1],它的识别效果较好;
(3)基于统计的方法,特征脸[2]的方法是由TURK M和PENTLAND A最早提出,一种新的人脸识别思路由此开始。后来在此基础上有一系列的改进方法[34],基于频域的方法GABOR[5]小波变换也引入到人脸识别领域;基于支持向量机[67]的人脸识别,识别率很好。
本文主要研究使用PCA、SVM、神经网络方法在嵌入式系统上实现人脸识别。
2PCA及降维
在ORL人脸数据库中,有40个人的400张像素为92×112的图片,把每一张照片放到一个行向量上,那么将得到10 304维的数据,这对于识别来说实在是太大了,因此需要对它进行降维处理。
KIRBY M[8]等人使用KL变换对人脸图像进行了降维处理,把一张人脸图像当做一个高维的向量,人脸图像的每个像素都是这个高维向量的一个元素,接着使用KL变换把图像向量映射到一个特征空间。直到1991年PENTLAND A[9]首先将PCA用在了人脸识别上,进而引出了“特征脸”。
大部分研究都是使用OpenCV[10]、MATLAB[11]等工具在嵌入式设备上进行人脸识别,然而这些工具对于嵌入式系统来说是非常消耗存储资源的。因此笔者写了一个精简PCA的程序代码。
编写代码的步骤如下:
(1)读取一张图片的数据;
(2)先跳过bmp的前54 B的头文件部分,接下来的是颜色数据;
(3)转换为灰度图,连续的3 B构成了一个像素,那么该像素的灰度值为GRAY=(R×30+G×59+B×11)/100;
(4)把测试图片(50张)的灰度值存为一个10 304×50的矩阵中;
(5)利用Householder方法对矩阵进行变换,进而求出特征值和特征向量;
(6)把测试图像投影到特征空间,将欧式距离最小的作为识别结果。
3SVM
在20世纪70年代,BOSER B E等人[12]开始研究统计学习理论,SVM[13]是基于统计学习理论的一种机器学习方法,它通过寻求结构化风险最小来达到提高学习机泛
化能力,实现经验风险和置信范围的最小化。
本文中使用台湾大学林智仁[14]教授开发的LibSVM库,在Linux上使用非常方便。步骤如下:
(1)利用PCA降维获得的数据,然后将它修改为LibSVM所要求的格式;
(2)分别对训练数据和测试数据进行SCALE;
(3)对于SCALE后的测试数据进行分类。
4神经网络
1943年,首先由McCulloch和Pitts提出MP模型后,一直到今天,神经网络经过几十年的发展,取得了很大的发展,本次试验中使用BP神经网络对人脸数据进行处理,经过实验发现在一定量人脸的情况下,训练耗时较少,识别时间也较短,如表1所示。
5嵌入式相关移植
本文基于S3C2400的嵌入式设备,使用Linux操作系统在JZ2440上实现了一套完整的嵌入式人脸识别系统, 由于嵌入式摄像头的安装位置相对固定,因此把主要精力放在了人脸识别的部分。主要分为以下两个步骤:
(1)图片采集。使用摄像头获取动态的图片,当需要识别时,只需要触摸显示屏,就可以把图片保存下来。
(2)人脸识别。此时对图片进行预处理,然后使用PCA+欧式距离或者PCA+SVM等方法进行识别。
6实验结果分析
本文分别使用PCA和SVM等方法,在ORL人脸图像库(如图1所示),与本实验室人员的人脸图像库(如图2所示)进行实验,实验证明识别效果很好。ORL人脸库有40个人,每人有10张照片,本文使用一个人的前5张照片作为实验样本,后5张作为测试样本。如图1所示,1~5为一个人的训练样本照片,对应的测试样本是10 001~10 005。同样的训练样本6~10对应的测试样本是10 006~10 010。
为了验证此方法的通用性,还使用了一些本实验室人员的人脸图像,识别率仍然可以达到很好的识别效果(如表2所示)。
7结论
经过试验发现,在ORL人脸图像库使用PCA+最近邻识别率最高可达94%,而使用PCA+SVM的识别率可以达到98%,而使用BP神经网络时,本文前期训练耗时较多,且实验过程中发现为了达到更高的准确率不得不增加神经网络输入的维度,这样就更增大了神经网络的耗时,并且实验结果发现实现的准确率并没有SVM高,因此本文最终选择PCA+SVM作为嵌入式人脸识别的实验方法。
参考文献
[1] SAMARIA F, YOUNG S. HMM based architecture for face identification[J]. Image & Vision Computing, 1994, 12(8):537-543.
[2] TURK M, PENTLAND A. Eigenfaces for recognition[J]. Journal of Cognitive Neuroscience, 1991, 3(1):71-86.
[3] HONG Z Q. Algebraic feature extraction of image for recognition[J]. Pattern Recognition, 1991, 24(3):211-219.
[4] NAKAMURA O, MATHUR S, MINAMI T. Identification of human faces based on isodensity maps[J]. Pattern Recognition, 1991, 24(3):263-272.
[5] LIU D H, LAM K M, SHEN L S. Optimal sampling of Gabor features for face recognition[J]. Pattern Recognition Letters, 2004, 25(2):267-276.
[6] PHILLIPS P J. Support vector machines applied to face recognition[J]. Advances in Neural Information Processing Systems, 2001, 11(7):803-809.
[7] JONSSON B K, MATAS J K J, LI Y. Learning support vector vectors for face verification and recognition[C]. IEEE International Conference on Automatic Face and Gesture Recognition, 2000.
[8] KIRBY M, SIROVICH L. Application of the karhunenloeve procedure for the characterization of human faces[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1990, 12(1):103-108.
[9] TURK M, PENTLAND A. Eigenfaces for recognition[J]. Journal of Cognitive Neuroscience, 1991, 3(1):71-86.
[10] 王威. 基于ARM9硬件平台的人脸识别系统设计与研究[D]. 成都:电子科技大学, 2013.
[11] 赵文琦. 基于ARM的嵌入式人脸识别系统研究实现[D]. 哈尔滨:哈尔滨工程大学, 2011.
[12] BOSER B E, GUYON I M, VAPNIK V N. A training algorithm for optimal margin classifiers[C]. Proceedings of the 5th Annual Workshop on Computational Learning Theory, 1992(7):144-152.
[13] BURGES C J C. A tutorial on support vector machines for pattern recognition[J]. Data Mining & Knowledge Discovery, 1998, 2(2):121-167.
[14] CHANG C C, LIN C J. LIBSVM: a library for support vector machines[J]. Acm Transactions on Intelligent Systems & Technology, 2011, 2(3):389-396.