ARM平台下人脸识别智能监控系统
2018-03-16江烂达
江烂达,储 珺,缪 君
(南昌航空大学 软件学院,江西 南昌 330063)
0 引 言
近年来,视频监控系统被广泛应用于社会生活的各个方面。随着社会安全意识的不断加强,越来越多的公共场所和居民住宅都开始配备监控设施,以此保障自身和财物安全[1]。然而现有视频监控系统安装困难;存储量大;同时系统缺乏智能因素,不能进行身份识别[2]。在这种情况下,多种智能监控系统被研究并开始形成产品应用在生活中。其中人脸识别以其自身优势,受到了研究人员广泛的关注[3,4]。现有的研究主要是在PC机上使用静态人脸图像实现人脸识别仿真。文献[5]基于主成分分析(PCA)和最小协方差行列式方法提取重要的人脸特征,相比传统PCA方法,该方法提高了遮挡和噪声干扰下的人脸图像识别率。文献[6]采用一种新的基于邻域保持的鉴别嵌入准则,并利用Gabor小波变换减轻人脸在光照和表情变化的影响。文献[7]设计的基于ZigBee的人脸识别监控系统,只是在前端使用人脸检测,最终还是将人脸图像传回PC机输出识别结果。
根据上述视频监控现状以及研究背景,本文结合人脸识别技术、嵌入式技术与通信技术,设计并实现了一个基于ARM平台下的人脸识别智能监控系统。针对LBP人脸识别算法在保证实时识别前提下,需要缩小图像而导致分辨率降低,因而不能在ARM开发板上识别1.5 m以外的人脸的问题。本文首先采用计算量小的ViBe算法提取视频监控区域内的运动目标,再对检测到的运动目标区域完成人脸识别功能。通过改进,系统能够快速准确识别较远距离的非法闯入者,并给出报警处理,更加满足现在市场对视频监控系统功能的要求。
1 系统方案论述
本文的研究方案是设计一款基于ARM平台下,设计一款隐蔽性强、经济实用、性能稳定和操作简便的远程人脸识别系统。该系统可以对监控区域内人员实时进行身份识别,实现智能监控的目的。该系统主要具有以下几种功能:
(1)智能监控系统具有运动目标检测功能。一般监控场景中摄像头是固定的,因此可以通过建立背景模型,应用背景差分法检测到是否出现运动目标,实现初步预警。同时也为后续的目标身份识别锁定处理区域,提高系统实时性;
(2)智能监控系统可以实现人脸识别功能。对出现在监控区域的人员进行身份识别,如果是陌生人闯入,自动提示用户处理;
(3)智能监控系统具有自动报警功能。如果监控区域被非法闯入,系统在自动记录信息的同时自动启动报警装置;
(4)系统基于ARM开发板作为运行平台,底板拥有丰富的外围接口,可扩展功能强。
针对上述研究方案,设计了如图1所示系统总体结构,先使用ViBe算法对监控区域实现运动目标检测,再对检测到的运动目标进行人脸检测和识别功能。如果是合法用户,则不报警。如果非法用户闯入监控区域,系统将发出警报声并通过短信或者电话的方式远程提醒使用者发生异常。同时保存当前视频帧到服务器内,用户可以通过移动客户端登录服务器,下载并查看保存的图片,真实了解家庭状况。
2 系统硬件设计
系统使用的硬件设备主要以OK210为开发平台,子模块主要有电源、USB摄像头、GPRS通信模块和LCD显示屏。OK210开发板接收摄像头捕获的视频图像,完成运动目标检测与人脸识别工作。LCD显示屏显示识别结果。监控区域被非法闯入时,蜂鸣器发出警报声,同时GPRS模块拨打电话或者发送短信给用户进行报警处理。系统硬件架构如图2所示。
图1 系统总体结构图
图2 系统硬件架构
OK210是飞凌公司研发的高性能ARM嵌入式计算机核心模块。主处理器是SAMSUNG S5PV210,主频最高可达1 GHz,作为最流行的ARM处理器之一,SAMSUNG S5PV210是许多视频图像处理应用的理想选择。OK210开发板支持HDMI音视频同步输出,拥有丰富的外围设备扩展模块。并通过了CE和FCC认证,拥有可靠的保障。针对上述OK210计算性能及其相对低廉的价格,系统采用OK210作为主处理器。OK210核心板框架如图3所示。
图3 OK210核心板框架
3 系统软件设计
系统主要在Ubuntu15.04上使用QT4.8.6完成程序的编译和调试,并最终移植到基于嵌入式Linux系统的ARM开发板上运行。在系统移植前,需要搭建运行环境。首先在开发板上移植vsftpd服务器,用于保存系统截取的图片,并提供给用户下载查看。然后在Ubuntu上交叉编译OpenCV和QT,以及两者的相关依赖库。最后将交叉编译生成的文件拷贝到开发板的相关目录,配置好环境变量[8],即可执行程序运行命令。系统包含5个主要功能模块:图像采集、运动目标检测、人脸检测、人脸识别和Android客户端实现。
3.1 图像采集
系统使用V4L2打开USB摄像头实现视频图像采集工作。V4L2是一个在Linux系统下视频驱动的API接口,很大程度上简化了进行视频系统开发和维护所需要的工作[9]。V4L2提供内存映射和直接读取两种图像采集方式。本系统选择内存映射方式,通过采集视频信号,并将数字化的图像直接保存在内存当中,防止直接读取方式可能出现阻塞,而导致系统不稳定情况的发生。
3.2 运动目标检测
系统采用ViBe算法实现对运动目标的检测。ViBe算法是一种基于样本随机聚类的背景建模算法[10]。相对于其它前景提取算法,ViBe算法计算量小,内存占用较少,在ARM开发板上能实时且更好的检测到运动目标。ViBe算法分为3个主要内容:
(1)建立背景模型:VIBE算法仅仅使用一帧图像就可以快速实现背景模型的初始化。随机选择每个像素点8邻域内的N个像素值,作为其模型的样本值,这样就构建了每个像素点的背景模型M(x)。
(2)前景检测:对于待分类像素点x的像素v(x),计算以v(x)为中心,R为半径的球体SR(v(x))与M(x)的交集,如果交集数满足给定的阈值#min(本文#min值为2),即若
#{SR(v(x))∩{v1,v2,…,vN}}≥#min
(1)
则判定这个像素点x属于背景点,否则,判定像素点x为前景点。
(3)更新背景模型:如果某一像素点是前景点,那么它有1/φ的概率更新其所对应M(x)中的一个样本值。同时随机更新其邻域中的样本值。此外,当某一像素点被连续K次检测为前景时,将其判定为背景,并更新其背景模型。
若有人闯入监控区域,系统将会通过目标检测锁定该区域,随后通过人脸识别技术实现身份认证。很多情况下,系统只会把人身体部分作为最大外接矩形,而把头部排除在外。这样将会极大降低人脸识别率,影响系统的实用性。针对这个问题,通过把求得的最大外接矩形位置上移,人脸区域将被包围在矩形区域内。由于人脸是在身体上部,因此系统只对矩形区域的上面部分图像进行人脸识别,进一步缩小了运行时间。通过实验,本系统将最大外接矩形位置上移其高度的1/2,同时在矩形上方占其高度2/3的图像区域内进行人脸检测和识别。图4(a)所示此时人脸并没有被包围在矩形区域内;图4(b)人脸图像被包含在上移矩形区域内;图4(c)通过只处理矩形区域的上面部分,减少人脸识别所需时间,提高系统实时性。
图4 外接矩形的选择实验
3.3 人脸检测
针对ARM开发板硬件资源受到限制的原因,本系统采用较容易实现的AdaBoost人脸检测算法来检测人脸。该算法包含3个关键要素:采用积分图实现特征的快速计算、使用AdaBoost分类学习方法以及设计级联结构获得高效的分类策略。AdaBoost已经成为许多人脸识别系统优先选择的人脸检测算法,因为其不仅可以满足实时性要求,而且还有很高的检测率。在开始运行系统实现之前,需要创建用户数据库。通过人脸检测模块为用户创建人脸库,并为每张人脸照片匹配对应的名字和标识ID。人脸库内数据代表合法用户,如果在视频监控中捕获的人脸数据与人脸库不匹配,表示非法闯入,将触发报警机制。
经过实验验证,AdaBoost算法可以在较为简单背景下,快速准确的检测并标识出人脸。但是在监控视频中,AdaBoost对背景变化非常敏感,很容易将类似人脸区域检测为人脸,存在误检率较高的问题。而本文设计的只在运动目标区域内检测人脸,可以排除复杂背景中存在的类似人脸区域,更好地实时准确检测到人脸。
3.4 人脸识别
LBP算法能够有效度量和提取图像局部纹理信息,具有旋转不变性和灰度不变性等特性[11]。该算法计算简便,运算效率高,适合在ARM开发板上运行。所以,本系统选择使用LBP算法对检测到的人脸,实现面部特征的提取和识别。该算法的主要思想是:将窗口中心像素点的灰度值设为阈值,然后将邻域像素点的灰度值与该值进行差值比较。得到的值正数取为1,负数取为0。最后将所有数值串联成一个二进制数,以此表示图像的局部纹理特征值。LBP人脸识别主要分为以下几步:
(1)将一张图片分成若干个图片子区域;
(2)对于每个子区域中的一个像素,计算该像素点的LBP值;
(3)计算每个子区域的直方图,然后对该直方图进行归一化处理;
(4)将得到的每个子区域的统计直方图连接成为一个特征向量,得到了整幅图的LBP纹理特征向量;将待识别人脸图像的LBP特征向量,与人脸数据库中各张人脸图像的LBP特征向量进行相似度计算,最终判定该张人脸是否与人脸库已注册的人脸匹配。
3.5 Android客户端实现
在检测到有陌生人入侵监控区域时,系统会自动截取图片保存在FTP服务端上。用户可以使用设计的一款基于Android的FTP客户端,下载和查看服务器里的图片,更加清楚了解家庭状况。移动客户端开发流程如图5所示。首先客户端发送连接请求,如果服务器侦听到该连接,会和客户端建立一个FTP会话。当需要进行数据传输时,客户端与服务端会在两个新建立的端口间进行数据操作。操作完成后,断开与服务器的连接。
图5 FTP客户端流程
4 实验结果和分析
为了验证设计的这种在检测到运动目标的基础上,再进行人脸检测和识别方法的鲁棒性和实时性,在不同家庭环境下,通过同一个USB摄像头捕获多段视频数据进行实验分析。本文上位机测试使用的是联想天逸510p台式机,该机拥有Intel(R) 3.60GHzCPU和4.0GB内存,而编程工具主要是VS2010和QT5.10。LBP人脸识别算法中,中心像素点到周围像素点的距离参数设置为3,邻域像素点个数为8,图像的x和y方向各均分为8块。而LBP特征向量相似度阈值的选择将会直接影响到人脸识别率,针对家庭情况,本文在距离摄像头1m到6m的范围内,为5个实验人员各自创建60张人脸图像作为人脸库。在人脸识别算法中,为了达到较高的人脸识别性能,需要平衡误检率和漏检率,本文通过求得人脸库人脸的类内卡方距离与类间卡方距离,得到如图6所示的卡方距离分布,由图6中类内距离与类间距离曲线的交点可知,98.35为LBP特征向量相似度的最佳阈值,此时人脸识别性能达到最优。
图6 卡方距离分布
如前所述,AdaBoost算法虽然计算速度快,但是在复杂多变场景下,人脸检测效果较差,这将不可避免的降低后续人脸识别率。本文分别用AdaBoost算法和设计的ViBe+AdaBoost方法,对5个实验人员在视频图像中各自检测60次人脸。从表1可以看到,AdaBoost算法的误检率为24.67%,而设计的ViBe+AdaBoost算法的误检率为9.33%。通过数据发现,在较复杂背景下,ViBe+AdaBoost算法有效提高了人脸检测效果。
表1 人脸检测误检率统计
为了验证系统的人脸识别性能,在保证能实现较远距离人脸识别的前提下,将本文设计的先运动目标检测,再用LBP算法实现人脸识别的方法,与LBP人脸识别和PCA人脸识别算法,在OK210开发板上进行对比。表2给出了3种方法的识别率和平均识别时间。可以看到,本文设计的方法,无论是识别的准确率还是实时性都要优于其余两种算法。在真实场景中,通过只识别运动目标区域内的人脸图像,可以有效降低人脸识别算法的误检率并提高实时性。
表2 人脸识别效果
完整的基于ARM的人脸识别智能监控系统实物如图7所示。LED屏幕上显示了人机交互界面,界面包含摄像头实时采集的视频图像。用户可以通过点击register按钮建立人脸数据库,点击recognize按钮开启智能监控功能。利用数字键盘,用户可以设置接收警报的电话号码。当发生非法入侵时,系统会根据设置,通过发送短信或者拨打电话的方式通知用户,同时OK210开发板上的蜂鸣器将会启动发出蜂鸣声,起到一定警示作用。
图7 系统实物
当用户接收到电话或者短信报警时,可以通过FTP客户端登录服务器,下载并查看具体是谁闯入了家庭,以此采取应对措施;图8(a)为移动客户端的登陆界面,输入IP地址,端口和账号等信息,便可登陆vsftpd服务器;图8(b)所示系统所保存的视频帧文件;图8(c)所示通过长按每个文件,便可根据弹出的子对话框,进行相应操作;图8(d)显示用户从服务器上下载到手机本地的图片文件;图8(e)显示其中一张下载的图像画面,通过该图片,用户可以清楚的了解非法闯入者的相貌特征,掌握到关键证据。
图8 Android客户端操作界面
5 结束语
本文主要设计并实现了一种基于ARM平台下人脸识别智能监控系统。详细阐述了系统的总体设计方案,并给出了系统软硬件平台的设计和搭建。本文设计的先在视频监控中检测运动目标,再进行人脸识别的方法。解决了由于ARM开发板运算能力不足,无法实现较远距离人脸识别功能的问题。同时,通过移动求得最大外接矩形,并只处理矩形的局部区域提高了系统的识别率与实时性。系统能够对视频图像进行采集和分析,自动抓取人脸实时比对,发现非法目标自动报警提示用户采取应对措施。实验验证了系统的稳定性,为智能视频监控系统的设计提供了一个完整的解决方案。随着监控行业的不断发展,本文设计的人脸识别智能监控系统将有广泛的应用前景。
[1]ZHANG Bin.The analysis and exploration of intelligent buil-ding security monitoring system[J].China Public Security,2016,13(5):110-113(in Chinese).[张斌.智能楼宇安防监控系统建设的现状分析和实践探索[J].中国公共安全,2016,13(5):110-113.]
[2]YUAN Jianfei,YUAN Yuhao,JIAN Dandan.Design and implementation of locomotives video surveillance system based on Hi3521 chip[J].Computer Engineering and Design,2016,37(7):1781-1786(in Chinese).[袁剑飞,袁宇浩,简丹丹.基于Hi3521的机车视频监控系统的设计与实现[J].计算机工程与设计,2016,37(7):1781-1786.]
[3]De-la-Torre M,Granger E,Sabourin R,et al.Adaptive skew-sensitive ensembles for face recognition in video surveillance[J].Pattern Recognition,2015,48(11):3385-3406.
[4]An L,Bhanu B,Yang S.Face recognition in multi-camera surveillance videos[C]//21st International Conference on Pattern Recognition.IEEE,2012:2885-2888.
[5]ZHANG Bei,WANG Shunfang.PCA face recognition algorithm based on robust MCD estimator[J].Computer Engineering and Design,2015,36(3):778-782(in Chinese).[张蓓,王顺芳.基于MCD稳健估计的PCA人脸识别算法[J].计算机工程与设计,2015,36(3):778-782.]
[6]CHEN Si,ZHAO Huanxi,ZHU Shunzhi.A new kind of zero space face recognition algorithm based on Gabor feature[J].Journal of Xiamen University:Natural Science,2016,55(1):108-113(in Chinese).[陈思,赵欢喜,朱顺痣.一种新的基于Gabor特征的零空间人脸识别算法[J].厦门大学学报:自然科学版,2016,55(1):108-113.]
[7]SHANG Ying,HUANG Hejie.Face recognition based on ZigBee smart monitoring system[J].Electronic Test,2013(23):62-63(in Chinese).[商莹,黄荷洁.基于ZigBee的人脸识别智能监控系统[J].电子测试,2013(23):62-63.]
[8]Ru F,Peng X,Hou L,et al.The design of face recognition system based on ARM9 embedded platform[C]//IEEE 11th International Conference on ASIC.IEEE,2015:1-4.
[9]Hui-jun LI.Design and Implementation of mobile video surveillance system based on V4L2[J].International Journal of Signal Processing,Image Processing and Pattern Recognition,2016,9(1):409-416.
[10]YU Ye,CAO Mingwei,YUE Feng.EVibe:An improved vibe algorithm for detecting moving objects[J].Chinese Journal of Scientific Instrument,2014,35(4):924-931(in Chinese).[余烨,曹明伟,岳峰.EVibe:一种改进的Vibe运动目标检测算法[J].仪器仪表学报,2014,35(4):924-931.]
[11]Kumar VV,Reddy KS,Krishna VV.Face recognition using prominent LBP model[J].International Journal of Applied Engineering Research,2015,10(2):4373-4384.