基于HOG+SVM的智能家居入侵检测系统设计*
2018-04-11,,,
,,,
(西南交通大学 电气工程学院, 成都611756)
引 言
近些年来,随着社会的发展,人们对自身的安全以及财产保护意识愈发的凸显出来[1],基于安防的视频监控系统技术也在不断地提高。而在智能家居领域,视频监控系统作为其重要的一部分,实时地监控家居内部异常情况对保护我们自身的安全以及财产就显得非常重要。而传统的智能家居视频监控系统,需有专门人员集中注意力在客户端软件上不间断地查看监控画面,来判断是否有外来人员以及其它相关的异常情况发生。因此,智能家居系统就显得不那么智能。随着时间的发展,天津理工大学的屈鹏设计了可以检测到室内物体的移动并且利用GPRS模块给主人发送短信报警的系统[2],而这种系统的缺点就是会将室内的运动物体全部检测出来。
若家居主人有养着宠物猫或者宠物狗,这些小动物的活动会造成系统的错误报警,并不是十分符合家居里面的实际情况。随着计算机视觉的快速发展,计算机视觉技术也在不断地融入视频监控中。
目前走在智能视频监控系统前列的为美国和欧盟,美国的以Carnegie Mellon University和DAVID SARNOFF公司为主的研究机构的VSAM项目开发的智能视频监控系统堪称经典,主要用于未来战争中不适宜或者人力无法监控的场合[3]。
而国内智能视频监控处于起步和发展阶段,能够对监控图像实现自动分析、目标识别、目标跟踪,但目前均是将视频传送至PC端后,利用OpenCV技术完成相应的智能检测[4]。近十年来,计算机技术得到了飞速发展,嵌入式技术与图像处理技术的结合已经成为视频监控的主流研究方向[5]。一种直接在嵌入式系统中融入智能识别和检测的低功耗、成本适中的新型智能家居视频监控系统应运而生。
1 系统的总体设计
根据智能家居视频监控的需要,综合成本、实用性考虑。系统硬件方面采用Cotex-A9架构的三星Exynos4412高效、低成本处理器作为本系统的嵌入式系统处理器。选取罗技C170 USB摄像头直接插在主板上用来采集视频数据,SIM908芯片功能板内嵌的GPRS模块通过串口与主板进行连接进行短信报警,最后通过以太网口连接到互联网上。硬件实物图如图1所示。
图1 系统硬件实物图
系统软件方面移植了当今嵌入式行业主流的实时性操作系统Linux,以及具有强大的图像处理能力的OpenCV(计算机视觉库)来实时地处理采集到的视频图像数据。此外作者还针对不同平台以及不同用户的需要,在系统的服务器中融合了B/S架构,又融合了传统的C/S架构模式。B/S架构使得用户可以通过电脑以及手机连接网络,登录网页查看视频信息,C/S架构中开发了具有丰富的图形化界面以及移植性强的Qt客户端。系统的总体结构框图如图2所示。
图2 系统总体结构框图
2 系统的总体实现
整个系统是在嵌入式Linux操作系统下开发完成的。Linux操作系统具有可靠性高、移植性强、内核可裁剪、运行速度快、实时性好等特点。而Linux系统在ARM中的启动流程一般分为三个部分,首先板子上电会启动U-boot完成一些软硬件的初始化工作,U-boot启动成功之后开始加载内核,最后再挂载根文件系统完成整个操作系统的启动。
系统的整体代码实现是在主程序中开启了三个子线程,线程之间相互独立。其中一个子线程负责图像的检测识别报警功能;另两个子线程主要负责视频图像的传输功能;主线程负责视频图像的采集,并将采集到的数据存放在一个全局buffer缓冲区里面提供给其他线程使用,从而达到系统的总体要求。开启线程代码如下:
pthread_create(&qt_tid,NULL,thread_qt,NULL);
//负责Qt端的通信及数据的传输
pthread_create(&web_tid,NULL,thread_web, NULL);
//负责web浏览器端的通信及数据传输
pthread_create(&detect_tid,NULL,thread_detect,NULL);
//负责图像的检测和GPRS报警功能
2.1 视频图像的采集
系统视频图像的采集是根据V4L2(Vedio 4 Linux 2)视频采集程序框架结构实现的。V4L2是Linux中关于视频设备的内核驱动。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下。所以将USB摄像头插在移植了Linux操作系统的开发板上面,只需对/dev/video0这个设备文件进行读写操作就可以完成整个视频图像的采集。整个视频图像的采集流程图如图3所示。
图3 图像采集流程图
2.2 视频图像的处理
系统将OpenCV直接移植到ARM上面,使得系统在ARM上可以直接对采集到的视频图像进行处理分析,然后报警。克服了传统的视频监控需将视频传送到PC端后才能进行检测和分析的问题,同时利用HOG特征算法以及SVM分类器使得可以检测到视频中是否有人员的入侵。一旦发现有外人入侵室内,系统将会自动启动GPRS模块发送短信到用户的手机上面进行报警和通知,并且将检测到有人图像的第一帧图片保存到本地进行取证。
2.2.1HOG特征算法
图4 HOG特征检测算法步骤
HOG(Histogram of Oriented Gridients)特征检测算法,最先是由法国的Dala等人在CVPR-2005上提出来的,是一种解决人体目标检测的图像描述法,主要是用来表征图像局部梯度方向和梯度强度分布特性的描述符。其算法的主要思想是:在不知道边缘的具体位置的时候,边缘方向的分布同样也可以很好地表示人体目标的外形轮廓。HOG特征检测算法的具体步骤如图4所示。
颜色空间归一化:由于图像的采集环境、装置等因素,采集到的图像效果可能不是很好,容易出现误检或漏检的情况,所以需要对采集到的图像进行预处理,主要是处理光线太暗或太强的情况。这里有两次处理:图像灰度化、Gamma校正。图像的灰度化是对于一张彩色的图片,将其RGB分量转化成灰度图像,转化公式为:
Gray=0.3×R+0.59×G+0.11×B
Gamma校正:Gamma校正通常是在图像照度不均匀时,提高或者降低图像的整体亮度。目前较用平方根法和对数法两种方式来进行Gamma标准化。本文采用的是两种方式之一的平方根法,公式如下:
Y(x,y)=I(x,y)γ
(2)
(3)
梯度方向直方图:通常情况下,我们会将图像分划成若干个cell(单元),例如一个cell的大小为8×8个像素,相邻之间的cell不重叠,然后统计出每个cell内的梯度方向直方图,再将所有的梯度方向划分为9个bin(即9维特征向量),作为直方图的横轴,然后直方图的纵轴为角度范围所对应的梯度累加值,每个bin的角度范围如图5所示。
图5 bin的角度范围
重叠块直方图归一化:因为有着局部光照和前景背景对比度的变化,这样就会造成梯度强度的变化范围非常之大,由此就必须对梯度强度做归一化处理。本文使用的方法是:把各个单元块组合成空间上连通的、大的区间(blocks)。这样,一个block内所有的cell的特征串联起来便是这个block的HOG特征。同时这些blocks是有相互重叠的,这就说明:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中,我们将归一化后的块描述符(向量)称作HOG描述符。
HOG特征:最后就是将检测窗口里面所有重叠的块进行HOG特征的收集,然后结合成最终的特征向量来给分类器使用。
2.2.2SVM分类算法
SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。图6为SVM分类器的计算方式,一共包含了乘法累加器模块、训练器模块、比较器共三个模块。首先是由SVM对训练图形库进行训练然后得到一个系数wT和阈值φ。然后由乘法累加器模块将HOG的描述值X与wT相乘然后再进行累加。最后,比较器模块将由累加器模块得到的结果与训练模块得到的阈值φ做对比,来判断是否有人的存在,检测结果如图7所示。
图6 SVM分类器计算流程
图7 检测结果
2.2.3GPRS报警模块
系统选用的是内嵌SIM908芯片的功能板。SIM908 是一款集成GPS导航技术的4频GSM/GPRS模块,紧凑的模块尺寸将GPRS和GPS整合在SMT封装里。由于系统是基于智能家居视频监控而设计的,已经知道家居所在位置,所以系统只选取了GPRS模块进行短信报警通知。
2.3 视频图像的传输
由于系统为了满足不同平台的需求,所以在服务器的程序中设计了两种协议的视频图像传输功能。使用UDP(用户数据报)协议来和Qt客户端进行通信传输视频数据,UDP协议是一种简单的无连接的传输层协议,只需要对方套接字的地址信息就可以发送数据。使用HTTP(超文本传输)协议来和浏览器进行通信,相当于在主服务器程序中融合了一个小型WEB服务器。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统,广泛应用于B/S架构中。
2.4 视频图像的显示
视频图像的显示主要是在客户端以及浏览器上面的显示,本系统的服务器程序的设计既可以满足C/S架构,又可以同时兼容B/S架构。C/S架构是以Qt5开发的客户端,Qt是一个多平台的C++图形用户界面应用程序框架[6]。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能[7]。
Qt是完全面向对象的语言,因此很容易扩展,并且允许真正的组件编程。自从1996年早些时候Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础,Qt不仅是流行的Linux[8]桌面环境KDE的基础,而且近年来越来越多的智能化仪表[9]、虚拟仪表[10]也开始采用Qt作为基本的图形化操作界面。
同时Qt具有强大的可移植性,现已可以移植到Android操作系统中,所以在嵌入式领域中广受欢迎。图8便是本系统的Qt客户端界面,左上方是视频监控画面,右上方是视频的截图显示区,同时提供截图下载按钮键,一旦发现可疑目标人物,保存截图至本地留作证据。
当前,在视频监控领域中,B/S架构模式因其便利的原因,越来越多的受到用户的喜爱。所以系统为满足需求,在服务器程序中也融合了B/S架构模式,使得用户可以在任意时间、地点只需要一部手机或者一台电脑以及任何联网的智能终端登录指定的网页,就可以实时地查看家庭内部的视频信息,如图9所示。
图8 Qt客户端界面
图9 浏览器登录
3 系统总体测试
整个系统完成设计之后,需对整个系统进行测试,验证系统是否符合预期结果。首先对视频的网络传输部分进行测试。
其次再对系统中的智能识别部分进行测试,分别对图像中人的正面、侧面、背面进行测试。测试结果如图10所示。
图10 智能识别部分测试
最后对系统进行GPRS报警模块以及整个系统的联调测试,当室内有人入侵系统时将发送报警短信至用户手机,且检测到有人入侵的第一帧图片会写入到SD卡中。如图11所示。
图11 系统联调测试结果
结 语
本文以智能家居视频监控系统为研究课题,分析了目前智能家居视频监控的发展状况,结合实际成本和应用出发,依托嵌入式技术,以整体的系统设计为目标,设计了一套基于视觉的图像处理技术与嵌入式技术相结合的智能家居视频监控系统。
系统以Samsung公司的Exynos4412作为本次系统的核心控制器,通过USB摄像头模块来对视频图像数据进行采集,创新性的在嵌入式系统中引入了HOG特征算法和SVM分类器的机器学习的方法来对室内外来人员进行检测,同时系统兼容C/S和B/S两种架构,满足了不同场合、不同用户的需求。
[1] 李立新,李艳文,蔡刚毅,等.基于物联网技术的智能家居安防系统的研究与开发[J].控制工程,2015,22(5):1001-1005.
[2] 屈鹏. 基于 ARM 和 Linux 的嵌入式智能家居网络视频监控[D]. 天津:天津理工大学,2017.
[3] COLLINS R, LIPTON A, KANADE T. A system for video surveillance and monitoring[J]VSAM final report,CMU-RI,2000[S.l.]1-68.
[4] 李丹丹,董静薇,徐博,等. 嵌入式智能视频监控技术的研究与 OpenCV 实现[J]. 电视技术,2017,41(9).
[5] 刘磊,余淑荣,吴明亮. 用 ARM9 实现移动目标跟踪的视频监控系统[J].单片机与嵌入式系统应用,2017(12):25-27.
[6] 成洁,卢紫毅.Linux窗口程序设计:Qt4精彩实例分析[M].北京:清华大学出版社,2008.
[7] 刘冬.基于Qt4和OpenCV的嵌入式视频监控系统[J].现代电子技术,2013,36(8):105.
[8] 陈莉君.Linux操作系统内核分析[M].北京:人民邮电出版社,2000.
[9] 陈卿,戴仙金,唐玉国.基于Qt/Embedded的新生儿监护仪软件系统设计与实现[J].微计算机信息,2012,28(9):431- 432.
[10] 王润民,赵祥模,惠飞,等.基于嵌入式Linux与QT的汽车虚拟仪表设计[J].现代电子技术,2012,35(6):1-4.
潘青松、曹永鹏(硕士研究生)、张怡(副教授),主要研究方向为嵌入式系统设计与应用、物联网技术;辛春辉(硕士研究生),主要研究方法为虚拟现实与人群仿真。