基于深度学习的行人检测系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
行人检测技术是众多领域的基础技术之一。
例如无人驾驶汽车、智能视频监控和人体行为分析等领域。
在智能视频监控领域中,行人检测对系统的实时性和准确性都有较高的要求,然而两者往往不能兼得,在计算能力一定的硬件环境下,高实时性意味着准确性会有所降低,高准确性往往需要降低实时性来获取。
如何同时保证系统的实时性和准确性成为智能视频监控系统的一个难题。
近年来,随着深度学习技术的不断突破,该问题得到了一定程度的解决。
深度学习技术作为人工智能的一个子领域,在计算机视觉中取得了很好的效果,基于深度学习的行人检测系统就是智能视频监控系统的一种。
它是针对油井环境下的行人检测而设计和实现的系统。
该系统将DarkNet框架作为训练时所使用的框架,将Yolo v2作为训练时所使用的网络模型。
对客户提供的真实场景下的视频或图像数据进行标注和训练,将训练好的模型嵌入到四路智能分析设备TX1中,通过网络摄像头获取现场实时监控画面的视频数据,或者直接读取本地的视频数据,经过模型的处理得到视频画面中行人的位置信息,之后将视频信息以及检测结果传输到Web服务器,在网页端进行监控画面以及检测结果的显示。
服务器以及深度学习框架都是在Linux系统下运行的,用户只需打开一个浏览器输入系统IP地址,登录系统即可进行相应的操作。
基于深度学习的行人检测系统能够对获取到的实时监控数据和本地视频数据进行检测,并且能够达到一定的实时性和准确性。
用户操作方便,只需通过浏览器就可以整个系统进行操作。
该系统可以在网页端实时显示视频和检测结果,可以控制系统是否进行检测,可以设置检测结果所发送的目的IP地址等。
关键词:深度学习Yolo v2网络结构DarkNet框架行人检测
Abstract
Pedestrian detection technology is one of the basic technologies in many fields.Such as unmanned vehicles,intelligent video surveillance and human behavior analysis.In the field of intelligent video surveillance,pedestrian detection in real-time and accuracy of the system have higher requirements,but they often have not,in the calculation of the ability of hardware environment,high real-time mean accuracy will be reduced,the high accuracy often need to reduce the real time to get.How to ensure the real-time and accuracy of the system at the same time has become a difficult problem in the intelligent video surveillance system.In recent years,with the continuous breakthrough of deep learning technology,this problem has been solved to a certain extent.
As a subfield of artificial intelligence,deep learning technology has achieved good results in computer vision.Pedestrian detection system based on deep learning is one of the intelligent video surveillance systems.It is a system designed and implemented for pedestrian detection under the oil well environment.The system uses the DarkNet framework as the framework used in training and uses the Yolo V2as a network model used in training.The real scene to provide the video or image data were tagged and training,embedding models trained to four intelligent analysis device in TX1,access to the video data monitoring picture through the network camera,or directly read the video data locally,through model processing by the position information of video images of pedestrians then,the video information and the detection result is transmitted to the Web server,display monitoring screen and test results in the end of the page.The server and deep learning framework are running under the Linux ers just need to open a browser to input the IP address of the system,and login the system to do the corresponding operation.
The pedestrian detection system based on deep learning can detect the real-time monitoring data and local video data,and achieve real-time and accuracy.The user is easy to operate,and the whole system can be operated only through the browser.The system
can display video and test results in real time at the webpage end,control whether the system detects and set the destination IP address sent by the test result.
Key words:Deep learning Yolo v2network structure DarkNet frame
Pedestrian detection
目录
摘要 (III)
Abstract (II)
1绪论
1.1研究背景 (1)
1.2研究的目的和意义 (2)
1.3国内外研究概况 (3)
1.4主要工作 (4)
2关键技术介绍
2.1深度学习框架 (6)
2.2深度学习网络Yolo v2 (7)
2.3Gstreamer多媒体框架 (10)
2.4本章小结 (11)
3行人检测系统需求分析
3.1系统需求分析总体概述 (12)
3.2系统的功能性需求 (14)
3.3系统的非功能性需求 (16)
3.4本章小结 (17)
4行人检测系统的设计
4.1系统总体结构设计 (18)
4.2系统概要设计 (20)
4.3系统详细设计 (25)
4.4本章小结 (30)
5行人检测系统的实现与测试
5.1系统开发运行环境 (31)
5.2系统功能实现 (32)
5.3系统测试 (41)
5.4本章小结 (44)
6总结与展望
6.1全文总结 (45)
6.2展望 (46)
致谢 (47)
参考文献 (48)
1绪论
1.1研究背景
在工业界和人们的生活中计算机视觉技术的应用越来越广泛。
关于计算机视觉,简单点说,就是使用一些设备,例如摄像机、摄像头等,来获取一些视频图像信息,再使用计算机将其转换成数字信号进行进一步的处理。
处理后的结果可以直观的显示在人们的面前,使得人们可以更加方便的去理解和利用这些信息。
很多领域都会或多或少的用到计算机视觉相关技术,其中一个最重要的应用领域就是行人检测技术。
计算机视觉有着很多最前沿的应用,行人检测技术就是其中的一个[1-3]。
行人检测技术作为一个较为基础的研究方法,是很多领域研究的前提。
行人检测技术不仅仅是在学术研究中有着广泛的应用,在人们的生活中同样也有。
安防监控
安防监控在人们的生活中无处在,上班的路上会有政府的道路监控,到了公司会有公司的安防监控,回到家里会有小区物业的安全监控,到银行会有银行的视频监控等等。
常见的视频监控工作通常都是由人在屏幕前进行监视完成的,这不但耗费巨大的人力资源,而且还容易出错。
采用行人检测技术后,就无需有人去对着屏幕进行监视,计算机就可以自己完成对行人的识别,并且可以进行进一步的轨迹跟踪、身份识别等,出现异常现状可以及时发出警报。
这样不但可以极大的减少人力成本,还能提高安防的安全指数。
无人驾驶汽车
无人驾驶汽车的研究也在最近几年变得十分火热。
据世界卫生组织调查表明,每年全球死于汽车交通事故的人数超过100万人,汽车安全问题也成为无人驾驶汽车的重中之重。
无人驾驶汽车的实现,其中最重要的一个功能就是要能够识别障碍物或行人,要在事故发生前及时制止。
行人检测技术就能够帮助无人驾驶汽车实现这项功能[4-5]。
尽管近年来的行人检测技术已经有了很大的提高,但在多样性的现实场
景中还存在一些问题,行人检测技术还需要在特定场景下的速度和精度上进一步的提升。
智能机器人
人工智能的发展使得工业界和学术界对机器人的研究变的越来越火热。
许多科幻电影中的人们想象的画面在现实生活中也逐渐的出现。
为了让机器人能够更好的服务人类,让机器人能够“看见”是变成了一个不可或缺的功能。
识别服务对象主体是首先要解决的事情。
通过行人检测技术可以让机器人“看见”并“认识”出周围的人,并定位哪个是它要服务的对象,进而对人所发出的指令进行进一步的执行。
以上三个方面并非行人检测技术的所有应用场景,随着人们对高品质生活的不断追求,科学技术也在的不断进步,未来只要有人出现的地方,都有可能用到行人检测这项技术。
1.2研究的目的和意义
目前市场上所应用的视频监控系统大多以传统的监控系统为主,它们是由前端的摄像设备、视频传输设备和视频监控平台组成,只具备现场画面实时观看、录入、回放、调出和存储等单一的功能,并不具备智能识别的功能。
还有一些最新的监控系统增加的自动识别、存储和报警的功能。
但其所使用的识别技术大多是传统方法,在智能分析设备上并不能保证准确度和实时性。
基于深度学习的行人检测系统,属于智能视频监控中的一种,主要针对于固定场景下的视频监控以及行人检测和识别。
深度学习在图像检测领域的应用使得图像检测的效果有了很大的提升,典型的应用在图像检测方面的深度学习网络有Faster-RCNN[6]、SSD[7]和Yolo[8]等等,其中Faster-RCNN是检测效果最好的,Yolo是检测速度最快的。
本文所设计实现的行人检测系统是运行在智能分析设备上的,要在计算能力有限的情况下保证检测的速度,选择Yolo网络结构能够很好的改善传统检测方法检测速度慢的问题。
相对于传统的监控系统,基于深度学习的行人检测系统可以自动检测和识别画面中的行人,且在智能分析设备上运行具有较高的准确度与实时性。
1.3国内外研究概况
作为计算机视觉领域较早研究的众多领域之一的行人检测技术,已经经历了几十年的研究与发展,目前的行人检测技术总体上可以分基于手工设计的模型和基于深度学习的模型[9-10],其中基于手工设计的模型为较早的方法,属于传统方法的范畴。
基于手工设计的模型
早期人们提出了很多种行人检测方法,最早的行人检测方法是由Viola和Jones提出的,利用多尺度Haar小波做完备基和Adaboost进行结合来做[11],并且采用了积分图的方法来进行特征的快速计算。
Dalal等人[12]提出的行人检测方法中,对于行人特征的描述使用的是HOG[13]方法,并且在分类时采用的是支持向量机作为分类器。
Dalal 等人通过实验证明了采用HOG方法提取的特征要比使用基于灰度的方法提取的特征要更加的丰富。
由于Dalal等人提出的这种方法在效果和速度上能够有很好的平衡,所以在后来一段时间里的很多行人检测方法都会基于这种方法进行改进。
HOG和支持向量机进行结合的结构也成为了行人检测方法中的里程碑试的结构。
在2007年DPM模型[14]被PedroFelzenszwalb和Girshick等人提出,DPM模型先对图像进行特征的提取,之后进行分类,特征提取采用的是计算梯度直方图的方法,分类使用的是支持向量机。
其算法思路和HOG类似。
DPM方法的特点在于增加了一个子模型,用来检测目标物体的子部分,该方法很好的解决了物体在运动和形变情况下的检测问题。
通过快速构建特征金字塔的方法来进行行人检测的方法是Dollar等人在2014年又提出的[15],当待检测的图像大小在640×480像素时该方法能够达到实时性。
基于深度学习的模型
越来越多的领域都或多或少的用到了深度学习[16-17]。
行人检测也不例外。
RCNN[16]网络结构是较早的用于目标检测的深度学习网络结构,由Ross Girshick提出,RCNN 是通过Selective Search方法[18]对一张图片提取大约两千个候选框,之后将每一个候选框输入到CNN网络[19]中,通过卷积[20]和池化[21]操作进行特征的提取,最后通过分类器和回归器对候选框进行检测。
在RCNN的基础上Ross Girshick又提出了Fast RCNN[22],Fast RCNN将RCNN中的svm分类器[23]替换成了softmax分类[24],并且将回归器和分类器的损失函数合成到一个多任务损失函数,取消了分类器和回归器的训
练。
Fast RCNN无论是在速度上还是在检测效果上都要优于RCNN,但Fast RCNN的候选框提取部分仍然使用Selective Search方法,在CPU上进行运算。
在Fast RCNN的基础上,Ross Girshick又提出了Faster RCNN,它使用了RPN网络进行候选框的提取,进一步提升了检测的速度和精度,但仍然无法达到实时检测的效果。
Yolo是在2015年被Joseph Redmon和Ali Farhadi等人提出来的。
相对于RCNN系列的方法,Yolo并未采用分类器加回归器的思想,而是直接采用回归的方法完成了RCNN系列方法中的分类器和回归器的两个任务。
Yolo在目标检测上的速度比RCNN系列的网络快很多,但由于Yolo是用了7x7的网格去回归目标的位置,导致Yolo在目标检测上的精度并不高。
Yolo v2[25]是2016年Joseph Redmon和Ali Farhadi等人在Yolo版本上进一步提升的版本。
在行人检测技术的研究方面,国内的起步较晚与国外,且大多是针对固定场景下得目标检测的研究。
中国科学院孙庆杰等人提出了基于矩形拟合的人体检测算法[26],西北工业大学提出了静止摄像机下基于单目视觉的运动行人检测方法[27-28],西安交通大学的郑南宁等人提出了采用基于支持向量机的行人识别的方法[29],上海交通大学的田广等人提出了一种叫做coarse-to-fine的行人检测方法[30]。
1.4主要工作
本文所设计和实现的行人检测系统是基于深度学习的,它是智能视频监控的一种,主要针对油井环境下的行人检测。
系统采用DarkNet作为深度学习训练的框架,使用Yolo v2网络模型进行训练,通过Gstreamer多媒体框架将检测后的结果在网页端进行显示。
本论文的主要工作如下:
(1)介绍了基于深度学习的行人检测系统的背景、目的和意义,描述了国内与国外在该技术上的相关研究和进展。
(2)对行人检测系统所需要的深度学习框架、深度学习网络Yolo v2和视频编解码所使用Gstreamer多媒体框架做了详细的介绍。
(3)从系统的功能性需求和非功能性需求两个方面来考虑系统的需求分析。
功
能性需求方面对每个功能模块的具体需求进行了说明,非功能需求方面从设计原则、性能要求和界面设计三个方面对系统提出了要求。
(4)根据系统的需求分析,从概要设计和详细设计两个方面对行人检测系统进行详细设计。
(5)将系统进行实现,并对系统的各个功能和性能进行测试。
(6)总结目前行人检测系统已经实现的功能,提出目前系统存在的缺陷和需要改进之处。
2关键技术介绍
在本章的内容中详细的介绍了设计与实现基于深度学习行人检测系统所需要的关键技术。
DarkNet[31]作为该系统的深度学习框架,不论是模型训练,还是进行检测,都是基于DarkNet框架实现。
Yolo v2是本文所采用的深度学习网络结构,总体的网络结构仍是采用了Yolo的结构。
Gstreamer框架是在获取视频数据和推送视频数据时所使用的视频编解码技术,是整个系统的关键技术之一。
以下是相关技术的详细介绍。
2.1深度学习框架
深度学习技术是人工智能大方向下得一个研究分支,深度学习相关网络结构的实现通常是建立在深度学习框架之上的,深度学习的框架内部编写了每个网络模块的具体实现过程,开发者只需要在框架之上调用框架内的模块进行新的网络组合即可,很大程度上促进了开发者的开发效率。
常见的深度学习框架有caffe[32]、TensorFlow[33]、MXNet[34]等等,DarkNet框架是本系统在开发过程中所使用的深度学习框架。
深度学习框架当中已经将很多网络模型的基本模块进行了实现,这些模块就是迷行或者算法的一部分,可以自己去设计如何使这些基本模块去构成符合自己想要的数据集模型,不需要每次都重头编写各个模块的功能。
深度学习的框架的出现令很多想学习深度学习的人都有学习的机会,你们不需要在编写深度复杂的模块代码,深度学习框架中很多模型都已经实现,你可以在已有模型的基础上进行修改,添加自己的神经网络层次,或者进行其他修改。
深度学习框架也并不是完美的,如果有特殊的功能需求,还需要对框架进行修改。
Caffe是从2013年底开始由加州大学伯克利博士贾扬清所编写的,caffe的整体结构较为清晰,且代码可读性较高,caffe的计算速度在众多深度学习框架中也是较快的。
它在计算机视觉领域应用较为广泛。
Caffe的编写使用的是C++语言,并且支持Python语言的接口。
TensorFlow是由谷歌公司研发的一款非常流行的深度学习框架,在众多深度学习框架中,对他对递归神经网络有着很好的实现,TensorFlow拥有较为清晰的结构。
它同时支持C++和Python两种接口。
MXNet是一款支持多机多卡的开源深度学习框架,具有较灵活、可移植和轻量级等优点,它对于很多编程语言都提供了接口,例如Python、C++、R、Scala、Matlab 和Javascript等等。
MXNet可以加速任何数值计算。
Darknet是一个开源的神经网络框架,是通过C语言和CUDA进行编写。
它的特点是速度快,安装简单,并支持CPU和GPU计算。
相对于caffe、TensorFlow和MXNet等框架,DarkNet并不常见,但DarkNet对Yolo网络有着很好的支持。
2.2深度学习网络Yolo v2
在深度学习中用于图像检测的网络结构有很多,例如R-CNN,SPPNet[35],Fast R-CNN,Faster R-CNN,Yolo,SSD等等。
Yolo v2是Yolo的一个改进的版本,比Yolo更准、更快。
图2-1Yolo网络结构
Yolo的网络结构如图2-1所示。
Yolo网络借鉴了GoogLeNet网络的结构[36],但Yolo使用的是1x1卷积层和3x3卷积层,并没有完全使用inception module机制。
Yolo 模型在图像检测方法相对于其他方法有多个优点。
检测速度快,可以学到物体的泛化特征。
它也有一些缺点,Yolo的物体检测精度低于其他图像检测网络结构,容易产生物体的定位错误,对小物体的检测效果不好。
2.2.1精度上的改进
Yolo v2在新增了Batch Normalization[37]方法,添加到没个卷积层之后,使得每层输入的分布差距变化很小。
通过该种方法,我们可以移除dropout[38],并且移除后不会产生过拟合的现象。
Yolo v2在输入的图片尺寸方面进行了扩展,将输入尺寸调整到448×448分辨率。
训练方法是先在ImageNet数据集上预训练[39]出一个输入图像大小为448×448分辨率的模型,之后对Yolo v2网络的后半部分进行微调。
受faster-rcnn中的anchor思想[40]的启发,Yolo v2将网络在最后使用的全连接进行了舍弃,同时也舍弃了最后一个池化层。
该方法虽然使得模型的准确率有所降低,当时在模型的召回率方面却有着很大的提升。
Yolo v2在设置box维度上做了修改,采用了k-means聚类[41]的方法替代了手动设置先验值。
传统的k-means在衡量样本见距离时采用的是欧氏距离[42],Yolo v2将欧氏距离改成了IOU得分。
Yolo v2在位置预测方面直接采用了预测相对grid cell的坐标位置的方法,舍弃了直接预测位置的方法。
Yolo v2利用逻辑回归[43]将ground truth限制在了0到1之间。
该方法使得模型变得更加稳定,模型参数也比之前容易学习。
在改进小目标预测方面,Yolo v2则借鉴了残差神经网络[44]中的Identity Mapping 方法,在网络结构中增加一个passthrough layer,将上一层卷积所提取的特征,也就是产生的特征图,与本层卷积层所提取的特征进行融合。
通过这种方法,Yolo v2在小目标检测方法效果得到了一定的改进。
Yolo v2采用了多次度训练的方法,每迭代几次就会随机选取新的图片的尺寸大小,选取好图片的尺寸后,再按照图片的尺寸进行网络的调整和训练。
通过多次度的训练,使得Yolo v2在小尺度的图片的预测速度更快。
2.2.2速度上的改进
Yolo最初的设计就是为了获得速度与精度的一个兼得,能够进行实时的检测。
Yolo v2设计了一个新的网络结构Darknet-19,如表2-1所示为Darknet-19的网络结构,它包含19个卷积层,5个池化层。
通过这个新的分类网络来进行特征的提取,Yolo v2在检测的速度和精度都有所提升。
表2-1darknet-19网络结构
Type Filter Size/Stride Output
Convolutional323x3224x224
Maxpool2x2/2112x112
Convolutional643x3112x112
Maxpool2x2/256x56
Convolutional1283x356x56
Convolutional641x156x56
Convolutional1283x356x56
Maxpool2x2/228x28
Convolutional2563x328x28
Convolutional1281x128x28
Convolutional2563x328x28
Maxpool2x2/214x14
Convolutional5123x314x14
Convolutional2561x114x14
Convolutional5123x314x14
Convolutional2561x114x14
Convolutional5123x314x14
Maxpool2x2/27x7
Convolutional10243x37x7
Convolutional5121x17x7
Convolutional10243x37x7
Convolutional5121x17x7
Convolutional10243x37x7
Convolutional10001x17x7
Avgpool Global1000
Softmax
VGG-16[45]在图像识别方面有着非常好的的效果,大多数使用深度学习来做图像检测的网络结构中都会使用VGG-16来作为特征提取的部分。
但是由于VGG-16的参数特别的多,模型计算非常复杂。
假设输入的是一张224*224尺寸的图片,使用VGG-16进行计算,仅一次前向传播就需要306.9亿次的浮点运算。
而使用Darknet-19
计算相同大小的图片时,一次前向传播只需要55.9亿次的浮点计算。
使用Darknet-19来进行特征提取的计算量比基于VGG-16和GoogleNet的网络都要低,速度都要快。
2.3Gstreamer多媒体框架
Gstreamer是一个多媒体应用框架,它是开源的,且基于管道和插件实现的[46],它的主要作用是帮助实现类似多媒体服务器和转码工具的多媒体应用程序[47]。
在Gstreamer下创建多媒体功能插件会变的非常方便。
Gstreamer对数据的处理思想是采用了数据管道的方式,不同的多媒体应用的构成是通过对应的管道实现的,而管道的组成是由具体功能插件的数据流串联起来实现的。
组件(Elements)。
组件是Gstreamer中的一个重要的概念,是Gstreamer插件实例化的表现。
从开发人员的角度看,组件就像是一个黑盒子,数据从组件的输入端流入,经过组件的处理后,再经过组件的输出端进行输出。
根据组件功能的不同,可以分为过滤组件、源组件和接收组件三种。
组件的状态有四种,PLAYING、READY、PAUSED和NULL。
当应用程序需要在管道的众多状态之间进行转换时,直接调用函数就可以实现。
箱柜(Bins)。
箱柜比较特殊,它是由多个组件构成。
如图2-2所示,一个箱柜可以包含一个源组件、一个接收组件和一个过滤组件。
图2-2箱柜
衬垫(pad)。
衬垫起到一个接口的作用,连接各个组件。
数据向导和时效性两个特性决定了衬垫的类型。
数据流向定义分为源衬垫和接收衬垫两种,时效性分为永久型、随机型和请求型。
数据流向从一个组件的源衬垫流向另外一个组件的接收衬垫。
总线(Bus)在Gstreamer框架中,总线相当于以个简单的系统,管道消息的是通过总线发送到应用程序当中的,总线采用的线程机制,应用程序不需要再次创建总线,因为管道内已经存在了一条总线,应用程序只需要在这条总线上增加一个处理器就可以了。
2.4本章小结
本章主要介绍了行人检测系统中用的到几个关键技术,本章首先对深度学习框架进行了介绍,之后对常见的深度学习框架进行了讲述。
在第二小节中介绍了Yolo 模型的网络结构以及相对于其他图像检测网络模型的优缺点,从速度和精度两个方面重点介绍了Yolo v2模型相对于Yolo的改进之处。
在第三小节中主要是从Gstreamer 多媒体框架的几个主要的组成元素对Gstreamer框架进行介绍。
3行人检测系统需求分析
系统的需求分析是项目较早的阶段。
系统需求分析主要是为了了解用户对该系统的需求,将用户的需求制作成文档记录下来,方便后续研发。
系统的需求分析其实就是一个不断收集和发现用户需求的阶段。
3.1系统需求分析总体概述
目前市场上存在的视频监控系统大多数都只是拥有单一的监控功能,只是简单的通过视频监控设备获取监控场地的实时画面进行显示,并未对获取的视频进一步的处理。
这种功能单一的监控系统并不具有太多的实用性。
本文设计的行人检测系统是一款用于企业视频监控的软件,对监控的出现的异常情况发出警报。
该系统不仅可以实时显示需要监控的场地的实时画面,还能对获取的视频画面进行检测处理,并将结果与视频一起进行输出。
用户无需时时刻刻盯着监控画面观看,只需在收到警报后进行相应的处理即可。
本文设计的行人检测系统的需求方案是根据客户在现有的海康相机的部署下,添加深度分析智能设备,包括TK1的单路智能设备、TX2的四路智能设备、GTX服务器的16路智能设备等等。
行人检测技术是采用深度学习技术中的yolo v2网络,对视频画面中出现的行人进行实时的检测。
系统的服务器端是在智能设备中进行部署,客户可以通过PC进行登录。
3.1.1系统用户特征分析
表3-1描述了该行人检测系统所包含用户的需求,系统的用户主要包括企业管理人员、企业技术人员、企业安保人员和公司运维人员。