FinOps有望降低企业50%+的云成本! 了解详情
写点什么

机器学习在高德起点抓路中的应用实践

  • 2019-07-29
  • 本文字数:2761 字

    阅读完需:约 9 分钟

机器学习在高德起点抓路中的应用实践

1 导读

数据对于地图来说十分重要,没有数据,就没有地图服务。用户在使用地图服务时,不太会想到数据就像冰山一样,用户可见只是最直接、最显性的产品功能部分,而支撑显性部分所需要的根基,往往更庞大。


地图数据最先是从专业采集来的,采集工具就是车、自行车、飞机和卫星影像等,近两年有了利用智能硬件的众包采集。采集之后,就是把数据更新的速度和精准度都无限提升。因为地面上变化太快了,用户越来越依赖于地图应用。所以数据更新的速度和数据的准确度就是在乎用户体验的地图公司的第一要务了。而数据更新的第一步,就是交通标志检测。


本文将主要介绍机器学习技术在高德的地图数据生产的具体应用,这些技术方案和设计都已经过验证,取得了不错的效果,并且为高德地图数据的快速更新提供了基础的技术保证。

2 “交通标志检测”定义

交通标志检测,特指在普通街景图像上通过自动化手段检测出各种类型的交通标志,如限速、禁止掉头、人行横道和电子眼等。这些检测结果将作为生产数据交付给地图数据制作流程,最终演变为服务于广大用户的地图数据。

3 难点与挑战

交通标志检测的主要难点有样式繁杂,且在拍摄过程中受自然环境的影响较大。此外,为满足数据更新的速度和数据准确度的要求,对于算法的性能要求也格外严格。

3.1 样本形态差异大

交通标志的形态差异主要体现在:


  • 类型繁多:国标定义的交通标志有几百个类型;

  • 形状多样:常见交通标志的形状有三角形、圆形、方形、菱形、八边形等,还有地面标线、电子眼、信号灯,以及限高杆、栅栏等物理设施;

  • 颜色分布广泛:常见的有黄色、红色、蓝色、绿色、黑色、白色等;

  • 图像内尺寸差异大:从几百像素(如方牌、人行横道等)到十几像素(如电子眼)不均匀分布;



图 1 常见道路交通标志(标牌类)

3.2 自然场景下变化多端

在自然场景下,交通标志存在树木或车辆遮挡、磨损等情况;天气、季节等也会影响到图像采集过程中,造成图像模糊、颜色失真等。



图 2 自然场景下拍摄的交通标志


一些外形与交通标志相似的标牌,如商户的招牌、交通公益广告牌等,对算法的准确率造成极大的挑战。



图 3 类似交通标志的噪声示例

3.3 性能要求

  • 准召率:我们的应用场景中对于召回率和准确率的要求极高,任何未召回都会导致数据更新的延迟,而错召回则会影响作业效率与作业周期,最终对数据的快速更新造成影响;

  • 吞吐量:高德每天需要处理上亿张图片,这就要求我们的算法不仅效果要好,处理速度也必须够快,以免造成数据积压,影响地图数据的更新时效;

  • 扩展性:交通标志的类型不是一成不变的(国标会存在调整,不同国家和地区之间各有特色),因此需要算法环节具有非常好的扩展性,能够快速适应新增的各种交通标志类型;

4 高德地图中的交通标志检测方案

当前学术界针对目标检测任务常用的深度学习模型一般都采用 End2End 的方式进行训练,以得到全局最优的检测效果。这个方案在使用时非常简单,只需要标注好“几百类物体的样本”,然后放到深度学习的框架里进行迭代训练,就可以获得最终模型,主要可以分为 Two Stage(FasterRCNN[1])和 One Stage(YOLO[2],SSD[3])两大类。


但是在实际使用过程中,需要应对如下问题:


  • 样本标注成本高:所有训练样本都需要进行全类别标注,当有新增类别时需要将历史训练样本全量补标,成本极高;

  • 无法单类迭代:由于交通标志出现的频率和重要性不等,业务上对于部分类型(如电子眼、限速牌等)的准召率要求更高。但是 End2End 的模型必须针对所有类型全量迭代,无法优化单一类型,导致算法迭代和测试成本极高;

  • 模型训练难度大:我们需要处理的交通标志有几百类,且各自出现频率差异很大,使用单一目标检测模型完成如此巨大的分类任务,模型训练难度太大,收敛缓慢,召回率、准确率上难以平衡;


结合通用目标检测技术的发展以及高德地图对于交通标志检测的需要,我们最终选择了 Faster-RCNN 作为基础检测框架,它的检测效果更好(尤其是针对小目标),独立的 RPN 网路也可以满足扩展性要求。速度方面,我们也进行了针对性的优化调整。


在实际使用时,我们将检测框架分为目标检测与精细分类两阶段:



图 4 交通标志检测的目标检测和精细分类阶段

4.1 目标检测阶段

目标检测阶段的目的是通过 Faster-RCNN 在图片中检测所有的交通标志,并进行粗分类,要求极高的召回率和执行速度。在实际使用时,我们采用了如下策略来提升算法能力:


  • 效果方面:将检测目标根据外形特征分为 N 大类(如圆形、三角形、方形,以及高宽比异常的人行横道等),再为每一类配置专属的 RPN 网络,各个 RPN 根据对应的尺寸特性设计 Anchor 的 Ratio 和 Scale;不同 RPN 根据需要使用不同层的特征图,设计更有针对性;

  • 效果方面,针对各个类型样本分布不均匀问题,使用多种样本增强手段,并在训练过程中使用 OHEM 等方式进一步调整样本分布;

  • 效果方面,还借鉴了 IoU-Net、Soft-NMS 等方案,进一步提升检测效果;

  • 性能方面,各个大类之间共享基础卷积层,保证检测时间不会过分增长;

  • 扩展性方面,对于新增类型,理想情况下只需要新增一个 RPN 网络单独迭代,可以不对其他类型的效果造成任何影响(如下图,RPN1 和 RPN2 完全独立);



图 5 多 RPN 设计示意图

4.2 精细分类阶段

精细分类阶段的目的是对目标检测阶段得到候选框进行精细分类并滤除噪声,保证极高的召回率和准确率。在实际实现中,还使用以下策略来提升效果:


  • 为每个大类配置独立的精细分类网络,互相之间不干扰;各个大类的迭代完全独立和并行,可以多人并行研发,有效缩短研发周期;

  • 针对各个大类的难易程度,选择不同计算复杂度的网络来完成精细分类和噪声抑制,避免因为某些类型复杂度过高产生效率瓶颈;

  • 样本方面,各个大类可以独立收集样本,可以针对特定类型进行收集和标注,训练和测试集合的构建效率大幅提升;


如下图,针对圆形标牌,其差异比较明确,可以使用简单网络;针对方牌,需要根据文字布局和内容来区分正负样本,分类难度大,因此必须使用较深的网络:



图 6 精细分类模块示意图


由于同时使用了多个模型,上述方案会导致服务器的显存占用显著增加,对计算资源产生额外要求。针对该问题,我们针对深度学习框架进行优化,动态分配并在各模型间共享临时缓冲区,并裁剪框架的反向传播功能,最终使得显存占用降低 50%以上。

5 效果与收益

上述方案已经正式上线,准召率都达到了生产作业的要求,日均图片吞吐量在千万以上。以下是部分效果图(不同框代表不同检测结果):





图 7 交通标志检测效果图

6 小结

交通标志检测技术已经在高德地图内部得到应用,有效提升了高德地图的数据制作效率,达成地图数据更新速度接近 T+0(时间差为零)的目标。


目前我们也在把机器学习技术用于数据的自动化制作,进一步减少现实世界和地图数据之间的差异,做到“连接真实世界,让出行更美好”。


本文转载自公众号高德技术(ID:amap_tech)


原文链接


https://mp.weixin.qq.com/s/IJUMCOBhgXHv7VC1YT4q_g


2019-07-29 08:002143

评论

发布
暂无评论
发现更多内容

爱奇艺数据质量监控的探索和实践

爱奇艺技术产品团队

监控 数据治理 pingback

Vue进阶(幺贰捌):Vue插槽:slot、slot-scope与指令v-slot应用讲解

No Silver Bullet

Vue 插槽 10月月更

211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer

Java 程序员 架构 编程语言

架构实战营 毕业设计项目

蔸蔸

聊一聊物联网嵌入式芯片的内容结构

华为云开发者联盟

物联网 内存 存储 嵌入式 芯片

OBServer启动恢复解析

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 数据库大赛

2021年10月4日Facebook史上最严重宕机复盘分析

郑州埃文科技

ip数据 网络波动 网动仪

9. python 入门教程快速复习,序列,数值类型,字符串方法,列表、集合、字典方法,文件操作,解析式

梦想橡皮擦

10月月更

盘点后端领域的点点滴滴 | 引航计划|后端

xcbeyond

后端 引航计划 内容合集 技术专题合集

语音翻译器 Tech Support

凌天一击

什么是激光雷达的“发动机技术”?一文讲透行业技术壁垒 (一)

SOA开发者

不可思议!阿里大佬熬夜9天整理出749的HotSpot VM源码笔记

Java 架构 面试 程序人生 编程语言

上汽零束汽车智能应用创意大赛,初赛作品评选将启动!

SOA开发者平台

上汽零束汽车智能应用创意大赛,初赛作品评选将启动!

SOA开发者

“云智一体”系列白皮书智能视频篇来了!

百度大脑

人工智能

直播回顾 | 云和恩墨范计杰:Oracle DBA的SQL编写技能提升宝典(含SQL资源)

墨天轮

oracle sql 函数

系统召回太慢?上 Milvus × PaddleRec 双剑合璧大法!

Zilliz

数据库 推荐算法 召回 向量检索

高并发中的 限流、熔断、降级、预热、背压!

进击的王小二

高并发 java

想了解Xtrabackup备份原理和常见问题分析,看这篇就够了

华为云开发者联盟

MySQL 数据库 华为云 备份 XtraBackup

看一遍就理解:MVCC原理详解

Java MySQL 架构 面试 后端

华为技术官珍藏版:SpringBoot全优笔记,面面俱到,实在太全面了

Java 架构 面试 微服务 后端

Superior Scheduler:带你了解FusionInsight MRS的超级调度器

华为云开发者联盟

大数据 hadoop 开源 调度器 FusionInsight MRS

在GitHub标星86k+霸榜的某宝Redis核心原理深度实践PDF限时开源!

Java 架构 面试 程序人生 编程语言

什么是激光雷达的“发动机技术”?一文讲透行业技术壁垒(二)

SOA开发者

华为云GaussDB(for openGauss) 同城双集群高可用方案正式发布

华为云数据库小助手

GaussDB GaussDB(for openGauss) 华为云数据库

第 13 章 -《Linux 一学就会》- Linux文件系统结构

学神来啦

Linux 运维 linux学习

模块八:设计消息队列存储消息数据的MYSQL表格

kk

架构训练营

汽车域控制器分类(下):自动驾驶域控制器、车身域控制器

SOA开发者

企业运维监控管理系统我给推荐行云管家!

行云管家

云计算 运维 运维监控 云管平台

细节理解!阿里内部Java高并发系统设计全彩手册曝光!霸榜GitHub

进击的王小二

Java 架构 高并发 Java性能调优

汽车域控制器(上):动力域控制器、底盘域控制器、智能座舱域控制器

SOA开发者

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
机器学习在高德起点抓路中的应用实践_AI_亮黄_InfoQ精选文章