Py学习  »  机器学习算法

领域最全 | 计算机视觉算法在路面坑洼检测中的应用综述(基于2D图像/3D LiDAR/深度学习)

焉知智能汽车 • 1 年前 • 148 次点击  

来源 | 自动驾驶之心

知圈 | 进“底盘社群”请加微yanzhi-6,备注底盘


摘要


计算机视觉算法在3D道路成像和路面坑洼检测中的应用已有二十多年的历史。尽管如此,目前还缺乏有关最先进(SoTA)的计算机视觉技术的系统调研文章,尤其是为解决这些问题而开发的深度学习模型。本文首先介绍了用于2D和3D道路数据采集的传感系统,包括摄像机、激光扫描仪和微软Kinect。随后,对 SoTA 计算机视觉算法进行了全面深入的综述,包括: (1)经典的2D图像处理,(2)3D点云建模与分割,(3)机器/深度学习。本文还讨论了基于计算机视觉的路面坑洼检测方法目前面临的挑战和未来的发展趋势: 经典的基于2D图像处理和基于3D点云建模和分割的方法已经成为历史; 卷积神经网络(CNN)已经展示了引人注目的路面坑洼检测结果,并有望在未来的进展中打破瓶颈的自/无监督学习多模态语义分割。作者相信本研究可为下一代道路状况评估系统的发展提供实用的指导。


介绍


坑洼是一种相当大的结构性道路损坏[1]。它是由水和路上的行驶的车辆综合作用形成的[2]。水渗透了地面,路面下的土壤被侵蚀,地面上的车辆经过后,破坏了路面,清除了部分路面。


道路坑洼不仅是一种不便,它们也是对车辆状况和交通安全的重大威胁[3]。例如,据芝加哥太阳报报告,司机在2018年头两个月就道路坑洼提出了11,706宗投诉[4]。根据坑洼事实报告,在美国33,000起交通事故中,大约三分之一的死亡事故与道路状况不佳有关。因此,经常检查道路和修复坑洼是必要和关键的[5]。目前,人工目视检查仍然是道路坑洼检测的主要形式[6]。结构工程师和认证检查员定期检查路面坑洼并报告坑洼位置。这个过程是低效、昂贵和危险的。例如,新西兰的市议会在2017年花费数百万美元检测和修复路面坑洼(仅基督城就花费了52.5万美元)[7]。此外,据报道,在美国圣地亚哥,每年有超过30K 的路面坑洼被修复。建议圣地亚哥居民报告道路坑洼,以减轻当地道路维护部门的检测负担[8]。此外,检查员和工程师手工检测路面坑洼的结果总是主观的,因为决定完全取决于个人的经验和判断[9]。出于这些原因,研究人员一直致力于开发能够有效、准确和客观地重建、识别和定位路面坑洼的自动化道路状况评估系统[10]。具体而言,近年来,路面坑洼检测已经不仅仅是一个基础设施维护问题,因为它也是许多汽车公司嵌入到 L3/L4自动驾驶汽车中的先进驾驶辅助系统(ADAS)的功能,并且新兴的自动驾驶系统对道路养护标准提出了更高的要求[11]。捷豹路虎使用数据驱动技术进行实验,通知驾驶员路面坑洼的位置,并发出警告来减慢汽车的速度[12] ,而 ClearMotion 建立了一个智能悬挂系统,使用硬件和软件的组合来预测,吸收和抵消由路面坑洼引起的冲击和振动[13]。


自世纪之交以来,计算机视觉技术已被广泛应用于获取3D道路数据和/或检测道路坑洼。然而,这一研究课题的最新研究成果很少涉及最前沿的计算机视觉技术,如3D点云建模与分割、机器/深度学习等。本文对目前最先进(SoTA)的道路成像系统和基于计算机视觉的路面坑洼检测算法进行了全面和深入的综述。现有系统和算法的概述如下图所示。



激光扫描仪、微软 Kinect 传感器和相机是道路数据采集中最常用的三种传感器。现有的路面坑洼检测方法分为四类:


  1. 经典的基于2D图像处理的[14]

  2. 基于3D点云建模和分割的[15]

  3. 基于机器/深度学习的[16]

  4. 混合[3]。


本文系统地回顾了现有的技术和公开数据集 ,并讨论了现有的挑战及其可能的解决方案。相信本文对下一代3D道路成像和路面坑洼检测算法的开发具有一定的指导意义。


道路成像系统


道路成像(或道路数据采集)通常是智能道路检查的第一步[10]。摄像机和距离传感器已被广泛用于获取可视化道路数据。早在1991年就开始使用2D成像技术来完成这项任务[20]。然而,道路表面的几何结构不能从不相关的2D道路图像(没有重叠区域)来说明[21]。此外,在灰度或彩色道路图像上执行的图像分割算法可能会受到各种环境因素的严重影响,最显著的是光照条件差[22]。许多研究人员[5,21,23,24]因此求助于3D成像技术,这被用来克服这两个缺点。最常用于3D道路数据采集的传感器包括激光扫描仪、微软 Kinect 传感器和立体摄像机,如下图所示。


激光扫描 是一种行之有效的精确3D道路数据采集成像技术[1]。这项技术是在三角测量的基础上发展起来的[25]。传感器(接收器)位于距离激光照明源已知距离的位置[26]。因此,因此,可以通过计算激光反射角来进行精确的点测量。然而,激光扫描仪必须安装在特定的道路检查车辆上[27]进行3D道路数据采集。由于设备采购费用高和长期维护费用高,这种车辆并没有得到广泛使用。


微软 Kinect 传感器 最初是为 Xbox-360运动感应游戏设计的,通常配备有 RGB 摄像头、红外传感器/摄像头、红外发射器、麦克风、加速器和用于运动跟踪的倾斜马达。据报道,已经有三次尝试[22,27,28]使用微软 Kinect 传感器进行3D道路数据采集。虽然这些传感器具有成本效益和使用方便,但它们在阳光直射下会受到红外饱和度的严重影响,而且3D路面重建的精度不能令人满意[3]。


3D道路数据也可以使用从不同视图捕获的多个2D道路图像获得,例如使用单个可移动摄像机[29]或同步摄像机阵列[23] ,如下图所示。



这种技术背后的理论通常被称为多视图几何[30]。稀疏或密集对应匹配是多视图3D几何重建的基本任务。一种典型的单目稀疏路面3D重建方法,如[31]所示,其中使用来自运动的结构(SfM)[32]算法获得摄像机的姿态和稀疏的3D路面点云,并使用光束法平差(BA)[33]算法进行细化。


布里斯托尔视觉信息实验室的研究人员[21,34,35]率先使用多目摄像机进行密集的3D路点云采集。在这种情况下,深度信息是通过找到两个同步捕获的道路图像之间视觉特征对应对的水平位置差异来获得的[36]。这个过程通常被称为视差估计或立体匹配,它模仿人类的双眼视觉。提出了一种基于种子和生长的视差估计算法来有效地获取3D道路数据。[35]引入了一种更自适应的视差搜索范围传播策略,以提高估计道路差异的准确性。[5,21]利用透视变换算法将目标图像转换为参考视图,极大地降低了立体匹配速度和视差精度之间的平衡。此外,[34]和[35]中存在的瓶颈问题也通过使用有效和自适应的成本量处理算法来解决。据报道,在[5]和[21],重建3D道路几何模型的精度超过3毫米。与激光扫描仪和微软 Kinect 传感器相比,立体摄像机更便宜,更可靠的3D道路成像。随着深度学习技术的不断发展,卷积神经网络(CNN)比传统的显式规划方法具有更好的视差估计效果。


道路坑洼检测方法


基于经典2D图像处理的算法(例如,增强、压缩、变换、分割)显式的处理道路RGB或视差/深度图像[9]。基于机器/深度学习的算法使用图像分类、对目标识别或语义分割算法解决道路坑洼检测问题,可使用SoTA CNNs[44]解决。3D道路点云建模和基于分割的算法将特定的几何模型(通常是平面或二次曲面)拟合到观察到的道路点云,并通过比较观察到的曲面和拟合的曲面来分割道路点云[3]。混合方法结合了上述两种或多种算法,以提高整体道路坑洼检测性能。2011至2021期间开发的最具代表性的道路坑洼检测算法(从基于经典2D图像处理到基于深度学习)如下图所示。



经典的2D图像处理


基于经典2D图像处理的道路坑洼检测是一个研究的很好的课题。这种方法通常有四个阶段的流程:(1)图像预处理,(2)图像分割,(3)损伤区域提取,和(4)检测结果后处理[9]。下表总结了代表性的现有技术。



图像预处理算法,如中值滤波[42]、高斯滤波[45]、双边滤波[46]和形态学滤波[47],首先用于减少冗余信息并突出受损道路区域。例如,自适应直方图均衡算法是在[45]中用于在二值化道路图像之前调整图像亮度,并且在[14]中使用 Leung-Malik 滤波器[48]和 Schmid 滤波器[49]来强调彩色道路图像中的结构纹理特征。最近,许多研究人员[3,5,6,28,50]利用2D空间视觉信息(通常是道路深度/视差图像)来检测坑洼。例如,[50]和[3]使用立体设备倾斜角度和道路视差投影模型转换道路视差图像,其通过使用黄金分割搜索[51]和动态规划[52]算法使全局能量函数最小化来估计。视差变换使损坏的道路区域高度可区分,如下图所示。



[6]得到了上述能量最小化问题的闭式解,从而避免了迭代优化过程中的繁琐计算。由于深度/视差图像可以描述道路表面的几何结构,所以它们对于检测路面坑洼更有用[6]。


然后将预处理后的道路图像分割成前景(受损道路区域)和背景(未受损道路区域)。大多数先前的技术[46,40,37]采用基于直方图的阈值分割方法,如 Otsu 阈值分割[53] ,三角形阈值分割[14]和自适应阈值分割[46,40] ,以分割彩色/灰度道路图像。正如在[37]中所讨论的,Otsu 的阈值分割方法最小化了类内方差,并且在分割道路图像方面比三角形阈值分割方法获得了更好的性能。采用自适应阈值分割方法对道路图像进行分割,其性能优于常用的三角形阈值分割方法。最近的工作[3,5,6,50]表明,这种图像分割算法通常能更有效和准确地处理转换后的视差图像,描绘道路场景的准鸟瞰图。例如,[3]利用 Otsu 的阈值分割[53]方法来分割转换后的差异图像用于道路坑洼检测,并且在[5]中,使用简单的线性迭代聚类(SLIC)算法[54]将转换后的差异分组成一组超像素。然后通过寻找超像素来检测路面坑洼,超像素的值低于自适应确定的阈值。第三和第四阶段通常以联合方式进行。根据几何学和纹理学假设,首先从分割的前景中提取损坏的路面区域(坑洼),这俩假设包括:


  1. 坑洼通常是凹洞;

  2. 坑洼纹理通常比周围的路面更加粗糙和颗粒化;

  3. 由于阴影,坑洼 ROI 像素的强度通常比周围路面的强度低。


例如,在[14]中,潜在坑洼的轮廓被建模为一个椭圆。然后将椭圆内的图像纹理与未损坏的道路区域纹理进行比较。如果椭圆的 ROI 比周围区域的纹理更粗糙和颗粒化,椭圆被识别为路面坑洼。在[38]中,通过分析各种几何特征,如大小、紧凑度、椭圆度和凸壳,提取潜在坑洼的轮廓。然后采用有序直方图交会法确定提取的区域是否包含路面坑洼。最后,对提取出的受损路段进行后处理,进一步提高路面坑洼检测结果。这个过程通常类似于第一阶段。经典的基于2D图像处理的路面坑洼检测方法已经研究了近二十年。这种类型的算法已经被[9]系统地研究过了,作者参考读者[9]以获得更多的细节。然而,这些方法是在早期技术的基础上发展起来的,可能会受到各种环境因素的严重影响。幸运的是,现代3D计算机视觉和机器学习算法已经大大克服了这些缺点。


3D点云建模和分割


设计用于处理3D道路点云的方法通常有两个阶段的流程[34,68] :


  1. 将观察到的3D道路点云插值成显式的几何模型(通常是平面或二次表面) ;

  2. 通过将其与插值几何模式进行比较来分割观察到的3D道路点云。


下表总结了3D点云建模和分割中最具代表性的算法。



以[34]为例,利用最小二乘拟合将二次曲面拟合到密集的3D道路点云中。通过比较实测和拟合的3D路面之间的差异(高程) ,可以有效地提取受损路面面积(坑洼)。不同的坑洼也使用连接组件标记(CCL)算法进行标记。类似地,[56]将观察到的3D道路点云插值到平面表面。通过在拟合表面下寻找3D点,可以粗略地检测出潜在的路面坑洼。K均值聚类和区域生长算法随后被用来改进路面坑洼检测结果。


然而,最小二乘拟合会受到异常值的严重影响,常常使得建模的路面不准确[3]。因此,[55]采用双平方加权鲁棒的最小二乘近似的道路点云建模。利用随机样本一致性(RANSAC)算法提高二次曲面拟合的鲁棒性。[35]和[3]将表面法线信息引入到二次曲面拟合过程中,大大提高了FreeSpace和路面坑洼检测的性能。


除了上述基于摄像机的方法之外,[71]还采用了高速3D横向扫描技术来进行路面推挤(路面上突然出现的波浪)和路面坑洼的检测。对激光条纹数据进行亚像素线提取(包括点云滤波、边缘检测和样条插值)。然后由激光条纹曲线生成道路横向剖面,并用线段逼近。利用分段端点的二阶导数来识别可能出现的推挤和坑洼的特征点。最近,[72]引入了一个基于激光雷达的路面坑洼检测系统,通过比较它们与最适合的平面3D路面的距离,将3D路点分类为损坏和未损坏。遗憾的是,[72]缺乏算法细节和必要的定量实验道路损伤检测结果。


与其他方法相比,基于3D点云建模和分割的方法相对较少。然而,实际的道路总是不平坦的,使得这样的方法有时不可行。此外,如果目标仅仅是识别和定位路面坑洼而不是获取它们的几何细节,那么获取3D道路点云可能就没有必要了。结合2D图像处理算法,可以显著提高3D点云建模性能[3]。


机器/深度学习


随着机器/深度学习技术的发展,深度CNN (Deep CNN)已经成为路面坑洼检测的主流技术。DCNN 通常通过使用大量人工标注的道路数据进行反向传播来训练,而不是设置显式的参数来分割道路图像或点云以进行坑洼检测[73]。数据驱动的路面坑洼检测方法一般是基于三种技术开发的[26] : (1)图像分类网络,(2)目标检测网络,和(3)语义分割网络。图像分类网络被训练来分类正面(坑洼)和负面(非坑洼)道路图像,目标检测网络被训练来识别实例级的道路坑洼,语义分割网络被训练来分割道路(颜色或视差/深度)图像用于像素级(或语义级)道路坑洼检测。本节的其余部分将详细介绍这些算法的每种类型。


基于图像分类的方法


在深度学习技术爆发之前,研究人员通常使用经典的图像处理算法来生成手工制作的视觉特征,并训练一个支持向量机(SVM)模型来对道路图像片段进行分类。下表总结了最具代表性的基于 SVM 的方法[16,57,58,77,62,61,63]。由于这些算法已经过时,作者不会在这里向读者提供太多的细节。



随着计算资源的革命和训练数据样本量的增加,DCNN 在路面坑洼检测中得到了广泛的应用。与传统的基于支持向量机的方法相比,DCNN 能够学习更抽象(分层)的视觉特征,并且它们显著提高了路面坑洼检测性能[46]。上表总结了最典型的基于 DCNN 的方法[64,66,67,65]。[64]和[66]从头开始设计 DCNN。在[64]中提出的 DCNN 由四个卷积池层和一个完全连接(FC)层组成。对在东帝汶收集的道路数据进行的大量试验表明,这种 DCNN 在对坑洼和非坑洼图像进行分类方面是有效的。在[66]中引入的 DCNN 由一个预池化层、三个卷积池层、一个sigmoid层和两个 FC 层组成。预池化层的设计是为了减少与路面坑洼无关的特性。实验结果表明,提出的预池化层可以大大提高道路图像分类的性能,所设计的 DCNN 可以有效地检测不同光照条件下的路面坑洼。[67]和[65]开发了基于现有 DCNN 的道路图像分类网络。开发了一个基于流行的残差网络的 DCNN [78]。大量的实验表明,提出的模型可以有效地分类夜间和/或雾天收集的热道路图像,它也优于现有的技术[61,79,65]。在[65]中,四个开发良好的 DCNN: (1) Inception-v4[80] ,(2) ResNet-v2[80] ,(3) ResNet-v2[81]和(4) MobileNet-v1[82] ,被训练来分类道路图像。实验结果表明,这些模型在测试集上的表现类似。最近,[83]比较了30个 SoTA 图像分类 DCNN 在道路裂缝检测方面的应用,发现道路裂缝检测与其他应用领域的图像分类相比是一个相对容易的任务。与道路裂缝检测相比,路面坑洼检测是一项较为容易的任务。因此,作者认为基于图像分类网络的路面坑洼检测是一个很好解决的问题。


基于目标检测的方法


基于目标检测的道路坑洼检测方法可以分为三种类型: (1)基于单目多框的检测器(SSD)的,(2)基于区域的 CNN (R-CNN)系列的,和(3)YOLO系列的。下表总结了最具代表性的基于目标检测的方法。



SSD有两个组成部分[84] ,即主干网络和SSD头。前者是一个用于视觉特征提取的深度图像分类网络,后者是添加到主干网络的一个或多个卷积层,以便输出可以目标类的边界框。该领域的研究人员主要将不同的图像分类网络纳入道路坑洼检测的SSD中。例如,Inception-v2[85]和 MobileNet [82]被用作[86]中的主干网络,而 ResNet-34[78]和 RetinaNet [87]被用作[88]中的主干网络。与 SSD 相比,R-CNN 和 YOLO 系列更广泛地应用于路面坑洼的检测。在[95]中,R-CNN 被证明可以实现与 SSD 类似的路面坑洼检测性能。在[75]中,开发了四个路面坑洼检测网络: (1)更快的 R-CNN (以 Inception-v2[85]为主干网络) ,(2)更快的 R-CNN (以 ResNet-101为主干网络[78]) ,(3)更快的 R-CNN (以 Inception-ResNet-v2为主干网络[80])和(4) SSD (以 MobileNet-v2[96]为主干网络)。广泛的实验表明,更快的 R-CNN (以 ResNet-101为主干网络)取得了最佳的整体性能。实验结果如下图所示。



[90]比较了两个更快的 R-CNN (分别以 ResNet-101和 ResNet-152为主干网)在[86] w.r.t. 引入的数据集上用于道路损伤检测的性能。三个评估指标: F1-Score,精度的调和平均数和召回的调和平均数。实验结果表明,更快的 R-CNN (以 ResNet-152为主干网络)优于更快的 R-CNN (以 ResNet-101为主干网络)。这可能是因为更深层的主干可以学习更抽象的表示。[94]利用一个更快的 R-CNN 来检测在日本、印度和捷克共和国拍摄的公路图像中的裂缝和坑洼。首先训练一个分类器来推断道路图像是在哪个国家拍摄的。然后训练一个更快的 R-CNN,来针对每个国家(为了减少由于区域差异造成的影响)的道路裂缝和坑洼检测。


与 R-CNN 系列不同,YOLO 系列使用区域proposals来定位图像中的路面坑洼,YOLO 系列通常将道路图像分割成一个网格集合,并在每个网格中选择一个边界框集合。网络输出一个类概率和每个边界框的偏移值。利用类概率高于阈值的边界框定位图像中的路面坑洼。由于它们的准确性和高效性,YOLO 系列已经成为基于目标检测的道路坑洼检测的首选。例如,在[89]中,开发了两个目标检测 DCNN,分别称为 F2-Anchor 和 Den-F2-Anchor,用于检测路面坑洼。F2-Anchor 是 YOLOv2的一个变种,能够生成5个新的anchor box(使用 Kmeans算法获得)。实验结果表明,F2-Anchor 在检测不同大小和形状的道路坑洼方面优于原 YOLOv2。与 F2-Anchor相比,Den-F2-Anchor加密了网格,取得了比 YOLOv2和 F2-Anchor更好的路面坑洼检测性能。此外,[92]训练了三个 YOLO 架构: YOLOv3[101] ,YOLOv2[102]和 YOLOv3 Tiny [101] ,用于路面坑洼检测。YOLOv3-tiny实现了最好的整体路面坑洼检测准确度。同样,[91]比较了三种不同的 YOLOv3架构: YOLOv3[101] ,YOLOv3 Tiny [101]和 YOLOv3 SPP [101] ,用于路面坑洼检测。YOLOv3 SPP 展示了最高的路面坑洼探测准确度。最近,[93]设计了两个 YOLOv1网络的分层路面坑洼检测方法[103]。一个事先训练好的 YOLOv1模型被用来检测汽车(背景) ,而另一个 YOLOv1模型被用来检测前景中的道路坑洼。尽管如此,上述的目标检测方法只能在实例级识别路面坑洼,当需要像素级的路面坑洼检测结果时,它们是不可行的。


基于语义分割的方法


SoTA 语义分割网络分为两大类: (1)单模态和(2)数据融合。单模态网络通常使用编码器-解码器结构分割 RGB 图像[100]。数据融合网络通常从两种不同类型的视觉传感器数据中学习视觉特征(FuseNet 中使用彩色图像和深度图[104] ,SNE-RoadSeg 系列中使用彩色图像和表面法线图[105,106] ,并且在 AA-RTFNet 中使用彩色图像和转换的视差图像[11])并融合所学到的视觉特征以提供对环境的更好的语义理解。下表总结了最具代表性的现有语义分割技术。



[98]提出了一种基于全卷积网络(FCN)的路面坑洼检测方法。为了减轻提供监督式学习所需的像素级注释的困难,[98]利用了一种半监督学习技术来生成伪标签,并对预先训练好的FCN 自动微调。与监督式学习相比,半监督式学习可以大大提高整体的 F-score。此外,[100]将基于注意力的多尺度特征融合模块(MSFFM)整合到 DeepLabv3 + [107]中用于路面坑洼检测。同样,[99]提出了一个基于注意力的路面坑洼检测耦合框架。该框架利用基于注意力的功能融合模块来改善图像分割性能。本文的工作还证明了小样本学习在路面坑洼检测中的有效性。


作者在这个领域进行了广泛的研究。[11]介绍了一个注意力聚集框架,该框架利用了三种注意力模块的优势: (1)通道注意力模块(CAM) ,(2)位置注意力模块(PAM) ,(3)双注意力模块(DAM)。此外,[11]提出了一种有效的基于生成对抗网络(GAN)的训练集增强技术,通过生成假彩色道路图像和转换后的道路视差图像来增强语义分割网络的训练。实验结果表明: (1) AA-UNet (单模态网络)检测路面坑洼的性能优于其他 SoTA 单模态网络; (2) AA-RTFNet (数据融合网络)检测路面坑洼的性能优于其他 SoTA 数据融合网络; (3)训练集增强技术不仅提高了 SoTA 语义分割网络的准确性,而且在训练过程中加速了它们的收敛。最近,作者开发了一个基于图神经网络(GNN)的图注意层(GAL)来进一步优化单模态语义分割的图像特征表示[44]。如下图所示,GAL-DeepLabv3+是性能最好的实现,其性能优于所有其他用于路面坑洼检测的 SoTA 单模态语义分割 DCNN。



这里需要注意的是,道路坑洼的检测可以与其他驾驶场景的理解问题一起解决,特别是FreeSpace和道路异常检测[105,108,109,106,110]。不幸的是,SoTA 语义分割网络是强大的数据驱动算法,需要大量的数据。因此,基于无监督或自监督学习的路面坑洼检测是一个需要更多关注的研究热点。


混合方法


混合路面坑洼检测方法通常利用上述至少两类算法。它们已经被广泛研究了十多年。这些方法,如下表所总结的,已经将 SoTA 结果带到了这个任务中。


十年前,[111]开发了一种基于经典2D图像处理和3D点云建模和分割的混合路面坑洼检测方法。首先对道路视频(由高速摄像机收集)进行图像梯度滤波,以选择被认为包含道路坑洼的关键帧。关键帧的3D道路点云(由微软 Kinect 获得)同时建模为平面表面。类似于[50] ,RANSAC 被用来增强3D道路点云建模的鲁棒性。然后通过比较观察到的路面和模拟的路面来检测路面坑洼。由于采用了高效的基于2D图像处理的关键帧选择方法,该方法大大减少了3D点云建模中的冗余计算。


[29]提出了类似的混合方法。首先对由高清摄像机收集的道路视频进行处理,以识别可能包含道路坑洼的关键帧。同时,该道路视频也被用于稀疏到密集的3D道路几何重建。通过对多模态路面数据的分析,可以有效、准确地检测出路面坑洼。这种混合方法大大减少了错误检测路面坑洼的数量。[22]介绍了一种类似的基于 RGB-D 数据(由微软 Kinect 收集)的混合路面坑洼检测方法。首先对获得的深度图像进行平面拟合。类似于[111] ,这个过程用 RANSAC 进行了优化。然后创建并归一化反映实际和拟合深度图像之间差异的归一化深度差图像。然后,Otsu 的阈值分割方法在归一化深度差图像上进行,以检测道路坑洼。最近,[3]提出了一种基于2D道路视差图像变换和3D道路点云分割的路面坑洼混合检测算法。首先对密集的亚像素视差图进行变换,以便更好地区分损坏和未损坏的道路区域。然后,使用 Otsu 的阈值分割方法,从转换后的视差图中提取潜在的未受损道路区域。利用最小二乘拟合(也用 RANSAC 改进)将提取区域中的差异建模为二次曲面。在点云建模过程中还集成了表面法线信息,以减少离群点。最后,通过比较实际视差图和模型视差图,有效地检测出路面坑洼。


除了上面讨论的方法之外,研究人员还开发了基于经典2D图像处理算法和机器/深度学习模型的混合方法。以[112]为例,一个朴素贝叶斯分类器(NBC)[117]被训练来学习有向梯度(HOG)[118]特征的直方图。然后利用这些 HOG 特征训练道路图像分类器。一旦一幅图像被认为包含路面坑洼,就使用归一化图切分(NGCS)[119]算法对其进行分割,以产生像素级的路面坑洼检测结果。此外,[113]提出了一个两阶段的路面坑洼检测方法。在第一阶段,利用 BoW [120]算法对道路图像进行分类。这个过程包括四个步骤: (1)尺度不变特征变换(SIFT)[121]特征提取和描述,(2)使用 K平均算法构建可视化词汇/码本,(3)词汇生成直方图,(4)使用支持向量机进行道路图像分类。在第二阶段,利用图割分割(GCS)[119]算法对道路图像进行分割,用于像素级道路坑洼检测。最近,[114]提出了一种路面裂缝和坑洼混合检测算法。一个改进的 SegNet [122]首先训练分割道路图像用于FreeSpace检测。然后对FreeSpace区域进行 Canny算子处理,生成路面裂缝/坑洼候选区域。最后,对 SqueezeNet [123]进行训练,以确定生成的候选项是路面裂缝还是路面坑洼。


近年来,基于3D点云分割和机器/深度学习的路面坑洼检测方法也引起了人们的广泛关注。[115]是这一领域的代表性现有技术。(1) SV1,一种基于单帧立体视觉的方法,基于v-disparity图像分析和3D平面拟合(在视差空间) ; (2) SV2,一种基于多帧视觉传感器数据融合的方法,开发基于数字地面模型(DEM)和视觉里程计; (3) LM1,Mask R-CNN [124]训练转移学习; (4) LM2,YOLOv2[102]训练转移学习。


此外,[116]还引入了一种基于语义道路图像分割和3D道路点云分割的混合道路坑洼检测方法。首先对 DeepLabv3+[107]模型进行训练,以产生初始像素级道路坑洼检测结果。将初步检测到的路面坑洼边缘3D点划分为外部点和内部点。外边缘用于拟合局部平面和计算路面坑洼体积,而内边缘用于减少不正确的检测坑洼通过分析道路深度分布。


公共数据集


这一部分简要介绍了现有的开放式路面坑洼检测数据集,这些数据集可以为研究人员在评估他们开发的路面坑洼检测算法时提供适当的数据集指示。[125]创建了一个用于道路图像分类的数据集。它由训练集和测试集组成。训练集包含367张健康道路的彩色图像和357张有坑洼的彩色图像; 测试集包含每个类别的8张彩色图像。这个数据集可以在[这里](kaggle.com/virenbr11/po thole-and-plain-rode-images)获得。


[126]提出了一个大规模的数据集,用于实例级的坑洼检测。这个数据集由一个训练集、一个测试集和一个标注CSV 文件组成。该训练集包含2658张健康道路的彩色图像和1119张有坑洼的彩色图像。测试集包含628个彩色图像。使用 GoPro Hero 3 + 照相机捕获图像(分辨率: 2760 × 3680像素)。这个数据集可以在[这里](kaggle .com/sovitrath/road-pothole-images-for-pothole-detection)访问。


[127]创建了一个印度道路的数据集(图像分辨率: 720 × 1280像素) ,使用语义分割注释(道路,坑洼,人行道,浅路和背景)。该数据集包含2475幅彩色图像的训练集和752幅彩色图像的测试集。这个数据集可以在[这里](kaggle.com/eya ntraiit/language-section-datets-of-indian-road)获得。


[128]创建了一个数据集,被称为 CIMAT 自动驾驶挑战序列(CCSAD)。它最初是用来开发和测试无人机感知和导航算法的。CCSAD 数据集包括四个场景: (1)colonial town街道,(2)城市街道,(3)大道和小道,以及(4)隧道网。这个数据集包含500GB 的高分辨率立体图像,辅以惯性导航系统(IMU)和 GPS 数据。CCSAD数据集可在这里公开获取。


[86]展示了一个大规模的道路损坏数据集,包括在日本收集的9053张彩色道路图像(分辨率: 600 × 600像素)。这些图像(包含15,435道路损坏)是在不同的天气和光照条件下用安装在汽车上的智能手机拍摄的。该数据集可在这里公开获得。


[129]创建了一个数据集,包括665对彩色道路图像和不同道路条件下的坑洼真值标签。该数据集可用于城市街道路面坑洼的自动检测和定位。该数据集可在这里公开获得。


另一个道路坑洼检测数据集[130]是为二值道路图像分类创建的。它包含了352张完好无损的道路图片和329张坑坑洼洼的图片。这个数据集很小,只能用于测试图像分类 CNN。你可浏览[这里]获取。(kaggle.com/datasets/atulyakumar98/pothole-d etection-dataset)


[3]发布了世界上第一个多模态道路坑洼检测数据集(图像分辨率: 800 × 1312像素) ,包含55组(1)彩色图像,(2)亚像素视差图像,(3)转换的视差图像和(4)像素级坑洼注释。该数据集可在这里公开获得。


同一研究小组最近发表了Pothole-600[11]。它还提供了两种形式的视觉传感器数据: (1)彩色图像和(2)转换的视差图像。转换后的视差图像是通过对使用[21]中介绍的立体匹配算法估计的致密亚像素视差图像执行视差变换算法[50]而获得的。Pothole-600数据集可在这里获得。


现有的挑战和未来的趋势


在2012年深度学习热潮之前,经典的基于2D图像处理的方法主导了这个研究领域。然而,这种明确的方法通常是计算密集型的,并且对各种环境因素敏感,最显著的是光照和天气条件[22]。此外,路面坑洼的形状不规则,这使得在这些方法中做出的几何假设有时是不可行的。因此,自2013年以来,3D点云建模和基于分割的方法已经出现,以提高道路坑洼检测的准确性[34]。然而,这种方法通常需要一个小视场,因为假设一个单帧3D道路点云是一个平面或二次曲面。尽管已经作出了显着的努力来进一步提高道路点云建模的鲁棒性,例如使用 RANSAC 算法[3] ,但是需要广泛的参数来确保这些方法的性能,使得它们对于适应新的场景非常具有挑战性。


在过去的五年中,DCNN 已经被广泛应用于解决这个问题。图像分类网络只能确定道路图像是否包含坑洼。目标检测网络只能提供实例级的路面坑洼检测结果。由于交通部门对路面凹坑的宽度、深度、体积等几何特性更加关注,因此开发结合3D道路几何重建和语义分割的混合方法是本文研究的未来趋势。最近的深度立体匹配网络已经显示出优越的性能。作者相信它们可以通过迁移学习很容易地应用于3D道路几何模型的重建。然而,这种(有监督的)方法通常需要大量标注良好的训练数据来学习立体匹配,这使得它们在实践中很难实现[131]。因此,专门为路面3D重建开发的无/自监督立体匹配算法也是一个需要更多关注的热门研究领域。此外,如[105,106,108,109]所述,数据融合语义分割是目前驾驶场景理解的一个热门话题。然而,这样的网络通常是计算复杂的。经过大量的文献研究,作者认为网络剪枝和知识提取是解决这一问题的可行方案。在实际实验中,作者还可以应用训练有素的图像分类 DCNN 来选择关键帧(可能含有坑洼的道路图像) ,显著地避免了语义分割的冗余计算。路面坑洼不一定无处不在,准备一个大型的、注释良好的数据集来训练语义分割 DCNN 是一个挑战。因此,开发用于路面坑洼检测的少/低样本语义分割网络也是一个需要更多关注的研究热点。


结论


本文综合调研了SoTA 道路成像技术和计算机视觉算法在路面坑洼检测中的应用。经典的基于2D图像处理和基于3D点云建模和分割的方法存在严重的局限性。因此,本文主要讨论了用于路面坑洼检测的性能良好的 SoTA DCNN。由于交通部门对路面凹坑的几何特性更感兴趣,开发基于立体匹配的路面3D重建和数据融合语义分割功能的混合方法是本文研究的未来趋势。然而,训练立体匹配和语义分割网络需要大量的人工标注数据集,准备这样的数据集是非常劳动密集型的。因此,作者相信无/自监督立体匹配算法(专门为路面3D开发)和语义道路图像分割的少量/低样本学习是需要更多关注的热门研究领域。


参考

[1] Computer Vision for Road Imaging and Pothole Detection: A State-of-the-Art Review of Systems and Algorithms

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/149652
 
148 次点击