Tesla 数据标注系统解析
做深度学习和计算机视觉的同学可能比较熟悉ImageNet、MS COCO、Cityscapes等著名的公共数据集这些数据集主要面向于2D图像上的感知任务也是直接在2D图像上直接标注的。但是到了自动驾驶时代所有的感知任务最终都要在现实的3D世界中应用数据集的规模也不再是几万张、几十万张或者几百万张图片与之前的情况已不可同日而语自然面临了更多更复杂的问题。Autopilot Software主管Ashok Kumar Elluswamy介绍4D自动标注数据仿真以及数据和模型的迭代。整个数据标注系统分为三个部分进行介绍依次为人工标注自动标注数据仿真以及大规模数据生成。1. 人工标注大概四年前Tesla的数据标注也跟目前的不少CV公司一样由第三方负责。第三方数据标注机构可以提供比较基础的数据标注和维护但是当标注需求复杂的时候往往会出现标注延迟太大的问题同时标注质量也不够高。于是Tesla就建立了自己的标注团队标注人员规模为一千余人。专业的标注人员和工程师紧密合作在一起保证高质量的标注。Tesla还为此搭建了专用的数据标注系统有专业团队维护这个标注框架以及背后的数据能对标注工作流程中的各项数据做出精确的分析精确到每个人和每一批数据。图 1 2D图像上的数据标注最初Tesla的大多数的标注还是在2D图像上进行但是不久之后标注开始转移到4D空间3D空间时间维度直接在Vector Space进行标注数据以一个Clip为最小标注单位。图 2 4D空间上的数据标注一个Clip由一段路程上的所有相机和传感器数据构成根据这些数据可以生成一个对应路段的3D重建结果。修改任意图片或是3D重建结果上的标注都能直接将改变映射到其他数据上。这样的4D标注相对于2D标注更加接近自动驾驶任务的需要但是仅仅这样是不够的。Tesla发现人类标注人员对于语义信息更加擅长但是计算机对于几何、重建、三角化、跟踪更加擅长同时随着数据规模的增长不可能无限地扩大标注团队的规模特斯拉也想省钱。所以Vector Space下更加精确的数据标注需要标注人员和计算机协作进行。自此标注进入下一个时代自动标注。2. 自动标注我们都知道训练数据和训练参数一定的情况下服务器上能跑的“大模型”其精度和泛化能力往往强于在车端部署的“小模型”同时多个“大模型”做assemble之后的精度和泛化也往往也强于单个“大模型”。所以如果可以获得大量“小模型”表现不好的数据我们就可以用精度和泛化更好的集成模型帮助我们把这些新数据“标一把”再用标好的数据来训练小模型。完全拟合新数据之后这个小模型就算再差在这批新数据上的性能也能够逼近之前的集成模型。所以Tesla的自动标注系统本质上干的也就是这么个事只是一贯的Tesla将它做到了极致。图 3 Tesla自动标注系统前面提到过一个Clip是Tesla标注系统的最小标注单位回顾一下Clip的概念Clip由一段路程上的所有相机和传感器数据构成。一个Clip通常包含时长为45秒到1min的路段数据。拿到一个Clip自动标注系统首先使用各种算法模型对数据进行预测得到分割、目标检测、深度、光流等结果然后经过一系列算法处理产生最终用于训练模型的标注。可选的人类标注人员可以对机器标好的数据做最后的检查和修改。下面以一个路面标注的例子来说明这一流程。通常来说我们可以用样条或者是网格来表示路面但是因为拓扑约束是不可导的这些表示方式不太好用。为了方便优化这里选择使用一个神经网络来隐式地对路面建模。我们query一个路面上的 (x, y) 点然后让网络预测路面的高度z以及一些语义信息比如车道线、道路边界等。对于每一个 (x, y)网络预测一个z就可以得到一个3D点。我们可以将这个3D点重投影回到各个相机的图像上。做出百万计这样的query就能够得到大量的点重投影回各个相机。图4右上角显示了这样重投影回图像的点。图 4 路面重建流程接下来我们可以将这些重投影回原图的点与图像空间直接做语义分割的结果进行对比再在各个相机上跨过时间和空间维度 (across space and time) 做联合优化得到非常高质量的重建结果。图 5 路面重建结果满足了各个相机时间和空间上的一致性最后是得到在整个Clip上连续一致的稠密标注结果如图5所示。这个一致性是指同一个物体的标注在视频序列前后帧以及不同相机的图像中均保持一致。这样的一致性是纯人工标注无法达到的。使用这样的技术当数据采集车经过一段路的时候就可以采集并标注附近相关的Clip。更进一步使用一辆车甚至多辆车多次以不同的方式经过同一个地点能够获得多个相同地点的Clip进行标注。图 6 可以使用不同车辆多次经过相同地区得到多个标注结果这些Clip和对应的标注可以放到一起进行更大规模的优化得到更加精确和更加详细的标注结果。图7就是16个Clip对齐到一起保证车道线等多种特征在Vector Space及各个相机视角观测下的一致性得到的结果。图 7 叠加多个Clip的结果进行联合优化可以得到更加精确和详细的标注结果这样的标注方式不仅仅是得到了一个高精地图还顺带标注了相关的各个Clips已经有点“众包地图”的味道在里面了。自动标注完成之后如果有需要可以再让专业标注人员对标注结果做校验顺带去除噪声或者添加一些其他的标注。所以车跑一遍模型跑一遍再进行联合优化数据就标好了。Tesla的自动标注系统用类似的方式可以完成一个Clip里面所有要素的自动标注对于静态物体给出3D重建结果对于动态障碍物给出每一时刻具体的位置、姿态并计算出3D的运动轨迹。图8展示了由相机生成的高密度3D点云点云囊括了路面及车辆周边的所有障碍物。前面介绍的方法能够解决静态障碍物的问题下面介绍一下动态障碍物的处理。图 8 由图像数据生成的3D点云对于动态障碍物即运动目标自动驾驶的感知系统需要给规控提供每个目标的位置、朝向、运动速度、过去时刻的运动轨迹并估计将来的运动轨迹等信息。标注系统知道这些信息的真值就非常重要。在这些问题上自动标注是具有“上帝视角”的。在这些Clip里面每一时刻我们不仅知道过去发生了什么还知道将来会发生什么以近乎“作弊”的方式得知正确答案。所以我们可以很精确的给出每个目标“将来”运动轨迹的真值。此外“上帝视角”还可以解决遮挡问题。因为知道每个运动目标的运动轨迹所以可以根据目标被遮挡前后的运动轨迹还原出被遮挡状态下的运动轨迹和姿态因此标注也不再受到遮挡的影响。图 9 自动标注可以解决运动目标的遮挡问题最后得到一个Clip完整的标注结果如图10。图 10 自动标注的完整结果以这样的自动标注Tesla可以轻易地标注百万计的Clips来训练模型。对于一些模型做的不太好的场景比如低可视度的恶劣天气就可以使用大规模的车队采集很多相应场景的数据然后通过自动标注迅速地将这些数据用来训练模型快速提升性能。自动标注一个星期能够标注1万个Clip纯人工完成相同规模的标注则需要几个月3. 数据仿真完成自动标注之后尝到了自动化甜头的马老板甚至连数据采集车的电费都不想出了于是开始琢磨数据仿真。哈哈开个玩笑数据仿真的好处并不仅仅是省钱还可以解决很多难题比如很多具有长尾效应的Corner Case就可以用数据仿真采集到数据。想象一下如果高速路上突然出现一头牛或是一群大象让自动驾驶汽车怎么处理这样的数据显然非常难以采集我们不可能真的让一群大象冲到高速路上然后再开着采集车过去采数据。但如果现实生活中真的遇到了这样的情况我们依然希望自动驾驶汽车能够处理所以相应的数据是必须的。为了解决类似问题Tesla的下一个撒手锏就是数据仿真。相对于真实数据仿真数据有以下几方面的优点仿真数据可以提供完美的标注很多难以标注的场景可以使用仿真数据。仿真数据可以在真实数据难以采集的情况下提供优质的数据。仿真可以给规控算法提供一个安全的实验环境。仿真数据省钱省钱省钱看样子仿真数据是真香不过要搞出能用的仿真数据还是要费一番功夫的。做数据仿真就是要让虚拟的数据要尽可能真实Tesla团队为此做出了以下几方面的努力(1)准确的传感器模拟数据仿真的第一要务就是让模拟器产生的数据尽可能接近真实相机拍摄的数据。所以Tesla团队从多个方面做出相应的努力包括对于相机传感器噪声、运动模糊、光学畸变以至于挡风玻璃上的衍射斑的仿真。图 11 仿真首先需要准确模拟相机各种特性(2)逼真的渲染仿真需要实现接近真实的渲染不能出现类似于游戏中的那种虚假画面。为此Tesla团队用上了神经渲染 (Neural Rendering) 来保证渲染效果用光线追踪 (ray tracing) 来保证逼真的光照效果。图 12 渲染效果你敢相信这个图是假的(3)丰富的场景及演员。为了防止感知模型过拟合到几种车型或是单一的场景Tesla团队设计了很多的“演员”以及“道具”放到虚拟的世界中包括形形色色的汽车和穿着各异的行人。同时还设计了总里程超过2000Miles的虚拟道路里程相当于美国东西海岸之间的距离。马老板果然大手笔有没有感觉像是一个活生生的“西部世界”图 13 仿真需要多样的演员和场景(4)大规模场景生成。前面提到的虚拟数据只是冰山一角Ashok说到真实用来训练模型的数据是由这些素材按照一定章程使用算法生成的。道路的曲率、树木的形状和分布、雪糕筒的摆放、电线杆以及以各种速度前进的车辆等等各种交通参与物都可以根据需要设置像天气和光照条件什么的更不在话下。随机地使用这些素材生成训练数据固然可以但是大多数生成的场景下模型都可以表现的很好了所以Tesla团队会使用一些基础的机器学习算法让模型找到容易出错的场景然后根据相应的场景生成更多数据再来训练模型。这样数据和模型的闭环完成了随着不断迭代性能会一路提升。图 14 通过调整各项参数可以生成各种场景(5)场景重建。Tesla还希望能够重建真实场景的自动驾驶任务中的Failure Case这样能够方便在模拟器中进行复现找到并解决问题。如图15左图表示一辆真实的汽车采集的数据经过自动标注系统得到3D重建后的结果。用这些重建后的结果结合视觉信息可以重建出完全一样的虚拟场景。在这个虚拟场景中就可以做各种实验找到并解决之前的问题。图 15 可以从真实数据中生成虚拟数据帮助Debug当前Tesla车端部署的模型早已用上了虚拟数据做训练虚拟数据的规模为37.1亿张图片、4.8亿标注。这样的数据用“核燃料库”来比喻毫不为过。看到这一数字苦苦等数据的新生代民工已经哭晕在厕所……图 16 虚拟数据真香4. 总结Tesla的数据标注系统经历了这样由人工标注到自动标注再到仿真的过程确实给我们提供了很好的借鉴不仅仅能应用在自动驾驶领域也能应用到在其他CV相关的方方面面通过这套系统可以看到Tesla拿掉毫米波雷达坚持纯视觉的底气。Tesla的方案除了可供学习之外也启迪我们在CV算法已经比较成熟的今天单一算法的提升并不能带来太多改变但是算法系统级别的研究还有很大潜力可以挖掘硬件、数据和算法应该融合到一起进行设计和迭代。再之后带来的改变就真的是革命性的。
