计算机应用   2017, Vol. 37 Issue (1): 134-137,144  DOI: 10.11772/j.issn.1001-9081.2017.01.0134
0

引用本文 

赵永涛, 陈庆奎, 方玉玲, 赵德玉, 姬丽娜. 基于CUDA的行车安全预警方法[J]. 计算机应用, 2017, 37(1): 134-137,144.DOI: 10.11772/j.issn.1001-9081.2017.01.0134.
ZHAO Yongtao, CHEN Qingkui, FANG Yuling, ZHAO Deyu, JI Lina. Early warning method for driving safety based on CUDA[J]. JOURNAL OF COMPUTER APPLICATIONS, 2017, 37(1): 134-137,144. DOI: 10.11772/j.issn.1001-9081.2017.01.0134.

基金项目

国家自然科学基金资助项目(61572325,60970012);上海重点科技攻关项目(14511107902);上海市工程中心建设项目(GCZX14014);上海市一流学科建设项目(XTKX2012)。

通信作者

赵永涛(1991-),男,河北邯郸人,硕士研究生,主要研究方向:模式识别、计算机视觉、并行计. E-mail:zhaoyt_sh@163.com.

作者简介

陈庆奎(1966-),男,上海人,教授,博士生导师,博士,主要研究方向:网络计算、并行计算、物联网;
方玉玲(1990-),女,河南信阳人,博士研究生,主要研究方向:并行计算、低能耗优化;
赵德玉(1978-),男,山东临沂人,博士研究生,主要研究方向:大规模人群行为分析、视频隐私保护;
姬丽娜(1990-),女,河南信阳人,硕士研究生,主要研究方向:模式识别、并行计算

文章历史

收稿日期:2016-08-11
修回日期:2016-08-23
基于CUDA的行车安全预警方法
赵永涛1, 陈庆奎1,2, 方玉玲2, 赵德玉2, 姬丽娜1    
1. 上海理工大学 光电信息与计算机工程学院, 上海 200093 ;
2. 上海理工大学 管理学院, 上海 200093
摘要: 为了提高机动车驾驶时的安全性,提出了基于计算机视觉的行车安全中车距估计与超车检测方法。首先,使用车辆阴影检测方法确定车辆位置,根据阴影位置和视觉中心点的距离建立车距估计函数;其次,对超车情况使用背景光流建模的方法建立光流估计方程,通过估计光流将行驶中的正常物体与非正常物体分开,从而辨识驾驶途中的超车现象。根据车距和超车情况的检测及时提醒驾驶员注意行车中可能存在的安全隐患。实验结果表明该方法可以较为准确地估计车距、检测超车情况。在统一设备架构(CUDA)下使用图形处理器(GPU) NVIDIA GeForce GTX680显卡对算法进行加速,可以达到48.9ms/帧的处理速率,基本满足了实时处理的要求。
关键词: 行车安全    车距估计    超车检测    行车监控    安全预警    统一设备架构    
Early warning method for driving safety based on CUDA
ZHAO Yongtao1, CHEN Qingkui1,2, FANG Yuling2, ZHAO Deyu2, JI Lina1     
1. School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China ;
2. Business School, University of Shanghai for Science and Technology, Shanghai 200093, China
Abstract: To improve the safety of vehicles while driving, a computer vision-based inter-vehicle distance estimation and warning method was proposed in this paper. First, shadow detection method was applied to detect shadow of cars ahead, and inter-vehicle distance estimation function was built based on the distance between shadow and vision center of a frame. Then, estimation equations for non-threatened background optical flow was built, and by judging optical flow with the estimation equations, the abnormal objects could be separated from others, thus the overtaking event could be recognized. Based on the inter-vehicle distance and detection of overtaking event, the driver could be timely warned of the potential safety hazard. The experimental results prove that the proposed method can estimate inter-vehicle distance and detect overtaking event accurately. Finally, NVIDIA GeForce GTX680 GPU (Graphic Processing Unit) was used to accelerate the algorithm on Compute Unified Device Architecture (CUDA) platform and achieve the processing speed of 48.9 ms per frame which basically meets the real-time processing demand.
Key words: driving safety    inter-vehicle distance estimation    overtaking detection    vehicle surveillance    safety warning    Compute Unified Device Architecture (CUDA)    
0 引言

汽车辅助驾驶系统方面的研究近年来正在迅速推进[1],基于实时监控分析的行车安全变得越来越重要。配备有辅助驾驶系统的车辆正在逐步取代传统的车辆,辅助驾驶系统也对减少交通事故做出了很大贡献。辅助驾驶系统是指行车中以图像、声音等形式告知驾驶员车身周围的障碍物或危险因素的辅助系统,常见的有:基于传感技术的距离预警系统,其对车辆间横向和纵向距离过近的情况有很好的提示作用;基于图像识别的车道保持和前方车辆预警系统,也能够在一定程度上提供给驾驶员有用的行车信息;其他还有基于特定情况的辅助驾驶系统。近年来随着深度学习的发展,其在行车中行人和物体识别方面的应用也在迅速推进。

处于行车监控中的车辆通过检测车辆阴影、角点或边特征来进行检测与定位,可以较为准确地确定车辆相对于本车辆的位置。通过速度、车道信息的变化可以获得感兴趣的行车特征。

光流法[2]在运动目标提取、识别和跟踪方面有着重要应用,其在行车监控分析上的应用较少,主要因为光流法处理的多是静态背景下的动态目标,通过求解光流来提取运动目标,而车载监控画面的背景时刻都在变化,背景和移动物体都会产生光流,因此很难将之区分开来。另外一个方面是因为光流场的求解一般较为耗时,特别是精确光流的计算方法[3]用时更长,不适合应用于实时处理系统。

本文将行车监控的视频进行分析,首先提出视觉中心点的概念及选取方法,并根据车辆位置与视觉中心点的距离来估计车距;然后根据光流是基于视觉中心点向外发散的特征,提出一种背景光流估计方法,可以检测并定位出行车途中因超车产生的异常光流。

1 相关工作

关于辅助驾驶的研究方兴未艾,目前多数辅助驾驶技术专注于使用传感器来获取车身周围状况信息。近些年来随着计算机视觉的进一步发展,基于图像和视频的行车分析正在逐步兴起。McCall等[4]采用方向可控的边缘滤波器来识别和估计道路上的交通标线;徐翠[5]介绍了一种基于贝叶斯网络的驾驶员疲劳状态估计;Zhou等[6]采用激光雷达和线性支持向量机(Support Vector Machine,SVM)来进行交通标志的识别;孙晓艳等[7]利用车尾灯的高亮特征使用分割阈值的方法检测前方车辆,该方法也可用于预警前方急刹车等危险情况;Rezaei等[8]使用Haar-like特征来检测车辆,通过鸟瞰视图计算前方车辆距画面底部的位置,从而估计出两车车距;Han等[9]通过检测得到前方车辆宽度,使用宽度构造了一个距离测量模型,由于车辆种类的不同,该方法的区分度尚待提高;Fang等[10]根据真实的车辆距离数据构造了带参数的指数方程来估计车距,采用的参数和Rezaei等[8]所提出的相同;Kim等[11]则结合了车辆宽度和位置信息来估计车距,同样受车辆宽度影响,并且在道路不平的路况下计算失准概率较高,不具有通用性。在超车检测方面,Garcia等[12]使用LK(Lucas-Kanade)光流法检测与行车方向相反的光流,数量超过一定阈值则认为存在超车现象,但容易出现一车多框的现象。

最近,NVIDIA公司在CES2014上推出的DRIVE PX车载系统[13],该系统采用深度学习的方法对道路上的行人、车辆和交通标识等进行识别和预警。这些研究都为智能辅助驾驶做出了一定贡献,能够一定程度上重构路况,及时提醒驾驶员一些道路信息和警示安全信息。

2 算法描述

本文提出了视觉中心点的概念及选择方法,根据视觉中心点与车辆阴影的距离来估计车距;再根据行车光流方向与中心点发散方向的差异性区分出超车事件产生的异常前景光流。

2.1 视觉中心点的选择

行车监控中得到的视频流没有固定的背景,但在正常行车情况下,其产生的光流并非杂乱无规律,而是以监控画面的某一点为中心向四周发散的,因而认为该点为视觉中心点。

图 1为采用箭头方式表示光流矢量。同几何中心点不同,监控内所有的正常光流理论上均以视觉中心点为中心向外发散。

图 1 行车光流 Figure 1 Driving optical flow

1) 行值的选择。

该点所在像素行的所有像素的光流一般是水平的,因此本文提出一种基于统计的方法。首先以行为单位计算该行所有像素中方向为水平的光流数量,该数量在行上大致满足高斯分布。

图 2为水平光流数量的分布情况,取期望值μ或最大值作为中心点所在的行值。

图 2 水平光流在图像纵向上的分布 Figure 2 Vertical distribution of horizontal optical flow

2) 列值的选择。设行值选择为R,列值C同样适用统计的方法来确定。假设图片是一个以左下角为原点的二维平面坐标系,其行数和列数代表了x轴和y轴,每一个像素点的光流可以看作是经过坐标系中该点的一条直线,通过坐标(x,y)可以确定直线方程。以列为单位统计所有直线中与直线y=R的交点在该列的数量,该数量大致满足高斯分布。

图 3为各列交点数量的分布情况,取期望值μ或最大值作为中心点所在列值,行值和列值确定一个中心点。为了使中心点的选择具有适应环境变化的能力,而且不会过度对环境变化敏感,使用高斯模型对中心点进行建模,使其具有抗突变、适应环境的能力。

图 3 交点水平分布 Figure 3 Horizontal distribution of intersection point
2.2 车距估计

在车距估计阶段,首先使用文献[10]中的车辆检测算法检测车辆尾部阴影以定位车辆,然后分析文献[10]中的带参数指数估计函数并提出新的车距估计方法。

图 4为使用车辆阴影检测算法检测出的车辆底部特征,车辆底部可以反映出车辆的位置信息。在文献[10]中,距离估计的指数函数为:

图 4 阴影检测 Figure 4 Shadow detection
$D=\alpha \exp (\beta d)$

其中α,β为可调整的参数,不同的监控场景下该参数也不同,d为阴影底部到视频帧底部的像素数(如图 5中d1′和d2′)。在监控摄像头角度发生变化时,原有的参数不能够自动调整,则距离的估计必然失准。

图 5 阴影距离改进 Figure 5 Improvement of shadow distance

图 6可知,车辆阴影距视觉中心点的距离d和车辆的实际位置之间存在如下关系:

$\left\{ \begin{align} & {{d}_{0}}/{{d}_{1}}=H/{{D}_{0}} \\ & d/{{d}_{1}}=H/D \\ \end{align} \right.$ (1)
图 6 车辆位置与图像成像 Figure 6 Vehicle position and corresponding image

由式(1) 可知D=d1H/d,即车距同d呈幂函数关系,在摄像头高度一定的情况下,D∝1/d。

因此可设实际车距函数为:D=α/d,本文在车载摄像头高度为115 cm、视频帧分辨率为1280×720的情况下人工进行测量,得到α的值为2.69×104。因为α=d1H,所以使用不同焦距的摄像头以及安装高度不同,该值也会有所变化。由于视觉中心点会随着光流的计算改变,因此使用本文所提出的中心点到阴影底部的距离具有更好的适应能力。

2.3 超车预警

针对超车情况进行分析,提出基于行车监控的背景光流模型。该模型是以视觉中心点为中心,计算图像光流场中各个位置的理想光流方法。某一点的光流可以理解为一个向量,行车监控中无威胁物体产生的光流向量的方向应与中心点到该点的方向一致。

图 7所示,把光流场看作一个平面,在平面上建立二维坐标系。假设图像视觉中心点O的坐标为(x0,y0),光流场上一点p的坐标为(x1,y1),其光流大小Fp为(dx,dy)。记中心点到点p的向量为P,光流向量为Fp,则点p处的实际光流与理想光流的角度偏差为:

${{\theta }_{p}}=\arccos \frac{P\cdot {{F}_{p}}}{\left| P \right|\times \left| {{F}_{p}} \right|}\ =\arccos \frac{{{x}_{1}}\cdot {{d}_{x}}+{{y}_{1}}\cdot {{d}_{y}}}{\sqrt{{{x}_{1}}^{2}+{{y}_{1}}^{2}}\times \sqrt{{{d}_{x}}^{2}+{{d}_{y}}^{2}}}$ (2)
图 7 各点理想光流方向 Figure 7 Ideal optical flow direction at each point

定义点集U={p|θp>θ,Fp>F},其中θ,F为设定的阈值,表示可接受的实际光流方向与理想方向的偏差范围。该点集包含了光流场中超出可接受范围的所有光流点,理论上这些点所在位置的物体运动都是不规律的。

因现实路况的复杂性和光流算法的误差,在监控中存在一些伪前景光流点集。对于光流计算误差产生的伪前景光流点,本文首先使用若干次腐蚀以去除噪声,然后再进行膨胀恢复、连接断裂的前景区域。对于道路颠簸造成的伪前景光流,本文采用前后帧间光流缓冲池来进行判断与消除。具体做法为:为每一个光流点记录最近3次的光流判断值,0代表背景光流点,1为前景光流点;新的光流点首先用自身判断值更新缓冲池,然后前景光流点根据缓冲池中值是否全为1判断自身状态;若某连通体中包含判断为伪前景的点,则该连通体视为伪前景。

在车辆和其他光流异常的物体标定中,使用连通体标记算法对前景光流进行标记,并去除小的连通体,最后进行框定以突出显示来提示行车异常事件。在实际应用中,处于监控画面上面部分的光流可以不作考虑,因为该区域光流是树木、路标、楼房等造成的,对行车没有影响。

3 实验结果与分析

为验证本文提出的车距估计和超车检测算法的有效性,选取三段网络上真实路段的监控视频样本进行测试,测试样本涵盖城市公路和高速公路,城市公路中又有画面良好和有一定噪声的监控。

采用实验环境为:Windows 7 64 bit,Intel Core i5处理器,8 GB内存,显卡采用NVIDIA GeForce GTX 680,频率为1006 MHz。使用Farnebck[14]的光流计算方法的GPU实现对光流的计算进行加速,使用CUDA对阴影检测进行加速和对异常光流区域进行二值化和连通体标记。

图 8为不同路段的监控中车距估计结果和超车事件的检测结果,并用白色框体进行框定。实验证明该模型能够较准确地对车距进行估计,较好地区分行车途中的超车现象,并对车辆进行标记,提示车距,对横向来车和两侧超车的情况能够正确地进行预警。

图 8 实验结果 Figure 8 Experimental results

因现实路况复杂和受监控画面的画质影响,在监控中依然存在一些误警和漏警的事件。图 8(b)中误判是因为车辆快速行驶时左侧护栏由于高速运动导致光流计算不准确;图 8(e)中出现的漏警情况是由于车内物体反光导致监控画面受到影响。

3.1 车距估计准确性对比

将本文提出的车距估计方法同文献[10]中的带参数指数函数估计方法进行了比较。

图 9(a)中横坐标为车辆底部距监控视频底部的距离,图 9(b)中横坐标为车辆底部距视觉中心点的距离,纵坐标均为前车距本车的车距。

图 9 车距估计实验对比 Figure 9 Comparison of vehicle distance estimation

图 9可以看出,使用对数函数对车距曲线并不能很好地拟合,而使用本文指数函数的形式能够较好地拟合车距曲线,从而证明2.2节中车距D与阴影底部到视觉中心点的距离d的倒数是线性相关的。

3.2 超车检测对比

将本文算法同Garcia等[12]使用的超车检测算法进行对比,考察了漏检率和误检率指标的差异。

表 1中:漏检率为超车期间连续视频帧中检测出的有效超车数目占总超车数目的百分比;误检率为无效超车数目占总超车数目的百分比。可以看出,使用本文算法检测的漏检率同已有算法差别不大,主要因为本文使用了前后帧间光流缓冲池来判断超车异常,有一定的滞后性。误检率大大低于已有算法,因为LK光流法计算得到的光流含有大量噪声,容易产生误警的情况;而本文采用Farnebck光流法得到的噪声较少,便于异常光流的分析。

表 1 超车检测漏检率和误检率 % Table 1 Failure detection rate and false detection rate of overtaking detection %
3.3 CUDA加速对比

由于行车安全至关重要,及时有效地进行预警是辅助驾驶系统的重中之重。由于车辆阴影检测和光流提取,连通体标记过程中算法计算量较大,使用CPU难以满足实时处理的要求。本文对阴影检测、光流的计算、中心点的计算和连通体标记均使用了GPU进行加速,其中光流计算使用了OpenCV中的GPU模块进行加速,阴影检测、中心点的计算和连通体标记过程使用CUDA进行并行化。本文在GeForce GTX680显卡上对算法进行测试并与基于CPU的串行算法作了对比。

由于光流的计算时间较长,在分辨率较高的图像中耗时更为严重,因此串行算法在处理速度上存在严重不足。由表 2可知,并行算法在处理速度上较串行算法有5.8~7.4倍的提升。在552×311大小的监控视频处理中基于GPU的算法可以得到48.9 ms/帧的处理速度,能够及时对视频进行处理和预警,满足实时监控的需求。

表 2 串行与并行算法每帧处理时间对比 ms Table 2 Processing time comparison of serial and parallel algorithms for each frame ms
4 结语

本文研究了行车安全中车距估计与超车事件检测方法。针对行车监控画面的特点,提出了视觉中心点的概念,并在此基础上分析设计了基于指数函数的车距估计函数,建立了用于检测超车现象的背景光流模型。为实现监控视频的实时处理,使用GPU对算法进行加速,基本满足了实时处理要求。实验表明,本文中车距估计函数能够较准确地拟合实际车距,背景光流模型能够有效预警超车现象,对汽车辅助驾驶系统方面的研究有着一定的意义。因行车监控场景的复杂性,该模型也存在一些错误预警和遗漏预警的情况,车辆识别的精确度有待进一步提高,并行算法的处理速度难以满足帧率较高的监控,将会在未来的工作中继续研究改进方法。

参考文献
[1] SIVARAMAN S, TRIVEDI M M. Looking at vehicles on the road:a survey of vision-based vehicle detection, tracking, and behavior analysis[J]. IEEE Transactions on Intelligent Transportation Systems, 2013, 14 (4) : 1773-1795. doi: 10.1109/TITS.2013.2266661
[2] BARRON J L, FLEET D J, BEAUCHEMIN S S. Performance of optical flow techniques[J]. International Journal of Computer Vision, 1994, 12 (1) : 43-77. doi: 10.1007/BF01420984
[3] TAO M, BAI J, KOHLI P, et al. SimpleFlow:a non-iterative, sublinear optical flow algorithm[EB/OL].[2016-03-20] . http://graphics.berkeley.edu/papers/Tao-SAN-2012-05/Tao-SAN-2012-05.pdf.//Computer Graphics Forum. Blackwell Publishing Ltd, 2012, 31(2pt1):345-353.
[4] MCCALL J C, TRIVEDI M M. Video-based lane estimation and tracking for driver assistance:survey, system, and evaluation[J]. IEEE Transactions on Intelligent Transportation Systems, 2006, 7 (1) : 20-37. doi: 10.1109/TITS.2006.869595
[5] 徐翠.基于计算机视觉的汽车安全辅助驾驶若干关键问题研究[D].合肥:中国科学技术大学,2009:59-66. ( XU C. Research on key issues in vehicle safety driving assistant techniques on computer vision[D]. Hefei:University of Science and Technology of China, 2009:59-66. )
[6] ZHOU L, DENG Z. LIDAR and vision-based real-time traffic sign detection and recognition algorithm for intelligent vehicle[C]//Proceedings of IEEE 17th International Conference on Intelligent Transportation Systems. Piscataway, NJ:IEEE, 2014:578-583.
[7] 孙晓艳, 王健, 王建强, 等. 基于亮度累加直方图的夜间车辆检测算法[J]. 计算机工程, 2013, 39 (6) : 239-243. ( SUN X Y, WANG J, WANG J Q, et al. Nighttime vehicle detection algorithm based on brightness cumulative histogram[J]. Computer Engineering, 2013, 39 (6) : 239-243. )
[8] REZAEI M, TERAUCHI M, KLETTE R. Robust vehicle detection and distance estimation under challenging lighting conditions[J]. IEEE Transactions on Intelligent Transportation Systems, 2015, 16 (5) : 2723-2743. doi: 10.1109/TITS.2015.2421482
[9] HAN J, HEO O, PARK M, et al. Vehicle distance estimation using a mono-camera for FCW/AEB systems[J]. International Journal of Automotive Technology, 2016, 17 (3) : 483-491. doi: 10.1007/s12239-016-0050-9
[10] FANG C Y, LIANG J H, LO C S, et al. A real-time visual-based front-mounted vehicle collision warning system[C]//Proceedings of the 2013 IEEE Symposium on Computational Intelligence in Vehicles and Transportation Systems. Piscataway, NJ:IEEE, 2013:1-8.
[11] KIM G, CHO J S. Vision-based vehicle detection and inter-vehicle distance estimation[C]//Proceedings of the 12th International Conference on Control, Automation and Systems. Piscataway, NJ:IEEE, 2012:625-629.
[12] GARCIA F, CERRI P, BROGGI A, et al. Data fusion for overtaking vehicle detection based on radar and optical flow[C]//Proceedings of the 2012 IEEE Intelligent Vehicles Symposium. Piscataway, NJ:IEEE, 2012:494-499.
[13] NVIDIA. "NVIDIA DRIVE PX" 2015.[EB/OL]. (2015-01-13)[2015-09-25]. http://images.nvidia.com/content/tegra/automotive/images/2016/solutions/pdf/end-to-end-dl-using-px.pdf.
[14] FARNEBCK G. Two-frame motion estimation based on polynomial expansion[M]//Image Analysis. Berlin:Springer, 2003:363-370.