招永铸
广东鼎华科技股份有限公司 广东佛山 528000
摘要:现代社会对个人身份认证的方便性和有效性要求越来越高,传统的身份认证方法面临着严峻的挑战, 本文设计和实现了一种基于ARM嵌入式视频的实时人脸识别系统,经测试验证了其实用性以及实时性,可以推广应用。
关键词:ARM嵌入式;远程视频;实时;人脸识别
人脸作为一种人体生物特征,具有难以伪造、不会遗失、随身携带、方便易用等特点。人脸识别技术特指利用分析、比较人脸视觉特征信息进行身份鉴别的计算机技术,是模式识别在图像领域中的具体运用,其应用前景非常广阔,可以应用到身份证件的鉴别、自动门禁控制系统、银行取款机、家庭安全,图片检索等领域。可传统的人脸识别系统以电脑为平台,体积大,使用不灵活,而嵌入式ARM平台具有体积小、低功耗、高性能、低成本的特点,因此基于ARM平台开发人脸识别系统具有重要的应用价值。
1.基本结构及工作原理
远程视频实时人脸识别系统的设计,集视频前端和显示终端为一体。视频前端采用搭载了linux操作系统的三星公司ARM 芯片作为开发环境,外部接有UVC 摄像头和无线网卡等。为了减轻CPU 的工作压力,UVC 摄像头自带DSP 芯片自动压缩采集到的图像为MJPEG 格式,然后再将无线网卡设置为AP热点模式而无需路由器的介入,并通过它来建立起一个视频前端服务器,用以接收控制信号和发送视频。显示终端基于Qt+OpenCV 的开发环境,首先接收视频前端传来的视频流并进行图像的预处理,并结合相应算法实现最终的视频监控以及人脸识别等功能,总体硬件框架如图1所示
图1 总体硬件框架
2.视频前端部分设计
2.1 硬件部分选型
视频前端采用三星公司的ARM9系列S3C2440作为处理器,工作频率可达400 MHz,完全能够满足高效的视频采集和视频传输要求,同时该处理器也内置各类控制器,对于引脚的控制十分方便,易于开发。
摄像头模块采用百问网公司的UVC 摄像头,它既可以支持USB接口,也可以支持CMOS接口。USB模块上集成了DSP 芯片,可以自动将图像压缩成MJPEG 格式从而避免了软压缩的缺陷,减少CPU 的压力从而大幅提高性能。CMOS模组为OV7740,最大分辨率640*480。
无线网卡选用美国ATHEROS AR9271 高阶芯片,材料全部采用知名供应商,且获得了FCC,ROHS,支持IEEE802.11B/G/N协议,传输速率相对较高。
2.2 软件部分设计
视频前端软件部分设计需先进行uboot移植,linux内核移植和根文件系统的制作,同时根据相应要求编写或调试相关驱动程序以满足外设要求,最后编写上层应用程序。操作系统采用Linux 3.4内核。对内核的配置工作,内核支持的菜单项更加容易操作Makefile 中的模块,删除不必要的驱动模块从而缩小体积和加快速度。
新版本的内核中支持了USB 总线的框架,将通用层包装起来,差异层提取出来以供修改,大大减少开发周期,设计使用的摄像头驱动程序是基于V412框架的视频设备标准的,其为应用层提供了函数调用的基础。当接入设备时,会触发硬件中断,内核会去识别它并且根据其设备描述符找到与之匹配的设备驱动程序,从而可以在应用层使用底层函数接口来操作摄像头硬件。视频的采集流程如图2所示。
图2视频采集流程图
在采集到视频数据后需要发送到上位机去显示,在网络传输部分采用TCP 协议,通过socket编程使得视频前端作为服务器端,上位机作为客户端来交互地传递数据。视频传输流程如图3所示。
3.显示终端部分设计
3.1 Qt+OpenCV 的开发环境
Qt Creator 是Qt 开发的轻量级跨平台集成开发环境,其包含了一系列高效的创建和测试工具,可以很方便地利用各种控件做出友好的界面。
OpenCV 用于视觉领域,是一款跨平台开源库,内部代码可免费查看和修改。其中有许多模块可以帮我们更好地进行图像处理,也可以跟踪进相应函数了解算法流程。本设计在Qt Creator中调用OpenCV的相应库实现视频的显示和人脸识别等功能。
图3视频传输流程
在界面中用到一个Qlabel类作为静态图像的显示容器,然后结合Qtimer 类的定时器来实现图像的不断刷新,并且给出QPushButton类利用信号与槽机制来实现视频的打开、关闭、人脸识别和手工/智能录像等功能。
3.2 人脸识别方法
3.2.1 人脸检测
本系统选取基于目标检测方法来进行人脸检测。首要工作就是根据需要训练样本得到低级分类器,再将多种低级组合成高级分类器。得到高级分类器后就可以用来进行检测,并将结果返回。但是由于物体距离的远近会导致目标区域的大小不确定,所以分类器设计时也该可以随尺寸变化。其可以用不同比例的扫描窗口来达到这个目的。
具体检测步骤如下:
(1)使用Haar特征检测;
(2)使用积分图对haar特征求值进行加速;
(3)使用Adaboost算法实现分类器的由弱转强;
(4)将得到的强分类器连接起来以达到更高的精确度。
文中使用OpenCV 自带的级联分类器harrcascade_frontalface_alt2.xml,它能很好地检测人脸,使用CascadeClassifier类的Load函数对其进行加载,然后再进行人脸检测。
3.2.2 人脸识别
经过之前的人脸检测后将会得到人脸区域的图像,在经过图像预处理之后就可以使用特征脸(PCA)的方法进行人脸识别。
在识别之前还需要创建人脸库并进行训练,本文选取了10个人的10幅图片来进行训练,即每人选取不同姿态、表情和光照的尺寸为100*100 的正面人脸图像。OpenCV 的一系列函数可以大大简化了人脸库的创建和加载工作,其代码如下:
Ptr<FaceRecognizer> model;
Model = createEigenFaceRecognizer();
model->train(images,labels);
model->save("ORL_PCAModel.xml");
model->load("ORL_PCAModel.xml");
具体识别步骤如下:
(1)创建人脸库;
(2)读取库文件并训练;
(3)把所有的训练数据投影到PCA子空间;
(4)把待识别图像投影到PCA子空间;
(5)找到训练数据投影后的向量和待识别图像投影后的向量最近的那个。
3.3 人脸识别系统实现
人脸识别流程如图4所示,本系统中首先提取视频前端发来的数据,并加载训练好的人脸检测分类器以及训练好的人脸识别库。
图4人脸识别流程
为了更好地检测,需要先对图像进行灰度化处理,其采用OpenCV中的cvtColor函数,该函数可以对色彩进行转化。接着进行直方图均衡化处理,直方图均衡化采用OpenCV 中提供的equalizeHist 函数,它可以增强图像对比度。总结以上两个处理,我们先利用cvtColor将图片转化为灰度图,再将灰度图对比度提高,可以更好的区分图像的明暗部分,使图片更加易于级联分类器分析。
经过图像预处理后,可以开始进行人脸检测了。本文用新版本的detectMultiScale 函数,并根据需要传入相应的参数来调整检测效果,它其实是用到训练好的高级分类器来检测所需目标并返回给一个矩阵。函数将会用不同大小的扫描窗口在图像上进行搜索,每次都会对图像中的重叠区域进行检测与组合。在获得人脸区域后将其进行尺寸上的调整并与训练好的人脸库进行对比,判断阀值大小从而确定个人身份信息,若不存在于事先设定好的人脸库中则报警和开启自动录像功能。
4.实验效果分析
本次实验主要是为了验证该远程视频人脸识别系统的相关性能,我将分别从以下几个角度来进行验证:正脸(单人与多人)、距离远近、光照干扰、局部遮挡和实时性。
单人/多人检测与近距离/远距离的人脸识别实验效果很理想,基本可以无误地识别所有出现的人脸。对于局部遮盖情况下的人脸识别,在不遮盖超过三分之一人脸的情况下也可以准确的识别出来。光照等环境因素对人脸识别的影响比前几种稍大,总体的人脸检测精度接近95% ,人脸识别达到86%。在实验过程中打印出人脸识别所用平均时间约等于140 ms,实时性得到保证。
同时在上位机上也添加了智能化的功能,例如在监控区域有人出现时可以识别并显示其身份信息,在遇到陌生人时系统会开启自动报警和智能录像等功能。
5.结论
综上,整个系统的测试结果表明本文开发的基于ARM 嵌入式设计实现的实时人脸识别系统抗干扰能力强,具有较完备的功能、友好的界面、便捷的使用、高效的识别效果,实时性也完全可以保证,能够在视觉安全识别领域推广应用。然而,值得我们注意的是人脸识别的准确度较复杂的环境下会有所降低,所以还需要对人脸识别算法进行深入的研究以使得系统更加完善。
参考文献:
[1]塔娜. 基于ARM的人脸识别系统设计与实现[D]. 东北师范大学, 2009.
[2]高宏娟. 实时人脸识别系统的设计和实现[J]. 科技信息, 2011(10):417-418.
[3]桂斌. 基于ARM9的嵌入式人脸识别系统设计[D]. 安徽理工大学, 2017.
[4]刘坚. 基于ARM的嵌入式人脸识别系统设计及实现[D]. 西安科技大学, 2017.
论文作者:招永铸
论文发表刊物:《防护工程》2018年第12期
论文发表时间:2018/10/22
标签:三星论文; 的人论文; 视频论文; 图像论文; 识别系统论文; 函数论文; 实时论文; 《防护工程》2018年第12期论文;