你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

深度学习在交通标志检测与精细分类中的应用

2020 年 3 月 04 日

深度学习在交通标志检测与精细分类中的应用

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(时间差为零)的目标。


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


2020 年 3 月 04 日 14:48311

评论

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

Docker 容器健康检查

K8sCat

Docker Dockerfile HEALTHCHECK

Soul网关源码阅读(九)插件配置加载初探

Java 源码阅读 网关

从Gartner 最新“客户之选”报告,看国内外RPA的差异化竞争

王吉伟频道

RPA SaaS 机器人流程自动化 Gartner

借朋友钱后,对方不还怎么办?

石云升

28天写作 借钱

春节无法线下社交聚会,来线上“一起X”共享体验

ZEGO即构

2021年国产数据库名录和产品信息一览

墨天轮

数据库 大数据 程序员 运维 SQL优化

一周信创舆情观察(1.11~1.17)

统小信uos

android高级开发面试!面试中Handler这些必备知识点你都知道吗?面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

突破存储瓶颈,打通高性能计算的“最后一公里“

浪潮云

高性能 存储

盘点12个Python数据可视化库,通吃任何领域

博文视点Broadview

数据库周刊56丨17家数据库厂商2020大事件盘点;第十届PG中国技术大会圆满举办;pg wal目录膨胀异常分析;Oracle RAC等待事件总结;云和恩墨技术通讯2020年刊特辑……

墨天轮

MySQL 数据库 oracle postgre

Java 程序经验小结:接口优先于反射机制

后台技术汇

28天写作

19年末我从外包辞职了,10000+小时后,走进字节跳动拿了offer

Java架构追梦

Java 架构 字节跳动 面试题 面试经历

六步带你完成博流wifi模组对接华为云流程

华为云开发者社区

网络 华为云 sdk 博流 wifi模组

17家国产数据库厂商的2020年度事件大盘点:项目签约与验收、新版本发布等

墨天轮

数据库 国产化

一个不兼容的 JS 方法,让你的网站发生崩溃

老魚

JavaScript 网站 程序猿 移动端

全网最全!彻底弄透Java处理GMT/UTC日期时间

YourBatman

GMT UTC JSR310 TimeZone ZoneId

【转载】Springboot2.x的AOP默认代理方式

程序员架构进阶

Java aop SpringBoot 2 动态代理

Elasticsearch document id 生成方式

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

架构师week9 总结

Geek_xq

Apay矿机系统开发

v16629866266

Materialize MySQL引擎:MySQL到Click House的高速公路

华为云开发者社区

MySQL 数据 Clickhouse 存储 materialize

【CSS】带边框的三角形(position)

学习委员

css3 前端 html/css CSS小技巧 28天写作

创造高效能源管理方案,3D 可视化技术成为进展新思路

一只数据鲸鱼

物联网 数据可视化 3D可视化 绿色能源 智慧能源

云课堂开发实践:白板教程

拍乐云Pano

音视频 在线教育 RTC 互动白板 在线白板

突破开源Redis的内存限制,存算分离的GaussDB到底有多能“装”?

华为云开发者社区

redis 存储 华为云 GaussDB 存算分离

JUST技术:提升基于GPS轨迹的路网推测精确度

京东科技开发者

人工智能

安卓开发视频教程!2021年Android常见面试题,附面试题答案

欢喜学安卓

android 程序员 面试 移动开发

场外OTC交易系统开发|场外OTC交易软件APP开发

开發I852946OIIO

系统开发

架构师week9 作业

Geek_xq

远程探视正在取代亲自探视

anyRTC开发者

ios android 音视频 WebRTC 直播

PingCAP DevCon 现场直播

PingCAP DevCon 现场直播

深度学习在交通标志检测与精细分类中的应用-InfoQ