基于HMM的嵌入式人脸识别系统研究

嵌入式设计应用

130人已加入

描述

引言
    嵌入式人脸识别系统与传统鉴别身份的系统相比具有很强的优势,无需特殊的采集设备,成本低廉,使用简单;同时,人脸识别不干扰使用者,不侵犯使用者的隐私,属于非侵犯的主动识别,易于为用户所接受。
    本文以嵌入式ARM9系统开发为主线,以HMM模型为理论基础,展示了完成图像采集、人脸检测与识别等功能相对应的硬件平台和软件模块的设计及实现过程;并对图像预处理的浮点算法做了优化,极大提高了嵌入式系统的速度。
    本系统软件部分可直接应用于带有Linux操作系统的智能手机中,利用手机以及内置的摄像头,即可进行个人面部特征数据分析,然后对比最初存储的人脸信息库,完成身份识别功能。

1 系统架构及其设计方案
    本系统采用了Samsung推出的以ARM 920T RISC为内核的处理器——S3C2410A。其优秀的处理性能理所当然地成为便携式设备开发的首选。同时为适应智能手机对视频图像采集的需求,系统采用了基于USB总线的视频采集模块,与串行传输相比极大地提高了数据的采集速率。本系统涉及到数字图像的采集、处理、存储、传输和HMM算法等多种技术。其系统架构如图1所示。

HMM

 

2 图像采集硬件设计
    鉴于传统CCD图像传感器昂贵的成本、相对复杂的附加电路和较高的功耗,本系统采用OmniVision公司的OV7640 CMOS芯片作为图像传感器。OV7640是一款低电压(2.5 V)、高灵敏度的CMOS图像传感器。
    实时采集存储系统需要高速的数据传输,对系统硬件之问的配合提出较高的要求。本系统设计中,在采集部分和传输部分之间配有相应的缓存区。实际中,采用OV7640及配套的芯片OV511扩展DRAM起缓存作用,实现将数字视频图像通过高速USB送入ARM处理器。OV511是一个专用的数字摄像IC的USB接口芯片。

3 图像采集程序
    本系统采用Linux做为操作系统平台,操作系统的移植在此不做过多介绍。
    Video4 Linux(简称V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。Linux内核提供Video4Linux应用程序接口,在程序开发时,首先是基于Video4Linux API函数来设计程序。

 

 基于Video4Linux图像采集的程序流程如图2所示。

HMM

 

4 图像预处理与人脸识别算法及实现
    人脸识别过程首先判断输入的人脸图像或者视频中是否存在人脸,如果存在,则进一步给出每个人脸的位置、大小和各个主要面部器官的位置信息,并依据这些信息,进一步提取每个人脸中所蕴含的身份特征,将其与已有人脸库中的人脸进行对比,从而识别人的身份。
    人脸识别的过程可以分为图像预处理、人脸检测和人脸识别三部分。
    人脸检测是指从待识别矩阵中定位人脸区域中各特征区域,并将各个区域分割开。人脸识别是根据已有的人脸数据库,输出待测人脸对应在人脸库中的对象标号。二者互为前提和目的。由于HMM既可完成人脸检测,又可完成人脸识别,因此我们将人脸检测与识别同时处理。
4.1 隐马尔可夫模型(HMM)基本概念
    HMM是一组用于特征化信号的统计特性的模型,它包含两个相关的过程:一个是隐含的、不可见的有限状态马尔可夫链,它具有初始状态概率分布函数和状态转移概率矩阵,另外是一组与状态有关的概率密度函数。
    一个HMM的构成元素如下:

HMM

    一个HMM可以简记为λ={A,B,∏},由于其输入为有限字符集V={v1,v2,… vm},因此称其为离散隐马尔可夫模型

 

4.2 用于人脸识别的HMM模型
    根据状态转移的类型,HMM可分为遍历的(ergodic)和从左到右的(left-right)。前者表示状态转移是任意的,可以到本身和其他所有状态,后者状态转移只限于本身和下一个状态。人脸垂直方向由上至下和水平方向从左至右各个区域具有自然不变的顺序,可以用1D-HMM来模拟人脸,如图3所示。

HMM


4.3 人脸图像特征提取
    设每一个人脸图像宽度为W,高度为H,被划分为互相重叠的块。块的高度为L,重叠深度为P。因此,从人脸图像抽取的总分块数为观察矢量数T,且T=(H-L)/(L-P)+1。参数L和P的选择将影响系统的识别率,大的重叠深度值P增加了垂直特征向量的数量,使系统的识别率提高。L的选择比较微妙,较小的L使观察矢量不能有效鉴别;而大的L使剪切相交特征概率增加。当P大时,系统识别率对L的变化不敏感。分割算法流程如图4所示。

HMM


4.4 人脸HMM模型的训练
    为人脸图像库中每一个人脸建立一个HMM模型,用同一个人的5张不同人脸照片进行训练。按照子块划分方法,得到的2D-DCT变换系数矢量形成观察矢量序列。用观察矢量序列O={o1,o2,…,oT}进行训练,得到HMM模型参数。
    首先对HMM模型λ={A,B,∏}进行初始化,通过自上而下均匀分割人脸图像得到训练数据。模型状态数N=6,与每一个状态有关的观察矢量序列用于得到观察概率矩阵B的初始估计,A和∏的初始值按人脸模型自左到右的结构给出。然后利用最大似然估计算法(Baum-Welch估计算法)重新估计模型参数,检测P(O|λ)的收敛条件。
    如果满足式(3)条件,则模型已收敛,结束训练迭代过程;否则继续进行下一次训练。


HMM

   
    此处,C为预先给定的阈值。
4.5 人脸图像识别
    被识别的人脸图像用于训练过程相同的方法提取观察矢量序列,观察矢量序列的概率由人脸图像HMM模型计算出,即:
   

HMM


    当满足式(4)时,被识别人脸对应人脸图像库中第k个人的人脸被识别出。
    实验证明,此算法易于实现实时处理,不受脸部表情变化的影响,抗噪声能力强,鲁棒性好。但在人脸识别中的光照问题和姿态问题方面还有待于进一步的研究。

5 结论
    基于嵌入式ARM9和HMM算法的人脸识别系统具有体积小,计算量小,运算速度快,性能稳定等特点,能够满足人们对识别设备小型化的需求。相信在不久的将来,基于嵌入式的人脸识别系统会在安检、身份验证、门禁系统、智能考勤等方面得到广泛应用。
    本文作者创新点:
    人脸识别是生物特征识别中一个重要的研究方向,是间接、无侵犯式身份识别的主要方法。在嵌入式系统进行人脸识别,能够实现人脸识别设备的便携化,将会极大地拓展识别设备的使用范围。识别使用HMM算法,有效地降低了识别算法的空间和时间复杂度,为实时识别提供了可能。


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分