人工智能

特斯拉人工智能日——基于transformer模型的FSD向量空间_特斯拉_向量 云服务

向量空间

当特斯拉 AI 团队致力于 FSD 时,他们很快创造这还不足。
他们须要更多的摄像头,而感知系统的预测结果必须转化为三维空间,这也是Plan & Control系统的根本。
特斯拉称这个 3D 空间为“向量空间”。
车辆及其所在空间的信息,如车辆的位置、速率、车道、标志、旗子暗记灯、周围物体等,都须要被数字化,然后在这个向量空间中可视化。

Occupancy Tracker占用空间跟踪器

特斯拉 AI 团队利用 C++开拓了一个名为Occupancy Tracker的系统。
该系统将图像中检测到的路况信息拼接起来,但是这种设计有两个问题:·

问题1:跨相机领悟和跟踪器很难编写。
调度占用空间跟踪器及其所有超参数非常繁芜。
手动调试 C++ 程序对付每个程序员来说都是一场噩梦。

问题2:图像空间不是精确的输出空间。
神经网络模型该当在向量空间而不是图像空间中进行预测。

来自:特斯拉人工智能日

如上,利用camera检测然后进行图像领悟,问题是每个camera都有很好的预测结果,但是投到向量空间后精度丢失严重。
(见上图底部投影中的红蓝线)。
从根本上说,这是由于须要每个像素具有极其准确的深度才能实际进行此投影。
很难在图像的每一个眇小像素中如此准确地预测深度。

在图像空间(per-camera detection then fusion)中,无法办理以下两种情形:

遮挡区域的预测预测更大的物体(一个物体超过两个以上的相机,最多五个相机)

这两种情形的预测无法进行很好的预测。
如果处理不当,乃至会造成致命的交通事件。

总的来说,Tesla AI 团队想要布局一个如上图右侧所示的神经网络。
它用一个主干处理每一个图像,并将其从图像空间特色重新表示为矢量特色,最后进入头部的解码。

这里有两个困难:

如何将特色从图像空间转换为向量空间?以及如何使其可区分图像空间与向量空间,从而使端到端演习成为可能。
深度学习算法函数的convex优化问题。
我们所有的优化方法只有在函数可微时才有效。

如果你想从你的神经网络中预测向量空间,你须要基于向量的数据集。

来自:特斯拉人工智能日

特斯拉的 AI 团队利用BEW 预测而不是图像空间预测。
例如,上图中,输出空间中的单个黄色像向来自特斯拉前方的三个摄像头(主前摄像头、窄前摄像头、宽前摄像头)检测到的道路边缘的投影。
此投影取决于路面几何形状,如果检测点被遮挡,可能须要检测其他位置。
真的很难真正做到精确检测并对此位置进行固定的转换。

来自:特斯拉人工智能日

为理解决这个问题,Tesla AI 团队利用了Transformer模型来表示这个向量空间,而Transformer 模型利用了多头把稳力机制。

What is Transformer?

Transformer翻译过来是变形金刚,当然,这里的Transformer并不是讲述的电影。
而是近年来最受关注的深度学习模型。
最早在谷歌论文Attention Is All You Need中提出,紧张运用于自然措辞处理(NLP)领域。

Transformer 的核心是把稳力机制。
BERT、GPT 、VIT、SWIN等其他模型都是基于 Transformer。
这些以把稳力机制为核心的模型被广泛运用于 NLP、CV、AI 等任务中。

一样平常来说,Transformer 模型具有编码器-解码器构造。
编码器/解码器由一堆相同的层组成。
紧张是,每个encoder层包含一个Multi-Head Attention层和一个Feed-Forward层;每个解码器层包含两个多头把稳力层和一个前馈神经网络层。

Attention 有很多种:Soft Attention、Hard Attention、Self Attention、Dot-Product Attention、Single Attention、Multi-Head Attention。
在论文Attention is all you need 中, Attention 机制 由 Multi-Head Attention 和 Scaled Dot-Product Attention 组成。

从图像空间到向量空间,我们可以类比从一种措辞翻译到另一种措辞的翻译过程。
如上图,既然Transformer在自然措辞翻译方面有着如此出色的表现,那我们能不能用它把Image Space“翻译”成Vector Space呢?

特斯拉AI团队利用Transformer模型把图像空间转换到向量空间

如何演习这个 Transformer?

Image-to-BEV Transformer 图像空间转换到向量空间的演习过程:

1、初始化输出空间大小的栅格:Output Space Raster,Positional 对输出空间栅格上的点和所有图像及其特色进行位置编码,并馈送到编码器。

2、编码器(具有多头自把稳力)对此进行处理并天生初始向量空间栅格的编码表示。

3、目标 BEV(具有向量空间特色)通过位置编码转换并馈送到解码器。

4、经由解码器与编码器交互,以产生目标 BEV 的编码表示

5、输出层将其转换为 BEV 特色并输出向量空间(BEV)。

6、Transformer 的丢失函数将此输出序列与演习数据中的目标序列进行比较。
此丢失用于天生梯度,以在反向传播期间演习 Transfomer。

推理Inference

在 Tesla 模型中,如上例所示,利用 Transformer 将 Image Space 转换为 Vector Space 的过程可以大略概括为以下几个步骤:

1、初始化一个输出空间大小的栅格:Output Space Raster

2、对输出空间栅格上的点进行位置编码。
接下来,利用多层感知器 (MLP) 将其编码为一组Q向量。
例如黄点。

3、所有图像(来自 8 个摄像头)及其特色也司帐算自己的K和V。
(图中Multi-Cam图像特色库部分)

4、把稳力机制打算(Transformer 中的点积把稳力)以在 Multi-Cam 图像特色库中搜索并将结果输出到向量空间。

你可以这样理解:首先你问Transformer网络,我是输出空间(向量空间)中的一个像素(黄色点)在这个位置。
我正在探求这种类型的功能。
你(八台摄像机)看到了什么?此时,有3个摄像头相应这个位置是路边。
经由一些处理,末了在向量空间中的那个位置输出一条道路边缘。

初始向量空间栅格上的每个像素都要经由这样处理的,所有变换后的像素构成一个完全的向量空间拼图。
特斯拉 AI 团队已经证明,这种转变是非常有效的。

虚拟相机

由于特斯拉8个摄像头的参数不同:焦距、视角、景深、安装位置不同,不同摄像头下的同一个物体也不一样,这种数据不能直接用于演习,以是在演习之前,我们须要将 8 个摄像头标准化为一个合成虚拟摄像头。

特斯拉团队在图像校正层的正上方插入了一个新层,这是一个相机校准功能,它将所有图像转换为一个虚拟的普通相机。
做校正变换后,之前模糊的图像会变得清晰。
这大大提高了性能。

上图是部分结果,来自神经网络的预测结果得到显著改进。
这是一个直接在向量空间中预测的多相机网络。
多摄像头网络的另一个好处是它改进了工具检测,尤其是当camera只看到一小部分汽车或在狭小空间中超越摄像头边界的汽车时。

***神经网络架构

上面我们得到了一个基于 Vector Space 向量空间的多摄像头网络办理方案,但是要实现终极的自动驾驶,我们还须要在网络中添加另一个维度:韶光。

自动驾驶中除了检测车辆、旗子暗记灯、路边、标志等物体外,我们还须要预测:这辆车是否停放,是否在移动,移动的速率有多快,是否被遮挡。
有时,我们还须要记录驾驶情形等信息。

因此,特斯拉 AI 团队试图将两个模块插入到神经网络架构中:一个特色行列步队模块将随着韶光的推移缓存个中一些特色,另一个***模块将暂时领悟这些信息。
除了来自 8 个摄像头的信息外,它们还将运动学、惯性丈量单元 (IMU) 馈送到神经网络中。
运动学信息基本上是速率和加速度。
从这里我们可以看到,这个版本的 Tesla AI 只利用了 8 个摄像头和 IMU。

特色行列步队

如上图,便是Feature Queue的布局。
基本上有三个行列步队:Ego Kinematics、Multi-Cam Features 和 Positional Encodings。
众所周知,行列步队的操作使其成为前辈先出(FIFO)的数据构造。
行列步队的弹出和推送机制对付特斯拉 AI 案例非常主要。
尤其是什么时候将数据推送到特色行列步队中?

行列步队推送机制有两种:Time-Based Queue(存储韶光序列信息)和 Space-Based Queue(存储空间信息)。

基于韶光的行列步队

如上图所示,自动驾驶汽车正驶向路口,前方的车辆将开始通过路口,并将暂时开始遮挡前方的部分车辆。
自动驾驶汽车在这个十字路口勾留了一段韶光。

那时,我们须要某种基于韶光的行列步队,例如,我们每 27 毫秒将特色输入到行列步队中。
(每帧采样数,特斯拉相机参数为1280x960@36Hz,每帧间隔为1/36 = 0.0277 seconds = 27 milliseconds)。
如果汽车暂时被遮挡,神经网络有能力及时查看或者参考影象帧。
纵然汽车现在看起来被遮挡了,在之前的特色中也有它的记录,神经网络仍旧可以利用它来进行检测。

基于空间的行列步队

如上图,自动驾驶汽车在左转弯车道上,而阁下的车道是直行的。
那时,确实有必要理解路上的左转线标记。
有时,此标志已经在很早之前被检测到,如果自动驾驶汽车只有基于韶光的行列步队,可能会在等待红灯时忘却左转功能。
以是特斯拉 AI 团队利用了 Space-Based Queue,每次汽车行驶一定的固定间隔(每 1 米)推送干系信息。

以是,Tesla AI 团队有一个 Time-Based Queue 和一个 Space-Based Queue 来缓存特色并进入***模块。

***模块

对付***模块,有很多方法可以在韶光上领悟这些信息:3D-Convolutions、Transformer、Axial Transformers、Recurrent Neural Net 和 Spatial RNN。
个中,Tesla AI 团队非常喜好空间递归神经网络(Spatial RNN)。

RNN & LSTM & GRU

在先容 Spatial RNN 之前,我们首先理解循环神经网络 RNN、 LSTM 和GRU。

循环神经网络(RNN)是一种用于处理序列数据的神经网络。
紧张用于自然措辞处理(NLP)。
RNN 是一种具有循环构造的神经网络。
RNN虽然让网络有影象,但它只有短期影象,无法记住“远间隔”的信息。
由于永劫影象须要RNN利用更多的RNN单元,这样会造成梯度消逝的问题,也就无法拥有永劫影象。

GRU是对 RNN 隐蔽层的修正,它可以更好地捕获远程连接,并有助于办理梯度消逝问题。
另一种许可在一个单元中同时拥有长期和短期影象的单元是 LSTM。
它乃至比 GRU 更强大。
GRU 和 LSTM 都是 RNN 的变体。
他们都有Gates机制。
而 GRU 可以看作是 LSTM 的简化版本。

空间循环神经网络Spatial RNN

由于网络须要有永劫光影象,以是须要用到 RNN。
从上面的截图中,我们可以看到 Spatial RNN 的单元看起来利用了 GRU 构造。

为什么特斯拉利用 GRU 而不是 LSTM?

对付LSTM来说,GRU的参数更少,收敛速率更快,以是它实际上须要更少的韶光和更少的打算能力。
而这部分须要在自动驾驶汽车芯片上快速完成,打算能力有限。
因此,现阶段特斯拉AI团队选择了相对大略的GRU,而不是LSTM或更繁芜的构造。

详细来说,在特斯拉自动驾驶构造中,我们在二维表面上行驶。
Telsa AI 团队实际年夜将隐蔽状态组织成二维格子。
当汽车行驶时,网络仅更新汽车附近和汽车能见度的部分。
Telsa AI 团队正在利用运动学事理将汽车的位置整合到隐蔽特色网格中,并且只在汽车附近的点更新 RNN。

如图,每个网格都有一个RNN网络,赤色矩形代表自动驾驶汽车,白色矩形是自动驾驶汽车周围一定范围内的特色。
当自动驾驶汽车 从 A 的位置移动到 B 的位置时,特色框也会移动。
这时候,我们只须要更新特色框覆盖的黄色框内的RNN即可。

Spatial RNN 的实际表现非常出色

这个例子可视化了 Spatial RNN 隐蔽状态下的不同通道。
在这 15 个通道中,您可以看到道路的中央、边缘、线条、路面等。

此示例显示了隐蔽状态下前 10 个通道的均匀值,用于不同交叉点的不同遍历。
由于 RNN 随时跟踪正在发生的事情。
神经网络具有实际选择性地读取和写入该内存的能力。
因此,如果我们阁下有一辆车,并且挡住了道路的某些部分,那么网络就有能力不写入这些位置。
当汽车开走并且我们有一个非常好的视野时,RNN 肯定想写下关于那部分空间的信息。
这样可以看到驾驶的特色信息是完全的,不会由于临时遮挡而丢失信息,导致缺点操作。

空间 RNN 的好处

1、提高对临时遮挡的鲁棒性

在这个例子中,那里有两辆车(从屏幕顶部),一辆车将驶过(从屏幕右侧)并短暂遮挡它们。
屏幕中间底部的赤色块是自动驾驶汽车。
有单帧(橙色)和***(蓝色)预测。
当它们都在视野范围内时,预测大致相等。
当它们被遮挡时,单帧网络会丢弃检测,但***模块会记住它们。
而当它们仅被部分遮挡时,单帧网络会做出非常糟糕的预测(赤色圆圈内的不稳定橙色块)。

2.从***架构中提高深度和速率

Spatial RNN 在深度估计,尤其是速率方面的能力显著提高。
展示了“remove-the-radar”项目的一个片段,个中绿色为雷达深度和速率,橙色为单帧性能,蓝色为***模块性能。

特斯拉视觉网络终极构造

原始图像在底部输入并经由校正层以校正相机并将所有内容放入通用虚拟相机中,通过 RegNets 残差网络将它们处理成多个不同尺度的特色,并将多尺度信息与 BiFBN 领悟,通过一个transformer模块将其重新表示到向量空间。
加入韶光或空间的特色行列步队,由***模块(如 Spatial RNN)处理。
最后进入 HydraNet 的多头预测构造。

在当前的神经网络中,韶光和空间的领悟是相称晚的。
他们操持对空间或韶光进行更早的领悟,例如在底部利用cost volumes or optical flow或光流网络。

当前神经网络的输出是密集的栅格,在车内进行后处理实际上是相称昂贵的,而且存在系统的延迟。

从上图中的Tesla AI模型来看,Tesla利用的模型是一些常见的物体检测领域的模型,如RNN、LSTM、Transformer、ResNet、RegNet、BiFPN、YOLO,但Tesla AI 团队对物体检测模型的理解更深,运用之广。
他们领悟多个模型并深入挖掘模型的潜力。