杨文韬, 李璋, 陈勇, 2,徐玲芳,2,张灿灿,2,黄镇,2,卞梦云,2,陈琪,2
(1.湖北大学计算机与信息工程学院,湖北 武汉430062;2.湖北大学物理与电子科学学院,铁电压电材料与器件湖北省重点实验室,湖北 武汉430062)
基于视频图像的行人检测系统的设计与实现
杨文韬1, 李璋1, 陈勇1, 2,徐玲芳1,2,张灿灿1,2,黄镇1,2,卞梦云1,2,陈琪1,2
(1.湖北大学计算机与信息工程学院,湖北 武汉430062;2.湖北大学物理与电子科学学院,铁电压电材料与器件湖北省重点实验室,湖北 武汉430062)
设计一种基于视频图像的行人检测系统,系统基于ARM和Linux操作系统搭建嵌入式平台,通过构建视频流服务器将网络视频流传输至PC端,利用Haar-like特征和Adaboost算法框架训练分类器,用分类器进行行人检测.详细描述系统的设计实现方案,对其中的关键点进行阐述.实验结果表明,系统性能稳定、识别精度较高.
行人检测;视频流服务器;Haar-like特征;Adaboost算法
基于视频图像分析的行人检测系统,是智能监控系统的重要组成部分.运动行人检测的目的是通过计算机视觉和视频分析的技术手段,自动实时的对视频中的运动行人进行检测,它在智能交通、人机交互、虚拟现实等方面有着重要的工程应用价值.同时,基于视觉的行人检测因其实施条件相对简单,能够利用复杂的图像信息来进行更加智能化的信息处理,因此是比较流行的行人检测方法[1].与此同时,由于人体的非刚性特征、人体自遮挡和目标间的相互遮挡、复杂多变的环境以及摄像头的晃动等,行人检测仍然面临着巨大的挑战.本文中通过嵌入式技术、网络技术、计算机视觉等技术,开发经济可靠且高效的行人检测系统.
视频监控中的行人检测系统采用嵌入式平台与PC平台相结合的方式.系统分为嵌入式视频采集模块,网络视频流接收模块和行人检测模块,利用PC机可监测视频中的运动行人.嵌入式平台采用ARM和Linux操作系统进行搭建,并且配置视频服务器MJPG-streamer,将采集到的视频数据通过网络端口传输至PC端,PC端将接受的视频数据与视频处理代码相结合,完成视频信息的接受与处理.行人检测模块主要利用Adaboost算法、矩形特征和级联分类器等训练分类器,从而实现行人的检测.
2.1 嵌入式硬件平台 嵌入式系统采用飞凌公司的OK6410开发板,OK6410开发板采用ARM11架构的S3C6410处理器,拥有强大的内部资源,可稳定运行在667 MHz主频以上,开发板上集成多种高端接口,如复合视频信号、摄像头、USB、液晶屏、以太网等,其软件系统支持WinCE,Linux,Android等主流操作系统.为了保证视频的实时性,嵌入式系统采用支持UVC协议并且可以以MJPG模式输出的摄像头进行视频图像的采集,主流的操作系统对此类摄像头都支持并且提供V4L2视频驱动接口,不需要对摄像头驱动进行更改,节省开发的时间与精力.硬件结构如图1所示.
2.2 软件平台
图1 嵌入式硬件结构图
2.2.1 嵌入式软件平台 在PC机下安装虚拟机软件Vmware,并在此虚拟机下安装Ubuntu14.04版本的Linux操作系统.所搭载的交叉编译器为arm-linux-gcc 4.3.2,该编译器可针对ARM平台进行特定的编译,配置tftp来使得开发板与Linux操作系统之间进行通讯,方便下载和上传开发板与系统之间的资源.
1) 下载uboot1.1.6源码包,根据开发板的CPU以及外设等对源码进行配置,交叉编译后移植到目标机进行系统的引导启动;
2) 下载Linux3.0.1的源码,解压后裁剪掉多余功能,编译后生成内核文件移植到目标机中;
3) 使用Busybox和yaffs2来构建根文件系统;
4) 添加UVC以及无线网卡驱动.
2.2.2 网络视频流的接收 首先配置MJPG-Streamer流媒体服务器软件,它采用V4L2驱动程序框架,可以将采集到的视频流数据通过网络进行传输.
1) 下载jpegsrc.v9.tar.gz,解压并进入其目录,对源码进行匹配,./configure -prefix=/home/yang/jpeg -host=arm-none-linux-gnueabia,编译安装后,将库文件拷贝到文件系统中的/lib目录中;
2) 下载mjpg-streamer-code源码,解压后进入目录,将顶层makefile以及input_uvc目录中的makefile编译器改为arm-linux-gcc;
3) 将生成的input_uvc.so和output_http.so拷贝到开发板新建的mjpg-streamer目录中.
在windows7操作系统、vs2010编译环境下完成视频流的接受.在接收视频流之前,需要在vs2010中配置opencv开发环境.opencv是一个开源的跨平台的计算机视觉库,由一系列C函数和少量C++类构成,实现图像处理和计算机视觉方面很多通用的算法.本文中选用opencv2.4.9,下载库文件后在vs2010中配置后即可使用.视频流服务器传输的网络视频流,可以通过指定的IP地址实现视频流的接收.系统将MJPG-streamer的网页代码与opencv函数库的代码VideoCapture相结合,实时的获取视频数据,以完成网络视频流的接收[2].
目前行人检测的方法主要有基于模板匹配的方法和基于统计训练的方法[3].基于模板匹配的方法,是指首先对不同形态的行人建立一个模板库,当进行行人的实时检测时,计算输入图像中的模板特征,然后在模板库中查找是否有匹配的行人模板.此类方法有较高的检测精度,但是无法适应有多种变化的行人形态,且匹配过程较为复杂.而基于统计训练的方法,是指利用计算机对行人特征和非行人特征进行训练和学习,得到一个分类器,然后从输入图像中提取特征输入分类器做二分类判断,从而完成待测图像的检测.该方法对复杂背景有较好检测效果,适用于动态背景下的检测.
本文中行人检测算法采用特征和分类器的算法框架.算法采用的行人描述特征为Haar-like特征,此类特征做为一种区域矩形能有效地区分背景与目标,且特征维数较低,通过积分图对特征值计算效率较高[4].之后通过Adaboost算法构建一组弱分类器,并将弱分类器加权叠加构建强分类器,最后将多个强分类器组合起来形成最终的级联分类器,Adaboost算法通过训练样本获得分类器,初始阶段采用均匀分布[5].
图2 矩形特征原型
3.1 特征提取与计算 Haar-like特征是由Viola等人在其人脸检测系统中引入的一种简单矩形特征,之后Lienhart R等人在研究了Haar-like特征下,引入了45°特征,本文中用到的特征如图2所示.矩形特征定义为图像相邻像素区域内像素灰度值总和的差,这种矩形特征能检测到图像局部的灰度变化,其只支持水平、垂直、对角线方向上的信息,但是充足的样本数量和计算量弥补特征的不足.积分图可以用来对特征值进行快速的计算[6],原理可用图3表示:A(x,y)表示坐标的左侧和上侧的所有像素的和.定义为公式:
图3 特征计算原理
(1)
图3中,A(x,y)定义点(x,y)的左上方所有像素的积分值;S(x,y)定义点(x,y)上侧的所有像素之和.积分图可用公式(2)和(3)表示:
s(x,y)=s(x,y-1)+i(x,y)
(2)
ii(x,y)=ii(x-1,y)+s(x,y)
(3)
s(x,y)定义(x,y)左侧的像素累加和,i(x,y)表示原图像,ii(x,y)表示积分图,原始图像能够通过公式(3)得到积分后的图像.
3.2 分类器训练 Adaboost算法是一种选取相对较少但分类能力相对较强的弱分类器.首先,对全部样本权重归一化处理,以样本为输入计算全部样本中每个特征的f的特征值,并将特征值按照样本中的大小进行排序.计算所有正负样本的权重和,计算该样本前的全部正负样本的权重和,选取当前样本的特征值和它之前的特征值之间的数作为弱分类器的阈值[7],得到弱分类形式如公式(4).
(4)
其中,pi为偏置,fi为特征,θi为阈值.
其次,分析误检率最小及分类能力最好的准则,选取当前样本权重下的最优弱分类器加入到强分类器中.之后更新样本权重,提高上一轮中被误判的样本的权重,将新样本和上一次分错的样本放在一起进行新一轮的训练.最后,对每次得到的最佳弱分类器加权求和就得到强分类器,形式如公式(5)所示:
(5)
虽然通过Adaboost算法结合多个弱分类器而形成的强分类器有较为理想的检测效果,但是要使最终的分类器有较高的检测率和较低的误检率仍然比较困难且耗时,级联强分类的引进极大地缩短检测时的计算量.级联强分类器利用前面的特征值少、结构单一的强分类器检测出非行人样本,只有正样本才会被再次检测.通过一层层的过滤,可以让后一层比前一层待测样本大大减少,提高检测速度.级联强分类器的组合没有明确的算法,我们在开始检测时选取少量的矩形特征训练强分类器,通过调低阈值的方法,使得非行人样本被过滤而疑似行人样本可以通过,而在后续阶段可以增加强分类器中的弱分类器个数用来对前面难以识别的区域进行检测[8].
3.3 图像检测 本文中分类器训练部分使用的是部分INRIA行人数据库样本以及网络截取样本,正样本共2 500张,包含形态各异的行人,负样本共5 500张,为非人体图像.部分正负样本如图4所示.
图4 部分训练正负样
图5 部分训练样本与检测效果图
在视频序列的检测阶段,从最小的滑动窗口来遍历输入的图像,提取遍历过程中的窗口图像的行人描述特征送入到训练好的级联分类器中进行二分类的判断,若该窗口图像中包含行人,则将其圈出.在每次扫描完后,将滑动窗口的大小进行一倍大小的扩大,直至滑动窗口与待测图像大小相同为止.部分样本训练与检测效果图如图5所示.
本文中设计的基于视觉的行人检测系统能够高效地实现行人检测,系统充分结合嵌入式平台与PC平台,利用嵌入式技术与计算机视觉,保证视频流传输的稳定性与行人检测的可靠性,同时降低视频监控的开发成本与周期.受研究时间的限制,本文中的行人检测算法研究的还不够深入和完善,系统还存在改进和优化的地方.在今后的研究中可以考虑使用多种特征融合使得结果最优,考虑复杂多变的场景和行人的相互遮挡等,以提高系统的准确度与鲁棒性.
[1] 张春凤,宋加涛,王万良,等.行人检测技术研究综述[J].电视技术,2014,38(3):157-162.
[2] 邱晓金,陈名松,黄高见,等.基于Cortex-A8的视频监控跟踪系统设计与实现[J].计算机与数字工程,2016,44(3):542-545.
[3] 庞达.基于Cortex-A8平台的行人检测技术[D].深圳:哈尔滨工业大学,2014.
[4] 高宇.基于Haar特征的运动人体检测[D].长春:吉林大学,2013.
[5] 郭巧云,许雪梅,李岸,等.基于ARM11的无线视频监控系统的设计[J].计算机测量与控制,2010,18(8):1786-1789.
[6] 任黎明,孙玲玲.基于Linux的无线视频监控系统[J].物联网技术,2015,48(2):24-25.
[7] 于仕琪,刘瑞祯.学习OpenCV(中文版)[M].北京:清华大学出版社,2009.
[8] 韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.
(责任编辑 郭定和)
Pedestrian detection based on video image system design and implementation
YANG Wentao1, LI Zhang1, CHEN Yong1,2,XU Lingfang1,2, ZHANG Cancan1,2, HUANG Zhen1,2,BIAN Mengyun1,2, CHEN Qi1,2
(1.School of Computer and Information Engineering,Hubei university, Wuhan 430062, China;2.Key Laboratory of Ferro & Piezoelectric Materials and Devices of Hubei Province,Faculty of Physics and Electronic Science,Hubei University,Wuhan 430062,China)
Design a pedestrian detection system based on video image. System based on Linux OS and ARM embedded platform, by constructing a video streaming server network video streaming to the PC side, with Haar-like features and Adaboost algorithm framework for training classifiers and classifier for pedestrian detection. This paper describes in detail the design and implementation of system, and the key points discussed, experimental results show that the system is stable, high precision.
detection, video streaming servers, Haar-like features,Adaboost algorithm
2016-06-22
湖北省教育厅重点科研项目(D2016004)资助
杨文韬(1991-),男,硕士生,E-mail: 850201368@qq.com;陈勇,通信作者,副教授,E-mail:chenyong@hubu.edu.cn
1000-2375(2017)01-0045-05
TN911.73
A
10.3969/j.issn.1000-2375.2017.01.009