在上一篇文章中,我们介绍了
特斯拉的神经网络——HydraNet
。目前,HydraNet 只能处理来自单个摄像头的输入。
人工智能日
向量空间
当特斯拉 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 团队对物体检测模型的理解更深,应用之广。他们融合多个模型并深入挖掘模型的潜力。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.