APP下载

基于GPU 的并行化运动目标检测方法的研究

2016-12-05吴翔翔范远超叶恩光

电子设计工程 2016年22期
关键词:线程直方图梯度

吴翔翔,范远超,叶恩光,刘 镇

(江苏科技大学 计算机科学与工程学院,江苏 镇江212003)

基于GPU 的并行化运动目标检测方法的研究

吴翔翔,范远超,叶恩光,刘 镇

(江苏科技大学 计算机科学与工程学院,江苏 镇江212003)

在智能视频监控领域中,运动目标检测已经成为主要研究课题之一,针对传统的方向梯度直方图(HOG)算法并行化程度低等问题,采用了基于嵌入式GPU的并行化改进的运动目标检测方法,通过大数据量样本图片和实时采集视频进行检测验证,在GPU并行化模式下得到的处理速度都比CPU模式下处理速度高3倍以上,从而验证了经并行化优化的HOG算法检测速度明显提高,使系统整体的运行效率得到显著提升。

运动目标检测;嵌入式GPU;并行化;HOG

随着机器视觉和人工智能的发展,运动目标检测方法成为计算机视觉技术和图像处理的主要研究课题之一。十多年来,基于图像分割的图像数据处理产生了多种算法,包括阈值分割、统计检验和检测滤波器3大类,其主要缺点有:噪声对分割效果影响巨大;运算复杂且处理速度慢;算法不灵活,只能处理单一图像且阈值依赖于具体图像。通过对算法的不断优化,传统算法逐渐被基于几何曲线、曲面演化的运动目标检测算法所取代,其主要的优化在于将检测问题转化为能量泛函的建立和优化,并使用偏微分方程从视频或图像中分割出预期目标。

目前运动目标检测技术还处于发展完善阶段,如方向梯度直方图(HOG)算法,效果良好,但是性能相对较低,无法满足实时性检测的要求,则.性能成为了方向梯度直方图(HOG)算法的一个瓶颈。该研究内容就是针对HOG算法检测效果较好、但时间复杂度髙的特点,基于CUDA平台架构,调用GPU并行计算资源,对传统的HOG检测算法进行了并行化改进,以达到算法的实时化、实用化的目的。

1 运动目标检测方法

1.1OpenCV图像开发平台介绍

OpenCV是一个开源的跨平台计算机视觉库,可以在Windows、Linux和Mac OS等多种系统上运行。目前OpenCV中又添加了GPU功能模块,该模块可以调用GPU硬件资源来对OpenCV库中的传统算法进行并行化改进,从而提高系统性能。

OpenCV可以实现的主要功能:1)对图像视频文件的输入、输出处理。2)对图像等多种类型数据作为对象进行操作,如获取、分配及释放等操作。3)包含大量线性代数操作及算法操作程序。4)分析各种结构。如霍夫变换,多距离计算等。5)分析运动物体,包括目标跟踪和运动分割。

1.2基于方向梯度直方图的运动目标检测算法

在计算机视觉和图像处理中,一般采用方向梯度直方图(Histogram of Oriented Gradient,HOG)来描述物体检测的特征,它主要利用统计图像局部区域的方向梯度直方图和计算来提取图片的特征。在图像识别中,Hog特征结合SVM分类器的算法已经成为一种主流,并被普遍应用在行人检测中。流程图如图1所示。

HOG算法的主要思想是对于给出的一幅图像通过局部目标的表象和形状能够被梯度和边缘的方向密度很好的表述。具体的实现方法首先是将图像分割成小的连通区域,这些连通区域也被称之为细胞单元,然后采集细胞单元各像素点的梯度或边缘的方向直方图,最后把这些直方图通过一定规则组合起来,形成一个特征描述器。HOG算法的具体过程如下:

图1 HOG+SVM检测算法的基本流程图

1)标准化gamma空间和颜色空间

对于采集到的图片,首先需要将整个图像进行规范化,目的是减少光照因素的影响,在图像的纹理强度中,由于局部的表层曝光贡献的比重相对较大,所以通过标准化gamma空间和颜色空间能够有效地减少图像局部的阴影和光照变化。

2)计算图像梯度

计算图像的梯度主要是计算图像横坐标和纵坐标方向的梯度,并根据图像横坐标和纵坐标方向的梯度计算每个像素位置的梯度方向值;同时进行求导操作不仅能够捕获轮廓、人影和一些纹理信息,还能进一步减弱光照等条件的影响。

对于采集到的一幅图像,设图像中某点处的灰度值为H (x,y),Gx(x,y),Gy(x,y)分别表示样本图像中像素点(x,y)处的水平方向梯度和垂直方向梯度。

水平方向梯度:

垂直方向梯度:

像素点(x,y)处梯度大小的定义为:

像素点(x,y)处梯度方向的定义为:

根据上面的计算可以得到除了图像最边缘的一圈像素之外其余的所有像素的二维梯度值。

3)构建方向梯度直方图

该操作的目的主要是为局部图像区域提供一个编码,同时能够维持对图像中人体对象的姿势和外观的弱敏感性。该步骤将图像分成若干个“细胞单元cell”,每个cell有n*n个像素,例如:采用9个bin的直方图进行统计n*n个像素的梯度信息,也就意味着要将cell的梯度方向360度按40度一块分成9个方向块。

4)像素块内归一化梯度直方图

梯度强度由于局部光照的变化以及前景与背景对比度的变化,使得自己的变化非常不稳定。这就需要对梯度强度进行归一化,归一化能够压缩光照、阴影和边缘等。一般采用的方法是将若干个cell单元组合成大的、空间上连通的像素块区间(block),将一个block内所有cell的特征向量串联起来便得到该block的HOG特征,将归一化之后的块描述符(向量)就称之为HOG描述符。此处选取的归一化方法是L2-norm算法,公式为:

其中,ε为一个极小正值,以避免出现除0错误。

5)收集HOG特征

在上一步骤中有些区间是互有重叠的,所以每一个cell单元特征会以不同的结果多次出现在最后的特征向量中;该步骤是将检测窗口中所有重叠的块分别进行HOG特征的收集,并将收集到的HOG特征进行结合,形成最终的特征向量供分类使用。

6)线性SVM的预测过程

线性SVM预测实质上是在样本空间判断测试向量偏向于正样本集还是负样本集。首先遍历样本空间,利用线性乘法及累加求和计算待测向量与样本向量的相关值;根据得到的相关值比较正样本和负样本的相关度计算相关度偏差值;最后进行偏差值累加,并做出判断。

2 HOG算法的并行化改进

2.1CUDA平台介绍

GPU是一种图像处理方面的硬件,在并行计算方面有着极大的优势。基于嵌入式GPU的处理系统,其通用并行计算能力在提供强大的计算能力和存储器带宽的同时具有良好的可编程性和高度的灵活性,特别适用于音视频数据的处理。计算统一设备架构CUDA,通过使用GPU的处理能力来提升计算机的计算效率。目前CUDA已经逐渐取代了DSP等硬件处理设备的部分功能,它作为一种软硬件一体化的平台,已成为了音频与图像处理领域新的研究热点。

在并行计算中,通常将整个程序中的数据计算密集的部分交给GPU执行,并封装成一个函数,称之为核函数(Kernel)。GPU启用多个线程并行执行用户定义的核函数,计算完成后,将结果拷贝回系统内存,交由CPU进行收尾处理。一个核函数会开启一个线程块格(Grid),一个线程格中包含若干个线程块 (Block),一个线程块中又包含若干个线程(Thread),线程块中的线程共享相同的内存。

2.2并行化改进HOG算法流程

图2 HOG算法改进示意图

图2给出了基于GPU的HOG算法改进的示意图,视频处理过程中每次采集的数据为一帧图像,经过GPU并行化计算后,输出为该帧图像的HOG特征值。所以算法每次在处理一帧图像时,只需要将数据打包一次性送入到GPU设备端(Device)进行并行化处理,当提取完特征值以后,数据再一次性打包送回主机端(Host)。由此可见,在计算过程中,并没有在Device端和Host端之间进行密集的大规模数据交互。

2.2.1并行化梯度计算

首先,将一帧图片从主机端内存传送至设备端GPU的全局存储器中(global memory),以减少CPU和GPU之间的I/O通信。与经典HOG算法的梯度计算相比,该模块分别对灰度图像模式和彩色图像模式进行了并行化改进。在CUDA平台下,使用一个线程块计算一个像素块(block)的梯度值,一个线程块内包含512个线程(thread),每个thread完成一个像素的计算。所以,每执行一个线程块就可以最多完成512个像素的梯度计算。此外,将每个像素块(block)的计算过程数据存储在对应线程块的共享内存(share momery)中,以获得更快的访存速度。

在灰度图像处理模式下,从主机端把预处理后的灰度图像送入到设备端,然后每个线程需要计算它的一个梯度幅值和梯度方向。在彩色图像处理模式下,从主机端把预处理后的彩色图像送入到设备端,根据彩色图像有3个通道,每个线程则需要分别计算3个梯度幅值和梯度方向。

2.2.2并行化构建方向梯度直方图

该步骤使用了基于GPU共享内存原子操作和全局内存原子操作的CUDA核函数,将直方图的统计分为两个阶段。

在第一个阶段中,每个并行线程块将计算它所对应数据的梯度直方图。由于每个线程块在执行这个操作时都是相互独立的,因此可以在共享内存中计算这些直方图,这将避免每次将写入操作从芯片发送到DRAM。在第一个阶段中分配一个共享内存缓冲区并进行初始化,用来保存每个线程块的临时直方图。第二个阶段是将每个线程块的临时直方图的每个元素都相加到最终梯度直方图的相应元素上。

具体的并行化资源分配方法为:一个CUDA线程块相对应的就是HOG算法中一个cell单元,计算一个cell单元中的n*n个像素的梯度直方图,在每个线程块内使用共享内存(share momery)存储临时直方图的数据;一个CUDA线程格内包含m个线程块,可以并行计算m个像素块的梯度直方图。

2.2.3直方图归一化

在这个步骤里需要对每个block进行对比度归一化,根据每个CUDA的线程块相对应的是一个归一化的像素块。一个block内包括p个直方图,并且每个直方图里面有q个bin,则需要p*q个线程进行归一化,为了计算方便,一般每个归一化线程块中使用2n个线程。

计算block内所有bin值的平方和可以采用并行归约累加算法来实现,并行归约累加算法如图3所示。512个线程可以用并行的方式来执行归约运算。首先将每个线程中的两个值相加起来,根据每个线程都将两个值合并为一个值,也就意味着数量下降了一半,重复执行上述步骤,经过9次迭代可以将512个值规约为1个值。然后将这个值写入到block的临时空间里。

图3 并行归约累加算法

3 实验结果与性能分析

实验环境为嵌入式GPU移动终端,其处理芯片为Tegra K1,该芯片集成4个A15的处理器和一个ARM7的协处理器、2G内存以及192个开普勒架构的CUDA核。

实验主要从两个方面测试了基于嵌入式GPU的并行化运动目标检测算法的性能,一方面是对一定数量样本图片的处理时间进行测试,另一方面是利用视频输入设备进行现场视频采集,对系统的运行流畅程度即视频的帧率进行测试,以验证运动目标检测系统的实时性。

首先分别利用 100张、200张和 500张 768*576分辨率的样本图片进行测试,根据处理的时间来对比传统HOG算法和并行化HOG算法的性能。得到测试结果如表1所示:

表1 GPU和CPU模式下的样本图片集处理时间

从上表的数据可以看出,GPU模式下图片的处理时间明显低于CPU模式下的处理时间,说明利用GPU并行化加速的方法对传统HOG算法的改进起到了显著的作用;而且随着处理图片张数的增加,加速比也在不断提升,从而论证了GPU更加适合大数据量的处理。

利用视频输入设备进行视频采集测试结果如下图4所示,根据视频处理的帧率如表2所示,来对比传统HOG算法和并行化HOG算法的性能。

图4 4种模式下检测出的运动目标及帧率

表2 4种模式下的测试视频平均帧率

由上表可知,在CPU彩色模式下的帧率为4.1 FPS,而在GPU彩色模式下帧率能达到18.7 FPS,两者的比值达到了4.6:1;而在灰色的模式下两者的比值帧率的比值为3.2:1。经过分析对比,充分说明了使用GPU并行化HOG算法对系统的优化明显,系统运行帧率也得到提高,图像处理速度有显著提升。根据彩色模式下的加速比明显高于灰度模式下的加速比,也体现了GPU加速对于大数据量的数据处理优势更加明显。

4 结束语

这篇论文以视频图像处理的研究应用为背景,以嵌入式GPU超级计算机为平台,硬件以嵌入式系统为开发框架,软件以CUDA架构为核心算法开发平台,采用并行程序优化技术,完成基于嵌入式GPU的并行化运动目标检测方法的研究。对比了目前比较常用的几种检测算法,选取HOG为主要研究方法,并通过OpenCV调用GPU硬件资源实现对HOG算法的并行化处理,加快了运动目标检测的速度。分析对比了传统CPU模式的检测算法和经过GPU优化加速的检测算法,经过对多次实验的分析可知,使用GPU并行化算法对视频图像处理性能有明显提升。

[1]Navneet Dalai,Bill Triggs.Histograms of oriented gradients for human detection[C].cvpr 2005.

[2]HOU Bei-ping,ZHU Wen.Fast human detection using motion detection and histogram of oriented gradients[C]. Journal of Computers,2011,6(8).

[3]Yuuki Nakashima,Joo Kooi Tan,Seiji Ishikawa,etal.On detecting a human and its body direction from a video[J]. Artificial Life and Robotics,2010,15(4):455-458.

[4]张杰.基于GPU的图像特征并行计算方法[J].计算机科学. 2015(10):297-300.

[5]李彤.基于HOG特征提取的骑车人检测算法研究[J].电子技术与软件工程,2015(8):99-100.

[6]钱悦.图形处理器 CUDA编程模型的应用研究.计算机与数字工程[J].2008,36(12):177-180.

[7]张秀芝.基于目标运动信息和HOG特征行人检测的研究与实现[D].西安:西安电子科技大学,2013.

[8]VanBang L E.基于深度图像HOG特征的实时手势识别方法[J].上海:华东理工大学学报.2015(5):698-702.

[9]万缨,韩毅,卢汉清.运动目标检测算法的探讨[J].计算机仿真.2006(10):221-226.

[10]王镇西,王冬青,张惠娟.基于改进差分算法的运动目标检测与跟踪[J].工业控制计算机.2010(10):71-72.

[11]姚富士.基于场景的区域运动目标检测算法的研究[D].广西:广西大学,2013.

[12]史露,朱星宇,东方.基于DM642的混合高斯模型运动目标检测系统设计与实现[J].北京:中国科技信息,2012(6):84.

[13]李淑芝,吴晓燕,张翔.基于小波变换的运动目标检测视频水印算法[J].电视技术,2015(15):6-10.

[14]李棚,吴晓红,何小海.一种改进的PBAS运动目标检测算法[J].科学技术与工程,2015(27):48-53.

[15]刘威,赵文杰,李成.基于改进ORB特征匹配的运动小目标检测[J].光电工程,2015(10):13-20.

Based on parallel moving target detection of GPU researching the method

WU Xiang-xiang,FAN Yuan-chao,YE En-guang,LIU Zhen
(College of Computer Science and Technology,Jiangsu University of Science and Technology,Zhenjiang 212003,China)

In the field of intelligent video surveillance,moving object detection has become one of the main research topics.IN order to solve the problem that traditional histogram of oriented gradients(HOG)algorithm has low degree of parallelism,it use the embedded GPU parallelization to improve the method of the motion target detection.Through large amounts sample of pictures and live video for testing,it verified the resulting speed-up in GPU mode are three times more than in CPU mode.The experimental results show that the detection rate and the overall operating efficiency of the system significantly improves by the parallel and optimized HOG algorithm.

moving target detection;embedded GPU;parallelization;HOG

TN946.9

A

1674-6236(2016)22-0134-04

2015-11-25稿件编号:201511241

江苏省科技厅政策引导类计划(产学研合作)--前瞻性联合研究项目(BY2015065-05)

吴翔翔(1993—),女,福建晋江人。研究方向:通信工程。

猜你喜欢

线程直方图梯度
符合差分隐私的流数据统计直方图发布
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
基于C#线程实验探究
一种自适应Dai-Liao共轭梯度法
基于国产化环境的线程池模型研究与实现
一个具梯度项的p-Laplace 方程弱解的存在性
用直方图控制画面影调
中考频数分布直方图题型展示
浅谈linux多线程协作