24小时论文定制热线

热门毕设:土木工程工程造价桥梁工程计算机javaasp机械机械手夹具单片机工厂供电采矿工程
您当前的位置:论文定制 > 毕业设计论文 >
快速导航
毕业论文定制
关于我们
我们是一家专业提供高质量代做毕业设计的网站。2002年成立至今为众多客户提供大量毕业设计、论文定制等服务,赢得众多客户好评,因为专注,所以专业。写作老师大部分由全国211/958等高校的博士及硕士生设计,执笔,目前已为5000余位客户解决了论文写作的难题。 秉承以用户为中心,为用户创造价值的理念,我站拥有无缝对接的售后服务体系,代做毕业设计完成后有专业的老师进行一对一修改与完善,对有答辩需求的同学进行一对一的辅导,为你顺利毕业保驾护航
代做毕业设计
常见问题

基于arm9+Linux的人脸识别系统开发

添加时间:2018/07/17 来源:电脑与信息技术 作者:陈文浩 顾梅花
随着科学技术的不断发展, 传统的身份识别技术已经不能完全满足人类发展的需求。比如传统的身份识别技术有密码验证和身份证件等。密码存在被他人盗取的风险, 一旦被他人盗取, 对方就能轻而易举进入受控区域。
以下为本篇论文正文:

  摘要:文章提出了基于Linux系统环境下的人脸识别系统设计, 硬件采用了基于S3C2440芯片作为处理器, 采用USB摄像头进行人脸图像采集, 以QT作为人机交互界面。对人脸识别系统设计原理进行了研究, 重点探讨了特征提取、特征降维和人脸识别等技术问题。最后将PC上实验成功的人脸识别系统植到开发板上, 测试结果表明, 该系统能准确快速地识别人脸。

  关键词:Linux; QT; 人脸识别; 特征提取;

  Abstract:This paper presents the design of face recognition system under the environment of Linux system based on S3 C2440 chip as the processor, using USB camera for face image acquisition, using QT as the man-machine interface. The principle of design of face recognition system is studied, focusing on the technical problems of feature extraction、feature dimension reduction and face recognition. Finally, the successful face recognition system on PC is embedded into the development board, the test results show that the system can quickly and accurately identify the face.

  Keyword:Linux; QT; face recognition; feature extraction;

  随着科学技术的不断发展, 传统的身份识别技术已经不能完全满足人类发展的需求。比如传统的身份识别技术有密码验证和身份证件等。密码存在被他人盗取的风险, 一旦被他人盗取, 对方就能轻而易举进入受控区域。用户本人也存在密码遗忘等风险, 由于遗忘造成了无法验证自身身份而被拒之门外。身份证件容易被他人伪造或者盗用, 对方持卡就能仿冒身份。针对以上弊端, 众多学者开始把目光转移到生物特征识别技术[1], 近年来, 生物特征识别技术已经成为许多学者研究的热点。人脸识别技术属于生物特征识别技术的一种, 与其他生物识别技术相比, 人脸识别具有直接、友好和方便等特点, 识别过程无需人体直接接触, 具有非侵犯性, 因此人脸识别技术的研究具有重要意义。传统的人脸识别技术大多是基于PC机的[2], 有时无法满足特定场合需要, 而基于嵌入式平台的人脸识别技术具有便携性好, 价格低廉, 占用空间小等优点, 因此对嵌入式的人脸识别的研究十分有必要。由于人脸图片数据处理非常大, 而ARM板子的资源非常有限, 所以数据降维和数据量变小是嵌入式人脸识别的关键。为了解决上述问题, 本文设计出基于arm9+Linux的人脸识别系统[3], 该系统使用Adboost算法实现人脸检测, 采用PCA算法实现特征提取和数据降维[4], 移植opencv计算机视觉库[5], 调用其算法, 从而完成人脸识别。

  1、人脸识别系统硬件设计

  本文硬件平台选取S3C2440处理器的jz2440开发板, 其CPU主频可以达到400MHz。开发板有2M Byte NOR FLASH和256M Byte的NAND FLASH, 其中NOR FLASH通常用来保存Boot Loader, 引导系统启动, NAND FLASH用来保存操作系统映像文件和文件系统, 其作用相当于电脑的硬盘[6]。此外它还有64M Byte SDRAM, 其相当于电脑的内存条, 在执行程序时需要用到它。该开发板自带4.3寸液晶显示屏, 外接USB摄像头进行图像采集。采集到的图像数据由S3C2440微处理器处理, LCD液晶显示屏和触摸屏构成人机交互模块, LCD显示用户操作界面和提示信息, 通过触摸屏实现人机交互。系统通过串口与PC机进行通信。系统硬件总体框图如图1所示。

图1 系统硬件总体框图
图1 系统硬件总体框图

  2、系统的软件设计

  2.1、Linux系统的搭建

  Linux系统主要由四部分组成:引导加载程序Boot Loader、Linux内核、根文件系统、设备驱动程序。我们需要在arm9开发板上搭建Linux系统环境, 首先从官网上下载u-boot源码, 然后在PC上进行交叉编译, 编译完成后需要烧写到开发板中, 一般烧写方法有JTAG和JLINK, 本文用的是Open JTAG工具进行烧写。在烧写完u-boot后, 重启开发板, 就可以用u-boot来烧写Linux内核, 在烧写之前也需要对Linux内核源码进行配置和编译, 编译后生成的u Image文件, 可以用u-boot烧写进开发板。接着我们要制作根文件系统, 这里需要注意的是根文件系统所用的交叉编译器需要与内核一致, 制作完成后烧写到开发板中就可以加载应用程序。最后移植驱动程序, 像触摸屏、摄像头、LCD等, 内核通过这些设备驱动来操作控制这些设备。

  通过以上步骤就可以制作一个基本的Linux系统的结构体系, 接下来需要移植应用程序。我们想让它支持触摸屏还需要移植tslib, tslib是触摸屏程序, 通常作为触摸屏驱动的适配层, 为上层的应用提供了一个统一的接口。接下来移植QT, 这样才能使得这个系统支持QT应用程序[7]。

  2.2、人脸识别系统设计

  人脸识别分为两大块:人脸检测和人脸识别。其中, 人脸检测实现从输入的图像中找到人脸及人脸存在的位置, 并将其从背景中分离出来。本文采用haar特征级联分类器用于人脸检测, 检测出人脸后, 需要进行图像预处理, 包括去除噪声、尺度归一化和灰度归一化、灰度均衡化[8]。预处理后的图片采用PCA算法进行特征降维, 将高维人脸特征空间降低到一个低维特征空间中, 然后把投影得到的特征向量存储在数据库中[9]。在识别阶段, 将待测人脸图片进行处理后, 将此图像的特征值与数据库中的人脸特征值进行对比, 根据给定的相似度阈值判断是否为数据库中的某一人, 从而实现人脸识别。人脸识别软件流程图如图2所示。

图2 人脸识别流程图
图2 人脸识别流程图

  2.3、Adboost人脸检测算法

  Adboost是一种递归求取强分类器的方法, 是通过改变样本权重来实现的[10]。其基本思想是:针对同一个训练集训练不同的分类器, 即弱分类器, 然后把这些弱分类器集合起来, 构造一个更强的最终分类器。

  在Opencv里面有用haar特征构建的boost级联分类器[11]。Opencv有关人脸检测的级联分类器很多, 有用于正面人脸检测的, 也有用于侧脸检测的, 还有检测眼睛、鼻子、嘴巴的。这里我们选择正面人脸检测的分类器。用于正面人脸检测的分类器有以下几种:

正面人脸检测的分类器

  通过本人亲自实验, 使用haarcascade_frontalface_alt.xml用于人脸检测时, 检测率最高, 其中haarcascade_frontalface_alt_tree.xml速度较快, 但会产生漏检, haarcascade_frontalface_alt2.xml速度也较快, 但会产生很多误检, 使用haarcascade_frontalface_default.xml进行实验时, 速度很慢, 误检率超高。所以使用haarcascade_frontalface_alt.xml用于检测时的综合检测效果最好。当然也可以自己训练分类器, 但是自己训练分类器需要大量的正样本和负样本, 其训练集图像的尺寸大小要统一, 差异性要尽可能大, 这样训练出的分类器才会有较好的效果。本文使用haarcascade_frontalface_alt.xml用于人脸检测, 其效果良好。

  2.4、基于特征脸的人脸识别算法

  基于PCA的人脸识别算法, 也叫特征脸算法。主要分为两个阶段:训练阶段和测试阶段。训练阶段利用K-L变换得到人脸数据的主要成分, 由这些主要成分构成特征脸空间[12]。测试阶段是将待识别的图像和训练集图像都投影到特征脸空间去, 然后根据设定的阈值判断人脸是否是人脸数据库中的[13]。

  训练阶段:假设训练集由N幅图像组成, 每幅图像都是m*n维, 它们所对应的图像矩阵是m行n列, 把矩阵的每行进行首尾相接组成一个列向量[14]。设M=m*n, 于是训练样本矩阵为:

训练样本矩阵

  第一步:计算N个样本的平均值:

计算N个样本的平均值

  第二步:计算样本图像差值脸:

计算样本图像差值脸

  第三步:构造协方差矩阵:

构造协方差矩阵

  第四步:计算协方差矩阵C的特征向量和特征值, 注意到C是一个M*M维的实对称矩阵, 所以它有M个特征值, 把前面K个特征值所对应的特征向量构成特征脸空间U= (u1, u2, …, uk) , 将每个差值脸di投影到特征脸空间:

每个差值脸di投影到特征脸

  需要说明的是:上面K的取值是小于N的, 其具体值由贡献率决定:

具体值由贡献率

  其中a一般取90%, 即所选特征值的比重要占总的特征值和的90%以上。所以通过上面的方法就将m*n*N维转化为k*N维的数据, 实现降维的目的[15]。在opencv中实现PCA非常方便, 只需要几行代码就能实现。

  在实现PCA降维以后, 把训练得到的特征向量保存到.xml的文件中, 以便下次可以直接读取, 在识别阶段时, 首先加载保存在.xml文件中的训练结果, 随后将测试图片投影到子空间, 然后计算测试图片与训练图片的欧式距离, 找出距离最近的那个训练集图像[16]。如果此距离在设定的阈值范围内, 则认为是同一个人, 如果超出设定的范围, 则说明训练库中没有此人[17]。

  3、实验结果

  在开发板上搭建好Linux环境, 移植qt库, 移植tslib触摸屏, 移植opencv库后, 我们就可以运行人脸识别程序。本实验需要真人亲临现场进行注册, 在进行训练后实现检测和识别, 或者也可以用测试照片进行实验, 由于条件有限, 我只能用测试图片和本人实验。测试本人亲自进行实时检测识别时, 结果正确。如图3所示是本人在开发板上正确识别出本人的效果图。

图3 正确识别效果图
图3 正确识别效果图

  接着我们选取10张照片进行实验, 其中包括一些明星的人脸。在训练集中存放这10个人的人脸照片进行训练。每个人的训练照片可以是一张也可以是很多张, 数量越多识别效果越好, 如果是多张照片, 那么选取的照片需要有差别。如图4所示是这10个人对应的人脸照片。

图4 模板库人脸图
图4 模板库人脸图

  在测试文件夹中我们也存放这10个人的照片进行测试, 相同的人给定一个相同的标签加以区分。Truth对应的是测试图像的标签, neareast对应的是训练图像的标签, 两者相等说明识别结果正确, 本次选取的十张照片识别结果完全正确。如图5所示是输出的识别效果图。

图5 系统识别结果输出图
图5 系统识别结果输出图

  4、结束语

  人脸识别技术经过多年的发展, 已经取得了很多成果, 未来继续是一个研究热门, 其应用前景非常广阔。本文以ARM9作为嵌入式平台, 以LInux为操作系统设计了一个人脸检测与识别系统。经过大量测试, 该系统效果基本让人满意。但是由于时间和技术的限制, 本系统还只是一个雏形, 许多地方还有待进一步提高。

  参考文献
  [1]张敏, 张海艳, 刘亭, 等.人脸识别系统综述[J].电子世界, 2014 (15) :107-108.
  [2]刘耀庭.基于ARM9的人脸识别门禁系统设计[D].南京航空航天大学, 2011.
  [3]刘永玲.基于ARM9和Linux的人脸识别系统的研究[D].北京交通大学, 2013.
  [4]张成龙.基于PCA算法的人脸识别技术研究[J].电脑知识与技术, 2016, (22) :182-184.
  [5]顾思思, 胡丽霞.基于Open CV的嵌入式人脸识别门禁系统设计[J].电脑与电信, 2015, (04) :33-35.
  [6]全治臻, 周锎, 耿卫东, 胡思捷.嵌入式人脸识别系统的硬件方案设计[J].南开大学学报 (自然科学版) , 2011, (04) :35-40.
  [7]李学桥, 赵磊, 田现峰.无线图像监控系统中嵌入式Qt图形界面设计与实现[J].郑州轻工业学院学报 (自然科学版) , 2008, (03) :1-4.
  [8]李姗姗.基于PCA的实时人脸识别系统的设计与实现[D].北京邮电大学, 2013.
  [9]黄华盛, 杨阿庆.基于PCA算法的人脸识别[J].电子科技, 2015, (08) :98-101.
  [10]李芳.基于Ada Boost算法的人脸检测研究与实现[D].武汉理工大学, 2012.
  [11]何荣.基于Open CV的人脸识别系统设计[D].华南理工大学, 2013.
  [12]王涛.基于PCA人脸图像压缩与重建算法的研究与实现[D].昆明理工大学, 2014.
  [13]侯小静.基于PCA算法和人脸姿态合成的人脸识别[D].中南大学, 2013.
  [14]钟官长.基于Open CV的人脸识别算法研究与实现[D].江西师范大学, 2015.
  [15]张利芳.基于PCA算法的人脸识别系统研究[D].中北大学, 2015.
  [16]王晓洁.基于PCA和LDA算法的人脸识别系统[J].新乡学院学报, 2015, (12) :37-39+43.
  [17]尹轲.基于群体智能的PCA人脸识别算法的优化研究[D].青岛理工大学, 2015.

相关内容
相关标签:Linux毕业设计
好优论文定制中心主要为您提供代做毕业设计及各专业毕业论文写作辅导服务。 网站地图
所有论文、资料均源于网上的共享资源以及一些期刊杂志,所有论文仅免费供网友间相互学习交流之用,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,论文定制中心会立即进行改正或删除有关内容!