首页 > 编程语言 >特斯拉自动驾驶算法和模型解读

特斯拉自动驾驶算法和模型解读

时间:2023-02-27 04:55:06浏览次数:55  
标签:Network 特斯拉 解读 算法 毫米波 雷达 4D 激光雷达

特斯拉自动驾驶算法和模型解读

特斯拉是一个典型的AI公司,过去一年训练了75000个神经网络,意味着每8分钟就要出一个新的模型,共有281个模型用到了特斯拉的车上。接下来我们分几个方面来解读特斯拉FSD的算法和模型进展。

1、感知 Occupancy Network

2、规划 Interactive Planning

3、矢量地图 Lanes Network

4、自动标注 Autolabeling

5、仿真 Simulation

6、基础设施 Infrastructure

1感知 Occupancy Network

特斯拉今年在感知方面的一个重点技术是Occupancy Network (占据网络)。研究机器人技术的同学肯定对occupancy grid不会陌生,occupancy表示空间中每个3D体素(voxel)是否被占据,可以是0/1二元表示,也可以是[0, 1]之间的一个概率值。

为什么估计occupancy对自动驾驶感知很重要呢?因为在行驶中,除了常见障碍物如车辆、行人,我们可以通过3D物体检测的方式来估计他们的位置和大小,还有更多长尾的障碍物也会对行驶产生重要影响。例如:1.可变形的障碍物,如两节的挂车,不适合用3D bounding box来表示;2.异形障碍物,如翻倒的车辆,3D姿态估计会失效;3.不在已知类别中的障碍物,如路上的石子、垃圾等,无法进行分类。因此,我们希望能找到一种更好的表达来描述这些长尾障碍物,完整估计3D空间中每一个位置的占据情况(occupancy),甚至是语义(semantics)和运动情况(flow)。

特斯拉用下图的具体例子来展现Occupancy Network的强大。不同于3D的框,occupancy这种表征对物体没有过多的几何假设,因此可以建模任意形状的物体和任意形式的物体运动。图中展示了一个两节的公交车正在启动的场景,蓝色表示运动的体素,红色表示静止的体素,Occupancy Network精确地估计出了公交车的第一节已经开始运动,而第二节还处于静止状态。

 

 

 ▲对正在启动的两节公交车的occupancy估计,蓝色表示运动的体素,红色表示静止的体素

Occupancy Network的模型结构如下图所示。首先模型利用RegNet和BiFPN从多相机获取特征,这个结构跟去年的AI day分享的网络结构一致,说明backbone变化不大。然后模型通过带3D空间位置的spatial query对2D图像特征进行基于attention的多相机融合。如何实现3D spatial query和2D特征图之间的联系呢?具体融合的方式图中没有细讲,但有很多公开的论文可以参考。我认为最有可能采取的是两种方案之一,第一种叫做3D-to-2D query,即根据每个相机的内外参将3D spatial query投影到2D特征图上,提取对应位置的特征。该方法在DETR3D[1]中提出,BEVFormer[2]和PolarFormer[3]也采取了该思想。第二种是利用positional embedding来进行隐式的映射,即将2D特征图的每个位置加上合理的positional embedding,如相机内外参、像素坐标等,然后让模型自己学习2D到3D特征的对应关系,该方法在论文PETR中提出[4]。再接下来模型进行时序融合,实现的方法是根据已知的自车位置和姿态变化,将3D特征空间进行拼接。

 

 

 ▲Occupancy Network结构

特征融合后,一个基于deconvolution的解码器会解码出每个3D空间位置的occupancy,semantics以及flow。发布会中强调,由于这个网络的输出是稠密(dense)的,输出的分辨率会受到内存的限制。我相信这也是所有做图像分割的同学们遇到的一大头疼的问题,更何况这里做的是3D分割,但自动驾驶对于分辨率度的要求却很高(~10cm)。因此,受到神经隐式表示(neural implicit representation)的启发,模型的最后额外设计了一个隐式queryable MLP decoder,输入任意坐标值(x,y,z),可解码出该空间位置的信息,即occupancy,semantics,flow。该方法打破了模型分辨率的限制,我认为是设计上的一个亮点。

学术界在视觉occupancy方面的工作不多,我关注到的最相关的一篇论文是CVPR2022上的MonoScene[5],从单目重建三维体素并且估计出被遮挡的部分,感兴趣的可以去精读。

2规划 Interactive Planning

规划是自动驾驶的另一个重要模块,特斯拉这次主要强调了在复杂路口对交互(interaction)进行建模。为什么交互建模如此重要呢?因为其他车辆、行人的未来行为都有一定的不确定性,一个聪明的规划模块要在线进行多种自车和他车交互的预测,并且对每一种交互带来的风险进行评估,并最终决定采取何种策略。

特斯拉把他们采用的规划模型叫做交互搜索(Interaction Search),它主要由三个主要步骤组成:树搜索,神经网络轨迹规划和轨迹打分。

1、树搜索是轨迹规划常用的算法,可以有效地发现各种交互情形找到最优解,但用搜索的方法来解决轨迹规划问题遇到的最大困难是搜索空间过大。例如,在一个复杂路口可能有20辆与自车相关,可以组合成超过100种交互方式,而每种交互方式都可能有几十种时空轨迹作为候选。因此特斯拉并没有采用轨迹搜索的方法,而是用神经网络来给一段时间后可能到达的目标位置(goal)进行打分,得到少量较优的目标。

2、在确定目标以后,我们需要确定一条到达目标的轨迹。传统的规划方法往往使用优化来解决该问题,解优化并不难,每次优化大约花费1到5毫秒,但是当前面步骤树搜索的给出的候选目标比较多的时候,时间成本我们也无法负担。因此特斯拉提出使用另一个神经网络来进行轨迹规划,从而对多个候选目标实现高度并行规划。训练这个神经网络的轨迹标签有两种来源:第一种是人类真实开车的轨迹,但是我们知道人开的轨迹可能只是多种较优方案中的一种,因此第二种来源是通过离线优化算法产生的其他的轨迹解。

3、在得到一系列可行轨迹后,我们要选择一个最优方案。这里采取的方案是对得到的轨迹进行打分,打分的方案集合了人为制定的风险指标,舒适指标,还包括了一个神经网络的打分器。

通过以上三个步骤的解耦,特斯拉实现了一个高效的且考虑了交互的轨迹规划模块。基于神经网络的轨迹规划可以参考的论文并不多,我有发表过一篇与该方法比较相关的论文TNT[5],同样地将轨迹预测问题分解为以上三个步骤进行解决:目标打分,轨迹规划,轨迹打分。感兴趣的读者可以前往查阅细节。此外,我们课题组也在一直探究行为交互和规划相关的问题,也欢迎大家关注我们最新的工作InterSim[6]。

 

 

 ▲Interaction Search规划模型结构

3矢量地图 Lanes Network

个人觉得本次AI Day上另一大技术亮点是在线矢量地图构建模型Lanes Network。有关注去年AI Day的同学们可能记得,特斯拉在BEV空间中对地图进行了完整的在线分割和识别。那么为什么还要做Lanes Network呢?因为分割得到的像素级别的车道不足够用于轨迹规划,我们还需要得到车道线的拓扑结构,才能知道我们的车可以从一条车道变换到另一条车道。

我们先来看看什么是矢量地图,如图所示,特斯拉的矢量地图由一系列蓝色的车道中心线centerline和一些关键点(连接点connection,分叉点fork, 并道点merge)组成,并且通过graph的形式表现了他们的连接关系。

 

 

 ▲矢量地图,圆点为车道线关键点,蓝色为车道中心线

Lanes Network在模型结构上,是感知网络backbone基础上的一个decoder。相比解码出每个体素的occupancy和语义,解码出一系列稀疏的、带连接关系的车道线更为困难,因为输出的数量不固定,此外输出量之间还有逻辑关系。

特斯拉参考了自然语言模型中的Transformer decoder,以序列的方式自回归地输出结果。具体实现上来说,我们首先要选取一个生成顺序(如从左到右,从上到下),对空间进行离散化(tokenization)。然后我们就可以用Lanes Network进行一系列离散token的预测。如图所示,网络会先预测一个节点的粗略位置的(index:18),精确位置(index:31),然后预测该节点的语义("Start",即车道线的起点),最后预测连接特性,如分叉/并道/曲率参数等。网络会以这样自回归的方式将所有的车道线节点进行生成。

 

 

 ▲Lanes Network网络结构

我们要注意到,自回归的序列生成并不是语言Transformer模型的专利。我们课题组在过去几年中也有两篇生成矢量地图的相关论文,HDMapGen[7]和VectorMapNet[8]。HDMapGen采用带注意力的图神经网络(GAT)自回归地生成矢量地图的关键点,和特斯拉的方案有异曲同工之妙。而VectorMapNet采用了Detection Transformer(DETR)来解决该问题,即用集合预测(set prediction)的方案来更快速地生成矢量地图。

 

 

 ▲HDMapGen[7] 矢量地图生成结果

 

 

 ▲VectorMapNet[8] 矢量地图生成结果

4自动标注 Autolabeling

自动标注也是特斯拉在去年AI Day就讲解过的一种技术,今年的自动标注着重讲解了Lanes Network的自动标注。特斯拉的车每天就能产生500000条驾驶旅程(trip),利用好这些驾驶数据能够更好地帮助进行车道线的预测。

特斯拉的自动车道线标注有三个步骤:

1、通过视觉惯性里程计(visual inertial odometry)技术,对所有的旅程进行高精度轨迹估计。

2、多车多旅程的地图重建,是该方案中的最关键步骤。该步骤的基本动机是,不同的车辆对同一个地点可能有不同空间角度和时间的观测,因此将这些信息进行聚合能更好地进行地图重建。该步骤的技术点包括地图间的几何匹配和结果联合优化。

3、对新旅程进行车道自动标注。当我们有了高精度的离线地图重建结果后,当有新的旅程发生时,我们就可以进行一个简单的几何匹配,得到新旅程车道线的伪真值(pseudolabel)。这种获取伪真值的方式有时候(在夜晚、雨雾天中)甚至会优于人工标注。

 

 

 ▲Lanes Network自动标注

5仿真 Simulation

视觉图像的仿真是近年来计算机视觉方面的热门方向。在自动驾驶中,视觉仿真的主要目的,是有针对性地生成一些少见场景,从而免掉到真实路测中去碰运气的必要。例如,特斯拉常年头疼的路中央横着大卡车的场景。但是视觉仿真并不是一个简单的问题,对于一个复杂的路口(旧金山的Market Street),利用传统建模渲染的方案需要设计师2周的时间。而特斯拉通过AI化的方案,现在只需要5分钟。

 

 

 ▲视觉仿真重建的路口

具体来说,视觉仿真的先决条件是要准备自动标注的真实世界道路信息 ,和丰富的图形素材库。然后依次进行以下步骤:

1、路面生成:根据路沿进行路面的填充,包括路面坡度、材料等细节信息。

2、车道线生成:将车道线信息在路面上进行绘制。

3、植物和楼房生成:在路间和路旁随机生成和渲染植物和房屋。生成植物和楼房的目的不仅仅是为了视觉的美观,它也同时仿真了真实世界中这些物体引起的遮挡效应。

4、其他道路元素生成:如信号灯,路牌,并且导入车道和连接关系。

5、加入车辆和行人等动态元素。

6基础设施 Infrastructure

最后,我们简单说说特斯拉这一系列软件技术的基础,就是强大的基础设施。特斯拉的超算中心拥有14000个GPU,共30PB的数据缓存,每天都有500000个新的视频流入这些超级计算机。为了更高效地处理这些数据额,特斯拉专门开发了加速的视频解码库,以及加速读写中间特征的文件格式.smol file format。此外,特斯拉还自研了超算中心的芯片Dojo,我们在这里不做讲解。

 

 

 ▲视频模型训练的超算中心

7总结

随着近两年特斯拉AI Day的内容发布,我们慢慢看清了特斯拉在自动(辅助)驾驶方向上的技术版图,同时我们也看到特斯拉自己也在不停地自我迭代,例如从2D感知,BEV感知,到Occupancy Network。自动驾驶是一个万里长征,是什么在支撑特斯拉技术的演进呢?我想是三点:视觉算法带来的全场景理解能力,强大算力支持的模型迭代速度,海量数据带来的泛化性。这不就是深度学习时代的三大支柱吗?

特斯拉回归4D雷达,一个成本与技术的疯狂平衡

近日,特斯拉全新HW4.0电脑板被Twitter博主Greetheonly曝光,最引人关注的是新增的以太网接口预计将接入4D毫米波雷达(结合此前特斯拉向FCC递交的4D毫米波雷达文件)。

特斯拉一向是采用摄像头完成视觉感知方案的,从 2021 年 5 月起,北美制造的 Model 3 和 Model Y 将不再配备毫米波雷达,这些车型将通过特斯拉的摄像头视觉和深度神经网络来支撑 Autopilot、FSD 完全自动驾驶和主动安全功能。

特斯拉移除了毫米波雷达,并通过摄像头实现了雷达之前的能力。现在又是什么让特斯拉改变心意,启用4D毫米波激光雷达?其他新能源车企未来是否会跟随呢?

一向特立独行的特斯拉

汽车装备雷达、摄像头主要是为了采集车辆周围环境的数据,俗称给汽车装上眼睛。而无论是激光雷达、毫米波雷达还是摄像头本质上都是具有相同的目的,就是采集环境信息,然后将电信号转变为数字信号和图像信号。

在智能汽车视觉的发展路径上,分两派。只有特斯拉采用摄像头+算法的方案,装配 8个摄像头在车上,并且作为新能源车的领军企业一直坚持不用激光雷达。

包括主视野摄像头;鱼眼镜头(视野120度、拍摄交通信号灯、和较近的障碍物,适合低速场景);长焦距镜头;侧方前视摄像头;侧方后视摄像头和侧方后视摄像头。

其他车企在智能驾驶视觉上都采用常规路线,摄像头+激光雷达+毫米波雷达的硬件升级方案,包括蔚小理以及传统车企。

刚刚放弃毫米波雷达没有2年,特斯拉现在重新将4D毫米波雷达装车,说明了什么?华尔街见闻·见智研究将对此进行深入分析。

对于特斯拉,4D毫米波雷达最具性价比

影响车企选择装配何种产品的主要因素在于两点:成本和性能。

而特斯拉会对当下技术需求和采购成本两者之间做最大的权衡和取舍,而不是冗余堆料的方式,尽最大程度平衡着自动驾驶性能和成本,这或许也是为什么能开启降价内卷的一方面原因。

对于车企来说,产品价格肯定是越低越好,但是技术越高的硬件产品价格肯定是越贵的。目前来说激光雷达就是几种产品中单价最高的,采购单价主要集中在5k-3w元之间;而4D毫米波雷达采购单价相比就便宜很多,约为2000元;摄像头的价格就更便宜了,主要集中在200元左右。

 

 

 从价格上也可以看出,摄像头更具有价格优势,这也是为什么特斯拉青睐这个方案的主要原因。

而功能上来看,摄像头成像会受到天气变化影响十分严重,比如下雨、阴天、雾霾天拍摄不清晰,信号灯光线暗都会导致回传数据有误。

毫米波雷达、激光雷达的成像原理就可以很好的避免摄像头对光线、天气要求严格的这个问题,都是利用回波成像来探测物体的(可类比蝙蝠探测物体的超声波能力),区别是发射的方式:一个是电磁辐射为主,一个是光粒子发射为主。

特斯拉此前为什么放弃使用毫米波雷达主要是考虑:3D毫米波雷达的缺陷,比如没有高度测试能力,角分别率低,对于静态物感知度低的问题。

而4D毫米波雷达现在增加了一个探测维度:高度,也就是能够一定程度实现相机“成像”的功能,检测出目标的距离、速度以及俯仰角的信息,对于空间感知能力进一步加强。

见智研究认为:所以相比于传统毫米波雷达来说,升级后的4D版的确在探测性能上更进一步,改变了特斯拉原本对摄像头方案的坚持。这次在价格和功能上,特斯拉倾向于功能了,不过从目前硬件图来看,应该只是搭载了一个4D毫米波雷达,对于整体成本影响不大。

当然,从探测精度、范围和稳定性等功能层面上来看,激光雷达还是更优的方案,也是更多车企未来的主流选择,而价格高是激光雷达没有大量装配的主要因素。

L2+自动驾驶,激光雷达技术冗余?

从自动驾驶发展的路径来看,特斯拉在L2+等级上选择4D毫米波雷达是可以兼顾毫米波和激光雷达的部分性能的,但是如果升级到L3,甚至更高等级上,4D毫米波或者摄像头的成像质量可能就更难以满足需求。但是对于当下的特斯拉来说,4D毫米波雷达已经够用了。

目前除了特斯拉预计采用4D毫米波雷达,飞凡R7、深蓝SL03也已经上车。此外,主流新能源车企大概率也会陆续考虑将传统毫米波雷达进行替换,目前大部分车企搭载5颗毫米波雷达,这部分市场未来很可能被4D毫米波雷达所抢夺。

 

 

 从机构预测数据来看,全球4D毫米波雷达的市场规模在2027年有望达到35亿美元。至2025年,中国车载4D毫米波雷达市场规模在悲观、中性、乐观情况下有望分别达到1.9亿美元、3.6亿美元和5.4亿美元。

如今坚持摄像头+算法路线的特斯拉已经改变方案,而随着激光雷达的价格逐渐下降,未来有一天特斯拉装配激光雷达也是有可能的。

 

 

 根据乘联会的预测:23年自动驾驶L2.5等级对激光雷达的需求量已经将从16万个提高至64万个,进入24年加之L3等级渗透率提高,激光雷达总量将达到201万个,直到27年行业都呈现高速增长趋势。

另外值得关注的就是激光雷达的价格也会呈现每年下降的发展趋势,23年预计同比下降20%,后续每年下降在15%左右。

机构预测:预计2025年全球及国内乘用车市场激光雷达市场规模分别为541亿元和241亿元,CAGR分别为126%和109%。

相比激光雷达和4D毫米波雷达的市场空间来看,到25年前者至少是后者的两倍之多。

总结

华尔街见闻·见智研究认为:特斯拉在当下选择4D毫米波雷达是综合成本和功能后的一种最优选择方案,但是也仅仅是替换了一颗摄像头来实现成像功能。

从短期来看,4D毫米波雷达在技术层面上确实较传统毫米波雷达的成像更好了,包括增加原本没有的高度测距。除了特斯拉以外,其他车企也很有可能选择4D毫米波雷达作为3D毫米波雷达的升级方案。因此,4D毫米波雷达厂商会一定程度瓜分传统毫米波雷达厂商的订单。

而从长远来看,在自动驾驶的视觉升级之路上,激光雷达的需求是必然发展路径,4D毫米波雷达也不能够替代激光雷达去实现相应功能。

 

 

参考文献链接

https://mp.weixin.qq.com/s/yN6AAQ0pk5dCdNSfAH-75w

https://mp.weixin.qq.com/s/FDbNmAuc0__eI1_Q0cuBfg

标签:Network,特斯拉,解读,算法,毫米波,雷达,4D,激光雷达
From: https://www.cnblogs.com/wujianming-110117/p/17158382.html

相关文章

  • 数据结构(借鉴408)-高阶算法的应用
    数据结构高阶算法的应用算法分析和解题的一般套路算法解法暴力解:枚举解法可行解:目标解法最优解:缘分解法算法解题得分套路结构体定义算法思想和算法步骤......
  • 算法刷题 Day 56 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结
    583.两个字符串的删除操作本题和动态规划:115.不同的子序列相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。https://programmercarl.com/0......
  • 【算法】排序算法之归并排序
    原文网址:https://zhuanlan.zhihu.com/p/124356219前几回,在前面已经对冒泡排序、直接插入排序、希尔排序、选择排序、快速排序做了说明分析。这回,将对归并排序进行相关说明......
  • 特斯拉又有新动作了,真正的全自动驾驶!
    众所周知,特斯拉最近一段时间以来一直在打造全自动驾驶技术,特拉斯重新定义“驾驶”这个行为。未来的某一天我们或许根本就不再需要用到“驾驶员”这一词语,当地时间......
  • 每日算法--2023.2.26
    1.面试题59-II队列的最大值classMaxQueue{//该题的重点在于以o(1)的时间复杂度找到队列中最大的元素,如果只单纯维护当前队列一个最大的值,当该值出队后第二大的值找......
  • 数据结构与算法概述
     一、数据结构与算法简介从广义上讲,数据结构是指一组数据的存储结构。算法是操作数据的一组方法。从狭义上讲,数据结构与算法是指某些著名的数据结构和算法,比如数组、列......
  • 4.10-替换算法
    需要替换算法的原因程序运行一段时间后,Cache存储空间被占满,当再有新的数据要调入时,就需要通过某种机制决定替换的对象集中常见的替换算法先进先出-FIFO最不经常使用......
  • 回调函数和如何使用qsort函数以及最后如何运用冒泡排序完成一个各类型数据都适用的排
    首先回调函数就是通过一个函数指针调用的函数。简言之就是如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这就是回调函数。回调......
  • 常见聚类算法
    聚类算法KMeansKmeans算法,也被称为K-平均或K-均值,是一种得到最广泛使用的聚类算法,主要思想是:首先将各个聚类子集内的所有数据样本的均值作为该聚类的代表点,然后把每个数......
  • 衡量算法的性能-时空复杂度分析
    算法即存在输入输出,由有限步骤结束的程序.因此,显而易见,算法并不是指一个单一的标准答案,而是一切能够完成要求的程序都可以称之为算法.但是算法之间根据性能的不同存......