InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

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

  • 2020-03-04
  • 本文字数:2713 字

    阅读完需:约 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(时间差为零)的目标。


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


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-03-04 14:48736

评论 1 条评论

发布
用户头像
作者你好,请问您这个开源源码吗?

2022-01-01 20:21
回复
没有更多了
发现更多内容

深入理解Linux内核 RCU 机制

赖猫

Linux linux编程 Linux内核

翻译:《实用的Python编程》04_02_Inheritance

codists

Python 继承 inheritance

职场求生攻略答疑篇之 5 —— 我,程序员,非常焦虑

臧萌

职场 成长

智能炒币机器人软件开发|智能炒币机器人APP系统开发

系统开发

JAVA已经呈饱和趋势了吗?

cdhqyj

Java 程序员 工作 IT

十四五,鹏城应作先锋看,山河同襄智能体

脑极体

新人报道

shun123456789

Linux/Centos Epoll 原理解析

赖猫

Linux 高并发 epoll

拼多多五面面经(Java岗),全面涵盖Java基础到高并发级别

Java架构之路

Java 程序员 架构 面试 编程语言

芯翌科技领跑NIST-FRVT戴口罩人脸识别评测,助力后疫情时代科技创新

朋湖网

Java程序员福利!2021年最新17套完整版一线大厂面试真题

Java架构追梦

Java 架构 面试 金三银四

LDAP身份认证管理最佳实践

龙归科技

服务器 ldap 客户端

Alluxio 助力 Kubernetes,加速云端深度学习

阿里巴巴云原生

人工智能 大数据 容器 云原生 k8s

收藏!这些 IDE 使用技巧,你都知道吗

阿里巴巴云原生

Java ide 云原生 API 调度

Go语言学习笔记:抓取XKCD中文站的漫画

worry

Go 语言

女神营业!云通信产品运营带你玩转号码隐私保护:网约车、外卖等O2O行业的最佳实践

阿里云Edge Plus

云通信 通信云

2021最新分享:阿里内部总监手码的“Redis学习手册”风靡全网

比伯

Java 编程 程序员 架构 面试

不吹不黑聊中台

小谢同学

云计算 中台 企业架构

OCE等你加入

滴滴云

云计算 私有云 滴滴夜莺 Obsuite

Kafka 架构中 ZooKeeper 以怎样的形式存在?

码农架构

Java 消息中间件

分布式事务与解决方案

一个大红包

28天写作 3月日更

职场里,对数据库要有敬畏之心!

Simon

MySQL 数据库

WebRTC 音视频同步原理与实现

阿里云视频云

阿里云 音视频 WebRTC 流媒体 视频云

音视频之opengl渲染图片

赖猫

音视频

半个多月时间4面阿里,已经成功拿下offer,分享一下个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

SRS流媒体服务器源码分析--RTMP消息play

赖猫

音视频 流媒体 SRS 流媒体开发

话说cas

木子的昼夜

接口测试--apipost接口断言详解

测试人生路

接口

容器 & 服务:K8s 与 Docker 应用集群 (四)

程序员架构进阶

Docker Kubernetes 容器 28天写作 3月日更

2021金三银四必备:“基础-中级-高级”Java程序员面试复习路线

比伯

Java 编程 程序员 架构 面试

Linux内核 设备树操作常用API

赖猫

Linux Linux内核

  • 扫码添加小助手
    领取最新资料包
深度学习在交通标志检测与精细分类中的应用_文化 & 方法_高德技术_InfoQ精选文章