李昌湘 白创
文章编号: 2095-2163(2018)03-0115-04中图分类号: 文献标志码: A
摘要: 关键词: (School of Physical & Electronic Science, Changsha University of Science & Technology, Changsha 410114, China)
Abstract: A face recognition system based on the S5PV210 embedded platform is designed and implemented in this paper. Designing a face recognition system on an embedded device requires not only considering the recognition accuracy, but also estimating the influence of environmental changes around the device on the face recognition. In the system, the Adaboost algorithm is used to detect the human face based on the haar feature of the human eye, and human face is identified by a method of LBP texture feature extraction combined with SVM recognition classification. After system testing, the recognition rate of the system and the robustness to changes in lighting could effectively satisfy the needs of general face recognition authentication.
Key words:
基金项目: 作者简介:
通讯作者: 收稿日期: 引言
人脸识别技术是生物识别技术中的一种,生物识别技术具有普遍性、唯一性、稳定性、易采集的特点[1]。与其他生物识别技术相比,人脸识别比指纹识别设备使用寿命更长、比虹膜识别设备成本更低[2]。嵌入式设备具有体积小、功耗低、便携的优点,被广泛的应用于人们的日常生活中[3]。近几年来计算机硬件的飞速发展,嵌入式设备的运算速度和存储空间都得到了提升,这为在嵌入式设备上搭建人脸识别系统提供了良好的条件。
嵌入式设备在实际应用中经常会被携带到各个不同的场景,不同场景间的光照变化会严重地影响人脸识别的效果[4]。LBP特征是一种纹理特征,对光照具有不变性,使用LBP纹理特征进行人脸识别可以减少光照对人脸识别结果的影响[5-6]。SVM是一种擅于解决小样本机器学习问题的分类器,非常适用于嵌入式设备上的人脸识别[7-8]。
1系统硬件设计
系统的开发平台是S5PV210开发板。该开发板的处理器型号是ARM CortexTM-A8,主频达1GHZ,开发板上有512M的SDRAM,1G的NandFlash。开发板的运算速度、运行内存和存储空间都能满足图形运算的需求。开发板上外接USB摄像头来采集图像,自带LED显示屏和触摸屏来实现人机交互。系统通过串口从PC机接收指令和下载程序,通过串口转USB芯片CH340与PC机上的USB口相连。系统硬件设计框图如图1所示。
2系统软件设计
2.1嵌入式系统软件环境搭建
系统环境搭建主要由引导加载程序U-boot、Linux内核、根文件系统、设备驱动程序、应用程序5个部分组成。先将从官方下载的U-boot源码交叉编译后烧写到开发板中,U-boot负责启动内核前的一系列初始化操作并且最终启动内核。然后交叉编译linux内核,通过uboot将交叉编译内核生成的zImage文件烧写到开发板的指定位置后启动内核。根文件系统是内核启动时所挂载的第一个文件系统,在S5PV210平台上一般使用ext3格式的文件系统,根文件系统同样需要交叉编译后再烧写到开发板中。将摄像头、触摸屏等设备的驱动程序以及Qt和opencv移植到开发板中。Qt为嵌入式设备图形化的应用程序编程提供支持,opencv则为应用程序编程提供图像处理函数库。
2.2系统应用程序设计
人脸识别系统再应用程序部分主要实现图像的采集、人脸识别、用户信息管理、人机交互界面4个功能。图像采集部分通过UVC协议和V4L2接口控制USB摄像头采集图形的分辨率、帧率、图像的格式;人脸识别部分用Adaboost人臉检测算法检测定位人脸,通过LBP特征提取结合SVM分类器来识别人脸;用户信息管理是根据人脸识别的应用场景设计的,实际应用中不仅需要录入用户的人脸图像,还需要将用户对应的编号、姓名、性别等信息录入系统中,需要对这些信息进行管理;人机交互界面可以指导用户轻松地使用系统,并在识别过程中将反馈信息提供给用户。其中人脸识别部分的具体实现如图2所示,分为训练和识别2个步骤。
训练过程先依次采集每个用户的人脸图像,通过adaboost人脸检测算法检测图像中的人脸并将检测到的人脸部的位置的图像截取下来缩放到指定的大小。然后给每个用户的人脸样本添加用户标签,并作为训练样本库存放到指定的目录下。最后提取这些训练样本的LBP纹理特征,将这些纹理特征数据传给SVM分类器,SVM通过这些训练数据构造最优分类面。
识别过程中采集的是当前摄像头面前的用户的人脸,同样经过adaboost人脸检测后截取并缩放到指定大小。提取当前人脸的LBP纹理特征,传给SVM分类器,SVM用构造好的最优分类面对当前人脸进行分类,最后得到当前人脸所分到类别的用户标签,得到的用户标签即为分类结果。
3系统算法原理
3.1Adaboost人脸检测与定位
人脸检测其实是一个将输入图像分出人脸与非人脸2类的分类问题。Adaboost的核心思想是通过一系列弱分类器获得强分类器。Adaboost算法通过训练集训练多个不同的弱分类器,然后将这些弱分类器集合起来构成一个更强的分类器。haar特征将黑白两种矩形组成特征模板,用黑色矩形内像素数量减去白色矩形内像素数量的方式来表示模板内的Haar特征,对边缘、线段较敏感。通过提取人眼部的haar特征,大量人脸样本训练得到强分类器,用得到的强分类器区分人脸与非人脸。
3.2人脸LBP特征提取
局部二值模式(LBP)是一种图像的纹理特征。将图像领域内的像素值与中心像素值相比较,大于中心点像素值则记作1,反之则记作0,这样就构成了一组0,1组成的二进制编码,这就是局部二值模式。当邻域为3×3时,8个像素点构成的8位的二进制编码刚好可以转化为十进制。
圆形LBP算子将局部二值模式3×3 邻域扩展到任意尺度,并用圆形邻域代替了正方形邻域,圆形LBP 算子允许在半径为R 的圆形邻域取N个像素点,用尺度(N,R)表示。尺度(N,R)内的圆形LBP算子的编码公式为:LBPN,R=∑N-1if(gi-gc)2i, f(x)={1,x≥00, x≤0(1)其中:gi-gc表示第i个领域像素值减去中心像素值的差。该算子会得到2N个不同的LBP编码。圆形LBP算子具有灰度不变性的同时还具有旋转不变性。
3.3SVM人脸分类识别
SVM通过构造一个或多个最优超平面来对样本分类,该最优超平面在对样本正确划分的同时最大化样本到超平面的距离。用来分隔样本的超平面可以用如下线性方程来表示:g(x)=WTx+b(2)为了使分隔开的类别具有最大的间隔,从而获得更高的可信度,要让离分隔面最近的样本离超平面的距离最大。假设分别经过2个离超平面最近的点的2个与超平面平行的平面H1与H2。H1:y=wTx+b=+1
H2:y=wTx+b=-1(3)那么只要最大化这2个超平面之间的间隔2‖w‖即可。
通过拉格朗日乘子法求这个最优化问题,约束条件为:min 12‖w‖2(4)
subject to yiwxi+b-1≥0(i=1,2,...,n)经过一系列推导,最终得到分类函数:f(x)=∑niαiyik(x1,x2)+b(5)其中:αi是拉格朗日乘子,k是核函数。核函数使低维空间的运算结果和映射到高维空间的内积运算结果相同,避免将线性不可分的点投放到高维空间中处理。RBF核函数:k(x1,x2)=exp-(x1-x2)22σ2(6)4系统测试
为了准确测试系统的人脸识别算法性能,并将系统中所用算法与其他几种常用的人脸识别算法做比较,人们在与系统环境相近的PC端的Ubuntu操作系统上进行测试,算法实现同样用C++在Qt下编程。选取ORL人脸库和Yale人脸库中每人随机选取5张图片做训练样本、剩余图片做测试样本。Yale人脸库相比ORL人脸库,每个人相同数量的样本中包含更明显的光照、姿态变化。测试比较文中算法与PCA、FIsherface、LBP等其他几种算法的多次实验的平均识别率。测试结果见表1。
文中算法95.7094.13从图中可以看出,由于Yale人脸库中的光照、姿态变化更明显,几种算法在Yale人脸库中的识别率都较ORL人脸库低。比较同一种算法在2个人脸库中的识别率变化,LBP算法的识别率变化较前2种算法低,本文所用算法在2个人脸库中的识别率变化最低,而在2个人脸库中的测试结果识别率都是最高的。测试结果验证了LBP纹理特征对光照的鲁棒性。文中算法通过圆形LBP算子提取人脸图像的纹理特征,用 SVM分类器来识别人脸,因此在2个人脸库中都取得了较高的识别率。嵌入式人脸识别系统在准确识别人脸图像的同时,对于实际生活中的光照变化有一定的鲁棒性。
5结束语
嵌入式设备上的设计往往要多考虑一些相关因素,既包括设备性能因素也包括周围环境的因素。在S5PV210平台上移植Qt和opencv来搭建人脸识别的软件环境,虽然占用了一部分存储空间但对程序的运行速度影响不大。LBP结合SVM的人脸识别算法对周围环境的光照变化具有鲁棒性,在S5PV210平台上也能快速运行。随着时代的发展,未来的嵌入式设备性能将继续提高,进而可以考虑在嵌入式设备上使用算法复杂度更高、识别效果更好的人脸识别算法。
参考文献
[1] 汪国强. 基于嵌入式系统的人脸识别系统设计[J]. 电脑迷,2017(11):165.(下轉第121页)[2] 赵越,乔玉灯. 基于嵌入式的人脸识别考勤系统的研究[J]. 电子技术与软件工程,2015(17):211.
[3] 王威. 基于ARM9硬件平台的人脸识别系统设计与研究[D]. 成都:电子科技大学,2013.
[4] 储清翠. 复杂光照条件下人脸跟踪算法研究[D]. 合肥:安徽大学,2014.
[5] 王茜,肖国强,吴松,等. 基于LBP直方图的复杂光照下的人脸识别[J]. 计算机工程与应用,2012,48(15):181-186.
[6] 易焱,蒋加伏. 基于LBP和栈式自动编码器的人脸识别算法研究[J]. 计算机工程与应用,2018,54(12):163-167,245.
[7] 胡沐晗. 基于PCA和SVM的人脸识别系统[J]. 计算机时代,2017(12):60-63,67.
[8] 杨梅芳,石义龙. 基于2DPCA+PCA与SVM的人脸识别[J]. 信息技术,2018(2):32-36.