2022年的特斯拉 AI Day分为三大主题:分别为AI机器人- Optimus,AI智能驾驶 FSD和AI超算芯片技术。我在上篇文章《Tesla 特斯拉AI day - 关于特斯拉机器人的进展和技术》大概介绍了其机器人开发平台的一些硬件技术和开发思路。本文我将介绍其第二部分,这一部分主要是其人工智能算法技术,也是其汽车,机器人共用的底层算法,比较硬核和重磅。
在介绍算法之前,我们先看下特斯拉自动驾驶FSD的一些进展。
特斯拉表示从2021年开始交付的特斯拉从硬件层面上都应该支持自动驾驶(此处是“自动驾驶”不是我文章之前常用的词“智能驾驶”),特斯拉团队现在做的是一步一步的提升自动驾驶等级。
目前其自动驾驶软件FSD的使用客户已经从2021年的2千人到现在达16万人。仅仅去年就通过480万段数据训练了超过75000个算法模块,其中交付给车辆281个算法模块,完成了35次版本的发布。
当然特斯拉还是吹牛了一把,他们认为特斯拉能够支持点对点自动驾驶,了解什么是点对点自动驾驶可以点击《浅谈高阶智能驾驶-领航辅助的技术与发展》,他包括从停车场出发实现城市驾驶的交通灯识别停车驾驶,十字路口与其他车辆交互通行,转弯等等。
当然这些进展除了版本迭代内部过程数据化,一年之内使用FSD的客户暴增80倍,等量化很好表达了进展之外,他对消费者感知提升的进展并不是讲的很清楚,你迭代了多少版本用了多少数据,有多少消费者买单并不能说明你使用起来体验很好。其实如果特斯拉能够采用我在《2021DMV自动驾驶公司KPI排行榜》文章中介绍美国加州交通管局用来评价自动驾驶的性能的指标-每次人为介入接管之后行驶公里数KPI(Km Per Intervention)来秀其进展那么就硬核了。
以上就是特斯拉自动驾驶FSD的最新进展,总的来讲数据很震撼,但对消费者使用感知的直接提升数据表达不是特别清楚。
关于特斯拉的FSD的算法技术部分,此次特斯拉2022 AI Day把其FSD背后的技术,按照从终端客户使用感觉到的使用问题开始,然后一步一步深入背后的算法创新优化,算法背后的数据训练等串起来讲。我在这里把他总结分成了如下四个部分,两篇文章去分享:
Tesla AI Day -特斯拉自动驾驶FSD的进展和算法软件技术之算法
1. 路径以及运动规划算法:
当算法植入到终端(车或者机器人),终端通过算法感知环境,规划路径,确保安全,平顺前进。
2. 环境感知算法:
- Occupancy 算法,也就是可活动空间探测
- Lane & Objects 车道以及物体算法,交通中的信息语义层也就是车道线,物体识别以及运动信息。
Tesla AI Day -特斯拉自动驾驶FSD的进展和算法技术之数据和计算
3. 训练算法设施以及软件:
- 训练数据的设施,超算中心用来支持数据处理,算法训练。
- 人工智能算法的编译器以及推理,就是训练算法的框架以及软件方法。
4. 数据标注,采集和虚拟:
- 自动标注算法,训练环境感知算法必须需要已经具有标签的数据,自动标注算法就是标注数据,训练环境感知算法识别这类场景或者物体。
- 环境虚拟,合成制造虚拟场景。
- 数据引擎,现实场景车辆,测试软件获取真实场景环境数据,闭环数据引擎,更正标签等。
希望能给大家带来一些信息,当然看特斯拉的算法有点烧脑,所以错误难免,还请多多指正;另外为了能帮助大家理解,可能很多细节简化,后面希望有时间能够详细分解深入再分享给大家。
1.路径以及运动规划算法
什么是路径规划?我之前文章《自动驾驶路径运动轨迹生成方法》有详细分享,他主要是搜索要遵循的路径、避开障碍物并生成确保安全、舒适和高效的最佳轨迹,让车辆行驶。
场景越复杂,路径以及运动规划更难,所以,大家可以看到当前很多智能驾驶的使用场景基本都在高速环路等半封闭的场景。
难点在哪里?
特斯拉此次AI Day分享了自动驾驶最难的场景之一,也是最考验路径规划的场景 -拥堵十字路口,前方道路有行人横穿和行车占道通行的情况下,路径以及运动规划如何进行安全舒适的无保护左转。
一般遇到这种场景,自动驾驶的车辆可能的行为有:
坚持自己的路径,让其他车辆,行人等交通参与者让自己。
在行人和汽车等交通参与者中间找到空隙行驶。
礼让汽车和行人,等他们走了,再走。这是当前大部分国内智能驾驶的选择。
那么一般自动驾驶软件判断运算的步骤如下:
对当前场景下所有交通参与者进行运动轨迹预测。
基于各个轨迹的成本以及约束进行计算。
让本车以及其他交通参与者的运动轨迹进行交互,特斯拉表示这个运算过程大概耗时10ms,一般一个拥堵的十字路口左转场景,会有超过20个交互相关的交通参与者,有超过100种交互相关组合,那么目标路径规划时间大概是50ms
如何实时解决这种场景?
特斯拉表示其采用Interaction Search交互搜寻算法,寻找最优的结果,它分为以下5个步骤:
视觉环境识别 - 采用稀疏抽取的方法抽取潜在特征来识别车道,障碍物,移动物体等交通参与者。
选定目标候选人 - 确定车道线,非结构化区域来形成可通行的空间信息。
产生可能的轨迹 - 通过轨迹优化,神经元规划生成运动轨迹。
产生运动方案 - 例如到底是强行插入交通还是等待行人通行。
确定轨迹和时间,速度 - 当确定好运动方案时候,还需要考虑运动轨迹下的其他车辆通行情况,多种考虑之后才能输出运动规划。
特斯拉表示第5步,是最难的,因为随着每一步约束的增加,每一种新的轨迹生成运算都需要1-5ms,那么你想想这种情况下大约有一百多种方案,那么显然都快需要0.5s的时间用来运算了。
特斯拉想到的方案是lightweight queryable networks轻量化可查询的神经元算法,这种算法是去查找基于其人类驾驶方法场景库以及线下虚拟仿真运算出的结论,也就是查找库已有方案,看他的运动轨迹会怎么做,这样可以在大约100us,也就是0.1ms内来生成一种轨迹。
有了多种轨迹和运动规划之后,接下来还需要选择一种,这个时候特斯拉算法采取对碰撞检查,控制舒适性,需要介入的可能性,是否拟人化等多项要求,进行打分来确定,选定最终轨迹和运动规划。
以上就是特斯拉利用其路径规划算法,在解决交通繁忙条件下无保护左转采用的交互搜寻算法,寻找最优的结果的流程。这里一个比较妙的方法是特斯拉有一个人类驾驶行为和仿真参考库提供检索。
2.环境感知算法
环境感知是一切智能驾驶的源头,众所周知特斯拉环境感知主要依赖视觉,当然我之前文章《智能驾驶要用多少个激光雷达?分别放在哪里?什么作用?》等都表示视觉无深度信息容易出问题,但这次特斯拉介绍了其Occupancy Networks 算法用来探索可运动3D空间,那它是否能够解决视觉深度信息呢?按照特斯拉的理念应该是能,只等待算法的进化,此次没有细节,让我们先回到其Occupancy Networks 算法。
Occupancy Network 算法能干什么?
特斯拉在过去几年中一直开发的算法,他主要是通过特斯拉外部的8个摄像头视频流,去构建基于几何体积块的环绕汽车的3D空间,并持续去识别全貌即使短时间内有遮挡物,能够识别标注Occupancy(翻译成占住的?)物体例如马路牙子,汽车,行人等,他还能识别物理的流动,来预测一些偶然的流体运动例如长巴士,拖挂车的甩尾,这样Occupancy Network 算法能够高效识别感兴趣的点。
特斯拉表示其Occupancy Network算法在算力和内存之间取得很好的效率,大概10ms就可建模完成,目前此算法已经运行在所有FSD的特斯拉上。
Occupancy Network 算法工作原理是怎样的?
特斯拉表示其Occupancy Network算法工作流大概分以下五个步骤:
1. Image Input ,8个摄像头依据摄像头标定矫正后直接输入给算法,视觉输入不使用ISP(以人为本的图像处理)同时因为摄像头的原始数据是4 位彩色它能提供16倍的动态范围给到算法,所以可以减少输入的延迟。了解摄像头基本原理点击《智能汽车要用多少个摄像头?分别干啥?什么原理?》。
2. Image Featurizers,使用预训练的深度神经网络模型对图像进行特征化,输入给下一步。特斯拉采用RegNet 以及BiFPNs算法来特征化图像,特征化基本就是识别物体了。
3. Spatial Attention,是卷积神经网络中用于空间注意的模块。它利用特征的空间间关系生成空间注意力图,也就是构建空间信息。这里特斯拉提到两个算法Mlticam Qurey Emdedding 也就是多摄像头查询,Spatial Query空间查询然后输入给注意力Attention算法,这里就是构建空间。
4. Temporal Alignment,分为两个部分,一个部分是自己车辆的轨迹对齐,另外一个将各个识别特征物对齐,初步形成了时空特征。
5. Deconvolutions,去卷积也就是把浓缩的特征反向成物体。这里其中有一个一直是普通视觉算法的噩梦,就是路面地理信息,例如上下坡度,特斯拉表示其算法能够识别路面的地理特征。
6. Volume Outputs,去卷积之后的反向物体,将从空间上能代表物体大小,被放置在时空中,而且此类空间占据还根据路面的情况自动匹配,这里特斯拉讲到一个算法NeRF state,能够表示具有复杂遮挡的详细场景几何,这样可以让时空更加真实。
7. Queryable Outputs,这里很有意思,去卷积之后的反向物体有些可能不能完全代表真实的物体的大小,所以特斯拉算法采用查询法去数据库中查询真实世界的结果,进行位置和大小的矫正再进行空间放置。
Occupancy Networks 算法可以通过摄像头收割数据,然后利用NeRFs算法构建真实世界的精准映射-虚拟世界,当然特斯拉当前的虚拟构建显然做不到把摄像头色彩完全投影进来,特斯拉目前主要任务是通过车辆收集数据构建可支持自动驾驶所需关键信息的虚拟3D世界,特斯拉也想收割全球以及其各种天气下的信息,当然这当中肯定还有很多技术问题有待解决,所以特斯拉也趁机人才招募广播一把。
特斯拉表示其Occupancy Networks 算法都是自动标注算法训练而成的,特斯拉这个环境感知算法听起来确实厉害,他在Bird's-eye view算法上又进了一步
有了Occupancy Networks 算法可以让自动驾驶对可行驶空间有了认知,但是交通道路是有自己的规则的,其中最直观的就是车道线,所以接下来让我们看看特斯拉对于车道线的识别有什么新内容。
为什么要使用新的车道识别算法?
特斯拉表示其老的车道识别算法是使用2D平面,分割算法例如RegNet,他在高速以及清晰高度结构化的场景应用的比较好,目前基本上国内车型应该都采用此类算法,当然国内的道路结构化都比较好,但在国外那种路面国内车型都是挑战,毕竟国外的设施都没有国内新。
当然车道清晰等也不是特斯拉老算法的主要问题,特斯拉在国外训练的算法对于清晰度应该也不是问题,问题是城市应用场景中,简单转弯分隔的结构化车道,繁忙交通中交汇口前车遮挡等无法采集到足够的数据的时候,此类问题是经典车道识别算法无法解决。
当然国内依赖高精地图的智能驾驶方案,则没有此类问题,但他需要准确的高精地图,这就是为什么现在的城市领航辅助迟迟没上,他们必须要有高精地图。高精地图,第一需要测绘了,第二需要有关部门批准释放了。
所以不使用高精地图仅仅依靠视觉算法的特斯拉给出的答案是:用神经元算法预测,生成全套车道实例及其相互连接。
如何实现?
特斯拉表示其最新的FSD 车道算法由以下三个组件组成
1. 视觉组件 - 车辆上八个摄像头的视频流输入卷积层、注意层和其他神经网络层进行编码,或许丰富的环境信息,然后生成带有粗略路线图的表示。
2. 地图组件 - 额外的神经网络层编码的道路级地图数据,特斯拉称之为车道引导,这张地图不是高清地图,但它提供了许多关于交叉口的有用提示,车道内的拓扑结构,交叉路口的车道数,以及一组其他属性。
这里的前两个组成部分产生了一个密集张量世界,可以对世界进行编码,但特斯拉真正想做的是转换这个稠密的张量为智能驾驶车道的连通集合。
3. 语言组件 - 特斯拉将这个任务看成一个图像转字幕的语言任务,这个任务的输入是这个稠密的张量,输出的特殊的文本语音用来预测车道连通。
用这种车道语言单词和符号对车道进行编码,这些单词和符号就是3D中的车道位置,在单词符号中引入修饰语,对连接词进行编码通过将任务建模为语言问题,我们可以利用语言人工智能算法的最新技术来处理道路的多重连通集合。
所以特斯拉的方法是用最先进的语言建模和机器学习算法来解决计算机视觉问题,语言算法应该在人工智能算法中属于比较先进发展较快的一个分支,主要原因应该是语言数据更易得和数据量小,便于学习训练,此次特斯拉发布的车道线识别算法的亮点就是这个。如果展开这个算法估计文章得再加几千字,所以等我有机会深入理解,再详细分享。
总结
总的来讲其算法此次有几个亮点,对于十字路口算法,构建了人类驾驶行为和虚拟驾驶行为库供算法查询从而节省计算时间,利用各项指标去框定选择最优路径。对于车道识别算法,创新性的借鉴语言算法来解决视觉问题。
领取专属 10元无门槛券
私享最新 技术干货