基于分布场理论的行人检测算法研究*
2017-05-12薛露刘博翰
薛露 刘博翰
(1.广东省科技基础条件平台中心 2.华南理工大学电子与信息学院)
基于分布场理论的行人检测算法研究*
薛露1刘博翰2
(1.广东省科技基础条件平台中心 2.华南理工大学电子与信息学院)
研究一种基于分布场理论的行人检测算法,首先获取深度图像;其次混合高斯背景建模并初步提取运动行人前景;然后从前景中提取分布场后计算最小矩形包络;最后提取行人。结合OpenCV现有的GPU库对程序进行CUDA并行加速,并分别在PC平台和嵌入式平台NVIDIA Jetson TK1上实现。实验结果表明:经过CUDA并行化后,程序在PC平台和NVIDIA Jetson TK1平台上都获得了显著加速效果。
行人检测;分布场;CUDA
0 引言
目前,视觉目标检测与跟踪是计算机视觉领域研究热点之一,可应用于突发事件的物体跟踪、视频预警监控、人流跟踪等社会安全和应急管理领域。有效提高目标的检测速度是目标检测效果的关键。行人检测作为目标检测的一个重要课题,具有算法复杂、计算量大等特点。随着图形处理器(graphic processing unit,GPU)的快速发展,基于GPU的目标检测系统通过并行计算能够极大提升计算速度。NVIDIA Jetson TK1是嵌入式GPU微型电脑,使用编程语言统一计算设备架构(compute unified device architecture,CUDA)进行驱动[1]。为达到实时检测的要求,将GPU用于行人检测是一种提升检测速度的可行方案。本文研究一种基于分布场理论的行人检测算法,并分别在PC平台和NVIDIA Jetson TK1嵌入式开发平台实现算法的CUDA并行加速,通过实验数据分析,验证经过CUDA并行化后,程序在不同平台的加速效果,为目标检测提供技术支持。
1 行人检测算法原理
行人检测算法基于分布场理论实现。分布场作为一种表示图像的方法,其本质上是一个概率分布的数组[2],每个像素都是一个“场”。分布定义了一个像素取每一个特征值的概率。如果特征空间是灰度范围内的强度,那么每个像素都是一个取值从0~255的概率分布。一个分布场代表一个(2+N)维的矩阵d,其前2维代表图像的宽度和高度,另外的N维代表所选择的特征空间。将一个图像分解成分布场的结果是在每个像素点位置上的一个克罗内克函数。由此可知,分布场表示图像的原始信息,同时还将图像扩展到高维空间。
行人检测算法通过深度摄像头获取深度图像进行检测,并将检测结果反映到对应的彩色图像上。首先,对获取的深度图进行腐蚀膨胀等预处理操作;其次,计算其分布场;然后,通过轮廓提取、计算矩形包络等一系列图像处理;最后,得到检测结果。从数据格式来看,深度图像属于灰度图像,其灰度值(0~255)反映了物体的深度信息,即与摄像头距离的远近。灰度值越高,物体离摄像头距离越近。程序从深度摄像头获取的深度图像大小为320×240像素。为缩减数据规模,以8个灰度值为一层,那么一帧深度图像计算得到的分布场规模为320×240×32像素。大规模矩阵运算通过CUDA并行加速,可提升检测速度。行人检测加速算法流程如图1所示。
图1 行人检测加速算法流程
2 行人检测算法建模过程
行人检测加速算法采用开源计算机视觉库(open source computer vision library,OpenCV)实现图像处理与计算。为进一步利用GPU性能对程序进行加速,大部分OpenCV函数调用对应的GPU版本。分布场的计算通过编写的CUDA kernel函数实现。OpenCV使用的图像容器GpuMat可与kernel函数无缝对接。行人检测加速算法计算过程:
1) 获取图像
采用华硕ASUS XtionPROLive深度摄像头获取深度图像与彩色图像。在算法中通过调用OpenNI库中VideoFrameRef类的成员函数readFrame(),从设备获取一帧深度图像与一帧彩色图像,并转换成OpenCV的数据格式Mat。其中深度图像的数据深度为CV_16UC1,彩色图像的数据深度为CV_8UC3。深度图像需进行归一化处理,加强深度效果,彩色图像需进一步将色彩空间转换为BGR。获取图像流程如图2所示。
图2 获取图像流程
2) 图像预处理
对得到的深度图像进行预处理,初步提取行人。为调用GPU库进行计算,首先创建GpuMat并将深度图像上传到显存中,并调用GPU库中的混合高斯背景建模MOG_GPU提取前景;然后对提取的前景图像进行腐蚀膨胀处理,将图像中的噪点滤除;处理后的图像作为掩膜与原始深度图像按位相与,即可从深度图像中初步提取行人。预处理流程如图3所示。
图3 预处理流程
3) 计算分布场
程序中计算的分布场是320×240×32的三维矩阵。为便于访问显存,将其组织为32个320×240的二维矩阵并以8×4的形式合并存储,如图4所示。
图4 分布场在显存中的存储形式
考虑硬件利用率问题,以16×16的形式组织每一个线程块[3],整个线程网格的线程总数对应像素总数为320×240=76800,网格中一共有300个线程块。用于计算分布场的CUDA核函数的线程网格如图5所示。
图5 CUDA核函数调用的线程网格结构
4) 分布场后处理
从显存下载计算后的分布场,并对所有32层分布场的每一层都作同样处理。以第layer层为例,首先从内存中提取出第layer层分布场数据;然后调用findContours函数对分布场提取轮廓;再使用boundingRect函数计算其最小矩形包络[4],预设面积阈值minarea和宽高比阈值rectrate,用以判断矩形包络是否符合要求;最后使用groupRectangle函数对所有32层的计算结果进行矩形窗口合并,得到这一帧图像的检测结果。后处理流程如图6所示。
3 实验结果分析
为了验证CUDA对行人检测程序的加速效果,在PC和NVIDIA Jetson TK1开发平台上分别运行基于分布场理论的行人检测加速算法的串行版本程序(即未经CUDA加速的程序)和CUDA并行化的程序。PC平台和NVIDIA Jetson TK1平台统一使用华硕ASUS XtionPROLive作为深度摄像头采集彩色图像与深度图像。PC平台硬件参数如表1所示。NVIDIA
Jetson TK1的硬件参数如表2所示。
图6 后处理流程
表1 PC平台硬件参数
表2 NVIDIA Jetson TK1硬件参数
串行版本的程序和CUDA并行加速的程序在PC平台和Jetson TK1平台分别测试10次,记录每次测试的平均每帧图像处理时间(单位ms)。并计算PC平台与Jetson TK1平台的加速比S——即串行版本程序与CUDA并行加速程序的运行时间之比值。实验结果如表3、算法性能对比如图7所示。
图7 算法性能对比
表3 实验结果
从表3和图7可知,PC平台上的CUDA加速效果明显,加速比为1.8140,即PC平台上CUDA加速使算法的检测速度提高了81.40%。同样,在NVIDIA Jetson TK1平台上也获得较好的加速效果,加速比为1.4384。由图7可以看到,经过CUDA加速后的行人检测程序,在2个平台上的运行速度基本一致。另外值得注意的是,同样是串行版本的程序,在NVIDIA Jetson TK1平台的检测时间比在PC上快20.26%,这是因为在NVIDIA Jetson TK1平台上使用的OpenCV版本是NVIDIA提供的Tegra专用版,针对Jetson平台做了专门的优化和加速,因此可以获得相比于PC平台更快的处理速度。这也体现了使用NVIDIA Jetson TK1作为开发平台的优势之一。
检测程序运行的效果如图8所示。检测程序从背景中分离出运动的行人以黑框标识为检测结果。
图8 行人检测效果
4 结论
由实验结果可知,行人检测算法经过CUDA并行化后,在PC平台和NVIDIA Jetson TK1平台上都获得了较为显著的加速效果。Jetson TK1平台相比于PC平台具有低功耗、可便携的优势,同时NVIDA官方提供了专门针对Jetson平台优化的OpenCV库及CUDA版本,能够使程序性能获得很好的提升。因此在该平台上进行计算机视觉相关的开发具有长远的应用前景。未来对复杂背景下的检测精确度、进一步对程序并行化等进行深入研究。
[1] Wixson L. Detecting salient motion by accumulating directionally-consistent flow[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(8): 774-780.
[2] Sevilla-Lara L, Learned-Miller E. Distribution fields for tracking[C]. IEEE Press, 2012: 1910-1917.
[3] Nicholas Wilt. CUDA专家手册:GPU编程权威指南[M].苏统华,马培军,刘曙,等,译.北京:机械工业出版社, 2014: 148-165.
[4] Gary Bradski, Adrian Kaebler. 学习OpenCV [M].北京:清华大学出版社,2009: 38-48.
The Reasearch of Pedestrian Detection Algorithm Based on Distribution Field Theory
Xue Lu1Liu Bohan2
(1. Guangdong Science and Technology Infrastucture Center 2. South China University of Technology Institute of Electronics and Information)
This paper introduces a pedestrian detection algorithm based on distribution field theory. The algorithm firstly gains depth image from depth camera,extracts foreground and calculate its distribution field,finally extract the contour and calculate the minimum rectangle envelope to achieve pedestrian detection results. According to the high parallelism of the algorithm, the program is accelerated by CUDA as well as the GPU library of OpenCV and implemented on PC as well as NVIDIA Jetson TK1 platform. The experiment shows that this method is able to detect pedestrian from video sequence well, and the program speeds up significantly after CUDA acceleration on both PC and NVIDIA Jetson TK1 platform.
Pedestrian Detection; Distribution Field; CUDA
薛露,女,1987年生,硕士研究生,工程师,主要研究方向:算法研究、应急系统等。E-mail:1057845749@qq.com
广东省科技基础条件平台中心,广东省科技计划项目-广东省突发事件应急信息技术研究中心技术升级,项目编号2014A020219001。