基于GPU的并行高清视频车辆检测方法转让专利

申请号 : CN201210134002.0

文献号 : CN102695040B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李健郑志彤彭敏刘海峰李翔黄溅华

申请人 : 中兴智能交通(无锡)有限公司

摘要 :

本发明涉及一种基于GPU的并行高清视频车辆检测方法,其包括如下步骤:a、将高清监控相机输出的原始视频流传输到显示卡显存内,显示卡内的GPU对原始视频流进行并行解码,以得到一帧灰度图像;b、GPU将每帧灰度图像分割成N×N个图像子块,并对每个图像子块并行提取SIFT特征;c、GPU对每个图像子块进行并行稀疏编码;d、并行计算得到每个图像子块对应的约束矩阵U;e、并行计算每个图像子块的特征向量zk;f、GPU将上述计算得到的特征向量zk进行并行线性分类判别,得到相应的判决结果fk;g、GPU将判决结果fk返回到CPU内,CPU根据判决结果fk控制高清监控相机的工作状态。本发明能满足高清视频监控实时性要求,适应范围广,安全可靠。

权利要求 :

1.一种基于GPU的并行高清视频车辆检测方法,其特征是,所述并行高清视频车辆检测方法包括如下步骤:(a)、将高清监控相机输出的原始视频流传输到显示卡显存内,所述显示卡内的GPU对原始视频流进行并行解码,以得到一帧灰度图像;

(b)、所述GPU将每帧灰度图像分割成N×N个图像子块,并对每个图像子块并行提取

2 2

SIFT特征,以得到N 个特征矩阵T1、T2、……、TN ;

2 2

(c)、所述GPU利用上述N 个特征矩阵T1、T2、……、TN,对每个图像子块进行并行稀疏2

编码,以得到对应的编码矩阵B1、B2、……、BN ;

(d)、所述GPU根据上述对应的特征矩阵及编码矩阵,并行计算得到每个图像子块对应的约束矩阵U;

(e)、GPU根据相应的约束矩阵U,并行计算每个图像子块的特征向量zk;

(f)、GPU将上述计算得到的特征向量zk进行并行线性分类判别,得到相应的判决结果fk;

(g)、GPU将判决结果fk返回到CPU内,CPU根据判决结果fk控制高清监控相机的工作状态。

2.根据权利要求1所述的基于GPU的并行高清视频车辆检测方法,其特征是:所述步骤(b)中,N为2的幂数。

3.根据权利要求1所述的基于GPU的并行高清视频车辆检测方法,其特征是:所述步骤(b)中,GPU将灰度图像分割成N×N个图像子块后,GPU对每个图像子块分配一个线程块,并在每个线程块内分配128或256个线程,以并行对所述图像子块进行SIFT特征提取。

4.根据权利要求1所述的基于GPU的并行高清视频车辆检测方法,其特征是:所述步骤(c)中,GPU根据提取的特征矩阵对图像子块进行并行稀疏编码方法为:其中,约束条件为 n为系数矩阵S的维数,T为图像子块对应的特征矩阵,B为基矩阵,S是系数矩阵,σ、β、c均为常数,φ(·)为稀疏函数,Sij表示系数矩阵S内第i行、第j列对应的元素。

5.根据权利要求1所述的基于GPU的并行高清视频车辆检测方法,其特征是:所述步骤(d)中,GPU根据特征矩阵及编码矩阵计算图像子块的约束矩阵方法为:其中,T为图像子块对应的特征矩阵,B为图像子块对应的编码矩阵,U为图像子块对应的约束矩阵。

6.根据权利要求1所述的基于GPU的并行高清视频车辆检测方法,其特征是:所述步骤(e)中,GPU计算图像子块的特征向量zk的方法为:其中,k表示图像子块在每帧灰度图像中对应的序号,M为图像子块约束矩阵U的列数,uij表示约束矩阵U内第i行、第j列对应的元素。

7.根据权利要求1所述的基于GPU的并行高清视频车辆检测方法,其特征是:GPU线性判决方法为:fk=wTzk+b;

其中,w表示分类判决向量,b为判决常数,fk表示分类判决结果。

8.根据权利要求7所述的基于GPU的并行高清视频车辆检测方法,其特征是:当分类判决结果fk大于0时,GPU判决第k个图像子块中包含车辆信息,CPU在预览画面相应位置做标示,并结合红灯信号等信息控制高清监控相机抓拍;当所有fk小于0时,判决原始视频流中未保护车辆信息,CPU使得高清监控相机不抓拍。

说明书 :

基于GPU的并行高清视频车辆检测方法

技术领域

[0001] 本发明涉及一种车辆检测方法,尤其是一种基于GPU(Graphic Processing Unit)的并行高清视频车辆检测方法,属于高清视频车辆检测的技术领域。

背景技术

[0002] 随着技术的发展,在现代智能交通系统中,基于监控视频的车辆检测识别方法已经成为了智能交通系统中车辆检测的主流手段和发展趋势。如何实时地完成高准确率的车辆检测是当今研究的热点和难点。
[0003] 目前,在模式识别领域,比较成熟的技术为SVM完成分类检测以及其各种改进算法。其中经我们研究发现基于稀疏编码和线性SVM分类器的算法,取得了很好的效果。
[0004] 该算法把待检测图像分割成N×N个图像子块,然后对每个图像子块像提取SIFT(Scale-invariant feature transform)特征,并对SIFT特征进行稀疏编码,计算图像样本的多尺度特征向量,并将该向量输入线性分类器,计算得出分类结果。
[0005] 以上提及的算法的计算速度比非线性SVM(support vector machine)有了显著的提高,对于高清视频监控,其计算速度还难以满足实时性的要求,并且其只是能判断视频中是否出现目标物,不能给出目标的位置信息。

发明内容

[0006] 本发明的目的是克服现有技术中存在的不足,提供一种基于GPU的并行高清视频车辆检测方法,其能满足高清视频监控实时性要求,适应范围广,安全可靠。
[0007] 按照本发明提供的技术方案,一种基于GPU的并行高清视频车辆检测方法,所述并行高清视频车辆检测方法包括如下步骤:
[0008] a、将高清监控相机输出的原始视频流传输到显示卡显存内,所述显示卡内的GPU对原始视频流进行并行解码,以得到一帧灰度图像;
[0009] b、所述GPU将每帧灰度图像分割成N×N个图像子块,并对每个图像子块并行提取2
SIFT特征,以得到N 个特征矩阵T1、T2、……、
[0010] c、所述GPU利用上述N2个特征矩阵T1、T2、……、 对每个图像子块进行并行稀疏编码,以得到对应的编码矩阵B1、B2、……、
[0011] d、所述GPU根据上述对应的特征矩阵及编码矩阵,并行计算得到每个图像子块对应的约束矩阵U;
[0012] e、GPU根据相应的约束矩阵U,并行计算每个图像子块的特征向量zk;
[0013] f、GPU将上述计算得到的特征向量zk进行并行线性分类判别,得到相应的判决结果fk;
[0014] g、GPU将判决结果fk返回到CPU内,CPU根据判决结果fk控制高清监控相机的工作状态。
[0015] 所述步骤b中,N为2的幂数。
[0016] 所述步骤b中,GPU将灰度图像分割成N×N个图像子块后,GPU对每个图像子块分配一个线程块,并在每个线程块内分配128或256个线程,以并行对所述图像子块进行SIFT特征提取。
[0017] 所述步骤c中,GPU根据提取的特征矩阵对图像子块进行并行稀疏编码方法为:
[0018]
[0019] 其中,约束条件为 n为系数矩阵S的维数,T为图像子块对应的特征矩阵,B为基矩阵,S是系数矩阵,σ、β、c均为常数,φ(·)为稀疏函数。
[0020] 所述步骤d中,GPU根据特征矩阵及编码矩阵计算图像子块的约束矩阵方法为:
[0021]
[0022] 其中,T为图像子块对应的特征矩阵,B为图像子块对应的编码矩阵,U为图像子块对应的约束矩阵。
[0023] 所述步骤e中,GPU计算图像子块的特征向量zk的方法为:
[0024] i=1,2,…,Q;Q=128或256;
[0025] 其中,k表示图像子块在每帧灰度图像中对应的序号,M为图像子块约束矩阵U的列数,uij表示约束矩阵U内第i行、第j列对应的元素。
[0026] GPU线性判决方法为:
[0027] fk=wTzk+b;
[0028] 其中,w表示分类判决向量,b为判决常数,fk表示分类判决结果。
[0029] 当分类判决结果fk大于0时,GPU判决第k个图像子块中包含车辆信息,CPU在预览画面相应位置做标示,并结合红灯信号等信息控制高清监控相机抓拍;当所有fk小于0时,判决原始视频流中未保护车辆信息,CPU使得高清监控相机不抓拍。
[0030] 本发明的优点:高清监控相机采集高清视频流后通过内存复制到显示卡显存内,通过显示卡上的GPU对高清原始视频流进行并行解码后转换成一帧帧灰度图像;并对每帧图像进行子块划分,对各个子块进行GPU并行SIFT特征提取、并行稀疏编码及特征归并和并行线性分类判别,结果返回CPU,CPU根据各个图像子块的判决结果在预览界面标示,控制相机是否抓拍;通过GPU的并行计算,能够合理分配GPU线程及存储资源,利用GPU超强的并行计算能力,达到对高清视频高性能实时检测,能满足25帧/秒以上检测实时性的要求,本算法经过扩展,同样适用于基于多核CPU的并行系统中,适应范围广,性能可靠。

附图说明

[0031] 图1为本发明高清监控相机与用于车辆检测计算机的连接示意图。
[0032] 图2为本发明的流程图。
[0033] 图3为本发明进行车辆检测的具体操作示意图。

具体实施方式

[0034] 下面结合具体附图和实施例对本发明作进一步说明。
[0035] 如图1所示:为了能够实现高清视频中对车辆检测,本发明包括高清监控相机,所述高清监控相机与数据处理设备向量,这里数据处理设备为计算机。所述计算机内包括CPU(Central Processing Unit)、内存、以Nvidia公司支持CUDA(Compute Unified Device Architecture)的GPU或者AMD公司支持Stream的GPU或者其他支持OpenCL的GPU为核心的显卡。高清监控相机能获取高清视频流,并将所述高清视频流传输到计算机内,本发明中为了能够满足高频视频中车辆检测的实时性,利用GPU高性能并行计算特性完成快速计算,返回相应结果供CPU发出相应信号控制高清监控相机抓拍。
[0036] 如图2和图3所示:本发明基于GPU对并行高清视频车辆检测方法包括如下步骤:
[0037] a、将高清监控相机输出的原始视频流传输到显示卡显存内,所述显示卡内的GPU对原始视频流进行并行解码,以得到一帧帧灰度图像;
[0038] 一般地,高清监控相机采集原始视频流后,会将原始视频流传输到计算机的内存内;当需要GPU进行高清视频数据处理时,通过主板上的PCIE总线将高清原始视频流复制到显示卡显存上;GPU将显示卡显存内的视频数据流使用并行解码算法进行快速解码,以将原始视频流转换为一帧帧灰度图像。现在已有能对视频数据流进行快速解码的GPU并行算法;如Nvidia公司已经提供基于CUDA的并行的H.264视频编解码的开源程序;因此通过GPU解码后转换灰度图像的做法不会增加高清视屏车辆检测的成本,且具有一定的适应性。
[0039] b、所述GPU将每帧灰度图像分割成N×N个图像子块,并对每个图像子块并行提取2
SIFT特征,以得到N 个特征矩阵T1、T2、……、
[0040] GPU将原始视频流转换成灰度图像后,并对灰度图像建立所需的坐标系,且按照坐标位置将灰度图像划分成N×N个图像子块;为了便于并行计算,N为2的幂数;如N取2,4,8,16等;将灰度图像划分图像子块的数量一般根据高清监控相机拍摄的场景大小及GPU的处理能力来设置。
[0041] GPU将灰度图像分割成N×N个图像子块后,GPU对每个图像子块分配一个线程块,并在每个线程块内分配128或256个线程,以并行对所述图像子块进行SIFT特征提取;因2 2
此当GPU将灰度图像划分N×N个图像子块后,总共有N×128或N×256个GPU线程投入并行计算。
[0042] c、所述GPU利用上述N2个特征矩阵T1、T2、……、 对每个图像子块进行并行稀疏编码,以得到对应的编码矩阵B1、B2、……、
[0043] GPU根据提取的特征矩阵对图像子块进行并行稀疏编码方法为:
[0044]
[0045] 其中,约束条件为 n为系数矩阵S的维数,T为图像子块对应的特征矩阵,B为基矩阵,S是系数矩阵,σ、β、c均为常数,φ(·)为稀疏函数。再进行优化时,固定基矩阵B时,可以对系数矩阵S进行优化;当固定系数矩阵S时,可以对基矩阵B进行优化,如此交替固定基矩阵B及系数矩阵S,并进行递归迭代计算(为保证数据足够收敛,迭代次数一般不小于20次),经过相应递归迭代计算后,最终得到图像子块的编码矩阵B1、B2、……、 此处,基矩阵B及系数矩阵S的初始设置以及后续优化方法为本技术领域人员所熟知,此处不再详述。
[0046] d、所述GPU根据上述对应的特征矩阵及编码矩阵,并行计算得到每个图像子块对应的约束矩阵U;
[0047] GPU根据特征矩阵及编码矩阵计算图像子块的约束矩阵方法为:
[0048]
[0049] 其中,T为图像子块对应的特征矩阵,B为图像子块对应的编码矩阵,U为图像子块对应的约束矩阵。
[0050] e、GPU根据相应的约束矩阵U,并行计算每个图像子块的特征向量zk;
[0051] GPU计算图像子块的特征向量zk的方法为:
[0052] i=1,2,…,Q;Q=128或256;
[0053] 其中,k表示图像子块在每帧灰度图像中对应的序号,M为图像子块约束矩阵U的列数,uij表示约束矩阵U内第i行、第j列对应的元素。
[0054] f、GPU将上述计算得到的特征向量zk进行并行线性分类判别,得到相应的判决结果fk;
[0055] 所述步骤f中,GPU对特征向量zk进行分类判决的方法为:
[0056] fk=wTzk+b;
[0057] 其中,w表示分类判决向量,b为判决常数,fk表示分类判决函数;wT表示分类判决向量w的转秩。所述分类判决向量w,判决常数b为在实验中用数万张车辆和路面背景等正负图片样本经过SIFT特征提取、稀疏编码,然后利用LBFGS(Limited memory variation of the Broyden-Fletcher-Goldfarb-Shanno,基于方向梯度的有限存储算法)方法训练所得,此处不再详述。
[0058] 当fk大于0时,说明在一帧灰度图像的第k个图像子块位置有车辆出现;当fk小于0时,则认为该区域内没有车辆。
[0059] 图3为GPU内各个图像子块并行运算的示意图。本图为了清晰起见,以4×4个图像子块为例,由图可见,从并行提取SIFT特征、稀疏编码到线性分类判决,各个子图独立运算,极大地避免了线程间的信息交互,提高了并行运算的效率。本图最顶层的绿色信息即表示经分类判决后,fk>0的图像子块;灰色区域即为fk<0的图像子块。
[0060] g、GPU将每个子图的分类判断结果fk返回CPU,CPU控制高清监控相机抓拍。
[0061] 所述步骤g中,如果返回CPU的结果中,有fk>0,则在需求在相应预览区域画面上进行标示,并根据红灯信号等条件决定是否控制相机进行抓拍。当所有fk小于0时,判决原始视频流中未包含车辆信息,CPU使得高清监控相机不抓拍。
[0062] 实施例
[0063] 路口A路边的工控机实时地读取该路口高清监控相机上拍摄的原始视频数据;工控机内的CPU控制该视频数据直接从相机端经内存复制到显卡显存上。GPU将显卡显存上的原始视频数据快速地并行解码,并转成一帧帧灰度图像。当GPU将视频数据流转换为一帧帧灰度图像后,GPU实时地计算每帧图像中是否有车;具体地:
[0064] 1)、把一帧灰度图像视为8×8个图像子块像,以下计算要求同一线程块内的线程对同一图像子块并行计算;
[0065] 2)、并行提取各个图像子块的SIFT特征,得到各个图像子块的特征矩阵T1,T2,......,T64。
[0066] 3)、将特征矩阵T1,T2,......,T64并行稀疏编码,得各个图像子块编码矩阵B1,B2,......,B64。
[0067] 4)、并行线性分类判决,得到每个图像子块对应的fk。
[0068] 5)、CPU操控相机,如果GPU返回的各个图像子块对应的fk有大于0的,CPU根据红灯信号等综合信息发出抓拍指令。
[0069] 本发明高清监控相机采集高清视频流后通过内存复制到显示卡显存内,通过显示卡GPU对高清原始视频流进行解码后转换成灰度图像;并通过GPU进行并行SIFT特征提取、并行稀疏编码及并行线性分类判决,直至将判决结果反馈给CPU,使其进一步控制高清监控相机完成抓拍等操作;通过GPU的并行计算,能够合理分配GPU线程及存储资源,利用GPU超强的并行计算能力,达到对高清视频高性能实时检测,能满足25帧/秒以上检测实时性的要求,也可以扩展后适应于多核CPU的并行系统中,适应范围广,安全可靠。