CN111400405B - 一种基于分布式的监控视频数据并行处理系统及方法 - Google Patents
一种基于分布式的监控视频数据并行处理系统及方法 Download PDFInfo
- Publication number
- CN111400405B CN111400405B CN202010235513.6A CN202010235513A CN111400405B CN 111400405 B CN111400405 B CN 111400405B CN 202010235513 A CN202010235513 A CN 202010235513A CN 111400405 B CN111400405 B CN 111400405B
- Authority
- CN
- China
- Prior art keywords
- video
- frame sequence
- data
- video frame
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/71—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/73—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Image Analysis (AREA)
Abstract
本发明提供一种基于分布式的监控视频数据并行处理系统及方法,所述处理系统包括:Kafka组件、Spark分布式计算平台和数据存储组件;本发明的Spark分布式计算平台基于重复帧数据划分读取的方式,对视频帧序列进行划分并以多线程并行的方式拉取数据到Spark分布式计算平台的Spark处理节点,进行并行处理。在任务完成后需要对结果数据进行排序、合并操作,最后对合并后的数据结果根据数据类型输出到数据存储组件进行持久化存储,或者继续发送到Kafka组件进行缓存供下一个Spark处理节点进行拉取处理,实现了Kafka采集和Spark处理耦合,提高了系统的灵活性和扩展性。
Description
技术领域
本发明涉及视频图像处理技术领域,特别是涉及一种基于分布式的监控视频数据并行处理系统及方法。
背景技术
智能监控视频随着智慧城市的推广被广泛应用于各行各业,监控视频系统的规模越来越大,监控摄像头的分辨率也越来越清晰,视频数据量猛烈增长。为了从大规模监控视频数据中挖掘更多有价值的信息,辅助监控人员实现智能视频监控,越来越多的视频分析算法被引入使用,更加重了监控视频系统的计算负载。面对海量视频数据和各种复杂的视频分析,传统集中式视频处理系统已远远不能满足对数据处理的实时性和高效性。因此,设计一种高效能够灵活耦合各种视频分析算法的大规模监控视频系统对于监控应用领域具有重要意义。近年来,分布式技术被引进处理大规模数据,而视频图像处理往往需要进行大量的数据密集型计算。因此一些学者转向研究如何实现视频处理和分布式计算的集成以及应用等,如Yang等人分析探讨了Hadoop和Spark在视频数据分析的应用,设计实现了视频数据分析算法在集群上并行化。TariqAbdullah等人讨论了云计算在交通监控方面的应用,提出一种基于云计算解决方案,用于自动获取来自交通监控摄像头的视频流并进行分析、存储的框架。DuttS等人提出一种基于ApacheStorm和OpenCV的智能视频监控系统,对重要的信息提取模块进行了拓扑结构设计。White等人研究了在MapReduce下的多个视频图像分析算法,包括K-Means聚类和背景差分算法。然而,以上工作主要是利用分布式集群的并行计算优势来提高处理海量视频的效率,或者是针对特定的一些视频分析算法进行定制化框架设计,缺乏一种灵活性强和扩展性好的解决方法。
发明内容
本发明的目的是提供一种基于分布式的监控视频数据并行处理系统及方法,以灵活解耦各种视频分析算法,并以分布式并行计算的方式进行算法处理,提高了视频帧并行处理的灵活性和扩展性,极大提高处理海量监控视频数据的效率,满足实时性处理的需求。
为实现上述目的,本发明提供了如下方案:
一种基于分布式的监控视频数据并行处理系统,所述处理系统包括:Kafka组件、Spark分布式计算平台和数据存储组件;
所述Kafka组件与摄像头连接,用于获取监控摄像头拍摄的视频流,并将所述视频流转化成视频帧序列,对所述视频帧序列进行存储;
所述Spark分布式计算平台分别与所述Kafka组件和所述数据存储组件连接,用于采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,对一个或多个所述视频帧序列段进行并行处理,并依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,将合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,将合并后的处理结果发送给所述数据存储组件;相邻两个视频序列段包括有K帧重复区域;
所述Spark分布式计算平台还用于采用重复帧数据划分读取的方式读取所述Kafka组件的中间处理结果,并对中间处理结果的每个视频帧序列段的采用并行处理的方式进行再次的处理;
所述数据存储组件用于对合并后的处理结果进行存储。
可选的,所述Kafka组件包括数据采集模块、Kafka集群和中间数据缓存组件;
所述数据采集模块分别与所述监控摄像头和所述Kafka集群连接,所述数据采集模块用于获取监控摄像头的视频流,并将所述视频流转化成视频帧序列;
所述Kafka集群与所述Spark分布式计算平台连接,所述Kafka集群用于对所述视频帧序列进行存储;
所述中间数据缓存组件与所述Spark分布式计算平台连接,用于对所述Spark分布式计算平台获得的所述合并后的中间处理结果进行缓存。
可选的,所述Spark分布式计算平台包括:重复帧数据划分读取模块和多个Spark处理节点和数据合并模块;
所述重复帧数据划分读取模块分别与所述Kafka组件和多个所述Spark处理节点连接,所述重复帧数据划分读取模块用于采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,并将每个所述视频帧序列段分别发送给不同的Spark处理节点;
多个所述Spark处理节点分别与所述重复帧数据划分读取模块和所述数据合并模块连接,多个所述Spark处理节点用于对每个所述视频帧序列段进行并行处理;
所述数据合并模块分别与所述数据存储组件和所述Kafka组件连接,用于依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,将合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,将合并后的处理结果发送给所述数据存储组件。
可选的,所述数据存储组件包括HBASE数据库;所述HBASE数据库与所述Spark分布式计算平台连接,用于存储合并后的处理结果。
可选的,所述数据存储组件还包括HDFS库;所述HDFS库与所述监控摄像头连接,用于存储所述监控摄像头拍摄的视频流。
可选的,当进行视频处理的算法为帧间相关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个视频帧序列段,对一个所述视频帧序列段采用帧间相关的视频分析算法进行处理;
当进行视频处理的算法为帧间无关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到多个视频帧序列段,对多个所述视频帧序列段采用帧间无关的视频分析算法进行并行处理。
一种基于分布式的监控视频并行处理方法,所述处理方法包括如下步骤:
利用Kafka组件获取监控摄像头拍摄的视频流,并将所述视频流转化成视频帧序列,对所述视频帧序列进行存储;
利用所述Spark分布式计算平台的重复帧数据划分读取模块采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段;
利用所述Spark分布式计算平台的多个Spark处理节点对一个或多个所述视频帧序列段进行并行处理,并依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,得到合并后的中间处理结果;
判断是否继续视频分析任务,得到判断结果;
若所述判断结果表示是,则将所述合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,返回步骤“利用所述Spark分布式计算平台的重复帧数据划分读取模块采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段”;
若所述判断结果表示否,则将所述合并后的中间处理结果设置为合并后的处理结果,并利用所述数据存储组件对合并后的处理结果进行存储。
可选的,所述利用所述Spark分布式计算平台的多个Spark处理节点对一个或多个所述视频帧序列段进行并行处理,具体包括:
当进行视频处理的算法为帧间相关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个视频帧序列段,对一个所述视频帧序列段采用帧间相关的视频分析算法进行处理;
当进行视频处理的算法为帧间无关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到多个视频帧序列段,对多个所述视频帧序列段采用帧间无关的视频分析算法进行并行处理。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供一种基于分布式的监控视频数据并行处理系统及方法,所述处理系统包括:Kafka组件、Spark分布式计算平台和数据存储组件;本发明的Spark分布式计算平台基于重复帧数据划分读取的方式,对视频帧序列进行划分并以多线程并行的方式拉取数据到Spark分布式计算平台的Spark处理节点,进行并行处理。在任务完成后需要对结果数据进行排序、合并操作,最后对合并后的数据结果根据数据类型输出到数据存储组件进行持久化存储,或者继续发送到Kafka组件进行缓存供下一个Spark处理节点进行拉取处理,实现了Kafka采集和Spark处理耦合,提高了系统的灵活性和扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种基于分布式的监控视频数据并行处理系统的结构图;
图2为本发明提供的一种基于分布式的监控视频数据并行处理方法的流程图;
图3为本发明提供的重复帧数据划分读取方法的原理示意图;
图4为本发明提供的实验中不同时长视频在本机和集群上的运行时间对比图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于分布式的监控视频数据并行处理系统及方法,以灵活解耦各种视频分析算法,并以分布式并行计算的方式进行算法处理,提高了视频帧并行处理的灵活性和扩展性,极大提高处理海量监控视频数据的效率,满足实时性处理的需求。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为实现上述目的,本发明提供了如下方案:
如图1所示,本发明提供一种基于分布式的监控视频数据并行处理系统,所述处理系统包括:Kafka组件、Spark分布式计算平台和数据存储组件;所述Kafka组件与摄像头连接,用于获取监控摄像头拍摄的视频流,并将所述视频流转化成视频帧序列,对所述视频帧序列进行存储;所述Spark分布式计算平台分别与所述Kafka组件和所述数据存储组件连接,用于采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,对一个或多个所述视频帧序列段进行并行处理,并依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,将合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,将合并后的处理结果发送给所述数据存储组件;相邻两个视频序列段包括有K帧重复区域;所述Spark分布式计算平台还用于采用重复帧数据划分读取的方式读取所述Kafka组件的中间处理结果,并对中间处理结果的每个视频帧序列段的采用并行处理的方式进行再次的处理;
所述数据存储组件用于对合并后的处理结果进行存储。
本发明的视频分析算法的并行性分析。本发明基于分布式计算模型从数据并行的角度对视频处理算法进行解耦分析,图像帧作为视频任务处理的基本单位,从处理图像帧的角度可以将视频分析算法分为两类:一种是帧间无关的视频分析算法,这类算法在进行图像帧处理时不考虑帧间关联性,只是对每一个图像帧进行重复的计算工作,基于分布式平台能够将视频流各帧图像分布至集群多个节点实现并行计算。另一种是帧间相关的视频分析算法,该类算法需要对视频帧的前后数帧图像按时间顺序结合上下文进行分析,不能借助分布式技术实现并行处理,只能将视频流分布至同一节点进行串行计算。本发明当进行视频处理的算法为帧间相关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个视频帧序列段,对一个所述视频帧序列段采用帧间相关的视频分析算法进行处理;当进行视频处理的算法为帧间无关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,对一个或多个所述视频帧序列段进行并行处理。其中,帧间相关的视频分析算法包括行人跟踪、基于帧差法的运动目标检测算法等。帧间无关的视频分析算法包括SIFT特征提取、SURF特征提取以及常用的局部特征提取算法等。
其中,所述Kafka组件采用Kafka消息队列进行视频数据聚合、缓存。一方面负责从监控摄像头处采集视频流并存储到Kafka集群,另一方面充当中间数据缓存组件负责接收、缓存不同分析模块的处理结果,使得整个任务流程中的各个分析模块相对独立,从而实现各Spark处理节点的完全解耦,并且能够灵活地更改已有的分析模块结构以及添加新的分析模块。Kafka组件采用Kafka视频消息采集与封装设计、Kafka视频消息分区存储设计。所述Kafka组件包括数据采集模块、Kafka集群和中间数据缓存组件;所述数据采集模块分别与所述监控摄像头和所述Kafka集群连接,所述数据采集模块用于获取监控摄像头的视频流,并将所述视频流转化成视频帧序列;所述Kafka集群与所述Spark分布式计算平台连接,所述Kafka集群用于对所述视频帧序列进行存储;所述中间数据缓存组件与所述Spark分布式计算平台连接,用于对所述Spark分布式计算平台获得的所述合并后的中间处理结果进行缓存。
所述Spark分布式计算平台采用Spark分布式计算平台实现对视频流数据的处理。首先从Kafka集群提取数据到Spark处理节点并转换为可以进行图像处理的数据格式,在不同Spark处理节点设置不同的并行处理方式,提高数据处理效率。所述Spark分布式计算平台采用Spark拉取Kafka视频消息设计、Spark视频任务处理设计。所述Spark分布式计算平台包括:重复帧数据划分读取模块和多个Spark处理节点和数据合并模块;所述重复帧数据划分读取模块分别与所述Kafka组件和多个所述Spark处理节点连接,所述重复帧数据划分读取模块用于采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,并将每个所述视频帧序列段分别发送给不同的Spark处理节点;多个所述Spark处理节点分别与所述重复帧数据划分读取模块和所述数据合并模块连接,多个所述Spark处理节点用于对每个所述视频帧序列段进行并行处理;所述数据合并模块分别与所述数据存储组件和所述Kafka组件连接,用于依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,将合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,将合并后的处理结果发送给所述数据存储组件。
所述数据存储组件采用HDFS和HBASE数据库进行数据存储。对分析计算模块产生的数据按数据类型存储到HDFS和HBSE中,其中对数据量大的原始视频数据以及浓缩后的视频数据采用HDFS存储,对于视频分析处理提取的感兴趣对象及属性特征等数据存储在HBASE非结构化数据库中,便于用户后续对数据进行检索等操作。所述数据存储组件包括HBASE数据库;所述HBASE数据库与所述Spark分布式计算平台连接,用于存储合并后的处理结果。所述数据存储组件还包括HDFS库;所述HDFS库与所述监控摄像头连接,用于存储所述监控摄像头拍摄的视频流。
本发明的基于重复帧数据划分读取方法,为了能够让基于帧间相关的视频分析算法在分布式平台实现并行处理,本发明提出一种基于重复帧数据划分读取方法。视频流以帧序列的形式在Kafka集群的一个服务器中的分区下有序排列存储,读取时,首先将视频帧序列按照一定的长度进行划分,划分好的两个相邻数据块间存在K个重复帧,即后一段数据块的首部前K个帧是前一段数据块的尾部后K个帧,重复帧的作用是辅助该段数据的首尾帧完成基于帧间相关的算法处理,降低数据被切分后因为缺失上下文信息造成算法处理结果的精度影响。根据数据划分策略,Spark分布式计算平台再向Kafka组件以多线程并行的方式到指定Partition中拉取划分好的多段数据到Spark集群的不同节点进行多个算法实例的并行计算,实现算法处理与分布式平台的高度并行。在进行数据划分时,需要手动设置数据划分的长度以及重复帧数量。由于划分后的数据是被Spark拉取到同一个RDD的不同分区中进行处理,本发明在自定义数据划分大小时,设置数据划分的大小等于Partition的容量即128M。重复帧数量的设定在实际应用中要根据具体视频分析算法的需求来设定,如基于运动目标检测的算法一般需要前后两帧进行比较判断,然后得出该帧是否存在运动目标,那么这种算法则设置重复帧的数量为1。
在当前的监控视频处理系统中,视频处理算法与物理资源高度耦合,通常采用视频流作为基本的任务调度单元。随着系统规模的不断扩大,传统的系统会导致大量的资源碎片无法得到充分利用。
如图2所示,本发明实施例采用Kafka消息队列和Spark计算框架提出一种基于分布式的监控视频并行处理方法,所述处理方法包括如下步骤:
利用Kafka组件获取监控摄像头拍摄的视频流,并将所述视频流转化成视频帧序列,对所述视频帧序列进行存储;具体的,由Kafka组件从摄像头处捕获视频流数据并集中存储到Kafka集群,并通过OpenCV视频处理库将采集到的视频流转换为一系列的视频帧,并将视频帧的完整信息存储到Mat数据结构中。本发明的将视频流转为视频帧并将其完整信息存储到Mat数据结构,是因为Kafka消息系统主要处理文本类型的数据结构,缺少能够封装视频数据的统一消息格式。Mat数据结构是一种OpenCV进行图像处理的基本对象。使用Gson库将Mat数据转换为JSON视频消息通过序列化传输并将转换的视频消息在KafkaBroker服务器集群进行传输和存储。本发明的JSON视频消息主要存储的帧信息包括[Key(String),Rows(int32),Cols(int32),Type(String),Data(Bytes)],其中将视频帧所属的摄像头ID和帧生成的时间Timestamp作为关键字段存储在Key中进行视频帧唯一标识,Data是将图像数据以字节数组的形式进行存储,Rows、Cols和Type是Mat数据结构中的基本属性信息。
本发明基于分布式计算模型从数据并行的角度对视频处理算法进行解耦分析,图像帧作为视频任务处理的基本单位,从处理图像帧的角度可以将视频分析算法分为两类:一种是帧间无关的视频分析算法,这类算法在进行图像帧处理时不考虑帧间关联性,只是对每一个图像帧进行重复的计算工作,基于分布式平台能够将视频流各帧图像分布至集群多个节点实现并行计算。另一种是帧间相关的视频分析算法,该类算法需要对视频帧的前后数帧图像按时间顺序结合上下文进行分析,不能借助分布式技术实现并行处理,只能将视频流分布至同一节点进行串行计算。在经过Kafka视频流采集和封装后,被封装好的JSON视频消息会通过KafkaProdcuer客户端推送至KafkaBroker服务器集群中,然后KafkaProducer会根据JSON视频消息中的Key值设置指定的Topic和分区进行存储。本发明的进行Topic设置时,同一路监控摄像头下采集到视频流对应到同一个Topic下,Topic包含的Partition数目要根据后面消费者的实际应用情况来设定。在前面对视频分析算法进行并行性分析后,对于帧间无关的视频分析算法作为消费对象时,设置多个Partition以便于后续能够并行消费。对于帧间相关的算法,为了保证视频流顺序存储在一起,在这里将视频流保存到同一个分区下,Partition数目设置为1。
利用所述Spark分布式计算平台的重复帧数据划分读取模块采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段。
具体的,Spark分布式计算平台向KafkaBroker集群拉取要处理的JSON视频消息并解析成可进行图像处理Mat数据结构。本发明的Spark分布式计算平台向Kafka集群拉取数据时采用了一种基于重复帧数据划分读取方法,实现多线程高并发读取Kafka消息队列中视频消息。重复帧数据划分读取方法如图3所示。视频流以帧序列的形式在Kafka集群的一个服务器中的分区下有序排列存储,然后将视频帧序列按照一定的长度进行划分,划分好的两个相邻数据块间存在K个重复帧,即后一段数据块的首部前K个帧是前一段数据块的尾部后K个帧,重复帧的作用是辅助该段数据的首尾帧完成基于帧间相关的算法处理,降低数据被切分后因为缺失上下文信息造成算法处理结果的精度影响。本发明,重复帧数据划分读取方法作为消费者向Kafka集群拉取视频消息进行处理,Kafka为消费者提供了Direct方式进行获取数据,这种方式会周期性地查询Kafka来获得Topic分区下的最新offset(偏移量),并通过手动设置offset来读取指定位置的数据。其中,Offset为偏移量,Kafka中的每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序号,用于partition唯一标识一条消息。Offset记录着下一条将要发送给Consumer的消息的序号。
Spark分布式计算平台对Kafka视频消息格式解析。Spark分布式计算平台对获取的Kafka视频消息进行视频解析并转成Mat数据结构,Mat结构是OpenCV进行图像处理操作的基本对象。
利用所述Spark分布式计算平台的多个Spark处理节点对一个或多个所述视频帧序列段进行并行处理,并依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,得到合并后的中间处理结果;Spark分布式计算平台对获取到的视频数据通过OpenCV库进行视频图像处理任务。
具体的,当进行视频处理的算法为帧间相关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个视频帧序列段,对一个所述视频帧序列段采用帧间相关的视频分析算法进行处理;当进行视频处理的算法为帧间无关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到多个视频帧序列段,对多个所述视频帧序列段采用帧间无关的视频分析算法进行并行处理。
判断是否继续视频分析任务,得到判断结果;
若所述判断结果表示是,则将所述合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,返回步骤“利用所述Spark分布式计算平台的重复帧数据划分读取模块采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段”;
若所述判断结果表示否,则将所述合并后的中间处理结果设置为合并后的处理结果,并利用所述数据存储组件对合并后的处理结果进行存储。
具体的,Spark分布式计算平台对视频处理结果根据数据类型输出到HDFS或HBase数据库进行持久化存储,或者继续发送到Kafka集群进行缓存供下一个Spark处理节点进行拉取处理,将Kafka采集和Spark处理两个模块进行耦合,提高了系统的灵活性和扩展性。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明所提供的一种基于分布式的监控视频数据并行处理系统及方法,本发明采用Spark计算框架和Kafka消息队列设计了一种基于分布式的监控视频数据并行处理框架及系统,该系统将视频流采集和视频流处理分离,进一步分离视频处理任务和物理资源。这种松散耦合的体系结构可以在不丢失数据的情况下快速恢复失败的任务,为大规模视频监控提供更具可扩展性的分布式计算能力。此外,为了提高视频分析算法在分布式计算平台的并行性,本发明提出了一种基于重复帧数据划分读取算法,并根据此算法,在进行Kafka分区存储和Spark读取数据设置时,提出一种依赖具体视频分析算法(帧间无关、帧间相关)的定制化设计策略,实现算法处理与分布式平台的高度并行,提升数据处理速度。
下面结合实验对本发明的效果做进一步的描述:
1、实验内容:
本发明的实验在进行视频任务处理时,首先选取基于帧间差分的运动目标检测算法作为帧间相关类算法的代表,该类算法根据视频序列前后两帧或三帧图像进行灰度处理后作差分运算,并根据灰度差的绝对值进行阈值判断,从而得出图像帧中是否存在运动目标。在帧间无关算法的选择上,本实验选取了SURF局部特征,在对前面进行运动目标检测后筛选出存在运动目标的图像帧进行SURF局部特征提取,最后输出筛选得到的存在运动目标的关键帧及其SURF特征。
2、实验条件:
本发明的实验数据选取三段从海康威视摄像头采集到视频录像,时长分别为20分钟,30分钟,60分钟,分辨率为704*576,帧率为24fps,并采用Red5模拟实时监控视频数据流入。
本发明的实验分别在单机环境下和不同节点的集群中进行(不同节点下的各分析模块实例并行度设置等于集群数量),主要对视频处理任务在集群的运算性能评估以及对采用数据划分后并行处理结果的算法性能进行评估。实验环境建立在由五个工作节点组建的分布式集群,集群搭建在两台配置相同的工作站上,工作站配置如表1所示,虚拟机配置表如表2所示。
表1工作站配置
表2虚拟机配置
3、实验结果分析:
运算性能评估:
此实验用于评估视频任务处理在集群上的运算性能,实验结果如图4所示,可以看出,随着集群节点数的增多,实例并行度提高,计算时间都明显下降,这是因为计算任务被划分到多个实例并行处理,从而大大缩短了计算时间。但是,集群在单个节点时的运行速度略慢于在本地环境下,这是由于本发明提出的框架在任务处理时需要经过Kafka集群进行消息格式转换再缓存,以及Spark向Kafka集群拉取数据时的I/O通信,数据分配等都额外时间开销占据了整个任务处理时间的较大比重,因此不能很好的体现集群性能。另外,随着集群节点越来越多,计算时间虽然明显降低,但是计算时间降低的速度逐渐变缓,即集群的计算能力并没有随着集群节点数增加呈线性增长。其原因同样是因为任务在集群运行时,随着集群节点的增加,并行度提高会造成额外的资源调度、数据划分读取、I/O通信等时间开销。由此可得出结论,本发明提出的系统框架首先要优于传统监控的处理系统,在面向大规模数据时,合理的设置集群节点数和数据的实例并行度能降低网络传输对整个系统的性能影响,从而更好的发挥系统分布式并行处理的优势,提高对大规模任务处理的运算性能。
数据划分策略对算法性能的影响评估:
此实验为了评估本发明提出的基于重复帧的数据划分策略对视频分析算法在分布式集群上运算结果的精度影响,通过对比运算结果中得到的关键帧进行准确率和误检率进行验证。实验结果如表3所示,从表中可以看出在集群运算后提取到的关键帧对比算法在本地处理的结果来看,无论是查准率还是查全率都在原有算法精度水平的可接受误差范围内。因此可以得出结论,在采用本发明提出的基于重复帧的数据划分策略后使得帧间相关的分析算法被分配到多个实例并行处理,在提高运算性能同时,保证了分析算法的原有性能不受数据划分影响。
表3不同时长视频在本机和集群上提取到的关键帧结果
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
1.一种基于分布式的监控视频数据并行处理系统,其特征在于,所述处理系统包括:Kafka组件、Spark分布式计算平台和数据存储组件;
所述Kafka组件与摄像头连接,用于获取监控摄像头拍摄的视频流,并将所述视频流转化成视频帧序列,对所述视频帧序列进行存储;
所述Spark分布式计算平台分别与所述Kafka组件和所述数据存储组件连接,用于采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,对一个或多个所述视频帧序列段进行并行处理,并依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,将合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,将合并后的处理结果发送给所述数据存储组件;相邻两个视频序列段包括有K帧重复区域;
所述Spark分布式计算平台还用于采用重复帧数据划分读取的方式读取所述Kafka组件的中间处理结果,并对中间处理结果的每个视频帧序列段的采用并行处理的方式进行再次的处理;
所述数据存储组件用于对合并后的处理结果进行存储;
所述Kafka组件包括数据采集模块、Kafka集群和中间数据缓存组件;
所述数据采集模块分别与所述监控摄像头和所述Kafka集群连接,所述数据采集模块用于获取监控摄像头的视频流,并将所述视频流转化成视频帧序列;
所述Kafka集群与所述Spark分布式计算平台连接,所述Kafka集群用于对所述视频帧序列进行存储;
所述中间数据缓存组件与所述Spark分布式计算平台连接,用于对所述Spark分布式计算平台获得的所述合并后的中间处理结果进行缓存;
当进行视频处理的算法为帧间相关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个视频帧序列段,对一个所述视频帧序列段采用帧间相关的视频分析算法进行处理;
当进行视频处理的算法为帧间无关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到多个视频帧序列段,对多个所述视频帧序列段采用帧间无关的视频分析算法进行并行处理。
2.根据权利要求1所述的基于分布式的监控视频数据并行处理系统,其特征在于,所述Spark分布式计算平台包括:重复帧数据划分读取模块和多个Spark处理节点和数据合并模块;
所述重复帧数据划分读取模块分别与所述Kafka组件和多个所述Spark处理节点连接,所述重复帧数据划分读取模块用于采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段,并将每个所述视频帧序列段分别发送给不同的Spark处理节点;
多个所述Spark处理节点分别与所述重复帧数据划分读取模块和所述数据合并模块连接,多个所述Spark处理节点用于对每个所述视频帧序列段进行并行处理;
所述数据合并模块分别与所述数据存储组件和所述Kafka组件连接,用于依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,将合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,将合并后的处理结果发送给所述数据存储组件。
3.根据权利要求1所述的基于分布式的监控视频数据并行处理系统,其特征在于,所述数据存储组件包括HBASE数据库;所述HBASE数据库与所述Spark分布式计算平台连接,用于存储合并后的处理结果。
4.根据权利要求3所述的基于分布式的监控视频数据并行处理系统,其特征在于,所述数据存储组件还包括HDFS库;所述HDFS库与所述监控摄像头连接,用于存储所述监控摄像头拍摄的视频流。
5.一种基于分布式的监控视频并行处理方法,其特征在于,所述处理方法包括如下步骤:
利用Kafka组件获取监控摄像头拍摄的视频流,并将所述视频流转化成视频帧序列,对所述视频帧序列进行存储;
利用Spark分布式计算平台的重复帧数据划分读取模块采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段;
利用所述Spark分布式计算平台的多个Spark处理节点对一个或多个所述视频帧序列段进行并行处理,并依据相邻两个视频序列段的重复区域对每个视频帧序列段的处理结果进行合并,得到合并后的中间处理结果;
判断是否继续视频分析任务,得到判断结果;
若所述判断结果表示是,则将所述合并后的中间处理结果以视频帧序列的形式存储至所述Kafka组件,返回步骤“利用所述Spark分布式计算平台的重复帧数据划分读取模块采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个或多个视频帧序列段”;
若所述判断结果表示否,则将所述合并后的中间处理结果设置为合并后的处理结果,并利用数据存储组件对合并后的处理结果进行存储;
所述利用所述Spark分布式计算平台的多个Spark处理节点对一个或多个所述视频帧序列段进行并行处理,具体包括:
当进行视频处理的算法为帧间相关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到一个视频帧序列段,对一个所述视频帧序列段采用帧间相关的视频分析算法进行处理;
当进行视频处理的算法为帧间无关的视频分析算法时,所述Spark分布式计算平台采用重复帧数据划分读取的方式从Kafka组件中读取视频帧序列,得到多个视频帧序列段,对多个所述视频帧序列段采用帧间无关的视频分析算法进行并行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010235513.6A CN111400405B (zh) | 2020-03-30 | 2020-03-30 | 一种基于分布式的监控视频数据并行处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010235513.6A CN111400405B (zh) | 2020-03-30 | 2020-03-30 | 一种基于分布式的监控视频数据并行处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400405A CN111400405A (zh) | 2020-07-10 |
CN111400405B true CN111400405B (zh) | 2021-04-02 |
Family
ID=71434725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010235513.6A Active CN111400405B (zh) | 2020-03-30 | 2020-03-30 | 一种基于分布式的监控视频数据并行处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400405B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111914118B (zh) * | 2020-07-22 | 2021-08-27 | 珠海大横琴科技发展有限公司 | 基于大数据的视频分析方法、装置、设备及存储介质 |
CN111884883A (zh) * | 2020-07-29 | 2020-11-03 | 北京宏达隆和科技有限公司 | 一种用于业务接口的快速审计处理方法 |
CN112637200B (zh) * | 2020-12-22 | 2023-04-18 | 武汉烽火众智数字技术有限责任公司 | 一种松耦合的视频目标跟踪实现方法 |
CN112991742B (zh) * | 2021-04-21 | 2021-08-20 | 四川见山科技有限责任公司 | 一种实时交通数据的可视化仿真方法及系统 |
CN113220473B (zh) * | 2021-04-21 | 2024-03-22 | 中国科学院空天信息创新研究院 | 数据存储方法及系统 |
CN113747195A (zh) * | 2021-09-07 | 2021-12-03 | 重庆赛迪奇智人工智能科技有限公司 | 视频数据处理方法、装置、设备及存储介质 |
CN115361576A (zh) * | 2022-07-20 | 2022-11-18 | 中国电信股份有限公司 | 视频数据处理方法、装置,以及,电子设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663005B (zh) * | 2012-03-19 | 2014-03-26 | 杭州海康威视数字技术股份有限公司 | 基于云计算的海量视频文件存储系统、分析方法及其系统 |
CN103297807A (zh) * | 2013-06-21 | 2013-09-11 | 哈尔滨工业大学深圳研究生院 | 一种基于hadoop平台的提高视频转码效率的方法 |
CN105659602B (zh) * | 2013-10-14 | 2019-10-08 | 微软技术许可有限责任公司 | 用于视频和图像编码的帧内块复制预测模式的编码器侧选项 |
US10291696B2 (en) * | 2014-04-28 | 2019-05-14 | Arizona Board Of Regents On Behalf Of Arizona State University | Peer-to-peer architecture for processing big data |
US20150334386A1 (en) * | 2014-05-15 | 2015-11-19 | Arris Enterprises, Inc. | Automatic video comparison of the output of a video decoder |
CN104853061B (zh) * | 2015-05-05 | 2016-06-01 | 中国人民解放军国防科学技术大学 | 一种基于Hadoop的视频处理方法及系统 |
EP3364342A1 (en) * | 2017-02-17 | 2018-08-22 | Cogisen SRL | Method for image processing and video compression |
CN107104961B (zh) * | 2017-04-21 | 2019-12-10 | 中国电子科技集团公司第二十八研究所 | 基于ZooKeeper的分布式实时视频监控处理系统 |
CN109241777A (zh) * | 2018-08-10 | 2019-01-18 | 新华三云计算技术有限公司 | 分布式点餐信息管理方法、装置及网络节点 |
CN109922315A (zh) * | 2019-03-01 | 2019-06-21 | 西安电子科技大学 | 一种基于Spark与OpenCV的实时视频行为分析方法 |
-
2020
- 2020-03-30 CN CN202010235513.6A patent/CN111400405B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111400405A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400405B (zh) | 一种基于分布式的监控视频数据并行处理系统及方法 | |
Ali et al. | RES: Real-time video stream analytics using edge enhanced clouds | |
CN109922315A (zh) | 一种基于Spark与OpenCV的实时视频行为分析方法 | |
CN106777093B (zh) | 基于空间时序数据流应用的Skyline查询系统 | |
CN107391719A (zh) | 一种云环境中分布式流数据处理方法及系统 | |
Sun et al. | TIB-Net: Drone detection network with tiny iterative backbone | |
CN109710731A (zh) | 一种基于Flink的数据流多向处理系统 | |
CN109743356B (zh) | 工业互联网数据采集方法及装置、可读存储介质和终端 | |
CN111614769B (zh) | 一种深度学习技术的行为智能分析引擎系统及控制方法 | |
CN106534784A (zh) | 一种用于视频分析数据结果集的采集分析存储统计系统 | |
CN109740573A (zh) | 视频分析方法、装置、设备及服务器 | |
CN111510680A (zh) | 一种图像数据的处理方法、系统及存储介质 | |
CN107566785A (zh) | 一种面向大数据的视频监控系统及方法 | |
CN114640669A (zh) | 边缘计算方法及装置 | |
CN115391429A (zh) | 基于大数据云计算的时序数据处理方法及装置 | |
de Oliveira et al. | An energy-aware data cleaning workflow for real-time stream processing in the internet of things | |
CN113282568A (zh) | 一种iot大数据实时时序流分析应用技术方法 | |
Shuai et al. | Memtv: a research on multi-level edge computing model for traffic video processing | |
CN106504169A (zh) | 一种基于流处理的内涝数据处理系统及其处理方法 | |
CN112269778A (zh) | 一种设备故障诊断方法 | |
Nirmalan et al. | An intelligent surveillance video analytics framework using NACT-Hadoop/MapReduce on cloud services | |
Cao | Dynamic Allocation Method of Economic Information Integrated Data Based on Deep Learning Algorithm | |
CN110738692A (zh) | 一种基于spark集群的智能视频识别方法 | |
CN115633090B (zh) | 一种基于eSIM卡和5G网络的多源数据链接方法 | |
CN108363778B (zh) | 一种基于信息中心网络的大数据收集分析系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |