思路
本文将主要介绍高德在高精地图标注地面标识识别上的技术演进,这些技术手段在不同时期服务了高精地图标注产线需求,为高德地图标注构建高精度地图标注提供了基础的技术保证。
地面标识识别,指在地图标注道路中识别出各种类型的地面标识元素,如地面箭头、地面文字、时间、地面数字、减速带、车距确认线、减速丘、人行横道、停止让行线、减速让行线等。这些自动化识别结果将作为生产数据交付给地图标注生产产线,经过制作后演变成服务于自动驾驶、车载导航、移动导航的地图标注。
高精地图标注一般对各个地图标注要素精度至少有着厘米级的要求,所以相对于普通地图标注来说需要更高的位置精度,这也是与普通地图标注识别的最大不同,所以探索如何将地面标识识别得又全又准是我们一直努力的方向。
地面标识识别有两大难点:一是地面标识本身的种类、大小繁多,二是地面标识易被磨损遮挡,清晰度参差不齐,这给高精度识别带来了巨大的挑战。
1)地面标识种类繁多:实际场景中地面标识种类繁多,在内容、颜色、形状、尺寸等方面均有不同分布。
2)磨损压盖多:地面元素长年累月受车辆、行人等碾压会造成磨损,以及经常存在的堵车等场景更是加大了地面要素被遮挡的可能。所以从激光雷达获取的点云数据和由相机获取的可见光图像数据的质量均参差不齐,对地面标志识别带来了极大的挑战。
地面标识识别需要做的是将地面标识这部分区域提取出来,则最直观的是对其进行阈值分割、骨架提取、连通域分析等传统方法。首先获取点云中地面点集合,接着获取集合中高反射率部分的骨架集合,然后对每个局部骨架区域计算强度截断阈值,最后对区域进行连通区域搜索以及附加降噪措施等。
另外我们也尝试了GrabCut等算法在地面标志上的提取,GrabCut算法对前景和背景分别聚类,得到k组类似的像素集合,然后对前景和背景分别进行高斯混合模型(GMM)建模,判断像素属于地面标志还是背景。在提取疑似地面标识区域后,再经过机器学习模型(SVM等)进行细分类以获得更好的识别效果。
由上图可以看到,对于一些前后景区分比较好的地面标识提取的比较好,但是针对有磨损、模糊、前景背景相似、背景复杂等情况均效果欠佳,容易漏召回且位置精度不高,鲁棒性不强。
2012年Hinton团队提出的Alexnet网络赢得了2012年图像识别大赛冠军,相比传统方法获得显著提升,CNN在图像领域有了明显优势。近几年,基于深度学习的检测识别技术也得到了很大发展。
深度学习时代是数据和硬件驱动的时代,结合部分人工标注以及自动化生成,我们拥有百万级的数据,而且各种场景的数据还在不断丰富,结合算法探索与创新,我们取得了越来越好的技术与业务效果。
目前检测识别技术主要分为两大方向:Two-Stage(如RCNN系列)和One-stage(SSD、YOLO等)。Two-Stage网络优势在于效果整体较好,识别位置较精确,对小目标检测也有一定的竞争力。
One-stage检测识别方法优势在于处理速度较快。高精地图标注不仅需要较高的识别性能、也需要有足够高的识别位置精度,所以我们选择了准确率较高的Two-stage大方向。
结合位置敏感得分图(position-sensitive score map)和位置敏感降采样(position-sensitive roi pooling)等操作,R-FCN算法在目标检测识别上获得了较高的性能和位置精度,我们选择了R-FCN检测算法实现对地面标识的检测识别。
R-FCN算法基于深度学习的方法,通过学习大量实际场景样本,所以在泛化性上取得了比较大的提升,自动化识别对于不同场景的识别能力有所提高,地面标识召回率得到了较大的改善。算法示意图如下所示:
引入深度学习极大的改善了高精地图标注地面标识自动识别的性能,地面标识召回得到了很大提升,美中不足的是R-FCN存在着一个弊端就是其输出的最终检测位置是基于地面标识类别的得分,但往往得分最高的位置并不一定跟实际位置最贴合,所以在位置预测精度上,R-FCN并不完美。
随着深度学习的发展以及业界对目标检测识别位置精度的要求不断提高,更多高精度检测识别算法被提了出来,如Iou-Net等。
我们适时采用了更加先进的识别算法,以期获得更加精准的位置精度来满足产线业务需求,结合级联检测,利用Deformable-Conv自适应感受野等技术提升算法识别精度。
该算法不同于传统算法对roi进行一次预测回归得到最终位置,而是通过级联的形式不断修正预测的位置和实际位置的偏差,每经过一个级联回归器,算法识别结果均会更加贴合真值,这非常有利于提高识别精度,契合高精地图标注对目标位置精度的高要求,最后在召回和位置精度上都达到更好的效果。
通过引入级联形式的检测识别模型令高精产线自动识别能力在识别精度上得到了不错的提升,但我们对自动识别位置精度提升的挖掘是无止尽的,所以有了以下的方案。
设想一下,如果我们在地面标识区域进行局部的位置回归,那么网络就能够聚焦到更加细微的地面标识区域,最终得到更加接近边界的位置。结合实际在做地面标志识别时,我们将容易造成精度问题的部分单独做位置精修,得到了更加精细的位置。
采用检测+回归技术方案实现了更加好的位置检测精度,让我们离“真实世界”更进了一步。其缺点是技术方案流程较长,不够简洁美观。
4)基于角点的检测
基于角点回归的目标检测方法,使用单个卷积神经网络预测两组热力图来表示不同物体类别的角的位置,即将目标边界框检测为一对关键点(即边界框的左上角和右下角),以及每个检测到的角点的嵌入向量。其中角点用于确定目标位置,嵌入向量用于对属于同一目标的一对角点进行分组。
此种方法简化了网络的输出,通过将目标检测为成对关键点,消除了现有的检测器设计中对特征层需要大量anchors的弊端,因为大量anchors造成了大量的重叠以及正负样本不均衡。同时为了产生更紧密的边界框,网络还预测偏移以精细调整角点的位置。通过预测热力图、嵌入向量、以及偏移最终得到了精确的边界框。
图 9 角点检测示意图
由于在检测任务中需要获取相同尺寸的特征图对目标进行位置回归、类别分类等,算法会对其进行量化以及降采样等操作,不可避免会有精度上的损失。这个弊端带来的最大影响就是经由检测回归出的位置不够鲁棒,在某些情况下会出现或多或少的偏移。
随着语意分割技术的不断成熟,基于深度学习的语意分割已经能够将输入图像进行像素级的分类,而且其精度也越来越高,也就是图片中要素的轮廓越来越精细。
我们采用以resnet 为主干的分割模型,并结合了自适应感受野、多尺度融合、Coarse-Fine融合、感兴趣区域注意力机制等技术实现了对地面标识的像素级分割。
为了获取地面标识的实体信息,我们仍然用检测来确定地面标识大致位置,但是不同的是最终由对应区域的地面标识分割语义信息获取最终精确的地面标识位置。
语义分割的引入使得地面标识的识别位置精度得到了改善,解决了由检测带来的识别位置精度不鲁棒的问题,使得高精地图标注地面标识自动化效果上了一个新的台阶。
但是这种方法稍显繁琐,而且检测和分割任务都需要耗费大量GPU资源,也就是说一张图片需要同时多次GPU运算加上后续的CPU后处理融合才能够得到最终的结果,如果能够将这些步骤优化,那么必然能够简化流程同时节省大量运算资源。
6)PAnet
基于以上考虑,我们采用了基于PAnet的检测识别算法。传统的实例分割模型各层中的信息传播不够充分。PAnet较好的解决了这些问题,充分融合了coarse、fine特征,不仅有自顶向下的特征融合还结合了自底向上的特征融合,在高层特征中充分融合进了底层的强定位特征,解决了浅层特征信息丢失的问题。
另外还结合了自适应特征降采样将不同特征层进行融合提取roi特征做预测,以及添加额外mask前景背景分类分支,使得预测mask更加精确,这些手段结合对于目标检测位置精度有比较大的收益。同时,分割和检测任务结合能够互相促进取得更好的结果。
图 12 PAnet 示意图
以下为一些算法的识别结果示例。可以看到算法对部分磨损模糊的地面标识也有了一定的宽容度,其位置精度有了巨大的改善。(图中地面标识外框为检测得到的大概位置,内框为根据像素级分割得到的位置,取内框为地面标识最终位置)。
图 13 检测识别实例
采用上述方案需要将点云投影为2D空间,中间有一定的归一化量化操作,不可避免的会损失一些信息,最直观的是在一些点云反射率较低的地方容易造成目标丢失。如果能够在原始3维点云上提取那么这些问题就迎刃而解。
7)基于3维点云的目标检测
基于上面的考虑,我们探索原始点云上的3D物体检测,3D点云识别是各种真实世界应用的一个重要组成部分,如自主导航、重建、VR/AR等。与基于图像的检测相比,激光雷达提供可靠的深度信息,可以用于精确定位物体并表征它们的形状。
我们探索了多种3维点云识别算法,比如基于bird-view、voxel等的3维点云识别。由于PointRCNN在原始3维点云目标检测上的良好表现,我们采用基于PointRCNN的方法提取地面标识,整个检测框架包括两个阶段:第一阶段将整个场景的点云分割为前景点和背景点,以自下而上的方式直接从点云生成少量高质量的3D proposal。
第二阶段在规范坐标中修改候选区域获得最终的检测结果,将每个proposal经池化后转换为规范坐标,以便更好地学习局部空间特征,同时与第一阶段中全局语义特征相结合,用于预测Box优化和置信度预测。
大数据的支撑使得我们的算法拥有更好的鲁棒性与识别能力。结合算法中各种策略以及多种数据源(点云、可见光等),我们在不断提升地面标识识别精度,其位置精度在Ground Truth 5cm范围区间内达到99%以上,召回也达到了99.99%以上,各项指标都得到了稳步提升。
上述方案已经正式上线,并处理了大量数据,准召率都达到了生产作业的要求,同时算法对人工作业产线的效率提升作用日益提高。以下是部分效果图:
高精地图标注被称作自动驾驶系统的“眼睛“,与普通地图标注最大的不同点在于使用主体不同。普通导航地图标注的使用者是人,用于导航、搜索,而高精地图标注的使用者是计算机,用于高精度定位、辅助环境感知、规划与决策。因而高精地图标注对地图标注要素不仅需要极高的召回率,还需要非常高的位置精度。
高精地图标注中要素的识别对技术提出了比较高的要求,纵观整个高精地图标注产业发展,地图标注制作逐渐从纯人工过渡到半自动乃至全自动。期间识别技术也不断得到发展与完善,从手动构造特征到自动特征、从2维识别到3维以及更高维识别、从单源识别到多源融合等。
目前,高精地图标注多采用人工作业,人工作业质量和效率始终是一个矛盾点,相比之下,机器自动识别有着更高的效率、更低的作业成本以及不亚于人工的作业质量。自动识别的应用必将加速高精地图标注构建,推动高精地图标注产业发展。高精度地面标识识别技术已经在高德高精地图标注内部得到应用,有效提升了数据制作效率与制作质量,为高德构建高精地图标注提供坚实的技术支撑。