是的,我还在跟特斯拉AI DAY缠斗。AI DAY那天最复杂、也最难懂的恐怕就是Andrej Karpathy发表的视觉架构部分,通过8个摄像头获取的图像到底是如何让车辆在道路上自动驾驶的?有步骤,有内容。
我们都知道特斯拉用8个摄像头来感知周围环境。但你不能简单地把从这8个摄像头中获取的所有信息直接输入给人工智能,让它来做判断,因为这会一次处理太多信息,而现在的计算机还没有这么强大。
为了解决这个问题,就必须压缩数据,同时保留最相关的信息,类似于我们的大脑对眼睛的信息所做的那样。为了做到这一点,特斯拉将这8个摄像头的数据转移到了一个更小的矢量空间(Vector Space)。
这是一个三维空间,包含了环境中所有的相关信息,如路标、汽车、人、车道线等。然后Vector Space就用来实现汽车必须做的许多不同的任务,如物体检测、交通信号、车道线预测等。
但如何从这8个摄像头组成的三维输入,变成一个单一的三维输出呢?这基本上是通过以下步骤实现的,并且所有8个摄像头都是并行完成的,效率非常高。
牢记这张图,下面会反复提及
第1步:Rectify
首先,图像被送入一个校正模块(Rectify),该模块接收图像,并通过将其转化为虚拟表示来校准它们。这一步极大地提高了Autopilot的性能,因为它会使图像在一般情况下(没有发生事件时)看起来更加相似,使网络能够更容易地比较图像,并聚焦于不属于典型背景的重要部分。
第2步:RegNet
然后,这些新生成的图像被送入到RegNet。 这个RegNet只是CNN的一个优化版本。基本上,RegNet会把这些新的图像,像金字塔一样反复压缩信息,网络的起点由一些神经元组成,这些神经元代表图像的一些变化集中在特定的物体上,告诉我们它在空间上的位置。越深入,这些图像就越小,但它们将代表整体图像,同时也聚焦于特定物体。因此,在这个金字塔的末端,最终会有许多神经元,每个神经元都告诉你关于整体图像的一般信息,是否包含一辆车、一个路标,等等。
为了两全其美,会在这个金字塔的多个层上提取信息,这也可以看作是不同尺度的图像表示,侧重于原始图像的特定特征。我们最终得到的是局部的和一般的信息,所有这些信息都告诉我们图像是由什么组成的,以及在哪里。
第3步:BiFPN
然后,这些信息被送入BiFPN,这个模型会迫使这些来自不同尺度的信息在一起沟通,并在其中包含的一般和特殊信息中提取最有价值的知识。BiFPN的输出将是来自8个摄像头的最有趣和有用的信息。因此,它既包含了关于图像的一般信息,也包含具体信息,如在哪里、什么尺寸等等。例如,它将使用来自金字塔顶端提取的深层特征的一般知识的context理解Karpathy所展示的情况,“因为这两个模糊的灯光是在两条车道之间的道路上,它们可能是附着在一个特定的物体上,这个物体是在网络的早期层中从一个摄像头中识别出来的。”
利用这一context,并知道它是一个单一物体的一部分,就可以成功地猜到这些模糊的灯光是一辆车上的。
第4步:Transformer
所以,现在有了来自所有8个摄像头的不同比例的最有用的信息。然后需要压缩这些信息,这样就不会有8个不同的数据输入,这是通过Transformer模块完成的。简而言之,这个模块将把8个不同图片的浓缩信息,转移到我们想要的Vector Space。它将使用这些一般的和空间信息,这里称为Key,计算Query,就是Vector Space的维度,并试图找出什么东西(what)去哪里(where)。例如,一个Query可以被看作是Vector Space的一个像素,寻找前方车辆的一个特定部分。这个值将相应地合并这两个信息,告诉我们在Vector Space中什么东西(what)在哪里(where)。Transformer可以被看作是8个摄像头和Vector Space的桥梁,了解各摄像头之间的所有的相互关系。
时间戳问题
现在,终于把数据浓缩成了一个三维表示,可以开始真正的工作了。这是他们用来标注用于训练导航网络数据的空间,因为这个空间没有8个摄像机那么复杂,更容易进行标注。现在有了一个有效的方法来表示所有的8个摄像头,但仍然有一个问题:单摄像头的输入是不智能的。如果对面的一辆车被另一辆车遮挡,就需要Autopilot知道它还在那里,那辆车并没有因为另一辆车在它前面就消失了。为了解决这个问题,就必须使用时间信息,或者,换句话说,使用多个帧。特斯拉选择使用“Feature Queue”和“Video Module”。
第5步:Feature Queue
Feature Queue将占用一些帧并将其保存在缓存中。然后,每隔一米,或每隔27毫秒,就会把缓存的帧发送给模型。在这里,他们同时使用时间或距离测量来衡量车辆的移动和停止。然后,这些刚刚处理过的帧的三维表示与它们相应的位置和包含车辆加速度和速度的运动学数据合并,告诉我们它在每一帧是如何运动的。
第6步:Video Module
所有这些宝贵的信息随后被送入Video Module。Video Module利用这些信息来理解车辆本身和它在当前和过去几帧中的环境。这个理解过程是通过一个RNN完成的,RNN会在所有帧上反复处理所有这些信息,以更好地理解Context,并最终构建出定义明确的地图。由于使用了过去的帧,RNN现在就有更多的信息来更好地理解当前的状况,这对临时遮挡等情况来说是必要的。
这就是视觉过程的最终架构,它的输出在下图的右下,你可以看到其中一些输出被翻译回图像,以显示车辆在我们对世界的表述中看到的东西,或者说是8个摄像头的表述。Video Module的输出,会并行地发送给车辆的所有任务,如物体检测、车道预测、交通信号等。
上一篇:DM-i所代表的另外一种增程
下一篇:造车行业也有“鄙视链”?
推荐阅读最新更新时间:2024-11-13 10:20
- STEVAL-ILL015V2,基于 LED2472G 和 STM32 HB LED 驱动器的评估板,具有诊断功能
- 邢玉博+1810300528
- LTC2945CMS 隔离式宽范围 I2C 功率监视器的典型应用
- 使用 Microchip Technology 的 MIC3287 的参考设计
- LT8315EFE 85% 高效通用输入离线电源的典型应用电路
- LT1172HVCT、1.25A 高效恒流充电器的典型应用
- 小巧的JTAG接口调试器
- KA431A大电流并联稳压器的典型应用
- 使用 ON Semiconductor 的 NCV70522DQ004G 的参考设计
- AS431精密5V/1A稳压器典型应用