攻城狮说 #04

工程师 | 宋浩

来源 | 小马智行首场技术沙龙

全文共3241,阅读全文约10分钟


本期划重点

»  一个小故事

»  数据的作用

»  数据标注

»  数据驱动开发

»  数据驱动决策


一个小故事

2017年4月初,我即将从Facebook广告分发后端部门离职,加入小马智行。

当我跟广告转化率预测团队的一位资深经理谈到我未来的工作去向时,他问了我这样一个问题:特斯拉公司已经在自动驾驶领域积累了大量数据,而且还在继续从每天行驶在开放道路的车辆上源源不断地获得新数据,与其相比小马智行的竞争力在哪?

他的提问不断地提醒我,人工智能需要有足够的数据量,并且充分发挥这些数据的潜能。这也是小马智行作为人工智能公司非常重要的核心竞争力。


数据的作用

那么,数据对于自动驾驶研发重要在哪?

◆ 数据驱动开发:提到数据的作用,我们首先会想到数据驱动开发,对于自动驾驶研发而言,包括感知领域、行为预测领域、决策领域,都需要有数据(标注好的数据)作为模型训练的粮食和系统准确度评测的依据。

◆ 数据驱动决策:尤其是优先级的决策方面,作为创业公司我们现在想做的事情,总是会多于我们的人力。因此我们必须将人力分配在需要优先解决的问题上。不管在行车安全性、乘坐舒适性、车辆的运营等等方面都存在更重要或者次要一点的问题,通过对数据的分析和处理,我们才能找到优先级的问题,拿出更有效的决策。

◆ 展现公司实力:通过对数据的分析,展示出来的结果可用于展示公司的技术研发实力。

◆ 满足监管要求:数据的保存、处理、分析也是为了满足监管的要求。

数据标注

在讲数据驱动开发和决策前,我想先分享下关于数据标注的一些知识和体会。

数据标注的评价指标

一般对于数据标注而言,评价指标会涉及:

◆ 团队规模:只有你有足够大的团队,你才能在单位时间内标注出你所需要的数量的数据。

◆ 效率与成本:二者间的关系像是硬币的正反两面,效率是指单个人单位时间的产出量,成本是指单位产出的人力、设备、场地的开销。

◆ 质量:即标注的准确度,包括标注一个激光点云里障碍物的尺寸、位置、朝向的准确度,也包括预测下一步行为的准确度。


以上是大家通常所关注的三个方面,下面再讲下另外两个很重要的评价指标:

◆ 能力多样性:即能够处理各种不同种类的标注任务的能力。对地图来说,我们需要处理车道线,对于感知来说,我们需要标注交通灯、障碍物,以及自动驾驶行为预测所需要的标注等等。

◆ 标准灵活性:各种长尾场景(如雨点,汽车尾气等)的处理方式都在不断地探索和迭代,随之标注的方式也不断更新。如何保证在快速探索和迭代过程中,还能与标注团队直接、高效地沟通,不至于出现混乱,这是我们需要完成的任务。

数据标注的团队构成

数据标注的团队可以由三类团队构成:自雇型、人力外包型、服务外包型。我将这三类团队的定义和特征整合在下图里:

如何提升标注效率与控制成本

技术手段:通过人工智能的方法

通过下面的关于车的标注过程,我们能更好地了解如何在标注中利用人机交互方面的技巧,并通过人工智能的方法提高标注员的效率。

① 默认障碍物大小:首先,第1帧可以通过一些人机交互的方式默认障碍物大小。

② 自动追踪外推:接下来,标注员跳了一帧到第3帧,手动找到了车的新位置,那么当再跳到第5帧的时候,系统便可以通过智能算法做到自动追踪外推,帮助找到车在第5帧中的新位置。

③ 自动插值:当车在第1帧、第2帧、第5帧的位置都被标出后,系统可以做自动插值,自动找到车在第2帧,第4帧中的位置。

相比于车载系统,智能标注系统所受的限制更少。原因有两点,一是智能标注系统拥有更多的可用信息:比如在尝试智能标注某一帧数据的时候,可以参考其后的数据帧里的信息;二是拥有更宽松的计算资源和时间限制。

但是智能标注系统也有需要注意和解决的问题:

① 对自动化结果的依赖,可能导致标注结果产生系统性偏差;

② 如何发现和识别这些系统性偏差;

③ 不同的自动化功能,产生系统性偏差的几率和程度各不相同。


技术手段

◆ 薪酬激励

◆ 组织结构设计:最主要的是信息流动的结构,例如,标注过程中可能会积累众多标注技巧(具体的某些场景的某个细节可通过标注平台的某些技巧去标注),我们需要促进这些技巧在标注团队内部被高效地总结、传播。

◆ 各工段之间成本平衡:基于系统化的思考,我们标准的流程分为标注、质检、复检等多个工段,通过各工段的配合达到整体优化,而不是单纯地只优化某个工段。

当然所有的非技术手段皆依赖于标注平台对于标注任务生命周期与标注团队架构、绩效的管理。


数据标注系统能力

数据标注系统能力的核心目标是保证系统在大规模标注团队持续高频使用的条件下,仍能保持稳定运行。

这里我想举一个因为系统不稳定性产生焦虑感,进而导致恶性循环的例子:

首先,保存失败,比如标注员标注了5分钟,当他尝试保存却失败了;因此产生了工作成果丢失的焦虑感;于是更加频繁地尝试保存;导致系统负载进一步提高;系统稳定性和响应速度进一步下降;最终,保存更容易失败。

而且有些时候牵扯到外部合作商时,会进一步加剧这种情况——信任成本升高,大大降低长期合作意愿。

为了保证数据标注系统的能力,我们首先要不断优化、提升效率。第二是保持系统的稳定,保障效率,因为最细微的稳定性问题都可能导致效率下降。第三是进行良好的工程实践,为系统提供良好的测试环节,包括与线上系统隔离的完整测试环境,这能较为准确地重现线上数据规模和数据分布。第四,使系统具备分级发布流程。第五,提供线上系统监控及应急处理预案。

这里,我还想提供几个提升数据标注系统效率的Tips(技巧):

◆ 开发时:实现效率优化方案。

◆ 测量时:在实现方案后,对标注员的操作流程和节奏进行记录和准确复现。

◆ 提升时:在测量和观察中,发现所有可能的效率提升点,然后再循环到第一点“开发时”。

数据驱动开发

上图展示了我们对数据驱动开发的一个愿景:先是利用机器智能,提高人工标注效率;然后利用人工标注结果,提升机器智能;最后再反过来利用机器智能,提高人工标注效率,达到一个相互促进的过程。

那么,通过哪些方法可以实现数据驱动开发呢?

充分利用海量标注数据

① 分布式训练和评测系统

② 人工标注的质量是有极限的,这需要我们:

  • 对标注数据的进一步处理与修正。

  • 在设计评测指标时,要考虑到标注数据常见的质量问题。避免设计出的评测指标对于这些常见质量问题过于敏感。

数据索引平台

我们知道,自动驾驶使用的数据存在不同维度上的分布,包括:

  • 时段和天气

  • 道路等级

  • 障碍物种类

  • 住宅、商业区、工业区

借助数据索引平台,我们可以做到许多事情,以实现数据驱动开发的目标,例如:

◆ 标注任务筛选:基于分布上不平衡的维度,对路测原始数据的自动化初筛。

◆ 训练数据选取:按照指定的维度检索访问标注数据。

◆ 传感器:进行难度和规模分级。

数据驱动决策

路测事件分析

借助数据平台,我们可以完成对路测事件的分析,发现优先级最高的问题,驱动优先级决策。分析的维度包括:

  • 问题路段

  • 问题模块

  • 问题车辆

  • 问题时间段

  • 深入分析的工具

路测数据展现方式

在数据展现上,我们需要解决三类挑战:

  • 准确性:给的数据要靠谱,有说服力。

  • 实时性:每次采集的数据都可以实时更新。

  • 易用性:从界面上可以直观地看到关键数据。

因此,为了应对这些挑战,我们做到了:

◆ 以用户为中心,依据关键决策流程,不断迭代与优化数据展现方式。

◆ 根据不同受众和使用场景,提供差异化的视图。例如,通过运营团队周会、高管会议、各模块团队Tech Lead等渠道获取多样化的需求。

◆ 所有数据视图都提供最简洁实用的图表。一是在默认视图中,提供用户刚好想要的信息,不多不少;二是对于每一个数据点,提供进一步深入分析的工具。