基于无人机航拍图像的公路标线检测算法
2018-09-22王立春刘宁钟李强懿
王立春,刘宁钟,李强懿
(南京航空航天大学 计算机科学与技术学院,江苏 南京 211100)
0 引 言
随着公路建设的迅速发展,对公路养护的任务量与日俱增,传统的人工查看方式已不再适用。随着无人机航拍技术的发展,利用无人机航拍对公路标线进行自动检测分析具有很好的应用前景[1]。
对于公路标线的自动化分析,首要的任务便是路面标线的检测分割。由于航拍图像拍摄范围较大,包含比较多公路以外区域,所以公路分割是公路标线提取的第一步。目前对于公路分割的方法比较多。例如,徐玲凌等提出改进C-V水平集模型的图形分割算法对公路进行分割[2];岳建坡等提出了最大类间方差路面分割算法[3]。在完成公路分割后,检测滤除路面上的车辆等非标线目标成为提取标线的关键。对于车辆检测算法,在传统的检测模型中,基于手工设计特征的检测模型被广泛使用[4],如SIFT、Harris等。传统方法特征设计较复杂,效果具有局限性,近年来,深度学习被广泛应用于物体检测与识别领域[5-6],并取得了较好的效果。
文献[7-8]分别将角点特征以及HOG特征作为特征提取方法,然后结合SVM分类器实现了航拍图像中的车辆检测。文献[9]采用滑动窗口与深度神经网络结合的方法进行车辆检测。针对标线提取方法,文献[10-11]提出一种改进的Hough变换车道标线识别算法,文献[12]将改进的概率Hough变换和特征匹配算法用于车道线的检测。文献[13]采用多种过滤算法,提高了标线检测的准确度。文献[14]提出了一种深度学习网络,分割出每条车道线区域的像素信息,实现高速公路的车道线检测。文献[15]提出了一种广义曲线的车道线检测方法,能同时实现直线与弯道线的检测。
受上述方法的启发,文中提出使用深度学习技术与传统图像处理技术相结合的方式实现公路航拍图像的标线提取。首先在航拍图像中,提取颜色以及梯度特征分割出路面区域作为检测区域,然后采用轮廓提取方式提取路面标线目标,并针对标线目标中的车辆噪声等干扰,结合Faster R-CNN算法与车辆的颜色、面积等信息进行非标线目标的滤除,最后根据过滤结果,分割出路面标线。
1 公路区域分割
公路航拍图像中,公路分割是进行标线检测的第一步。由于航拍图像中,公路图像较为规则,边界较为明显,公路的颜色与公路外区域的颜色差别较大,并且公路区域的纹理特征较少而公路外区域纹理特征较多,因此可以结合颜色与纹理特征进行公路区域检测。在图像中,梯度可以很好地表示纹理特征,因此,文中采用颜色特征与梯度特征相结合的方式进行公路分割[16]。
采用滑动窗口的方式分别对每一子块进行路面梯度检验。对于输入的M*N的图像,利用w*w的滑动窗口提取局部图像区域,并针对提取区域,统计该窗口内图像像素的梯度信息,并依据梯度信息判断该区域是否为路面区域。在梯度信息检验之后,针对梯度分割结果,对路面区域进行路面颜色检验,对于不符合路面颜色条件的区域进行滤除。通过梯度与颜色相结合的方式可以较好地提取航拍图像中的公路位置。公路区域定位算法描述如下:
算法1:公路区域定位算法。
步骤1:利用差分定义一阶偏微分图像,每个像素点的梯度计算如式1。式2定义每个像素点的梯度值为该像素点8个方向的梯度最大值。
步骤2:设定梯度阈值σ,并统计窗口区域内梯度大于σ的像素个数比例PT以及窗口区域的平均梯度AT,见式3与式4。式4中Iσ为指示函数,见式5。将PT与AT较大的区域标记为非公路区域,否则标记为公路区域(根据以往的经验,实验中设定PT为0.3,AT为30)。
(1)
T=max(T+X,T-X,T+Y,T-Y,T+45,T-45,T+135,T-135x)
(2)
(3)
(4)
(5)
步骤3:在进行梯度检测后,对满足梯度信息的像素点,通过式6和式7计算每个像素点R、G、B三分量灰度的最大差值Mgray以及平均灰度Agray,利用式8判断像素点是否符合路面颜色,将不满足路面灰度条件的像素点标记为非路面区域。
Mgray=max(R,G,B)-min(R,G,B)
(6)
Agray=0.3R+0.59G+0.11B
(7)
(8)
步骤4:对处理后的公路区域进行形态学闭操作处理,以得到较完整的公路区域。
2 提取候选目标区域
2.1 提取连通区域
在进行标线连通区域提取之前,首先需要对路面图像进行二值化处理。文中在路面区域提取结果的基础上,首先统计路面图像的平均灰度GrayLevel,然后利用Ostu算法计算分割阈值OstuLevel,通过公式level=max(OstuLevel,GrayLevel*1.5)计算路面二值化的阈值level。二值化后,提取连通区域[17]作为标线的预提取区域。
2.2 过滤非标线区域
由于二值化后提取的连通区域内含有较多的非标线区域的干扰,所以在提取连通区域之后,需要对其进行过滤,文中采用面积和颜色特征相结合的方式。首先针对每一个连通区域,统计其连通区域的面积以及最小外接矩形长宽比h/w,对于面积较小或者较大的区域,可直接标记为非标线区域。对于面积符合标线面积的区域,判断其最小外接矩形长宽比,由于标线长宽比一般较大,且宽度较小,故对于宽度较大,且长宽比h/w小于1的区域可判定为非标线区域。对于其他区域,统计求出连通区域内R、G、B三通道的灰度中值,利用式6和式9判断是否属于标线区域,对于不满足条件的区域,可判定为非标线区域。在去除干扰后,可初步得到标线区域。
(9)
3 基于Faster R-CNN的车辆检测
通过对连通区域提取面积特征与颜色特征,可以过滤掉大部分非标线区域,但仍存在部分未能过滤掉的非标线区域。经分析,大部分未过滤掉的非标线区域为车辆,且由于车辆形状以及颜色各异,传统的方法较难以将车辆全部滤除。近年来,随着深度学习技术的发展,使得目标检测领域取得了较大进展,故文中采用Faster R-CNN算法[18]进行航拍车辆检测。
Faster R-CNN是目前主流的目标检测框架之一。不同于R-CNN[19]和Fast R-CNN[20]方法,Faster R-CNN使用RPN网络替换了R-CNN以及Fast R-CNN中的Selective Search[21]方法来提取候选区域,使得检测精度与算法效率得到进一步提升。Faster R-CNN主要由三部分构成:CNN网络、RPN网络以及判别网络。CNN网络的作用是提取图像特征,RPN网络用于提取目标候选区域,判别网络对最终的检测结果进行分类回归,得到最终的分类定位结果。
3.1 RPN
RPN网络是一个全卷积网络,在输入特征图上利用滑动窗口的方式来获取候选区域。使用的滑动窗口与传统意义的滑动窗口不同,这里是以每个像素点为中心,提取多个不同比例、不同尺度的窗口。Faster R-CNN预设9个窗口,分别对应三种窗口面积,即128,256,512,三种窗口比例,分别为1∶1,1∶2,2∶1。
根据不同窗口采集到的特征,RPN利用分类层计算窗口内包含目标的得分,根据得分判断窗口内是否含有目标。针对每一个目标,需要对目标的位置进行进一步的回归矫正,如果图像内目标区域与目标的真实区域重叠率大于阈值(默认为0.7),则该区域标签为1,如果重叠率小于另一阈值(默认为0.3),则该区域标签为0。对标签为1的区域,计算其与真实目标之间的差值,完成定位过程。
3.2 输出层回归
Faster R-CNN含有两个输出层,分别用于计算分类结果以及计算检测框的坐标结果。第一个输出层通过softmax计算相应ROI在各个类别中的概率。第二个输出层计算相应ROI的检测框的坐标值。算法采用多任务的损失函数对每个标定的ROI的类型和检测框坐标进行回归计算,损失函数见式10~13。
L(p,u,tu,v)=Lcls(p,u)+λ[λ≥1]Lloc(tu,v)
(10)
Lcls(p,u)=-logpu
(11)
(12)
(13)
3.3 Faster R-CNN实验分析
由于检测场景是无人机航拍图像,故实验采用无人机以相同的方式采集图像样本作为训练数据,并且分别采集了多条公路。
对于训练样本的处理,由于无人机拍摄图像有尺寸较大、分辨率较高、包含目标较小等特点,为了提高检测精度,以公路宽度作为边长的正方形窗口截取航拍图像中以车辆为主体的区域并统一缩放到600*600作为训练数据。对于数据的标定,采用Pascal VOC2007数据集的标定方式进行标定。实验中共截取10 000张车辆图片用做训练样本,另外又采集了3条公路共约3 000张图像用作测试样本。
文中使用Caffe框架,预训练模型选择VGG16模型,预训练参数采用VGG16在ImageNet上的训练结果,使用RPN网络与分类网络同时训练的方法,在Nvidia GTX1080 GPU加速下,训练得到目标检测模型。测试时,同样采用滑动窗口截取的方式,对公路分割后的公路图像,以公路宽度为边长的正方形滑动窗口将路面区域截取为多块区域并缩放至600*600,并将各块区域分别送入Faster R-CNN中进行车辆检测,最后将多个窗口检测结果合并到原图中作为整张图的检测结果。检测算法流程如图1所示。比较检测的外围框与标记的外围框的重合比例进行检测准确度的计算,重合比例约达到70%以上时,认为检测正确。
图1 检测算法流程
首先,选定一些测试样本图像进行单张图像检测。实验发现存在错检的情况。经分析,对于货车,由于其装货物后外观差异变化较大,对检测准确度产生一些影响,对于正常轿车检测效果较好。文中分别对采集的多条公路的测试集进行整体测试,结果见表1。
表1 批量测试结果
检测正确率的计算公式为:
(14)
其中,Acc为检测正确率;Rs为正确识别车辆数量;Ts为样本中车辆总数量。
通过测试结果可以看出,该模型对于宁高公路效果最好,东麒路效果最差。宁高公路车道数较少,飞行高度较低,车辆模型相对较大,并且公路车辆数量相对较少,而东麒路车道数较多,飞行高度较高,车辆相对较小,存在部分漏检与错检的情况。分析发现,识别错误大部分检测的结果还是车辆,只是识别目标结果与标定目标重合度未达到70%,这样对于车辆的滤除依然产生一定效果。综上分析,该模型平均检测准确率可达到80%,可以满足在新样本下进行车辆检测。
4 实验结果分析
本次实验,测试数据采用无人机分路段采集图像,图像大小为4 000*3 000像素。实验条件为Intel Core i7 CPU,8 G内存,算法采用C++编程实现。
为评估算法的适用性和有效性,分别对不同路段及与其他算法进行了精度对比。选取准确率与召回率作为评估算法检测精度的指标。
准确率和召回率定义为:
(15)
(16)
其中,P表示准确率;R表示召回率;TP表示真实情况为正例并且预测结果也为正例;FN表示真实情况为正例但预测结果为反例;FP表示真实情况为反例但预测结果为正例;TN表示真实情况为反例且预测结果为反例。
选取不同地区的不同路段测试算法的检测准确度,图2是部分公路航拍图像的标线检测结果图。标线检测统计结果见表2。
图2 标线检测结果
公路名称标线总数准确率/%召回率/%平均每张时间/s东麒路-路段16 48098.595.11.2东麒路-路段27 39498.496.61G328-路段14 39298.795.81.1G328-路段24 30899951.1宁高-路段14 02099.497.91宁高-路段24 10499.397.71.1总计30 69898.8961.1
由表2可知,文中算法检测标线召回率平均可达到96%,准确率平均可以达到98%以上,检测准确度较高。由于航拍图像较大,每张图像平均处理时间约为1 s。对错检图像进行分析,公路中存在隔离护栏等装置,与标线极为相似,没有全部过滤掉。对漏检图像进行分析,首先由于车辆、树等阴影的干扰,使得在二值化后被阴影遮挡的标线区域被当作背景,未能提取出标线区域,另外由于部分车辆与标线距离较近,过滤车辆时将标线一同过滤掉。
为评估Faster R-CNN方法对检测准确度的影响,对比了使用Faster R-CNN前后的检测精度,对比结果见表3。
在不使用Faster R-CNN时,标线检测的召回率较高,但是准确率较低,说明标线检测错误的情况较多。而使用Faster R-CNN进行车辆滤除后,召回率略有下降,但是准确率显著提升,说明使用Faster R-CNN方法对路面车辆的滤除效果较好。
表3 不同方法平均精度对比
%
文中还与其他标线检测方法进行了对比。文献[11-13]采用图像处理的方法进行标线检测,文献[14]采用深度学习进行标线检测。其中文献[11]和文献[12]分别利用Hough变换以及特征检测的方式实现标线检测,文献[13]结合多种过滤算法提取标线,文献[14]直接利用深度网络进行标线检测。通过对比可知,相较于其他方法,文中通过将图像处理以及深度学习相结合的标线检测方法,均优于单独使用图像处理或深度学习的方法。文中方法在保证高准确率的情况下,具有较高的召回率,检测效果较好,具有良好的有效性和适用性。
5 结束语
文中提出了一种新的公路标线检测算法。首先根据航拍图像特点,采用图像颜色特征与梯度特征相结合的方式进行公路分割,该分割算法实现简单,运行效率较高,分割效果较好,特别适合于航拍图像中的公路定位分割。然后利用深度学习Faster R-CNN与传统图像处理算法相结合的方式进行非标线目标的过滤,采用Faster R-CNN的方式对车辆检测准确率较高,可以有效过滤路面区域车辆的干扰,有效提高检测算法的准确率。实验结果表明,文中算法在不同公路、不同飞行高度,均有较高的检测精度,满足了实际使用要求。下一步的工作是构建更加全面的训练数据库,同时,针对检测过程中发生的错检情况进行深入研究与解决。