为什么特斯拉自动驾驶汽车不需要激光雷达

2023-05-16

光 糖果Autosar 2022-02-14 08:08

特斯拉仪表板

打造全自动驾驶汽车所需的技术堆栈是什么?公司和研究人员对该问题的答案存在分歧。自动驾驶的方法范围从相机和计算机视觉到计算机视觉和高级传感器的组合。

特斯拉一直是纯视觉自动驾驶方法的拥护者,在今年的计算机视觉和模式识别会议 (CVPR) 上,其首席人工智能科学家 Andrej Karpathy 解释了原因。

在 CVPR 2021 自动驾驶研讨会上,过去几年一直领导特斯拉自动驾驶工作的 Karpathy 详细介绍了该公司如何开发只需要视频输入来理解汽车周围环境的深度学习系统。他还解释了为什么特斯拉处于使基于视觉的自动驾驶汽车成为现实的最佳位置。

周末在 CVPR 上就我们最近在 Tesla Autopilot 的工作进行了一次演讲,以通过视觉神经网络估计非常准确的深度、速度和加速度。必要的成分包括:1M 车队数据引擎、强大的 AI 团队和超级计算机https://t.co/osmEEgkgtL pic.twitter.com/A3F4i948pD

- 安德烈·卡帕斯 (@karpathy)

2021 年 6 月 21 日

通用计算机视觉系统

深度神经网络是自动驾驶技术栈的主要组成部分之一。神经网络分析道路、标志、汽车、障碍物和人的车载摄像头信息。

但深度学习在检测图像中的物体时也会出错。这就是为什么包括 Alphabet 子公司Waymo在内的大多数自动驾驶汽车公司都使用激光雷达的原因,这种设备通过向各个方向发射激光束来创建汽车周围环境的 3D 地图。激光雷达提供了可以填补神经网络空白的附加信息。

然而,将激光雷达添加到自动驾驶堆栈也有其自身的复杂性。“你必须用激光雷达预先映射环境,然后你必须创建一个高清地图,你必须插入所有车道以及它们如何连接以及所有红绿灯,”Karpathy 说。“在测试时,您只需定位到该地图即可四处行驶。”

创建自动驾驶汽车将要行驶的每个位置的精确地图是极其困难的。“收集、构建和维护这些高清激光雷达地图是不可扩展的,”Karpathy 说。“让这个基础设施保持最新状态是极其困难的。”

特斯拉在其自动驾驶堆栈中不使用激光雷达和高清地图。“所有发生的事情,都是第一次发生在车内,基于汽车周围八个摄像头的视频,”Karpathy 说。

自动驾驶技术必须弄清楚车道在哪里,红绿灯在哪里,它们的状态是什么,以及哪些与车辆相关。它必须在没有任何关于它正在导航的道路的预定义信息的情况下完成所有这些工作。

Karpathy 承认,基于视觉的自动驾驶在技术上更加困难,因为它需要仅基于视频源运行得非常好的神经网络。“但一旦你真正开始工作,它就是一个通用的视觉系统,主要可以部署在地球上的任何地方,”他说。

使用通用视觉系统,您的汽车将不再需要任何辅助装备。Karpathy 说,特斯拉已经在朝着这个方向发展。此前,该公司的汽车结合使用雷达和摄像头进行自动驾驶。但它最近开始运送没有雷达的汽车。

“我们删除了雷达,在这些车上只靠视觉行驶,”Karpathy 说,并补充说,原因是特斯拉的深度学习系统已经到了比雷达好一百倍的地步,现在雷达正在启动阻止事情并“开始制造噪音”。

监督学习

特斯拉物体检测

反对纯计算机视觉方法的主要论点是,在没有激光雷达深度图帮助的情况下,神经网络是否可以进行测距和深度估计存在不确定性。

“显然,人类是靠视觉四处行驶的,因此我们的神经网络能够处理视觉输入以了解我们周围物体的深度和速度,”Karpathy 说。“但最大的问题是合成神经网络能否做到这一点。我认为,在过去几个月我们一直在努力解决这个问题时,我们内部的答案是肯定的。”

特斯拉的工程师想要创建一个深度学习系统,该系统可以执行物体检测以及深度、速度和加速度。他们决定将挑战视为监督学习问题,其中神经网络在对带注释的数据进行训练后学会检测对象及其相关属性。

为了训练他们的深度学习架构,特斯拉团队需要一个包含数百万视频的海量数据集,并用它们包含的对象及其属性进行仔细注释。为自动驾驶汽车创建数据集尤其棘手,工程师必须确保包含不经常发生的各种道路设置和边缘情况。

“当你拥有一个大型、干净、多样化的数据集,并在其上训练一个大型神经网络时,我在实践中看到的是......成功是有保证的,”Karpathy 说。

自动标记的数据集

特斯拉数据工程周期

随着全球销售数百万辆配备摄像头的汽车,特斯拉在收集训练汽车视觉深度学习模型所需的数据方面处于有利地位。特斯拉自动驾驶团队积累了 1.5 PB 的数据,其中包括 100 万个 10 秒的视频和 60 亿个标有边界框、深度和速度的对象。

但是标记这样的数据集是一个巨大的挑战。一种方法是通过数据标记公司或 Amazon Turk 等在线平台手动对其进行注释。但这需要大量的手动工作,可能会花费一大笔钱,而且过程非常缓慢。

相反,特斯拉团队使用了一种自动标记技术,该技术结合了神经网络、雷达数据和人工评论。由于数据集是离线注释的,神经网络可以来回运行视频,将它们的预测与基本事实进行比较,并调整它们的参数。这与测试时推理形成对比,在测试时推理中,一切都是实时发生的,深度学习模型无法追索。

离线标记还使工程师能够应用非常强大且计算密集型的对象检测网络,这些网络无法部署在汽车上,也无法用于实时、低延迟的应用程序。他们使用雷达传感器数据进一步验证了神经网络的推论。所有这些都提高了标注网络的精度。

“如果您处于离线状态,您将受益于事后诸葛亮,因此您可以更好地冷静地融合 [不同的传感器数据],”Karpathy 说。“此外,你可以让人类参与进来,他们可以进行清理、验证、编辑等工作。”

根据 Karpathy 在 CVPR 上展示的视频,物体检测网络在碎片、灰尘和雪云中保持一致。

特斯拉的神经网络可以始终如一地检测各种可见度条件下的物体。

Karpathy 没有说明需要多少人力才能对自动标签系统进行最终修正。但人类认知在引导自动标签系统朝着正确方向发展方面发挥了关键作用。

在开发数据集时,Tesla 团队发现了 200 多个触发器,表明对象检测需要调整。其中包括不同摄像头检测结果不一致或摄像头与雷达检测结果不一致等问题。他们还确定了可能需要特别注意的场景,例如隧道入口和出口以及顶部有物体的汽车。

开发和掌握所有这些触发器花了四个月的时间。随着标签网络变得更好,它以“影子模式”部署,这意味着它安装在消费车辆中,并且无需向汽车发出命令即可静默运行。该网络的输出与传统网络、雷达和驾驶员行为的输出进行比较。

特斯拉团队经历了七次数据工程迭代。他们从训练神经网络的初始数据集开始。然后,他们在真实汽车上以影子模式部署深度学习,并使用触发器来检测不一致、错误和特殊场景。然后修改、纠正错误,如有必要,将新数据添加到数据集中。

“我们一遍又一遍地旋转这个循环,直到网络变得非常好,”Karpathy 说。

因此,该架构可以更好地描述为具有巧妙分工的半自动标签系统,其中神经网络执行重复性工作,而人类负责处理高级认知问题和极端情况。

有趣的是,当一位与会者问 Karpathy 是否可以自动生成触发器时,他说:“[使触发器自动化] 是一个非常棘手的场景,因为您可以拥有通用触发器,但它们不能正确表示错误模式. 例如,很难自动设置一个触发进入和退出隧道的触发器。这是一个语义上的东西,你作为一个人必须直觉[强调我的]这是一个挑战......目前尚不清楚这将如何运作。

分层深度学习架构

特斯拉神经网络自动驾驶汽车

特斯拉的自动驾驶团队需要一个非常高效且设计良好的神经网络,以充分利用他们收集的高质量数据集。

该公司创建了一个由不同的神经网络组成的分层深度学习架构,这些神经网络处理信息并将其输出提供给下一组网络。

深度学习模型使用卷积神经网络从安装在汽车周围的八个摄像头的视频中提取特征,并使用变压器网络将它们融合在一起。然后它会跨时间融合它们,这对于轨迹预测等任务和消除推理不一致非常重要。

然后将空间和时间特征输入到神经网络的分支结构中,Karpathy 将其描述为头部、躯干和终端。

“你想要这种分支结构的原因是因为有大量你感兴趣的输出,而且你不能为每个输出都拥有一个单一的神经网络,”Karpathy 说。

层次结构使得可以为不同的任务重用组件,并在不同的推理路径之间实现特征共享。

网络模块化架构的另一个好处是分布式开发的可能性。特斯拉目前正在雇佣一个庞大的机器学习工程师团队来研究自动驾驶神经网络。他们每个人都在网络的一个小组件上工作,并将他们的结果插入到更大的网络中。

“我们有一个大约 20 人的团队,他们正在全职训练神经网络。他们都在一个单一的神经网络上进行合作,”Karpathy 说。

垂直整合

特斯拉人工智能计算机

在 CVPR 的演讲中,Karpathy 分享了特斯拉用来训练和微调其深度学习模型的超级计算机的一些细节。

计算集群由 80 个节点组成,每个节点包含 8 个 Nvidia A100 GPU,具有 80 GB 的视频内存,总计 5,760 个 GPU 和超过 450 TB 的 VRAM。该超级计算机还具有 10 PB 的 NVME 超高速存储和 640 tbps 的网络容量,可连接所有节点并实现神经网络的高效分布式训练。

特斯拉还拥有并制造安装在汽车内部的人工智能芯片。“这些芯片专为我们想要为 [全自动驾驶] 应用程序运行的神经网络而设计,”Karpathy 说。

特斯拉最大的优势在于其垂直整合。特斯拉拥有整个自动驾驶汽车堆栈。它制造汽车和用于自动驾驶功能的硬件。它具有独特的优势,可以从已售出的数百万辆汽车中收集各种遥测和视频数据。它还在其专有数据集、其特殊的内部计算集群上创建和训练其神经网络,并通过对其汽车的影子测试来验证和微调网络。当然,它拥有一支由机器学习工程师、研究人员和硬件设计师组成的非常有才华的团队,可以将所有部分组合在一起。

“你可以在堆栈的所有层上进行共同设计和工程,”Karpathy 说。“没有第三方阻碍你。你完全掌握了自己的命运,我认为这太不可思议了。”

这种创建数据、调整机器学习模型并将其部署到许多汽车上的垂直整合和重复循环使特斯拉处于实现仅视觉自动驾驶汽车功能的独特位置。在他的演讲中,Karpathy 展示了几个例子,其中新的神经网络本身就胜过与雷达信息结合使用的传统 ML 模型。

如果系统继续改进,正如 Karpathy 所说,特斯拉可能正在淘汰激光雷达。而且我没有看到任何其他公司能够复制特斯拉的方法。

开放式问题

但问题在于,当前状态下的深度学习是否足以克服自动驾驶的所有挑战。当然,物体检测以及速度和距离估计在驾驶中起着重要作用。但人类视觉还执行许多其他复杂的功能,科学家称之为视觉的“暗物质”。这些都是对不同环境的视觉输入和导航进行有意识和潜意识分析的重要组成部分。

深度学习模型也很难做出因果推理,当模型面临他们以前从未见过的新情况时,这可能是一个巨大的障碍。因此,虽然特斯拉已经设法创建了一个非常庞大和多样化的数据集,但开放的道路也是非常复杂的环境,新的和不可预测的事情总是会发生。

AI 社区对于是否需要明确地将因果关系和推理集成到深度神经网络中,或者是否可以通过“直接拟合”克服因果关系障碍存在分歧,在这种情况下,大型且分布良好的数据集足以达到通用深度学习。特斯拉基于视觉的自动驾驶团队似乎更倾向于后者(尽管鉴于他们对堆栈的完全控制,他们将来总是可以尝试新的神经网络架构)。这项技术如何经受时间的考验将会很有趣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么特斯拉自动驾驶汽车不需要激光雷达 的相关文章

  • 自动驾驶软件架构之:中间件与SOA(一)

    本文是将中间件作为一个专题 xff0c 专门展开进行详细的分析和讨论 中间件相关技术在计算机分布式系统中发展了很多年 xff0c 尤其在互联网服务 大型商业系统中得到广泛使用 随着智能网联汽车的发展 xff0c 现代汽车也逐步增加了以太网支
  • 嵌入式系统BSP基础知识

    嵌入式系统BSP基础知识 板级支持包 BSP 是定义如何支持特定硬件设备 设备组或硬件平台的信息集合 BSP 包括有关设备上存在的硬件功能的信息和内核配置信息以及所需的任何其他硬件驱动程序 除了用于基本和可选平台功能的通用 Linux 软件
  • constexpr

    constexpr 标志返回值或者其他表达式是常量 xff0c 在编译时就会被计算出来 这个关键字常被用来 C 43 43 const 和 constexpr 的区别 xff1f 知乎 include lt iostream gt usin
  • inline namespace

    include lt iostream gt using namespace std namespace ALL namespace V2014 void fun int num cout lt lt 34 int 34 lt lt 34
  • 进程与线程

    对于操作系统来说 xff0c 一个任务就是一个进程 xff08 Process xff09 xff0c 比如打开一个浏览器就是启动一个浏览器进程 xff0c 打开一个记事本就启动了一个记事本进程 xff0c 打开两个记事本就启动了两个记事本
  • 详解SOME/IP协议文档

    以下内容来源于AutoSar官网的AUTOSAR PRS SOMEIPProtocol文档 详解SOME IP协议文档 2 知乎 以下内容来源于AutoSar官网的AUTOSAR PRS SOMEIPProtocol文档 SOME IP P
  • AP AUTOSAR——Update and Configuration Management UCM

    15 Update and Configuration Management 15 1 What is Update and Configuration Management 更新和配置管理是Adaptive Platform Servic
  • 基于Docker安装Jenkins并实现CI/CD实战部署

    本实践介绍了利用Jenkins和docker技术 xff0c 如何实现CI CD的各环节的步骤 xff0c 包括环境准备 xff0c 代码提交 xff0c 编译程序 xff0c 构建镜像 xff0c 部署一套完整的安装部署流程 工具介绍 x
  • 左值引用与右值引用

    include lt iostream gt using namespace std void change int amp rnum 引用就是变量名的别名 rnum 61 111 c 43 43 中能用引用的地方 xff0c 就不要使用指
  • C++ 11的移动语义

    目录 可拷贝和可移动的概念 移动构造函数和移动赋值函数 小结移动构造和移动赋值std move 使用 std move 实现一个高效的 swap 函数Move and swap 技巧参考 可拷贝和可移动的概念 在面向对象中 xff0c 有的
  • UDS-统一诊断服务

    什么是诊断服务 xff1f 在还没有诊断服务的时候 xff0c 如果车辆故障 xff0c 需要有经验的师傅长时间的摸排查找 xff0c 费时费力 而车辆的ECU节点有了诊断模块后 xff0c 就具有了诊断功能 xff0c 这样车辆如果有了故
  • AP AUTOSAR——Network Management

    16 Network Management 16 1 What is Network Management 网络管理是Adaptive Platform Services中的一个功能集群 作为AP AUTOSAR平台的服务 xff0c 网络
  • AP AUTOSAR——Security Management

    11 Security Management 11 1 What is Security Management 安全管理是自适应平台体系结构中的一个功能集群 作为一个功能集群 xff0c 安全管理由多个模块组成 xff0c 这些模块向在Ad
  • 如何制作S32V234的Linux5.x版本BSP

    脚本是编译S32v Linux5 x版本bsp文件的流程 官方也有这个指导说明文档 xff0c 主要是第2 3章内容 xff0c 可以参考着执行 1 下面描述的所有步骤都已在Ubuntu 20 04LTS上 xff08 本机或通过虚拟机 x
  • C++经典面试题100例及答案

    1 面向对象的程序设计思想是什么 答 xff1a 把数据结构和对数据结构进行操作的方法封装形成一个个的对象 2 什么是类 答 xff1a 把一些具有共性的对象归类后形成一个集合 xff0c 也就是所谓的类 3 对象都具有的两方面特征是什么
  • C++面试100题,1——40

    C与c 43 43 有什么不同 xff1f 在c 43 43 中能使用引用就不要使用指针 xff0c 要改变一个一级指针就要用一个二级指针 要改变一个二级指针就要用一个三级指针 xff0c 会变得越来越复杂 A类中的func1是虚函数 xf
  • (TDA4 BSP )Texas Instruments Jacinto 7 J721E (DRA829/TDA4xM) BSP 如何制作?

    1 1 1 Download and Install the SDK Processor SDK Linux for J721e Documentation https software dl ti com jacinto7 esd pro
  • 解决Linux 环境 GLIBCXX_3.4.15‘ not found问题

    升级Centos系统之后 xff0c 运行filezilla时 xff0c 出现如下错误的提示信息 xff1a filezilla usr lib libstdc 43 43 so 6 version 96 GLIBCXX 3 4 15 3
  • 两台Linux服务器之间传输文件的四种方法(转载)

    在日常服务器租用中 xff0c 有时需要将文件从一台服务器传到另一台服务器 xff0c 下面给大家介绍四种linux服务器之间传输文件方式 scp 优点 简单方便 xff0c 安全可靠 xff1b 支持限速参数 缺点 不支持排除目录 用法

随机推荐

  • 任务间通信 | 邮箱、消息队列

    本文分享自中移OneOS公众号 任务间通信 上篇讲解了任务间同步 xff0c 在本篇中主要讲解任务间通信机制 xff0c 并对邮箱及消息队列进行详细介绍 通过对其概念 详细设计 接口设计等的讲解帮助开发者更好的理解其在操作系统中的应用 任务
  • c++ 条件变量的使用,实战

    include lt iostream gt include lt thread gt include lt mutex gt include lt condition variable gt using namespace std 线程通
  • SOA架构和微服务架构的区别

    1 SOA架构和微服务架构的区别 首先SOA和微服务架构一个层面的东西 xff0c 而对于ESB和微服务网关是一个层面的东西 xff0c 一个谈到是架构风格和方法 xff0c 一个谈的是实现工具或组件 1 SOA xff08 Service
  • 浅谈AP autosar 之 runtime 基础

    AP Autosar Architecture overview AP autosar在SOC 中的位置 xff0c 起到的作用 下面图可以看出 xff0c AP autosar封装了操作系统的接口 xff0c 封装了功能安全 xff0c
  • 「冰羚」— 撑起自动驾驶未来的“中间件”

    每当谈到自动驾驶的软件开发 xff0c 人们首先想到的 xff0c 是深不可测的人工智能算法 xff0c 是各种感知融合 xff0c 是各类路径规划 但是 xff0c 就算是再智能再高深的算法 xff0c 如果没有底层操作系统的支持 xff
  • 多核处理器的关键技术

    英特尔的cpu是从前代gt atom一路供货到第7代 xff0c 想必日常使用不会有太大区别 xff0c 而在系统之外可能存在一些散热方面的问题 而上市越早的处理器 xff0c 硬件供货越好 xff0c 可能在某些特殊时间段会出现不足 xf
  • LD_PRELOAD作用

    一 LD PRELOAD是什么 LD PRELOAD 是Linux系统的一个环境变量 xff0c 它可以影响程序的运行时的链接 xff08 Runtime linker xff09 xff0c 它允许你定义在程序运行前优先加载的动态链接库
  • C++ 之父的多线程编程建议——现代 C++ 对多线程/并发的支持(下)

    本文承接前文 现代 C 43 43 对多线程 并发的支持 xff08 上 xff09 xff0c 翻译自 C 43 43 之父 Bjarne Stroustrup 的 C 43 43 之旅 xff08 A Tour of C 43 43 x
  • C++关键字之Future promise and async()

    主线程将x传递给子线程 xff0c 子线程将结果x再传递给主线程 include lt iostream gt include lt future gt include lt thread gt using namespace std vo
  • C++ thread::hardware_concurrency 获取硬件支持并发数

    一 功能 获取硬件支持的并发线程数 二 返回值 正常返回支持的并发线程数 xff0c 若值非良定义或不可计算 xff0c 则返回 0 四 示例 include lt iostream gt include lt thread gt int
  • C++并发编程 unique_lock and condition_variable

    在t1线程中插入值 xff0c 在t2线程中取出值 include lt iostream gt include lt thread gt include lt vector gt include lt string gt include
  • ubuntu18.04+安装ros-melodic+安装realsense-ros包

    自己在安装的时候参考了很多博客 xff0c 但许多的方法很杂乱最后还失败了 xff0c 这里综合下自己尝试成功且比较方便的方法 xff0c 参考链接会在下文列出 安装ros melodic 参考 xff1a https www guyueh
  • [C++11 并发编程] 动态选择并发线程的数量

    C 43 43 标准模板库提供了一个辅助函数 std thread hardware concurrency xff0c 通过这个函数 xff0c 我们可以获取应用程序可以真正并发执行的线程数量 下面这个例子 xff0c 实现了一个并发版本
  • [C++11 并发编程] 17 超时等待 - clock和duration

    之前我们看到的所有等待机制都是不会超时的 xff0c 也就是说 xff0c 等待某个同步事件的线程会一直挂起 有些情况下 xff0c 我们希望设置一个最长等待时间 xff0c 使得程序可以继续与用户进行交互 xff0c 使得用户可以取消这个
  • 激光雷达和相机感知融合简介

    本文介绍激光雷达和相机融合的两种方法 xff1a 前融合 xff1a 融合原始数据 xff08 点云和像素 目标框 xff09 后融合 xff1a 融合目标框 前融合 前融合一般指融合原始数据 xff0c 最容易 最普遍的方式是将点云投影到
  • 聚焦芯片:GPU,CPU,SOC,DSP,FPGA,ASIC,MCU,MPU,GPP,ECU等都是什么?

    先上部分概念 xff1a CPU xff1a 中央处理器 xff08 Central Processing Unit xff09 是一块超大规模的集成电路 xff0c 是一台计算机的运算核心 xff08 Core xff09 和控制核心 x
  • 怎么样实现车辆信息安全

    1 车载IDS 正成为持续网络安全保护的核心要素 持续的网络信息安全风险管理正成为VTA的要求 通过IDS车载入侵检测可以为整个车队提供信息安全保护 但是 xff0c 分布式IDS的指导原则是什么 xff1f 为了满足UNECE WP29法
  • SOA通信架构和SOME/IP-SD的主要功能

    1 SOA面向服务的通信交互 如上图所示 xff0c 女神去热水澡堂洗澡 xff0c 想搓背 xff08 find服务 xff09 xff0c 于是她付要付搓背钱给澡堂老板 xff0c 这时澡堂老板知道通过小王和小明的毛遂自荐 xff08
  • OTA升级的实现原理

    一 简介 1 1 概念 OTA xff1a Over the Air Technology xff0c 即空中下载技术 OTA升级 xff1a 通过OTA方式实现固件或软件的升级 只要是通过无线通信方式实现升级的 xff0c 都可以叫OTA
  • 为什么特斯拉自动驾驶汽车不需要激光雷达

    光 糖果Autosar 2022 02 14 08 08 特斯拉仪表板 打造全自动驾驶汽车所需的技术堆栈是什么 xff1f 公司和研究人员对该问题的答案存在分歧 自动驾驶的方法范围从相机和计算机视觉到计算机视觉和高级传感器的组合 特斯拉一直