导读
数据对于地图来说十分重要,没有数据,就没有地图服务。用户在使用地图服务时,不太会想到数据就像冰山一样,用户可见只是最直接、最显性的产品功能部分,而支撑显性部分所需要的根基,往往更庞大。
地图数据最先是从专业采集来的,采集工具就是车、自行车、飞机和卫星影像等,近两年有了利用智能硬件的众包采集。采集之后,就是把数据更新的速度和精准度都无限提升。因为地面上变化太快了,用户越来越依赖于地图应用。所以数据更新的速度和数据的准确度就是在乎用户体验的地图公司的第一要务了。而数据更新的第一步,就是交通标志检测。
本文将主要介绍机器学习技术在高德的地图数据生产的具体应用,这些技术方案和设计都已经过验证,取得了不错的效果,并且为高德地图数据的快速更新提供了基础的技术保证。
“交通标志检测”定义
交通标志检测,特指在普通街景图像上通过自动化手段检测出各种类型的交通标志,如限速、禁止掉头、人行横道和电子眼等。这些检测结果将作为生产数据交付给地图数据制作流程,最终演变为服务于广大用户的地图数据。
难点与挑战
交通标志检测的主要难点有样式繁杂,且在拍摄过程中受自然环境的影响较大。此外,为满足数据更新的速度和数据准确度的要求,对于算法的性能要求也格外严格。
样本形态差异大
交通标志的形态差异主要体现在:
-
类型繁多:国标定义的交通标志有几百个类型;
-
形状多样:常见交通标志的形状有三角形、圆形、方形、菱形、八边形等,还有地面标线、电子眼、信号灯,以及限高杆、栅栏等物理设施;
-
颜色分布广泛:常见的有黄色、红色、蓝色、绿色、黑色、白色等;
-
图像内尺寸差异大:从几百像素(如方牌、人行横道等)到十几像素(如电子眼)不均匀分布;
图1 常见道路交通标志(标牌类)
自然场景下变化多端
在自然场景下,交通标志存在树木或车辆遮挡、磨损等情况;天气、季节等也会影响到图像采集过程中,造成图像模糊、颜色失真等。
图2 自然场景下拍摄的交通标志
一些外形与交通标志相似的标牌,如商户的招牌、交通公益广告牌等,对算法的准确率造成极大的挑战。
图3 类似交通标志的噪声示例
性能要求
-
准召率:我们的应用场景中对于召回率和准确率的要求极高,任何未召回都会导致数据更新的延迟,而错召回则会影响作业效率与作业周期,最终对数据的快速更新造成影响;
-
吞吐量:高德每天需要处理上亿张图片,这就要求我们的算法不仅效果要好,处理速度也必须够快,以免造成数据积压,影响地图数据的更新时效;
-
扩展性:交通标志的类型不是一成不变的(国标会存在调整,不同国家和地区之间各有特色),因此需要算法环节具有非常好的扩展性,能够快速适应新增的各种交通标志类型;
高德地图中的交通标志检测方案
当前学术界针对目标检测任务常用的深度学习模型一般都采用End2End的方式进行训练,以得到全局最优的检测效果。这个方案在使用时非常简单,只需要标注好“几百类物体的样本”,然后放到深度学习的框架里进行迭代训练,就可以获得最终模型,主要可以分为Two Stage(FasterRCNN[1])和One Stage(YOLO[2],SSD[3])两大类。
但是在实际使用过程中,需要应对如下问题:
-
样本标注成本高:所有训练样本都需要进行全类别标注,当有新增类别时需要将历史训练样本全量补标,成本极高;
-
无法单类迭代:由于交通标志出现的频率和重要性不等,业务上对于部分类型(如电子眼、限速牌等)的准召率要求更高。但是End2End的模型必须针对所有类型全量迭代,无法优化单一类型,导致算法迭代和测试成本极高;
-
模型训练难度大:我们需要处理的交通标志有几百类,且各自出现频率差异很大,使用单一目标检测模型完成如此巨大的分类任务,模型训练难度太大,收敛缓慢,召回率、准确率上难以平衡;
结合通用目标检测技术的发展以及高德地图对于交通标志检测的需要,我们最终选择了Faster-RCNN作为基础检测框架,它的检测效果更好(尤其是针对小目标),独立的RPN网路也可以满足扩展性要求。速度方面,我们也进行了针对性的优化调整。
在实际使用时,我们将检测框架分为目标检测与精细分类两阶段:
图4 交通标志检测的目标检测和精细分类阶段
目标检测阶段
目标检测阶段的目的是通过Faster-RCNN在图片中检测所有的交通标志,并进行粗分类,要求极高的召回率和执行速度。在实际使用时,我们采用了如下策略来提升算法能力:
-
效果方面:将检测目标根据外形特征分为N大类(如圆形、三角形、方形,以及高宽比异常的人行横道等),再为每一类配置专属的RPN网络,各个RPN根据对应的尺寸特性设计Anchor的Ratio和Scale;不同RPN根据需要使用不同层的特征图,设计更有针对性;
-
效果方面,针对各个类型样本分布不均匀问题,使用多种样本增强手段,并在训练过程中使用OHEM等方式进一步调整样本分布;
-
效果方面,还借鉴了IoU-Net、Soft-NMS等方案,进一步提升检测效果;
-
性能方面,各个大类之间共享基础卷积层,保证检测时间不会过分增长;
-
扩展性方面,对于新增类型,理想情况下只需要新增一个RPN网络单独迭代,可以不对其他类型的效果造成任何影响(如下图,RPN1和RPN2完全独立);
图5 多RPN设计示意图
精细分类阶段
精细分类阶段的目的是对目标检测阶段得到候选框进行精细分类并滤除噪声,保证极高的召回率和准确率。在实际实现中,还使用以下策略来提升效果:
-
为每个大类配置独立的精细分类网络,互相之间不干扰;各个大类的迭代完全独立和并行,可以多人并行研发,有效缩短研发周期;
-
针对各个大类的难易程度,选择不同计算复杂度的网络来完成精细分类和噪声抑制,避免因为某些类型复杂度过高产生效率瓶颈;
-
样本方面,各个大类可以独立收集样本,可以针对特定类型进行收集和标注,训练和测试集合的构建效率大幅提升;
如下图,针对圆形标牌,其差异比较明确,可以使用简单网络;针对方牌,需要根据文字布局和内容来区分正负样本,分类难度大,因此必须使用较深的网络:
图6 精细分类模块示意图
由于同时使用了多个模型,上述方案会导致服务器的显存占用显著增加,对计算资源产生额外要求。针对该问题,我们针对深度学习框架进行优化,动态分配并在各模型间共享临时缓冲区,并裁剪框架的反向传播功能,最终使得显存占用降低50%以上。
效果与收益
上述方案已经正式上线,准召率都达到了生产作业的要求,日均图片吞吐量在千万以上。以下是部分效果图(不同框代表不同检测结果):
图7 交通标志检测效果图
小结
交通标志检测技术已经在高德地图内部得到应用,有效提升了高德地图的数据制作效率,达成地图数据更新速度接近T+0(时间差为零)的目标。
目前我们也在把机器学习技术用于数据的自动化制作,进一步减少现实世界和地图数据之间的差异,做到“连接真实世界,让出行更美好”。
关注高德技术,找到更多出行技术领域专业内容
来源:oschina
链接:https://my.oschina.net/u/4256405/blog/4269348