特斯拉FSD全自动驾驶解读

前言

近日,特斯拉CEO马斯克闪电访华,引发一片猜测。针对业内关注的FSD(Full-Self Driving,全自动驾驶)何时会在国内落地,4月29日特斯拉中国方面核实,“目前具体时间不好说,但预估是快了。”

本文将参考微信公众号“智能汽车设计”发布文章,从人工智能的角度,解读特斯拉如何通过8个摄像头实现全自动驾驶,全视觉的解决方案挑战是及其大的,类似于训练机器像人脑一样通过不断学习来掌握自动驾驶的技能,以下是关于FSD的一些解读。

1.HydraNet神经网络架构

HydraNet主要针对摄像头输入的每一帧画面,进行卷积运算,提取图像特征。卷积运算是通过一个带有权重信息的卷积核,按照一定的步长,在图像上与对应的阵列像素值进行卷积累加运算。运算的结果是原始图片越来越小,像素越来越低。随着这个过程,图像的各种特征更加明显,就能方便掌握图片中到底是什么物体。这个和我们人类的认知恰恰相反,人类倾向于高分辨率图片,才能看出图中是什么物体。但是机器要一层层提取特征,直到分辨率被卷积到最底层,才能充分识别图像中的物体,因为对于机器来说,一张图片只是一堆像素的组合而已,机器通过不断的卷积,从一张图片上形成上百个特征图,这些特征图分别代表如前方的车辆、某处的垃圾桶和行人等。卷积运算过程如下如所示:

HydraNet就是特斯拉用来做目标识别的神经网络架构名字。从下往上分别是输入的原始图像,规格是1280*960 12bit+HDR,接下来蓝色方框是backbone骨干网络,这一部分代码主要针对图像特征进行初步提取。特斯拉的backbone用的是RegNet架构,这个其实来源于facebook最早提出的卷积神经网络架构。接下来黄色框里面的Neck,这部分代码可以理解为对图像特征做进一步分析,提取图像细节和语义信息。最后红色方框的是head,这里面的多个head,对应不同的任务,比如有的做车辆自身检测,有的做交通信号灯检测,还有的做车道检测等等。这整个框架就是HydraNet架构。其基本架构如下图所示:

2.Vector Space的3D街景

以上是单一图像,而要实现全自动驾驶,就需要把车辆放置在一个立体空间。特斯拉需要把8个摄像头的数据进行整合,这就是我们常常在中控台看到的3D街景,这个不同于我们常常理解的环绕影像,而是需要把8个摄像头采集到的数据输出到车体坐标系,这个空间就叫做Vector Space。其3D街景如下图所示:

一般来说实现Vector Space有三种方案。一是各个摄像头分别识别,然后投影到车体坐标系;第二种方案是所有摄像头的画面先做拼接,然后在拼接的画面上做目标识别;第三种方案是直接端到端处理,输入多相机图像,直接输出带有识别的车体坐标系,特斯拉运用的是第三种方案。这也是最为困难的一种方案,首先的难点是需要把二维画面中的图像特征提取到三维空间中,如何准确还原是一个很大的困难。另外,在这个所谓的Vector Space中,如何进行数据标注。因为特斯拉要对摄像头看到的东西,实时进行标注,用于远程的超级计算机进行训练。

针对二维转三维,特斯拉用了一个在NLP领域比较热门的transformer机制。这个transformer可以理解为一种工具,他主要用在翻译领域。在transformer中有三个参数query、key和value。这三个概念来源于推荐系统,比如在电影推荐中,query相当于用户的喜好信息,比如兴趣和性别等,key是电影的类型,value就是哪个待推荐的电影。transformer相当于把二维画面翻译成三维画面。

特斯拉先把所有摄像头的画面融合进行格栅化,处理成bird eye view鸟瞰图,然后每个像素点向transformer查询,也就是query比如说,我是一个位于某某坐标的黄色像素,我在寻找符合这一特征的数据,那么你们8个摄像头都看到了什么?那么此时位于挡风玻璃后面的三个摄像头就会回应说,这个特征是马路牙子。然后在Vector Space中,在对应位置就会出现马路牙子。通过这个方法,多机位画面就会转变为Vector Space。  其街景原理识别如下图所示:

Vector Space被缝合好了之后,要实现自动驾驶我们还欠缺一个重要的维度:时间。因为在实际驾驶状态,周围的一切都是处于运动状态,我们不但要知道他是什么,还要了解他的运动趋势,是否被暂时遮挡了?否则车辆没有办法做到预判。因此特斯拉在视频处理的网络架构中,增加了两个模组,分别是特征序列模组视频模组。正如我们前面所述,特斯拉将来自多个机位的原始图像,通过图像矫正进入卷积网络,提取多尺度特征,然后多个相机视角融合为鸟瞰视图。进一步多机位图像特征会进入特征序列,而特征序列会缓存过去一段时间内的特征。而此时IMU的数据也会被填入进来辅助记录,然后是一个视频组Video module来临时处理这些缓存图片。特征序列可以由时间和空间驱动。从时间维度上,每个27毫秒就会push一次信息,空间序列中每隔1米就会push一次。他们的作用是如果一辆车被暂时遮挡,时间序列中所记录的缓存信息,会告诉车辆这个位置刚刚是有一辆车的,所以尽管当前画面没有直接检测到一辆车,但是系统仍然会知道这里实际是有一辆车的,这就是时间序列的作用。时间和空间两个维度的信息,会被暂时缓存到特征序列,并提交到视频模组进行处理,视频模组采用的是循环神经网络,它是带有时间属性的,这种神经网络十分接近人脑的记忆效应。    

因此特斯拉视觉神经网络的完整架构,一共分为5个部分,第一二部分是单摄像头目标检测,第三是多机位融合和Vector Space(类似3D街景),第四是时空序列记忆,第五是子任务处理。因此特斯拉的视觉算法机制,总的来说就是单目标检测后,多机位融合形成矢量空间,根据时空序列来加强预判,然后把结果输出用于单独任务处理,实现车体坐标系下的目标检测和行为预测。

3.Labeling标注物体

Vector space有了空间中的各种物体之后,是如何进行标注的呢?这里就要讲到labeling,也就是标注。神经网络首先要训练,那么训练的时候先要给他指明图片上各个物体是什么东西。很显然训练神经网络所需要的数据量是非常大的。特斯拉FSD的训练数据主要是来自于特斯拉的工程车辆以及客户的车辆。而且它有一个影子模式,就是系统会记录在当前场景人类驾驶员的决策,从而进一步训练机器的识别和决策能力。 

早前特斯拉有一个1000人的团队是专门来进行人工标注的。后来特斯拉训练了一个单独的神经网络模型来进行自动标注。要知道特斯拉是直接在Vector space下进行标注的。而这里的训练数据就不是一张张图片了而是clip。一个clip大约是45秒到1分钟左右的视频画面,同时匹配了IMU惯性测量单元的数据、GPS的数据以及里程等数据,这些数据被直接发送到特斯拉的超级计算器中,通过AI算法来自动进行标注。然后用来训练相应的神经网络。特斯拉的强大之处在于对于某个地点,比如说一个十字路口,可能经常会有特斯拉经过,那么就可以获得源源不断的该路口的视频画面。这些画面,会进一步来优化标注的结果。因为有时候一个大画面中这个路灯可能会被一辆大卡车挡住了,那么在另一辆车的画面中这个路灯是没有被遮挡的。再比如说大雨或者大雪天气中,由于前方大卡车呢溅起了很多水雾,因此视野变差,对于这样的场景,特斯拉用来做自动标注的服务器会从车队阵列中查询类似的场景,然后输送到神经网络用于训练,进一步加强该场景的识别。  

4.Depth深度距离信息学习

目前可以确认在特斯拉的车载软件中有一个专门感知像素深度的神经网在暗中运行,特斯拉已经具备从纯视觉来预测像素深度距离的能力。

我们知道激光雷达之所以受欢迎,就是因为它可以直接获取周围环境的深度信息也就是车辆距离各个物体的距离。我们是可以依靠摄像头来读取深度信息的。通过双目立体摄像头来判读深度信息是相对比较容易的,因为双目摄像机有很多种几何约束,比如说焦距、摄像头的光芯距离等等,通过这些约束是可以求出摄像机距离物体的大概距离的。但是利用单目摄像机来实现深度预测是基本不可能的。

特斯拉采取的思路是模拟人眼的视觉感知能力。因为我们生活在三维世界大脑经过大量的训练后,当你看到一张二维的照片时也能判断出照片中的透视关系和三维感受。即便把一只眼睛闭上也能分辨出一张图片中的立体感。人脑的这种深度感知能力并不是与生俱来的,实际上是被训练出来的。根据特斯拉的前AI主管Andrej Karpathy的介绍,提到了一篇来自伯克利加州分校和谷歌的联合论文《Unsupervised Learning of Depth and Ego-Motion from Video》。下面针对这篇论文的核心思想进行解释。    

这篇论文主要讲的是无监督的深度学习和帧间运动。算法研究团队设计了一种神经网络架构可以在无监督的前提下实现对于像素的深度感知。所谓有监督神经网络训练,实际就是我们常说的使用激光雷达采集到的真实数据进行训练,但是这种方案采集成本高昂,而且环境是随时变化的,采集难度很大。

特斯拉采用的也是无监督神经网络训练。无监督就意味着没有真实物理世界的深度数据。那么前面那篇论文的算法框架主要是分为两个,一个是深度估计CNN,一个是位姿估计CNN前者用来计算像素深度,后者用来计算摄像机位置的变化。它的训练方式是针对时刻t捕捉到的画面进行深度估计,然后把t时刻、t-1和t+1时刻的三幅图片输入到位姿CNN中,由这个CNN估算出t-1到t,以及t到t+1的参数转移矩阵,重构出t-1和t+1,然后利用这两个时刻的原图来作为监督进行训练。    

这种深度估计的训练是利用了帧间运动来实现的,用的是一个叫做DispNET的架构。关于这部分原理也可以参看论文《A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Estimation 》。DispNET是基于flow net去延伸的,而flow net是用光流估计的,对应的技术理念是光流法。是利用图像序列中像素在时间域上的变化,以及与相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算相邻帧之间物体运动信息。这种方法拓展了视差估计和场景流估计。

特斯拉是利用前置主摄像头,加两侧的鱼眼镜头进行训练。这两组摄像头正好可以形成视觉差,就更有利于深度信息的判断。

后记

特斯拉的神经网络框架中有很多东西都是业界的主流方案,主要来自于Facebook和Google的研究成果,这些公司才是真正掌握AI领域的黑科技。

特斯拉最大的优势就是整合和拥有大量的训练数据。目前Auto Pilot已经拥有了超过30亿英里(来源于网络,具体未知)的驾驶数据,用户的车辆就是他的训练数据采集车。

纯视觉方案的根本完全不在于摄像头的像素,而在于神经网络的机制和训练研究。特斯拉自动驾驶就跟最初做电池组一样,依然是延续了马斯克的第一性原理,尽量的简单和尽量的实用,不被现有的框架所束缚。

作为一名科技爱好者与社会搬砖人,希望特斯拉的FSD越做越好,为科技进步越做越好。    

【注】上述涉及两篇论文,感兴趣的读者可从点击以下链接下载:

上述论文PDF版本,需要请自行下载。提取码1234

复制这段内容后打开百度网盘手机App,操作更方便哦
链接: https://pan.baidu.com/s/1aRmd0eg1KsIkqRg1ju_0Fw
提取码: 1234 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值