zoukankan      html  css  js  c++  java
  • 高精地图中导航标识识别

    高精地图中导航标识识别

    思路

    主要介绍高精地图导航标识识别上的技术演进,这些技术手段在不同时期服务了高精地图产线需求。

    1.    高精地图介绍

    当你开车导航的时候,导航地图会向我们推荐一条或几条路线,有些地图甚至会显示这些路线是否拥堵,以及每条路线要花费的时间。获得这些信息后,你必须根据地图提供的信息决定是否直行和转弯,并对周围的驾驶环境进行评估,可能还要考虑交通管制:信号灯、限速标志等。

    自动驾驶汽车缺乏人类驾驶员固有的视觉和逻辑能力。比如:你可以根据看到的东西和 GPS 提供的信息确定你自己的位置;还能轻松准确地识别障碍物、其他车辆、行人和交通信号灯。但这对无人驾驶汽车来说是一项非常艰巨的任务。正因如此,高精度地图是当前自动驾驶汽车技术不可或缺的一部分。

    高精度地图包含大量的驾驶辅助信息。最重要的信息是依托道路网的精确三维表征。例如交叉路口局和路标位置。

     

    图1. 高精地图

     

     图2. 交叉路口

    高精地图还包含很多语义信息。地图上可能会报告通信交通灯上不同颜色的含义,它可能指示道路的速度限制,以及左转车道开始的位置。

    高精地图最重要的特征之一是精度,高精度地图能使车辆达到厘米级的精度这对确保无人驾驶汽车的安全至关重要。手机上的导航地图只能达到米级的精度,想象一下一两米有多远:如果车辆偏离一两米,可能会阻碍交通及人行道,并且可能发生触碰。

    高精度地图是自动驾驶平台的核心,无人驾驶汽车的许多其他模块都依赖于高精度地图。我们要在高精度地图上进行定位,这就意味着我们需要弄清楚我们在地图上的位置。

    我们可以将定位与拼图进行比较。如果我同时为你提供地图和地图上的一小块,我们并不能在地图上快速找到这一小块的确切位置,但无人驾驶汽车必须迅速确定以了解自己在地图上的确切位置。

    首先,车辆会寻找地标。我们可以使用从各类传感器收集的数据,如摄像机图像数据、以及激光雷达手机的三维点云数据来查找地标。车辆将其收集的数据与其高精度地图上已知的地标进行比较。这一匹配过程需要预处理、坐标转换和数据融合的复杂过程。

    预处理消除了不准确或质量差的数据,坐标变换将来自不同视角的数据转换为统一的坐标系;借助数据融合,可将来自各种车辆和传感器的数据合并。从而精确定位自己的所处的位置。

    一旦无人驾驶汽车高度精确的定位了自身的位置,定位任务也就完成了。整个过程取决于地图,正因如此,车辆需要高精地图以便知道它处于什么位置。

    同时,地图可帮助传感器缩小检测范围。例如,高精度地图可能会告知我们在特定位置寻找停车标志,传感器就可以集中在该位置检测停车标志,这被称为感兴趣区域或 ROI。ROI 可以帮助我们提高检测精确度和速度,并节约计算资源。

    正如定位和感知软件依赖于高精度地图那样,规划软件也是如此。高精度地图可以帮助车辆找到合适的行车空间,还可以帮助规划器确定不同的路线选择,并帮助软件确定道路上其他车辆在将来的位置。

     

    图3. 交通信号灯

    例如,高精度地图可帮助车辆识别车道的确切中心线,这样车辆可以尽可能地靠近中心行驶,在具有低速限制、人行横道或减速带的区域,高精度地图能让无人驾驶汽车提前查看并预先减速。更重要的是,如果前方有障碍物,车辆可能需要变道,高精度地图可以帮助车辆缩小选择范围,以便选择最佳方案。

    无人驾驶汽车可以使用高精度地图来帮助感知。人有眼睛和耳朵,但都有距离限制,我们无法看到或听到太远的事物,无人驾驶汽车的传感器也会受到类似的限制。

    摄像机、激光雷达和雷达探测物体的能力在超过一定距离后都会受到限制,在恶劣的天气条件或夜间,传感器识别障碍物的能力可能会进一步受到限制。另外,当汽车遇到障碍时,传感器无法透过障碍物来确定障碍物后面的物体。在这种情况下,高精度地图可以将交通信号灯的位置提供给软件栈的其余部分,帮助汽车做出下一个决策。

    2.   地面标识识别

    地面标识识别,指在地图道路中识别出各种类型的地面标识元素,如地面箭头、地面文字、时间、地面数字、减速带、车距确认线、减速丘、人行横道、停止让行线、减速让行线等。这些自动化识别结果将作为生产数据交付给地图生产产线,经过制作后演变成服务于自动驾驶、车载导航、移动导航的地图。

    高精地图一般对各个地图要素精度至少有着厘米级的要求,所以相对于普通地图来说需要更高的位置精度,这也是与普通地图识别的最大不同,所以探索如何将地面标识识别得又全又准是我们一直努力的方向。

    地面标识识别有两大难点:一是地面标识本身的种类、大小繁多,二是地面标识易被磨损遮挡,清晰度参差不齐,这给高精度识别带来了巨大的挑战。

    1)地面标识种类繁多:实际场景中地面标识种类繁多,在内容、颜色、形状、尺寸等方面均有不同分布。

    • 颜色:比如黄色、红色、白色等
    • 形状:箭头形、各种文字数字形状、条形、多条形、面状、丘状等
    • 尺寸:国标定义的标准箭头长度为9m,但也存在1m~2m甚至1m以下的地面标识元素,尤其减速带以及人行道等尺寸差异会更大,反映到图像中像素个数以及长宽比均会有较大差异。

     

     图4. 部分地面标识

    2)磨损压盖多:地面元素长年累月受车辆、行人等碾压会造成磨损,以及经常存在的堵车等场景更是加大了地面要素被遮挡的可能。所以从激光雷达获取的点云数据和由相机获取的可见光图像数据的质量均参差不齐,对地面标志识别带来了极大的挑战。

    常见的问题如下所示,示例如图2所示。

    • 地面标识磨损:地面标志由于磨损褪色、掉漆导致不完整或者严重不清晰
    • 采集环境问题:遮挡(施工、车辆)、由于环境改变引起的材料激光反射率差异以及可见光不清晰(雨天、逆光等)

     

     图5. 自然场景下拍摄的地面标识

    3.  识别

    地面标识识别需要做的是将地面标识这部分区域提取出来,则最直观的是对其进行阈值分割、骨架提取、连通域分析等传统方法。首先获取点云中地面点集合,接着获取集合中高反射率部分的骨架集合,然后对每个局部骨架区域计算强度截断阈值,最后对区域进行连通区域搜索以及附加降噪措施等。

    另外我们也尝试了GrabCut等算法在地面标志上的提取,GrabCut算法对前景和背景分别聚类,得到k组类似的像素集合,然后对前景和背景分别进行高斯混合模型(GMM)建模,判断像素属于地面标志还是背景。在提取疑似地面标识区域后,再经过机器学习模型(SVM等)进行细分类以获得更好的识别效果。

     

     图6. 传统提取方法识别结果

    由上图可以看到,对于一些前后景区分比较好的地面标识提取的比较好,但是针对有磨损、模糊、前景背景相似、背景复杂等情况均效果欠佳,容易漏召回且位置精度不高,鲁棒性不强。

    4.深度学习时代

    2012年Hinton团队提出的Alexnet网络赢得了2012年图像识别大赛冠军,相比传统方法获得显著提升,CNN在图像领域有了明显优势。近几年,基于深度学习的检测识别技术也得到了很大发展。
    深度学习时代是数据和硬件驱动的时代,结合部分人工标注以及自动化生成,我们拥有百万级的数据,而且各种场景的数据还在不断丰富,结合算法探索与创新,我们取得了越来越好的技术与业务效果。

    目前检测识别技术主要分为两大方向:Two-Stage(如RCNN系列)和One-stage(SSD、YOLO等)。Two-Stage网络优势在于效果整体较好,识别位置较精确,对小目标检测也有一定的竞争力。

    One-stage检测识别方法优势在于处理速度较快。高精地图不仅需要较高的识别性能、也需要有足够高的识别位置精度,所以我们选择了准确率较高的Two-stage大方向。

    1)R-FCN检测

    结合位置敏感得分图(position-sensitive score map)和位置敏感降采样(position-sensitive roi pooling)等操作,R-FCN算法在目标检测识别上获得了较高的性能和位置精度,我们选择了R-FCN检测算法实现对地面标识的检测识别。

    R-FCN算法基于深度学习的方法,通过学习大量实际场景样本,所以在泛化性上取得了比较大的提升,自动化识别对于不同场景的识别能力有所提高,地面标识召回率得到了较大的改善。算法示意图如下所示:

     

     图7. R-FCN算法示意图

    以下为一些地面标识检测识别示例:

     

    图8. R-FCN算法地面标识识别示例

    引入深度学习极大的改善了高精地图地面标识自动识别的性能,地面标识召回得到了很大提升,美中不足的是R-FCN存在着一个弊端就是其输出的最终检测位置是基于地面标识类别的得分,但往往得分最高的位置并不一定跟实际位置最贴合,所以在位置预测精度上,R-FCN并不完美。

    2)级联检测器

    随着深度学习的发展以及业界对目标检测识别位置精度的要求不断提高,更多高精度检测识别算法被提了出来,如Iou-Net等。

    我们适时采用了更加先进的识别算法,以期获得更加精准的位置精度来满足产线业务需求,结合级联检测,利用Deformable-Conv自适应感受野等技术提升算法识别精度。

    该算法不同于传统算法对roi进行一次预测回归得到最终位置,而是通过级联的形式不断修正预测的位置和实际位置的偏差,每经过一个级联回归器,算法识别结果均会更加贴合真值,这非常有利于提高识别精度,契合高精地图对目标位置精度的高要求,最后在召回和位置精度上都达到更好的效果。

     

     图9.级联检测算法原理图

    以下为一些算法识别结果示例:

     

    图10. 级联检测算法识别示例

    通过引入级联形式的检测识别模型令高精产线自动识别能力在识别精度上得到了不错的提升,但我们对自动识别位置精度提升的挖掘是无止尽的,所以有了以下的方案。

    3)级联检测 + 局部回归

    设想一下,如果我们在地面标识区域进行局部的位置回归,那么网络就能够聚焦到更加细微的地面标识区域,最终得到更加接近边界的位置。结合实际在做地面标志识别时,我们将容易造成精度问题的部分单独做位置精修,得到了更加精细的位置。

    以下为部分算法识别结果示例:

     

    图11. 算法识别示意图

    采用检测+回归技术方案实现了更加好的位置检测精度,让我们离“真实世界”更进了一步。其缺点是技术方案流程较长,不够简洁美观。

    4)基于角点的检测



    基于角点回归的目标检测方法,使用单个卷积神经网络预测两组热力图来表示不同物体类别的角的位置,即将目标边界框检测为一对关键点(即边界框的左上角和右下角),以及每个检测到的角点的嵌入向量。其中角点用于确定目标位置,嵌入向量用于对属于同一目标的一对角点进行分组。

    此种方法简化了网络的输出,通过将目标检测为成对关键点,消除了现有的检测器设计中对特征层需要大量anchors的弊端,因为大量anchors造成了大量的重叠以及正负样本不均衡。同时为了产生更紧密的边界框,网络还预测偏移以精细调整角点的位置。通过预测热力图、嵌入向量、以及偏移最终得到了精确的边界框。

      

    图 12. 角点检测示意图

    由于在检测任务中需要获取相同尺寸的特征图对目标进行位置回归、类别分类等,算法会对其进行量化以及降采样等操作,不可避免会有精度上的损失。这个弊端带来的最大影响就是经由检测回归出的位置不够鲁棒,在某些情况下会出现或多或少的偏移。

    5)级联检测 + 分割精修

    随着语意分割技术的不断成熟,基于深度学习的语意分割已经能够将输入图像进行像素级的分类,而且其精度也越来越高,也就是图片中要素的轮廓越来越精细。

    我们采用以resnet 为主干的分割模型,并结合了自适应感受野、多尺度融合、Coarse-Fine融合、感兴趣区域注意力机制等技术实现了对地面标识的像素级分割。

    为了获取地面标识的实体信息,我们仍然用检测来确定地面标识大致位置,但是不同的是最终由对应区域的地面标识分割语义信息获取最终精确的地面标识位置。

     

    图13.地面标识分割示意图

    以下为部分检测结合精修示例图:

     

      

    图14. 分割精修示例

    语义分割的引入使得地面标识的识别位置精度得到了改善,解决了由检测带来的识别位置精度不鲁棒的问题,使得高精地图地面标识自动化效果上了一个新的台阶。

    但是这种方法稍显繁琐,而且检测和分割任务都需要耗费大量GPU资源,也就是说一张图片需要同时多次GPU运算加上后续的CPU后处理融合才能够得到最终的结果,如果能够将这些步骤优化,那么必然能够简化流程同时节省大量运算资源。

    6)PAnet

    基于以上考虑,我们采用了基于PAnet的检测识别算法。传统的实例分割模型各层中的信息传播不够充分。PAnet较好的解决了这些问题,充分融合了coarse、fine特征,不仅有自顶向下的特征融合还结合了自底向上的特征融合,在高层特征中充分融合进了底层的强定位特征,解决了浅层特征信息丢失的问题。

    另外还结合了自适应特征降采样将不同特征层进行融合提取roi特征做预测,以及添加额外mask前景背景分类分支,使得预测mask更加精确,这些手段结合对于目标检测位置精度有比较大的收益。同时,分割和检测任务结合能够互相促进取得更好的结果。

     

    图 15. PAnet 示意图

    以下为一些算法的识别结果示例。可以看到算法对部分磨损模糊的地面标识也有了一定的宽容度,其位置精度有了巨大的改善。(图中地面标识外框为检测得到的大概位置,内框为根据像素级分割得到的位置,取内框为地面标识最终位置)。

     

     

    图 16. 检测识别实例

    采用上述方案需要将点云投影为2D空间,中间有一定的归一化量化操作,不可避免的会损失一些信息,最直观的是在一些点云反射率较低的地方容易造成目标丢失。如果能够在原始3维点云上提取那么这些问题就迎刃而解。



    7)基于3维点云的目标检测

    基于上面的考虑,我们探索原始点云上的3D物体检测,3D点云识别是各种真实世界应用的一个重要组成部分,如自主导航、重建、VR/AR等。与基于图像的检测相比,激光雷达提供可靠的深度信息,可以用于精确定位物体并表征它们的形状。

    我们探索了多种3维点云识别算法,比如基于bird-view、voxel等的3维点云识别。由于PointRCNN在原始3维点云目标检测上的良好表现,我们采用基于PointRCNN的方法提取地面标识,整个检测框架包括两个阶段:第一阶段将整个场景的点云分割为前景点和背景点,以自下而上的方式直接从点云生成少量高质量的3D proposal。

    第二阶段在规范坐标中修改候选区域获得最终的检测结果,将每个proposal经池化后转换为规范坐标,以便更好地学习局部空间特征,同时与第一阶段中全局语义特征相结合,用于预测Box优化和置信度预测。

     

    图 17. 3维点云检测

    5. 效果与收益

    大数据的支撑使得我们的算法拥有更好的鲁棒性与识别能力。结合算法中各种策略以及多种数据源(点云、可见光等),我们在不断提升地面标识识别精度,其位置精度在Ground Truth 5cm范围区间内达到99%以上,召回也达到了99.99%以上,各项指标都得到了稳步提升。
    上述方案已经正式上线,并处理了大量数据,准召率都达到了生产作业的要求,同时算法对人工作业产线的效率提升作用日益提高。以下是部分效果图: class=""

     图18. 地面标识检测效果图

    6. 展望

    高精地图被称作自动驾驶系统的“眼睛“,与普通地图最大的不同点在于使用主体不同。普通导航地图的使用者是人,用于导航、搜索,而高精地图的使用者是计算机,用于高精度定位、辅助环境感知、规划与决策。因而高精地图对地图要素不仅需要极高的召回率,还需要非常高的位置精度。

    高精地图中要素的识别对技术提出了比较高的要求,纵观整个高精地图产业发展,地图制作逐渐从纯人工过渡到半自动乃至全自动。期间识别技术也不断得到发展与完善,从手动构造特征到自动特征、从2维识别到3维以及更高维识别、从单源识别到多源融合等。

    目前,高精地图多采用人工作业,人工作业质量和效率始终是一个矛盾点,相比之下,机器自动识别有着更高的效率、更低的作业成本以及不亚于人工的作业质量。自动识别的应用必将加速高精地图构建,推动高精地图产业发展。高精度地面标识识别技术已经在高德高精地图内部得到应用,有效提升了数据制作效率与制作质量,为高德构建高精地图提供坚实的技术支撑。

  • 相关阅读:
    angular2中*ngFor同时适用*ngIf
    win10 正确安装node-sass方式
    ios10禁止用户缩放
    ubuntu切换全屏
    编译scss文件夹
    清除select中的三角形(下拉)
    js中的!!
    scss封装css3兼容性
    js获取当前时间
    Sql Server 数据分页
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/12624283.html
Copyright © 2011-2022 走看看