一种多线程并行计算的交通视频目标检测方法及装置与流程

文档序号:18554356发布日期:2019-08-30 22:23阅读:337来源:国知局
一种多线程并行计算的交通视频目标检测方法及装置与流程

本发明涉及智能交通技术领域,尤其涉及的是一种多线程并行计算的交通视频目标检测方法及装置。



背景技术:

智能交通领域中,对视频车辆目标和行人目标的识别与检测,是实现智能化交通的重要基石和基础性研究。智能交通2.0版,要求交管部门发挥重要的主导作用,有预见性地采取措施,对流量、拥堵和重大事件进行预测,采取相应的措施和预案。通过对动态数据(比如:流量数据)的实时分析,在满足人们出行需求的前提下,提高人们的出行效率和交通系统的运行成本,实现人、车、路协同服务。然而要实现对流量的管控,视频中的车辆和行人的检测是统计流量的第一步,流量管控的有效性和实时性在一定程度上取决于视频目标检测的准确性和时效性。

目标检测(objectdetection)是计算机视觉领域的基本任务之一,它通常包括两个基本任务:识别和定位。但是,传统目标检测的方法是在给定的图像上选择一些候选的区域,然后对这些区域提取特征,最后使用训练的分类器进行分类。由于穷举法候选区时间复杂度太高,人工特征选择器受到目标形态、光照和背景干扰等因素的影响,导致算法鲁棒性差。而近些年随着深度学习技术的出现和成熟,目标检测算法从基于人工设计特征的传统算法转向了基于深度卷积神经网络(cnn)的检测技术,但是在训练数据时,为了保证神经网络特征图和全连接层的尺寸一致,会将训练数据缩放至统一的尺寸大小,致原始图像待检测的目标同比例缩放,影响最终目标检测的精度。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种多线程并行计算的交通视频目标检测方法及装置,旨在解决现有技术中对视频中的车辆和行人等目标的检测方法鲁棒性差,精度低的问题。

本发明解决技术问题所采用的技术方案如下:

一种多线程并行计算的交通视频目标检测方法,其中,所述方法包括:

提取原始交通视频文件,对所述原始交通视频文件中的视频图像分割成多个图像块;

调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果;

获取并统计所有图像块中的目标定位结果,并将所述目标定位结果作为中间输入,纳入所述视频图像的检测结果;

调用非极大值抑制算法从所述检测结果中筛选出检测得分最高的目标,对所述目标进行标记并合并图像块,输出最终图像。

优选地,所述提取原始交通视频文件,对所述原始交通视频文件中的视频图像分割成多个图像块,包括:

从安装在道路上的视频监控设备中提取原始交通视频文件,利用matplotlib库对所述原始交通视频文件进行读取;

将所述原始交通视频文件中的视频图像分割成多个图像块,并对每个图像块进行标记。

优选地,所述将所述原始交通视频文件中的视频图像分割成多个图像块,包括:

获取所述原始交通视频文件中的视频图像的尺寸,并根据视频图像的尺寸与深度学习目标检测算法所要求的输入图像的尺寸的比例关系,将所述视频图像分割成多个图像块。

优选地,所述深度学习目标检测算法包括:ssd算法、r-cnn算法、fasterr-cnn算法、r-fcn算法和yolo算法。

优选地,所述调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果,包括:

创建线程池,并采用多线程并行的方式对图像块中的目标进行检测;

卷积神经网络将图像块与卷积层结合,生成特征图;

通过所述特征图将图像块中的目标提取并进行识别,按照概率判定所述目标的识别得分;

获取所述图像块中识别出的若干目标定位框;按照交并比确定所述目标定位框的检测得分,输出目标定位结果,所述目标定位结果中包含所有图像块的检测得分。

优选地,所述按照概率判断图像块中识别出的目标定位框的得分,包括:

当同一个目标被相邻的图像块分割时,则该目标就得到两个检测得分。

优选地,所述创建线程池,包括:

将线程分为主线程和子线程,根据系统cpu的数量和图像块的数量创建子线程的个数,并设定子线程的等待时间;

主线程根据子线程的数量和子线程的状态,将分配队列中的任务分给空闲的子线程。

一种多线程并行计算的交通视频目标检测装置,其中,所述装置包括:

图像分割模块,用于提取原始交通视频文件,对所述原始交通视频文件中的视频图像分割成多个图像块;

目标检测模块,用于调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果;

目标统计模块,用于获取并统计所有图像块中的目标定位结果,并将所述目标定位结果作为中间输入,纳入所述视频图像的检测结果;

目标筛选模块,用于调用非极大值抑制算法从所述检测结果中筛选出检测得分最高的目标,对所述目标进行标记并合并图像块,输出最终图像。

优选地,所述图像分割模块包括:

文件读取子模块,用于从安装在道路上的视频监控设备中提取原始交通视频文件,利用matplotlib库对所述原始交通视频文件进行读取;

图像分割子模块,用于将所述原始交通视频文件中的视频图像分割成多个图像块,并对每个图像块进行标记。

优选地,所述目标检测模块包括:

多线程检测模块,用于创建线程池,并采用多线程并行的方式对图像块中的目标进行检测;

特征图生成子模块,用于卷积神经网络将图像块与卷积层结合,生成特征图;

识别定位子模块,用于通过所述特征图将图像块中的目标提取并进行识别,按照概率判定所述目标的识别得分;

得分判定子模块,用于获取所述图像块中识别出的若干目标定位框;按照交并比确定所述目标定位框的检测得分,输出目标定位结果,所述目标定位结果中包含所有图像块的检测得分。

本发明的有益效果:本发明由于对视频图像进行分块,并采用多线程和深度学习目标检测算法来检测视频图像中的目标,将并行计算的结果作为中间输入纳入原始图像的检测结果中,最终根据非极大值抑制算法筛选出得分最高的检测目标,提高了视频目标检测的精度和效率。

附图说明

图1是本发明提供的多线程并行计算的交通视频目标检测方法的较佳实施例的流程图。

图2是本发明提供的多线程并行计算的交通视频目标检测方法中视频图像分块原理示意图。

图3是本发明提供的多线程并行计算的交通视频目标检测装置的功能原理图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供的一种多线程并行计算的交通视频目标检测方法,可以应用于终端中。其中,终端可以但不限于是各种个人计算机、笔记本电脑、手机、平板电脑、车载电脑等。本发明的终端采用多核处理器。其中,终端的处理器可以为中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)、视频处理单元(videoprocessingunit,vpu)等中的至少一种。

为了解决现有技术中对视频中的车辆和行人等目标的检测鲁棒性差,精度低的问题,实施例一提供多线程并行计算的交通视频目标检测方法,具体如图1中所示,包括如下步骤:

步骤s100、提取原始交通视频文件,对所述原始交通视频文件中的视频图像分割成多个图像块;

步骤s200、调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果;

步骤s300、获取并统计所有图像块中的目标定位结果,并将所述目标定位结果作为中间输入,纳入所述视频图像的检测结果;

步骤s400、调用非极大值抑制算法从所述检测结果中筛选出检测得分最高的目标,对所述目标进行标记并合并图像块,输出最终图像。

为了实现交通领域的流量管控,视频中的车辆和行人的检测是统计流量的第一步,流量管控的有效性和实时性在一定程度上取决于视频目标检测的准确性和时效性。目标检测(objectdetection)是计算机视觉领域的基本任务之一,它通常包括两个基本任务:识别和定位。在视频目标检测任务中,目标(待检测)的分辨率、目标间的距离、场景的复杂性等因素,都会使得目标检测任务变得困难。如何实现大场景、复杂场景下的不同尺寸、不同角度目标的识别与定位,有着一定的理论价值和实践意义。本实施例提供一种多线程并行计算的交通视频目标检测方法,该方法可以解决现有的视频目标检测方法中因缩放图像是造成的精度损失以及计算效率低等问题,提高了视频目标检测的精度与效率。

具体地,本实施例中首先从安装在道路上的视频监控设备(如摄像头)中提取原始交通视频文件。而随着现在的监控设备上的传感器性能和摄像头分辨率的提升,交通视频的图像分辨率通常为720p、1080p、2k和4k。以1080p为例,视频图像的分辨率为1920*1080。当提取到该分辨率的视频图像后,利用matplotlib库对所述原始交通视频文件进行读取。本实施例中的matplotlib是一个python(python是一种计算机程序设计语言)的2d绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过使用matplotlib库可以实现对1080p分辨率的原始交通视频文件进行提取,进而将原始交通视频文件中的视频图像分割成多个图像块,并对每个图像块进行标记。例如将视频图像(1920*1080)分割成18个320*360大小的图像块,并标记为block1~block18。由于在视频图像中存在的目标包括:公交车、汽车、自行车以及行人,为了实现对视频图像中的目标进行精准识别与定位,本实施例中将视频图像分割成多个图像块,通过对每个图像块中的目标进行识别,可以缩小每次识别的范围,避免出现目标识别不准确的问题,提高识别精度。具体如图2中所示,图2中的右边图像就是将视频图像分割成四个图像块,每个图像块中都存在不同的特征。

优选地,在将视频图像分割成多个图像块时,本实施例首先获取原始交通视频文件中的视频图像的尺寸,并根据视频图像的尺寸以及在后续步骤中深度学习目标检测算法所要求的输入图像的尺寸的比例关系,将所述视频图像分割成多个图像块。如,根据视频原始图像尺寸(h*w)与目标检测算法要求的输入图像尺寸(h*w)的比例关系,将图像分割为m*n子块,其中,m=int(h/h),n=int(w/w)。本实施例中的深度学习目标检测算法包括:ssd(singleshotmultiboxdetector)算法、r-cnn(region-cnn)算法、fasterr-cnn(towardsreal-timeobjectdetectionwithregionproposalnetworks)算法、r-fcn(objectdetectionviaregion-basedfullyconvolutionalnetworks)算法和yolo(real-timeobjectdetection)算法。本实施例中所采用的是ssd300算法,ssd300算法在进行视频目标检测时,输入图像会被统一调整至与训练数据保持一致的尺寸(如300*300)。

进一步地,本实施例中采用多线程并行计算以及深度学习目标检测算法来检测所有图像块中的目标。具体地,首先创建线程池,本实施例中将线程分为主线程和子线程,子线程的个数是根据系统cpu(本实施例中cpu:inter(r)core(tm)i7-7700cpu@3.60ghz)的数量和图像块的数量创建的,并且还依此设定子线程的等待时间,放入队列中,然后对线程池任务进行管理。由于子线程不存在共享的参数和变量,各子线程不存在优先级和阻塞等待状态。并且,并行计算模式不需要在子线程中交叉验证,在一定程度上提升了检测的效率。在进行视频目标检测的过程中,卷积神经网络将输入图像与卷积结合,生成特征图(featuremap),如图2中左上的图形所示,浅层网络提取图像的低维特征(直线、曲线),深层网络提取高维特征(轮廓),最后将高维特征组合实现目标(公交车、自行车、汽车和人等)的整体识别。然后特征图将图像块中的目标的特征提取出来并进行识别,按照概率判定其识别得分,然后在特征图中生成一系列目标定位框(anchorboxes)该目标定位框中具有相应的特征,如图2中坐下角的图形所示,并按照交并比(iou,intersection-over-union)确定目标定位框的检测得分,如果队列为空,表明所有子线程完成。那么,结束主线程,并完成所有图像块的目标检测,输出目标定位结果,该目标定位结果包括有每个定位框的检测得分。

优选地,本实施例中特征图得分函数:x为分块图像,cj为第j类目标,n为分块的数量,si为目标属于某个类别的概率;

目标定位框损失函数:m为定位框的位置,m为候选定位框的个数,l和g分别为检测定位框和真实定位框,表示用l1范数来衡量检测与真实定位框之间的交并比。

目标的损失函数:a为权重系数。

检测得分函数:s=sfeature-αllocation,该目标的得分函数的值越大,则该目标被识别和检测的准确性越高。

优选地,当用一个目标被相邻的图像块分割时,在该目标就得到两个检测得分,例如图2中右侧的视频图像中的汽车被两个图像块分割了,因此该汽车在计算检测得分的时候就会得到两个得分。

进一步地,当所有的图像块中的目标定位结果后,对目标定位结果进行统计,将所有的目标定位结果作为中间输入,纳入原始的视频图像的检测结果中,也就是说,对于整体的视频图像的检测结果即为目标定位结果,然后调用非极大值抑制算法(nms,non-maximumsuppression)从所述检测结果中筛选出检测得分最高的目标,如果刷选阈值大于设定的iou比例,则抑制该结果,获得最高得分的目标,然后对所述目标进行标记并合并图像块,输出最终图像,输出的最终图像即对视频图像中的目标均识别及定位,实现目标的检测。

本实施例中通过多线程并行计算以及深度学习目标检测算法(ssd300)对所有图像块中的目标进行检测,将并行计算的结果作为中间输入纳入原始图像帧的检测结果中,最终根据非极大值抑制的方法刷选出符合整体得分的检测目标,提高了视频图像中目标检测的精度和效率。相对于传统的仅仅利用深度学习目标检测算法的技术,本实施例中所采用的多线程并行计算,可以明显提高目标的检测精度如表1所示:

表1

从表1中可以看出,采用多线程并行计算的方法对视频图像中的汽车、摩托车、自称车以及行人的检测出的数量更多,精度更为准确。

基于上述实施例,本发明还提供了一种多线程并行计算的交通视频目标检测装置,其原理框图可以如图3所示。该装置包括:图像分割模块310、目标检测模块320、目标统计模块330以及目标筛选模块340。

具体地,图像分割模块310,用于提取原始交通视频文件,对所述原始交通视频文件中的视频图像分割成多个图像块;

目标检测模块320,用于调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果;

目标统计模块330,用于获取并统计所有图像块中的目标定位结果,并将所述目标定位结果作为中间输入,纳入所述视频图像的检测结果;

目标筛选模块340,用于调用非极大值抑制算法从所述检测结果中筛选出检测得分最高的目标,对所述目标进行标记并合并图像块,输出最终图像。

优选地,本实施例中的所述图像分割模块310包括文件读取子模块以及图像分割子模块。文件读取子模块,用于从安装在道路上的视频监控设备中提取原始交通视频文件,利用matplotlib库对所述原始交通视频文件进行读取;图像分割子模块,用于将所述原始交通视频文件中的视频图像分割成多个图像块,并对每个图像块进行标记。

优选地,本实施例中的目标检测模块320包括:多线程检测模块、特征图生成子模块、识别定位子模块以及得分判定子模块。其中,多线程检测模块,用于创建线程池,并采用多线程并行的方式对图像块中的目标进行检测;特征图生成子模块,用于卷积神经网络将图像块与卷积层结合,生成特征图;识别定位子模块,用于通过所述特征图将图像块中的目标提取并进行识别,按照概率判定所述目标的得分;得分判定子模块,用于获取所述图像块中识别出的若干目标定位框;按照交并比确定所述目标定位框的检测得分。

本实施例中的装置由于对视频图像进行分块,并采用多线程和深度学习目标检测算法来检测视频图像中的目标,将并行计算的结果作为中间输入纳入原始图像的检测结果中,最终根据非极大值抑制算法筛选出得分最高的检测目标,提高了视频目标检测的精度和效率。

较佳地,本实施例中的装置可以为智能终端,该智能终端优选为pc电脑,且搭载ubuntu16.04.4lts的操作系统,cpu:inter(r)core(tm)i7-7700cpu@3.60ghz,cpu核数:8核,内存:16g以及系统类型为64位,该智能终端可使用gcc5.4.0,pycharm2018,python3.5,tensorflow1.6,opencv3.4等软件,可使用检测算法ssd300,通过该智能终端可实现上述实施例的方法步骤,实现对视频图像中的目标进行识别与定位。优选地,该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该智能终端,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时至少可以实现以下步骤:提取原始交通视频文件,对所述原始交通视频文件中的视频图像分割成多个图像块;

调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果;

获取并统计所有图像块中的目标定位结果,并将所述目标定位结果作为中间输入,纳入所述视频图像的检测结果;

调用非极大值抑制算法从所述检测结果中筛选出检测得分最高的目标,对所述目标进行标记并合并图像块,输出最终图像。

综上所述,本发明公开了一种多线程并行计算的交通视频目标检测方法及装置,所述方法包括:提取原始交通视频文件,对原始交通视频文件中的视频图像分割成多个图像块;调用多线程并行计算和深度学习目标检测算法检测所有图像块中的目标,输出目标定位结果;获取并统计所有图像块中的目标定位结果,并作为中间输入,纳入视频图像的检测结果;调用非极大值抑制算法从检测结果中筛选出检测得分最高的目标,对目标进行标记并合并图像块,输出最终图像。本发明提高了视频目标检测的精度和效率。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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