写点什么

Uber ATG 数据挖掘:大规模识别真实道路场景用于自动驾驶

  • 2020-07-01
  • 本文字数:4346 字

    阅读完需:约 14 分钟

Uber ATG数据挖掘:大规模识别真实道路场景用于自动驾驶

行人是怎样过马路的?与普遍的看法相反,有时候答案并不像“到对面去”那么简单,Uber 为了实现更加可靠的自动驾驶功能对此数据进行了挖掘研究。



本文最初发表在 Uber 官方博客上,经授权,InfoQ 中文站翻译并分享。

正文

与普遍看法相反,行人过道路有时候并不像“到对面去”那么简单。为了让 Uber 的自动驾驶汽车(SDV)安全可靠的上路,我们的机器学习团队必须能够预测现实世界中行人过马路时可能出现的情况。为了解这种情况可能会以何种形式出现,我们需要根据真实世界里行人的行为度量多种可能的情况变化。这些度量有助于推动以下工作:


  • 感知和预测:使机器学习模型具有全面的、多样化的和持续编策的训练样本(提高精度/召回率,减少训练时间,减少计算)。

  • 动作规划:基于场景需求的能力开发(提高测试通过率,降低干预率)。

  • 标注:使目标标注工作的场景全面、多样且不断更新(提高标注质量,加快标注速度,降低生产成本)。

  • 虚拟仿真:与真实场景相匹配的测试(提高测试质量和测试运行效率,降低计算成本)。

  • 安全性和系统工程:有统计学意义的规范和与现实世界相符的能力需求(改进开发质量,提高开发速度,降低开发成本)。


为了度量现实世界中的场景,让我们到街上研究下行人如何过马路。

驱车观察行人的行为

为了解行人过马路的各种方式,我们首先驾驶一辆 SDV 在一个真实的街区观察行人的行为。当司机在方向盘后坐定,SDV 的感知系统被激活,车载电脑就会检测、跟踪并记录它看到的行人活动。


对于这个案例分析,我们取一段 312 英里的(SDV 在附近 1.7 平方英里范围内非连续行驶超过 26 个小时)样本,如图 1 所示:



图 1 在这个图中,竖条高度表示 SDV 在特定车道上行驶的次数。(查看动图


图 1 中的竖条高度表示 SDV 在特定车道上行驶的次数。交叉路口的“尖峰”是由于 SDV 在“网格覆盖”驾驶模式下多次穿过同一十字路口。


一个理想的驾驶样本在相同天气条件下、每小时、每天、每星期、每月在每条街道上行驶的英里数应该相同。本分析中使用的数据样本为 SDV 在超过 26 小时中行驶的 312 英里,因此,需要特别强调下由此产生的选择偏差。例如,行驶路线并没有同等地覆盖所有街道(如图 1 所示),而时间主要是在工作日的上午 9 点到下午 3 点之间(如图 2 所示)。这告诉我们,关于行人行为的最终度量结果将倾向于描述这些街道和时间。



图 2 这张以小时和天为单位的行程热图显示,在这个样本数据集中,更多的里程数来自上午和下午,主要是在周一和周三之间


“行人过马路”场景数据挖掘


图 3 我们可以在地图上生成 SDV 感知系统收集的单个检测数据的动画,来可视化地验证数据挖掘场景的质量。(查看动图


虽然 SDV 感知系统的设计初衷是检测行人,但实际上只有一小部分行人会过马路。为了识别这一场景,我们对每一份行人检测数据进行了挖掘,以找出那些真正穿过街道的行人,就像开采一座山的钻石一样。这是根据由两部分组成的场景定义完成的:一个是行人进入街道(开始过马路),然后离开街道到达另一侧(结束过马路)。在本例中,在 312 英里的行程中,数据挖掘识别出了 2404 个行人过马路的场景,如下图 4 所示,在地图上显示出了这些观测结果的“开始”和“结束”:



图 4 地图上行人过马路的“始点”和“终点”提供了行人过路地点的重要资料。(查看动图


在我们的分析中,我们有成千上万个行人过马路的样本。下面,让我们更进一步地看下通过数据挖掘得出的度量值,以便更好地理解行人是如何到达马路另一边的。

分析“行人过马路”场景

行人过马路的场景有很多重要的度量值,包括行人过马路的速度、道路宽度、步行距离、过马路时长、在人行横道上行走的距离以及过马路时的红绿灯状态。就像在跑道上观察一个短跑运动员一样,这些度量值描述了该场景的实际情况(例如,短跑运动员 14 秒跑完 100 米)。首先,让我们分析一项指标:过马路的速度。

最快和最慢的行人


图 5 平均过马路速度的散点图突出显示了 SDV 传感和感知系统观测到的最快和最慢平均速度。(查看动图


图 5 描绘了从 2404 个观察样本中得出的平均过马路速度的散点图,右边显示了最快和最慢的行人。总体上,平均过马路速度为 1.39 m/s±0.019(或 3.11 mph±0.042),置信度 99%,这与美国交通部的研究结果一致。最快的过马路速度是 3.6 米/秒(相当于 7 分 28 秒跑完一英里)。箱形图(图 5 中圆点的右测)表明大多数观测值都聚集在平均值附近。


下面我们通过下面的分析更细致地研究下这些值:



图 6 行人过马路平均速度分布图,分为“中等”和“极端”两类,平均而言,行人最有可能以约 1.39 米/秒的速度过马路


从图 6 的分布可以看出,大多数观测值都聚集在均值附近,总体上呈钟形曲线。蓝色和红色分别表示在两个标准差范围内外的值。蓝色表示"中等",在两个标准差内;红色表示"极端",在两个标准差外。


红条显示了轻微的双模态分布(即实际上有“两条”钟形曲线)。蓝色的值(“中等”)表示行人走过马路,红色的值(“极端”)表示行人慢跑过马路(每秒 2.7 米左右,大约是 10 分钟一英里的速度)。


现在,让我们通过添加第二个度量,进入一个二维场景“空间”,进一步研究这个场景的状况。



图 7 包含平均步行速度和行走距离的二维散点图显示,在我们的分析中,大多数行人过马路时以 1.4 m/s 的速度步行了大约 18 米


图 7 是一张二维散点图,包含了与图 6 相同的 2404 个观测值,但现在增加了第二个观测值。在这个图中,x 轴为平均速度观测值,y 轴为行人过马路时的行走距离。


这个图还提供了第二种分类,用于标识经常(“常见”)或不经常(“罕见”)出现的值。该图同时使用了两个分类器(包括前面的量级分类器),蓝色的圆点代表行人过马路的典型方式(“常见和中等”值),黄色的圆点代表非典型但并非明显不常见的过马路方式(“罕见和中等”值),粉色的圆点代表明显不常见的过马路方式(“罕见和极端”值,如快跑通过或慢慢走过一个大的十字路口)。这里的研究发现,有一大群行人以大约 1.4 米/秒的速度步行约 18 米过马路。


让我们再提高下复杂度,增加第三个度量,进入一个三维场景“空间”。



图 8 包含过马路时长的三维散点图,我们从中可以看出行人过马路的速度、行人过马路花费的时间以及马路的宽度。(查看动图


上图包含了和之前一样的 2404 个观测值,但是这次,加上了第三个观测值:行人过马路的时长。增加的 3D 视角提供了我们在之前的分析中没有反映出来的直观知识,比如在较长的距离上以较慢的速度过马路通常需要更多的时间。这也使得场景空间,比如粉色的“罕见和极端”空间,在视觉上更直观。图 9 着重显示了蓝色变化空间(“常见和中等”)中的大量值:



图 9 上面蓝色的“常见和中等”场景使得像仿真这样的团队能够创建“常见和中等”测试集,反映真实的行人过马路情况


仍然,我们还可以采用其他度量来进一步定义“过马路”场景,并提供更丰富的见解。分析四维或四维以上的场景是什么感觉?



图 10 这个七维场景可视化是一个生成更细粒度场景“指纹”、进入到呈现独特观测值过程的窗口。(查看动图


场景可以包含不止三个度量。图 10 的七维“场景空间”可视化包含和之前一样的 2404 个行人过马路场景的观测值,但是这一次,在之前的 3D 可视化图形上增加了其他四个观测值,包括最大步行速度、最小步行速度、行人距离 SDV 的最近距离、行人距离 SDV 的最远距离。“N”维场景空间的形状决定了 SDV 开发工作流的几乎每个阶段,包括为标注和机器学习选择正确的数据,开发反映真实世界的仿真,以及创建数据驱动的安全需求。

一个场景多少观测值就够了?

在你真正知道人们如何过马路之前,你需要观察多少次人们过马路的场景?为了解决这个问题,我们采用置信区间和误差幅度统计。图 11 中的三个图表显示了行人过马路平均速度的统计数据。



图 11 由三个图表构成的演进图记录了观察结果、置信区间和误差幅度,为我们提供了关于“行人过马路”场景更丰富、更细致的统计见解


第一个图表是所有 2404 个行人平均速度观测值的原始图形,数据是按照收集顺序排列的。


图 11 中的第二幅图显示了 95%置信区间内这些速度的累积平均值(粉色虚线)。注意,置信区间随着观察值的增加在均值附近“收敛”。


如第三幅图所示,当置信区间收敛时,估计的误差幅度减小。根据第 2404 次观测,平均过马路速度的估计值为 1.39m/s±0.014,置信度 95%。


给定置信区间和误差统计量,我们如何知道多少观测值就足够了?这取决于度量的内容和要求的误差水平。有趣的是,对平均过马路速度累计观察了大约 1000 次后,误差幅度接近其最低水平,略高于 0.02 米/秒。如果这个误差范围是可以接受的,那么接下来的 1404 次观察就没有必要了。


不过,这个值并不完美。例如,这些度量是基于一个在邻近地区行驶 312 英里的样本,该样本的收集存在地理和时间选择偏差(并没有在所有时间内对邻近地区的所有地点进行同等的观测)。例如,没有观测夜间或周末过马路的情况。此外,“罕见”类过马路的情况对于理解特别重要,但是获取起来特别困难(因为它们……罕见)。但是,“罕见”值的误差幅度也可以计算出来,从而可以得出为建立这些值的统计显著性需要收集的观测数据量。

数据挖掘驱动的自治组织

数据挖掘和分析加速了跨自治组织的开发,在我们的例子中是 SDV。从提供具有系统性、多样性训练样本的机器学习模型到为安全用例和系统工程开发提供统计显著性度量,数据挖掘的场景是一种战略数据资产,为研究人员提供必要的信息,可靠地模拟出真实世界的场景。


数据挖掘在 SDV 开发中的应用不仅限于场景度量。例如,它用于收集对停止标志(不移动的基础设施)的观察,也用于收集对任何移动角色的观察(比如骑摩托车的人)。它还被用于挖掘联网车群中的新数据。设想一下,从数以百万计的车辆中寻找行人过马路的独特样本,直到有足够的观察结果来得出所有地点和时间的每一项度量(包括罕见的和极端的类型)的统计显著性。就像淘金者从沙子中筛选黄金一样,数据挖掘为 SDV 开发筛选数据“黄金”,为开发安全、可靠的自动驾驶交通工具提供便利,助力未来移动工具的发展。


要了解关于 Uber ATG 工程和数据科学的工作,可阅读以下文章:



英文原文:https://eng.uber.com/uber-atg-data-mining


2020-07-01 14:332445
用户头像
赵钰莹 InfoQ 主编

发布了 882 篇内容, 共 641.3 次阅读, 收获喜欢 2679 次。

关注

评论

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

SLB 负载均衡实践

若尘

负载均衡 阿里云 弹性负载均衡 8月日更

手撕环形队列系列三:多生产者并行写入

实力程序员

程序员 数据结构 C语言 编程开发 环形队列

如何在渲染之前等待 Axios 数据?

吴脑的键客

大前端 React axios

架构实战营毕业设计

eoeoeo

架构实战营

积极重夺制造霸主地位,英特尔不玩“纳米游戏”了

E科讯

手撸二叉树之二叉搜索树的最近公共祖先

HelloWorld杰少

数据结构与算法 8月日更

用微服务架构方式交付云服务产品

用友BIP

容器 微服务 专属云

JVM

ltc

JVM

2021最新Java开发者学习路线

策划Java工程师

Java 程序员 后端

【Flutter 专题】78 图解 Android Native 集成 FlutterBoost 小尝试 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

企业需要拥有自己特色的DevOps

用友BIP

Docker 容器 DevOps 微服务

【LeetCode】有效三角形的个数Java题解

Albert

算法 LeetCode 8月日更

2021最新Java中级面试题目汇总解答

策划Java工程师

Java 程序员 后端

kubernetes入门:简介与基础操作命令

小鲍侃java

8月日更

十大排序算法--希尔排序

Ayue、

排序算法 8月日更

CodeDay#8:支付宝都在用的容器技术了解一下

蚂蚁集团移动开发平台 mPaaS

小程序 支付宝小程序 支付宝 移动开发 mPaaS

2021最值得加入的互联网公司有哪些

策划Java工程师

Java 程序员 后端

springcloud 微服务日志写入kafka

Rubble

kafka Spring Cloud 8月日更

华为云UGO:醒醒!你的异构数据库迁移难题有救了

华为云开发者联盟

数据库 迁移 华为云 异构数据库 UGO

软件架构模式之微服务架构

架构精进之路

架构 微服务 8月日更

极客-大数据-作业4 Hive

西伯利亚鼯鼠

netty系列之:netty中的ByteBuf详解

程序那些事

Java Netty nio 程序那些事

上K8s,研发团队如何从容一点?

行云创新

容器 k8s

面试官:展开说说,Spring中Bean对象是如何通过注解注入的?

小傅哥

spring 小傅哥 注解注入

取经之旅第 55 天,Python OpenCV 透视变换前置知识轮廓坐标点

梦想橡皮擦

8月日更

ToastUtil实用封装

Changing Lin

8月日更

2021我的Java路要怎么走

策划Java工程师

Java 程序员 后端

容器云平台和Kubernetes之间不得不说的那些事

用友BIP

Kubernetes 容器

混合基础设施下,服务网格(Service Mesh)如何对应用进行统一管理

韩陆

一次Http Get请求健壮性问题的排查过程

liuzhen007

8月日更

百度第25季黑客马拉松再秀“技术基因”,累计产生创意超7000个

科技热闻

Uber ATG数据挖掘:大规模识别真实道路场景用于自动驾驶_语言 & 开发_Steffon Davis_InfoQ精选文章