一种基于视频流处理的电梯乘客数并行检测方法与流程

文档序号:17928268发布日期:2019-06-15 00:34阅读:480来源:国知局
一种基于视频流处理的电梯乘客数并行检测方法与流程

本发明专利涉及视频大数据、机器学习、并行计算等领域,特别是给出了一种基于视频流处理的电梯乘客数实时检测方法。



背景技术:

电梯是人们工作和生活中必不可少的交通工具,然而,随着电梯数量的快速增加以及人们生活节奏的逐步加快,电梯运行安全逐渐成为一个公众关注的社会性热点。充分利用电梯产生的各类数据,结合人工智能技术提高电梯的安全性已经成为学术界和工业界的一个重要课题。电梯监控视频数据是一类重要的数据源,蕴含了电梯时时刻刻的运行状态,为分析电梯状态提供了丰富的数据。

在视频数据处理方面,郑健等(计算机系统应用,2017)提出了一种实时视频分析系统,可以通过kafka分发消息队列并通过流处理的方式提高视频效率;李海跃等(计算机应用研究,2017)提出了一种把视频转化为图片集后砍帧并放至分布式系统的方法,已加快对视频的处理速度;张洪等(计算机测量与控制,2017)提出了一种将视频帧差法与分布式框架结合的方法,用以快速检测车流量;叶锋等(计算机系统应用,2017)提出一种将hog与spark大数据框架相结合,并辅以rfid来实现车辆计数的方法。

对于并行视频处理框架方面,也已有多位学者进行了相关研究。hanlintan等(icme,2014)提出了一种将视频录像放至hadoop分布式框架上作多节点检测以提升运算效率的方法;xiaomenzhao等(8thinternationalconferenceoncloudcomputing,2015)详细比较了在hadoop分布式框架上各个图片检测算子的效率并整合了一种综合的框架;vaithilingam等(internationalconferenceonbigdata,2015)对视频流使用时间段的方式进行裁剪并放至hadoop框架上进行处理。

spark并行处理框架是一种基于内存计算的并行处理框架,设计了统一的抽象编程,即弹性分布式数据集(rdd),这种全新的模型可以让用户直接控制数据的共享,使得系统有着更强的容错性和更快的计算能力,这对于视频处理至关重要。



技术实现要素:

为了实施检测电梯乘客人数,本发明提出一种基于视频流处理的电梯乘客数并行检测方法,该发明对基于机器学习的乘客数检测算法在sparkstreaming并行计算框架上进行了并行化,提高了电梯乘客数检测的实时性。

一种基于视频流处理的电梯乘客数并行检测方法,包括以下步骤:

(1)基于机器学习的电梯乘客数检测分类器;

(1.1)电梯乘客数据标定;

根据视频数据进行数据标定,将样本分成正负数据集,正样本集为检测目标,负样本集为电梯环境,截取乘客头肩部分作为训练正样本,截取不含乘客的电梯内部环境作为训练负样本,正负样本比例大致接近1:2,截取时采用人工标定的方式,标定工具为视频截取工具;

(1.2)训练分类器;

采用图像的haar特征点进行训练,使用级联分类器cascadeclassifier训练样本,准备好正负样本集和描述文件,在训练完成后得到xml格式的分类器文件;

(2)基于sparkstreaming的电梯乘客数检测;

本发明采用sparkstreaming流处理框架对电梯乘客数检测算法并行化处理,提高乘客人数检测的实时性:

(2.1)读取并转换电梯视频数据;

根据电梯摄像机ip地址,读取电梯监控数据,将接收到的实时rtsp数据解析成为图片数据,并保存为缓存格式bufferedimage,再将bufferedimage转换为字节数组;

(2.2)创建视频弹性分布式数据集rdd;

将字节数组作为列表元素添加进入arraylist,利用sparkstreaming中的parallelize方法将上述列表划分为rdd,作为sparkstreaming处理的对象;

(2.3)基于sparkstreaming的电梯乘客数检测算法;

视频弹性分布式数据集rdd以队列queue形式处理,将其组合为视频流数据dstreams,作为电梯乘客数检测流处理算法的输入,具体步骤如下:

输入:视频流数据

输出:视频中每一帧的乘客数

步骤:

step1:调用maptopair算子以电梯编号为key值,电梯流数据为value值,生成pairdstream流数据键值对;

step2:调用mapvalues算子,用来操作数据流中的视频帧数据;

step3:创建一个临时图片变量image储存每帧数据并存入字节数组,创建以rect为单位的列表,用以记录每帧数据中检测到乘客的位置与数目;

step4:提取图像数据image的像素值,对像素颜色进行灰度化,将图像转为灰度图以提升检测效率;

step5:提取图像数据image并对其进行gamma转换,降低光照变化对其的影响;

step6:调用之前训练所得的xml人头分类器配合机器学习的检测方法detectmultiscale检测此时image中的乘客目标;

step7:将检测所得的乘客位置放入rect列表中,提取rect列表长度,作为检测到的人数;

step8:使用puttext方法将其映射到图片image中,作为处理后每帧的图片数据;

step9:调用javacv的conveter转化器,将org.opencv.core.mat图片格式转换为org.bytedeco.javacpp.opencv_core.mat图片格式,方便之后调用opencv相关算子;

step10:使用convert算子转化图片为frame数据帧,使用ffmpeg工具包的recorder算子将frame数据帧写入指定位置组成处理后的新视频;

step11:在后台记录检测后生成的键值对数据流,作为电梯乘客的数据写入数据库;

(3)在spark集群上部署电梯乘客数检测算法;

将电梯乘客数检测流处理算法部署在spark分布式集群上,设置好与算法步骤数相匹配的节点,便可以在后台自动获得快速可控的实时流数据处理视频。

本发明的优点:

本发明利用流处理技术对电梯视频数据进行分析,实时检测电梯的乘客数,采用sparkstreaming流处理框架对电梯乘客数检测算法进行并行化,提高了电梯视频乘客数检测的实时性。

附图说明

图1是本发明的数据预处理流程图。

图2是本发明的rdd数据结构图。

图3是本发明的基于sparkstreaming的电梯乘客数检测流程图。

图4是本发明收集电梯实地数据样本的示意图。

图5是本发明对于人的头肩部位进行位置与数量的检测,将返回的检测结果映射在每帧图片数据上的示意图。

具体实施方式

为了进一步说明本发明的具体实时方式,以某台电梯的监控视频为例,结合附图对本发明的具体实施方式做进一步说明,其中总体框架如图3所示。

一种基于视频流处理的电梯乘客数并行检测方法,具体步骤如下:

(1)基于机器学习的电梯乘客检测分类器;

使用机器学习检测视频中的目标物体,即人头部位,首先需要收集电梯实地数据样本,人工标定乘客的头肩部位,尽量包含肩膀部分,并截取大量空电梯环境作为训练负样本,将正负样本数比例在1:2左右,如图4,在分出正负数据集后,使用opencv自带的haar训练组件配合级联分类器cascadeclassifier训练完成后即可得到针对电梯环境的xml格式分类器文件;

(2)基于sparkstreaming的电梯乘客数检测;

电梯视频流数据的实时处理基于sparkstreaming流数据框架,可以对电梯监控数据进行实时的、快速的目标识别,步骤如下:

(2.1)读取并转换电梯视频数据;

连接处理端与摄像机ip地址,本示例使用的是海康威视萤石c6c摄像头,将接收到的实时rtsp数据解析成为图片数据保存为图片缓存格式bufferedimage,并在接收缓存的同时将视频数据再次转为字节数组形式保存,此时的实时缓存中已经保存有电梯的实时监控数据;过程如图1所示;

(2.2)建立弹性分布式数据集rdd

将字节数组作为列表元素添加进入arraylist,利用sparkstreaming中的parallelize方法将上述列表划分为rdd,作为sparkstreaming处理的对象;

(2.3)基于sparkstreaming的电梯乘客数检测算法;

rdd以队列queue形式处理,再将其组合为视频流数据dstreams,按照算法流程,根据不同教学楼电梯编号生成不同的键值对流数据pairdstream后进行分布式运算;此时的流数据格式如图2所示,k表示电梯编号,v表示当前的校内监控视频流;

在键值对流数据生成后,使用mapvalues算子操作数据流中的健值,即每个分区中的视频帧数据;

首先,由于haar特征点是针对灰度变化的图像检测,将操作视频帧数据的像素值使其灰度化,降低颜色对其的影响;

然后使用gamma矫正降低光照变化对电梯环境的影响,在处理完成后使用之前训练完成的xml图片分类器配合cascadeclassifier级联分类器对每帧视频进行人数的检测;

本示例中则是对于人的头肩部位进行位置与数量的检测,将返回的检测结果映射在每帧图片数据上,再将处理完成的数据作为视频由保存至指定位置,而处理完成的整个键值对数据流则由后台负责记录。如图5所示:

(3)在spark集群上部署电梯乘客数检测算法;

将整个系统放至spark分布式集群上,设置好与步骤数相匹配的节点,使得视频检测步骤通过细粒度划分的方式得到分布式处理,若有多部电梯则每部电梯可再根据电梯号进行分区,从而自动得到快速可控的实时流数据处理结果。在本示例中,经测试当有2个节点运行时,视频分布式检测效率明显高于普通流处理效率。以下为实验时检测效率比较:

本实验中节点传递约为11ms,灰度化与图像矫正约为14ms,人数检测约为34ms;普通实验中灰度化与矫正约为21ms,人数检测约为66ms。可以看出检测的效率有了明显的提升,双节点效率约为单节点的1.47倍,且在处理完成后可在后台自动得到附有乘客数的电梯视频数据。

本发明利用流处理技术对电梯视频数据进行分析,实时检测电梯的乘客数,采用sparkstreaming流处理框架对电梯乘客数检测算法进行并行化,提高了电梯视频乘客数检测的速度。

应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1