当前位置: 首页 > 科技观察

用PyTorch单挑世界,特斯拉是如何实现自动驾驶的?

时间:2023-03-21 13:26:14 科技观察

Tesla的工程师正在研究一种开发自动驾驶技术的方法,这种方法可以真正适应数据的膨胀,而不会因为数据规模的膨胀而增加工程师的人力,这意味着计算机视觉错误样本累计超过十亿英里的驾驶。人为输入是一种信号源。人的行为可以告诉机器哪里出了问题,在某些场景下,还可以告诉机器该做什么。不管特斯拉能否在自动驾驶技术领域取得成功,有一件事是肯定的,特斯拉将在城市环境中部署半自动驾驶汽车。特斯拉人工智能高级总监AndrejKarpathy最近发表了演讲。在演讲中,他半开玩笑地揭开了“经营假期”的神秘面纱。这里的想法是自动化特斯拉的机器学习管道,这样所有的工程师都可以去度假,而特斯拉的半自动驾驶功能会继续自动改进。特斯拉车辆将继续自动上传数据,手动标记数据的工作人员将继续在必要时标记数据,神经网络将在新数据上自动进行训练,然后,改进后的网络将部署到汽车上。这个过程不断往复。让工程师去度假只是一个玩笑,因为总有事可做,创新的脚步永远不会停止。而且,即使整个过程可以完全自动化,让人类监控该机制以查看其是否按预期工作也是明智的。不过重点在于,Autopilot、Summon等概念功能的提升主要是自动化。传统上,软件开发一直是工程师的工作。OperationsVacation的目标是让特斯拉的工程师更像工厂里的工程师。在工厂投产之前,这些工程师们花了很长时间做了大量的准备工作。一旦工厂启动并运行,就需要大量非工程人员来维持它的运行。仍然需要工程师检查机器并修复系统或在出现问题时进行改进。但总的来说,工厂的运作是独立于工程师的工作的。相比之下,传统的软件开发过程更像是工程师自己构建产品。来自AndrejKarpathy的演讲ppt,展示了特斯拉的机器学习过程特斯拉想要创建一种方法来实现自动化目标,这种方法可以适应不断扩大的数据规模,因为特斯拉拥有世界上最大的数据是从配备车辆的网络中收集的带有传感器和计算机,全部连接到互联网。这种方法最大的瓶颈是支付给标注工人的工资。在计算机视觉任务中,特斯拉需要不断将新生成的、人工标注的摄像头数据加入训练集,以不断增加算法的能力,但这种方法很难适应不断扩大的可采集数据规模,并且只能处理这些数据的一个子集,而这个子集规模对应的是特斯拉可以承受的标记成本。特斯拉或许可以收集1万亿张交通信号灯照片,但它无力承担同等规模的标注(指将照片中的交通信号灯标记为红色、绿色或黄色)。对于需要人工标注的任务,Tesla的做法并不允许单纯地增加标注数据量,而是通过获取更高质量的数据来加速机器学习过程。最有价值的训练数据样本是那些不能被现有神经网络模型正确预测的样本。也许模型错误地预测了对象的类别,错误地报告了一个不存在的对象,或者错过了照片中捕获的对象。通过以“运营假期”为代表的自动化流程,特斯拉能够比竞争对手捕获更多这些有价值的数据样本。想象一下特斯拉在自动驾驶仪导航(其自动驾驶仪技术的一个版本,可以让特斯拉自动切换车道)中沿着高速公路行驶。特斯拉自动启动了车道切换程序,但没有注意到相邻车道驶来的皮卡车。特斯拉车内的司机快速转动方向盘,退出了Autopilot模式,取消了变道流程。这种人为干预会触发快照,其中可能包含短视频的片段,该片段将结合特斯拉的8个摄像头、雷达数据、GPS数据等获得。特斯拉的人工标注员会查看视频片段,他们会看到特斯拉的神经网络没有检测到这两辆皮卡,标注者会在两辆卡车周围画一个3D框,并将它们标记为“LightDuty”。卡车”,然后将带注释的视频剪辑发送到特斯拉总部,以包含在训练数据集中。现在想象一辆特斯拉在人类司机的完全控制下在高速公路上行驶。突然,特斯拉前面一辆面包车的司机猛踩刹车,特斯拉司机也猛踩刹车回应。特斯拉汽车上的电脑自动驾驶软件实际上是在无声无息地运行着。它悄悄“观察”人类司机的行驶轨迹,每时每刻估计自动驾驶模型采用相同行驶轨迹的可能性。在这种情况下,自动驾驶软件未能检测到小型货车。在无人驾驶软件看来,人类司机在空荡荡的高速公路上猛踩刹车似乎是随机的。因此,它为驾驶员的驾驶轨迹分配了一个低概率;也就是说,自动驾驶软件对驾驶员的行为感到“惊讶”。人类驾驶员的轨迹与机器生成的轨迹之间的这种“意外”或“差异”会触发快照,然后将其上传到特斯拉的数据标记器。(我理解这就是特斯拉的“影子模式”是如何工作的。)自动驾驶的一个可怕之处在于,当模型错误率变低时,你需要更多的错误数据样本来训练错误率继续减半。随着您的系统产生的错误越来越少,需要越来越多的错误样本来保持系统改进的速度。您需要的错误样本越多,收集所有错误样本就越困难。假设Waymo已将关键的计算机视觉错误(例如,导致汽车行为不稳定的错误,安全驾驶员可以识别)减少到每10,000英里1个错误。(这不是真实的数据集,只是出于说明目的而编造的示例。)由于Waymo每月行驶大约100万英里,因此它每月只会生成100个严重的计算机视觉错误样本。标记这些错误的例子现在很好,但找到它们很费力。作为对比,让我们看看如果Waymo每月行驶10亿英里,那么每月会产生100,000个错误样本。这样,收集到的错误样本数量会随着行驶的英里数而增加。自NavigateonAutopilot于2018年11月发布以来的12个月内,Tesla车辆在NavigateonAutopilot模式下行驶了10亿英里。平均而言,每月行驶8300万英里。展望未来,这个月度数字将继续增长,因为在过去12个月中,配备自动驾驶导航功能的特斯拉汽车数量几乎翻了一番,因此这个月度数字很可能在未来12个月内增长50%(假设特斯拉目前的生产率至少不会减速)。目前搭载Autopilot2.0及以上硬件的特斯拉车辆总数约为65万辆。假设平均行驶里程与美国人的平均水平保持一致,则总行驶里程(包括完全人工驾驶和自动驾驶)约为每月7.25亿英里。如上所述,两种驾驶模式都提供“假日运营”数据。在自动驾驶模式下,人为干预会发出信号,表明机器犯了错误,或者人类驾驶员认为情况对自动驾驶来说太困难了。在手动驾驶模式下,人与自动驾驶之间的“分歧”也预示着机器的错误。到目前为止,我只讨论了“运营假期”周期中的人类标记。如果我们不仅从流程中删除工程师,而且从??标记中删除怎么办?如果把这整个过程交给一台机器呢?机器学习中令人惊讶的发现之一是,如果你在标记不良的数据上进行训练,有时可以获得与在标记良好的数据上进行训练相同的结果,只要你使用标记不良的数据体积是标记良好的数据的1000倍数据。Facebook发现Instagram标签(通常与相应图像的实际内容只有微弱的相关性)可以用来训练神经网络,以便训练后的模型可以准确地对对象进行分类。这里的技巧是Facebook使用10亿张Instagram标记的图像来实现与100万张手动标记的图像几乎相同的准确度。Facebook还发现,将这两张图片结合起来比单独训练任何一张图片都能获得更高的准确性。特斯拉有650,000名人类司机,这是大量低质量标记数据的来源。在所谓的弱监督方法中(相对于完全监督方法,这意味着标注者会仔细地手动标记图像),我上面描述的标记数据的操作(用于后续手动标记),可以看成低质量标记。如果自动驾驶软件检测到某个地方有障碍物,但人类司机开车到那里,这个地方会自动标记为没有障碍物。反之,如果自动驾驶软件检测到一个地方很空,但人类司机在旁边行驶时停下来,这个地方就会被自动标记为障碍物。用大量免费标签来补充稀缺、昂贵的标签是一种混乱的方式。(要了解有关这种方法的更多信息,请阅读此处的研究论文,https://arxiv.org/pdf/1610.01238.pdf)特斯拉的自动驾驶工作长期以来一直要求候选人“能够设计一些方法,除了能够使用丰富多样的标记数据,也可以使用大量轻标记数据。”在特斯拉的自治日演讲中,Karpathy描述了一种类似于我之前描述的方法。使用带标签的人类驾驶视频片段,特斯拉训练了一个神经网络来感知和推断前方道路的曲线和坡度。(视频可点击:https://youtu.be/v5l-jPsAK7k)弱监督学习方法是一种真正满足数据放大需求的方法。限制不再是人工成本(包括工程师人工成本和贴标人工成本),而是道路的英里数、通过互联网传输的数据包以及特斯拉总部的海量GPU。机器学习过程实际上只是一台自行运行的复杂机器,机器学习的运行速度与机器部件的运行速度一样快。较慢的部分是开发流程和找到使其工作的方法所花费的时间。运营假期使预测比计算机视觉容易得多。在预测车辆和行人轨迹时,有大量免费提供的高质量标签:即未来。自动驾驶软件会观察汽车当前的轨迹,5秒后,汽车会用这5秒内实际行驶的轨迹标记这一观察结果。如果您预测行人要去哪里,行人会立即向您展示您的预测有多准确。结果,系统可以自动检测错误,错误样本可以自动标记为正确的未来轨迹。这是完美的理想场景。人力不再是制约,资金不再是制约;只有车辆和计算机可能成为制约因素。路径规划也是一个理想的场景。可以应用相同的原则,但重点不同。规划器试图决定汽车应该采取什么行为。汽车观察到的是完整的驾驶场景,由周围的8个摄像头和一个前置雷达拍摄。在手动模式下,神经网络预测特斯拉的人类司机会做什么,如果它做错了,它会自动标记错误(同样,这就是我理解的“影子模式”)。驾驶员用他们的行为注释观察到的驾驶场景。自动驾驶模式与手动模式的工作原理相同,只是在无需人工驾驶员干预的情况下标记错误样本。这种被称为模仿学习的方法最近被DeepMind团队用来训练一个神经网络,该网络可以比70%以上的人类玩家玩《星际争霸》更好。Waymo还在探索模仿学习的潜力,这是自动驾驶汽车初创公司Aurora青睐的一种方法。(不过,Waymo和Aurora不像特斯拉那样有650,000名人类司机,可以提供大量的训练数据。)所以总结起来,我认为“运营假期”有四个主要优势:自动标记计算机视觉错误,稍后上传并手动注释(完全监督学习)。当人类驾驶员退出Autopilot模式时,或者在手动模式下,当Autopilot规划器的轨迹与人类驾驶员“偏离”(或“意外”)时,错误就会被标记出来。使用来自人类驾驶员行为的低质量标签自动标记相机数据(计算机视觉的弱监督学习)。当计算机视觉神经网络和人类驾驶员“发散”(这种发散导致自动驾驶汽车产生与人类驾驶员使用的轨迹不同的轨迹)时,将上传训练样本。自动标记预测。未来事件可以注释过去的事件,并可以揭示预测中的错误。自动标记规划。人类驾驶行为提供了标签。如果有人在自动驾驶仪处于活动状态时进行干预,或者如果人与自动驾驶仪计划者之间存在“分歧”,则认为发生了错误。预测和规划使用计算机视觉方法来跟踪物体轨迹并观察驾驶场景。计算机视觉错误会使预测和计划无效。因此,为了让其他部分以最佳方式工作,必须修复计算机视觉错误。相反,预测或计划错误可能会触发视频剪辑的上传,即使没有出现计算机视觉错误。这种标记不当的视频剪辑增加了人工人工审查的工作量。因此,减少预测或规划中的错误可以节省注释者的时间,并使他们能够专注于计算机视觉方法所造成的错误。通过提高自动视频标注的准确性,可以帮助加快计算机视觉能力的进步。随着数据规模的扩大,特斯拉开发的方法正在尽最大努力最大限度地减少对人类增强的需求,使他们的工程师处于大规模自动驾驶机器学习的最前沿。自动错误标记可以提高贴标机的贴标效率。模仿学习的使用减少了工程师投入路径规划算法的工作量;该算法无需费力地手动编码每个驾驶行为,而是可以从数据中自动学习这些行为。考虑到特斯拉汽车每月行驶7.25亿英里,在自动驾驶领域还没有先例可以用来判断特斯拉的做法会有多高效。一些怀疑论者认为,完全解决计算机视觉问题是不可能的。也许是这样。但除非它真的发生了,否则我们无法确定。开发每100英里出现故障然后需要人工干预的2级系统要比每百万英里出现故障的4级或5级系统容易得多。即使特斯拉距离完全自动驾驶的目标还很远,但几乎可以肯定的是,特斯拉将开发出能够在城市街道上行驶的Level2自动驾驶系统。展望未来,挥之不去的主要问题是,随着机器错误变得越来越少,司机是否会保持警惕并在必要时干预自动驾驶机器,或者它们是否会被引入某种形式的错误?安全感。特斯拉可能需要实施驾驶员监控系统,以确保驾驶员始终保持注意力。面向驾驶员的摄像头与现有方向盘扭矩传感器的组合可能比单独使用扭矩传感器更有效。特斯拉超级乐观的情况是,它最终会开发出完全自动驾驶的系统并部署机器人出租车。在这种情况下,特斯拉的市场份额可能会增加一倍或三倍,如果不是十倍的话。一个较为乐观的情况是,特斯拉发布了用于城市驾驶的Level2系统,并且特斯拉在销售更多汽车和更多“全自动驾驶”附加装置方面做得很好。销售增长和汽车毛利率是投资者密切关注的两个关键指标;特斯拉的UrbanTier2系统可以为两者带来超出预期的贡献。(这里有AndrejKarpathy的演讲视频:https://youtu.be/oBklltKXtDE,他在其中描述了“OperatingHolidays”)相关人士:我是/我们是TSLA的长期合作伙伴。这篇文章是我自己写的,这篇文章表达了我个人的观点。我们没有为此接受任何经济补偿(SeekingAlpha的版税除外)。我与本文中提及其股票的任何这些公司都没有业务关系。