聊聊无人驾驶汽车的发展历史(五)——Tesla Autopilot进化史

  2018年4月,在Walter Huang的事故发生数周后,Jim Keller离开Tesla,转投“宿敌” Intel,担任高级副总裁,领导该公司的芯片工程,包括Soc的开发和集成。Jim离开的时候,Tesla自动驾驶芯片已经完成设计、测试和验证,即将投入量产,这仅用了两年多的时间,可谓高效。Jim离任后,马斯克表示并不准备找人接替他的职位,而是把他的工作分给其他人,Autopilot硬件业务交由曾与Jim长期共事的Pete Bannon负责,Karpathy职责不变,依然负责AI和Autopilot Vision。

  2018年5月,Tesla聘请Snap的工程副总裁Stuart Bowers担任Autopilot 工程副总裁。Stuart拥有12年软件工作经验,是应用数学方面的专家,加入Snap之前,曾先后在微软和Facebook工作,当时他所做的工作与搜索数据基础设施、机器学习有关。Stuart 将接管Autopilot软件业务和一些其他项目。

  

  Stuart Bowers

  经过调整后,Autopilot 团队基本上稳定了下来,整个团队一共有 200 人左右。Autopilot 硬件副总裁 Pete Bannon 领导着大约 70 人的硬件团队,负责Tesla AI 芯片以及毫米波雷达的自主研发工作;Autopilot 工程副总裁 Stuart Bowers 领导着 Autopilot 最大的一支团队,人数达到 100 人左右,负责地图、质量控制、模拟和固件更新业务的推进;Autopilot Vision & Tesla AI 高级总监 Andrej Karpathy 领导着最小但最核心的一支团队,负责Tesla计算机视觉和人工智能技术边界的探索。这支大约 35 人的团队涉及的技术包括自我监督学习、模仿学习和强化学习,是硅谷乃至全球最顶级的人工智能应用研究团队之一。Pete、Stuart 和 Karpathy均向马斯克直接汇报,构成了稳定的铁三角关系,这是 Autopilot 第三版相对稳定的治理架构。

  在Autopilot 的团队之外,还有一支关联团队很少被人提及,就是 Firmware 团队,有时也被称为嵌入式团队。这支团队有将近百人,负责包括车内大屏、数据采集、软件 Build&Release 以及 OTA 等工作的开发。这支团队由Tesla软件工程副总裁 David Lau 带领,Lau 是特斯拉元老级的成员。Firmware 团队深居幕后,却对 Autopilot 也至关重要。

  2018年10月,Tesla开始陆续向全球用户推送9.0版本软件更新包,这是自2016年推出8.0版本系统后,两年来Tesla在软件方面最重大的更新。关于Autopilot,这次更新主要带来以下功能: Navigate on Autopilot DashCam 盲点警告 障碍物感应限速

  Navigate on Autopilot,是增强版辅助驾驶的一项主动导航功能。它在司机的监督下,根据导航中设定的目的地,引导汽车驶入高速公路匝道,在高速公路上行驶,然后再驶出高速公路匝道。系统可以智能的给出换道建议,你可以选择进行换道或保持在当前车道上。它的设计目的是在高速公路场景上使用Autopilot时,让用户更方便地找到前往目的地的最高效的行驶路线,并导引用户到达目的地。不过,司机仍然需要监督汽车的行驶,比如需要在汽车变道的时候予以确认。Tesla在官网发布了一篇博文章《Introducing Navigate on Autopilot》 ,详细阐述Navigate on Autopilot功能、设置和使用方法。需要说明的是,Navigate on Autopilot功能目前只对北美地区开放(其他市场还未获得监管部门的批准),适用于装备Autopilot 2.0+硬件的车辆,而且用户需要购买增强版辅助驾驶或全自动驾驶功能技术包。

  Dashcam,也被称为Tesla官方行车记录仪,适用于搭载Autopilot 2.5硬件的车型,用户只需要在USB闪存驱动器上添加一个名为TeslaCam的文件夹,就可以把汽车前视摄像头拍摄的视频记录并存储到闪存驱动器上。

  这次更新还带来了全新的盲点警告,此功能适用于所有拥有Autopilot 2.0+硬件的车辆,在车辆的仪表盘中央,能够动态监测测量周围的其他车辆,如摩托车、小轿车、公交车等都会以相应的模型显示。当需要变道时,传感器如果监测到目标车道上有其他车辆或障碍物从而有可能发生碰撞时,车道线会变成红色来提醒驾驶员。此功能可以答复提高行车安全性。

  障碍感应限速适用于搭载Autopilot 硬件的所有车型,如果车辆在低速行驶时发现前方有障碍物,该功能会自动限制车辆加速。这一点对于行车安全来说,提升尤为有效。

  Autopilot 9.0 版本软件基本实现了在高速/城际公路这种简单场景下对路况信息感知和融合、路径规划与决策,最后完成控制与执行。换句话说,这就是很原始的 L4 级自动驾驶技术 Demo。区别在于,其他公司的 L4 Demo 都在宣传片里,而Tesla在量产车上实现了。当然,Navigate on Autopilot仍需要一定的人机交互及车辆控制权向驾驶员的移交。换言之,Autopilot进化到L4+高级别自动驾驶,仍有很长的路要走,这需要有更强大、冗余的系统,更多真实的驾驶数据作为支撑。

  对很多公司来说,自动驾驶是个先有蛋,还是先有鸡的问题:“没有足够的数据,无法做到完美的自动驾驶”。那么如何累计历程数据呢?大多数公司(如Waymo、Cruise等)都是组建一个自动驾驶车队,并找来外包人员不停的进行道路测试;而Tesla却独辟蹊径,采用了一种众包形式进行道路数据收集。2016年10月后,Tesla为所有新出厂的车辆都标配了8颗摄像头、12各超声波雷达、1个毫米波雷达等传感器套件,当全世界的Tesla车主在使用Autopilot时,车辆行驶的道路环境数据、方向盘转角、油门和刹车踏板位移等信息以及驾驶员和车辆的交互等信息都被记录下来;即使Autopilot未开启时,Autopilot此时将处于“Shadow Mode(影子模式)”,在后台运行,车辆的传感器仍在追踪现实世界的数据,Tesla还充分利用了云技术,所有Tesla车型都是实时数据在线的,这样不包含隐私信息的数据会实时的上传到Tesla的中央服务器。Tesla的这种方式基本上没有额外的成本,且能快速的搜集到大量真实的道路驾驶数据(主要集中在北美、 西欧、北欧以及东亚地区)。2018年11月28日,Tesla发布消息称车主开启Autopilot功能行驶的里程已超过10亿英里(约合16亿公里),接下来,随着Model 3等车型的的热卖,数据累计必然更快、更多,下图为MIT研究人员Lex Fridman对Autopilot 累计里程数据的跟踪和预测。

   

     2019年4月22日,Tesla举行了“自动驾驶投资者日”(Autonomy Investor Day)活动,这次活动透露了不少重磅信息,归纳起来主要有三方面的内容: 发布搭载Tesla自研全自动驾驶(Full Self-Driving,简称FSD)芯片的全自动驾驶计算平台(简称FSD Computer) 介绍Tesla在视觉神经网络和数据搜集体系上的建设成果 公布Robo taxi共享出租车计划

     Autopilot硬件副总裁Pete Bannon主持了搭载Tesla FSD芯片的FSD Computer的发布。FSD Computer项目从2016年2月开始,到2019年3月量产,用了3年多一点时间,Pete表示这是他参与过的项目中时间最短的开发项目,这一方面是因为该项目“只有一个客户Tesla”,很大程度上降低了芯片需求的复杂性;另一方面在于Tesla很强的垂直整合和并行工作的能力,Tesla有很强的电源设计、信号完整性设计、包装设计、系统软件开发、电路板设计、固件、系统验证团队。

     早在2018 年8月Tesla第二季度电话会议上,Tesla就公布了新一代Autopilot硬件 Hardware 3.0(简称HW3.0)的升级计划。2019 年 3 月,HW 3.0率先在Model S 和 Model X上实现量产;一个月后又在 Model 3 上量产,Autopilot 硬件正式进入3.0时代。HW 3.0在传感器和线控系统方面和HW2.5保持一致,区别之处在与使用自研的FSD Computer替代了定制版的NVIDIA PX2计算平台,FSD Computer在设计的时候考虑了替换性,这意味着在外形尺寸和I / O方面基本相同,技术人员可以将FSD Computer安装在与Autopilot HW2.5板相同的位置。这样HW2.0 或 HW2.5 的车型都可以升级到 HW 3.0 ,Tesla已承诺为选配了完全自动驾驶技术包且搭载HW 2.0或HW 2.5的车辆免费升级到HW 3.0。

  对于FSD Computer的技术信息,Pete从芯片到系统都做了详细的介绍:

  FSD芯片是一款专门为自动驾驶功能设计的产品,需要满足功耗、算力、Batch size(latency)和安全性等需求目标。FSD芯片采用Samsung 14nm FinFET CMOS工艺,在260mm2的硅片上集成了约60亿个晶体管,组成2.5亿个逻辑门电路,芯片封装尺寸37.5×37.5mm,底座采用FCBGA设计,整体设计符合AEC-Q100汽车质量标准。

  

  FSD芯片在设计时需要兼顾对上一代车型的升级,因此继承了先前解决方案的大部分功率和散热需求-包括最大100 W的功耗。由于该芯片只针对Tesla旗下汽车设计,所以设计时将替代神经网络加速单元(Neural Network Accelerator,NNA)的许多通用功能从FSD芯片上剥离,只保留Tesla需要的硬件。FSD芯片主要由CPU、GPU和NNA(Neural Network Accelerator神经网络加速单元)三个计算模块,以及各种接口,片上网络等组成,下面是FSD芯片内部架构简图。

   

  FSD芯片内部架构简图

  CPU方面,由三组四核ARM Cortex-A72架构组成,主频2.2GHz,主要用于通用的计算和任务;GPU方面,未透露具体型号,主频1GHz,支持16位、32位浮点运算,算力为600 GFlops(Floating-point Operations Per Second),主要用于轻量级的后处理任务。

  NNA是FSD芯片中自研的最重要的部分是,也是Pete重点介绍的内容,NNA包括 2 个NPU(Neural Network Processor Unit,神经网络处理器),每个NPU都封装了32 MB的SRAM,用于存储临时运算结果,从而减少数据向主存储器的移动,有助于降低功耗。计算过程也很简单,在每个计算周期,NPU都会从内置的32MB SRAM中读取256字节的激活数据和另外128字节的权重数据组合在一起进入乘法累加(Multiply Accumulate,MAC),每个NPU都有一个96x96MAC阵列,用于总共9,216个 MACs 和 18,432次运算(Operation per second,OPS)的能力。在2GHz下运行时,单个NPU的峰值计算能力为36.86(96x96x2x2)万亿次运算( Tera Operations Per Second,TOPS),每个芯片上具有两个NPU,总的计算能力为73.73 TOPS(超过设计目标50T OPS)。在完成了MAC的乘法累加运算后,数据将会被转移到激活(Activations)以及池化部分(Pooling),并等待写入缓冲区汇总结果。FSD芯片支持多种激活函数,包括修正线性单元(ReLU)、Sigmoid线性单元 (SiLU)和TanH。每个周期都将128字节的结果写回SRAM,所有的操作同时且连续地进行,直到整个计算完成。

  

  NPU计算过程

  在保障NPU具备强大运算能力的同时,对于它的功耗和成本优化Tesla也做了不少的努力。

  比如 NNA 设计了32MB的片上SRAM缓存,相比其计算能力,这个容量可以说相当抢眼,如Google初代TPU,采用了256×256的MAC,也只是在片上设计了24MB的SRAM。从Tesla给出的芯片图样来看,SRAM占据了NNA面积的75%以上,耗费了大量的晶体管。对于这种特殊的设计,Tesla解释这样做是为了让数据尽可能地在片内周转,而不用频繁地与内存或者其他模块进行读写操作。这样做不但可以提高性能,还可以有效降低功耗。Tesla宣称整个NNA的片上操作大概需要1TB/s带宽,所有数据都在片上完成,这样SRAM就可以满足其需求。

  另一方面,因为NNA处理的神经网络计算并不需要太高的精度,所以设计的芯片只支持8位乘以8位整数乘法和32位整数乘法,不支持任何浮点计算,也无需支持任何其他格式,比如16位或者4位计算等,这都大大降低了核心的设计难度,还可以在很大程度上降低功耗。举例来说,支持浮点运算的32位加法器功耗大约是支持整数计算的32位加法器的9倍。

  除了上述计算过程外,Tesla在NNA的设计中还偏向于将硬件简化,并复杂化软件,这样做可以降低芯片成本。比如软件可以映射和分配单个SRAM库,在Tesla的神经网络编译器的帮助下,还可以执行层融合操作,通过耦合conv-scale-act-pooling操作允许数据重用。编译器还可以通过执行层平滑处理来确保数据一致的内存访问操作,还可以加入代码压缩、CRC校验等功能,保证数据的可靠性。在指令方面,Tesla认为之前一些NNA的设计方案在缓存、寄存器以及逻辑控制方面消耗了大量能量,于是简化逻辑控制,设计了一个简单的指令集:包括DMA Read、DMA Write、Convolution、Deconvolution、Inner-product、Scale、Eltwidth、Stop,流程控制更是只需要配置4个信息,简化了操作,可以将资源跟多集中在计算方面。

  在三大计算性能模块之外,FSD芯片上 还集成了一个专用的、带有内部24字节流水线的图像信号处理器(Image signal processor,ISP)。这个ISP专门针对Tesla汽车上配备的八个HDR(High Dynamic Range高动态范围)传感器而设计,可以每秒钟处理十亿像素的图像信息。在处理中还加入了色调映射等功能,并且允许芯片自主处理阴影、亮点、暗点等细节,还加入了降噪设计。可以说,ISP是FSD芯片中除了计算核心外面积最大、功能最复杂的模块。

  FSD芯片还具有一个摄像头串行接口(CSI),能够从各种视频输入设备进行每秒高达25亿像素的处理。对于视频的处理,FSD芯片集成了仅支持H.265(HEVC)的视频编码器,可以用于备用摄像机显示、行车记录仪和云剪辑视频等内容,其余诸如MPEG、H.264等一概不支持,精简了不少芯片规模。

  此外,FSD 芯片还有一个安全模块和一个加密模块。安全模块中包含了一个双核同步CPU,用于对汽车执行器的最终仲裁。它可以判断FSD Computer上的两个FSD芯片发出的执行计划是否匹配、以及驱动执行器的过程是否安全。也就是说,FSD Computer上的两个 FSD芯片在处理过程中可能出现信息、执行不同步的情况,当这种情况出现时,判断就交由安全模块完成并给出最终的判定,以保证信息的同步和无冲突。而加密模块执行的功能是确保FSD Computer只执行经过Tesla签名授权的代码,保证系统的安全性。

  除了FSD芯片外,Pete还给出了FSD Computer的相关消息。整个FSD Computer上布置了两个完全独立的FSD芯片,及各自电源系统、DRAM和闪存,以实现完全冗余。每个芯片都从自己的存储内存启动,并运行自己的独立操作系统。电路板的右侧(如下图所示)是八个摄像头的接口,左侧是电源和控制器的接口。该电路板有两个独立的电源,各用于一个FSD芯片。此外,一半的摄像头信号位于一个电源上,另一半则位于第二个电源上(需要说明的是,视频输入本身由两个芯片接收)。冗余的设计是为了确保在摄像头数据流或电源等组件或板上其他集成电路出现故障的情况下,整个系统可以继续正常运行。

  

   HW 3.0计算平台-FSD Computer

  在一般操作中,当整车感知输入信息通过雷达、摄像头等各种传感器发送至FSD Comouter时,两颗芯片独立处理并给出汽车下一步的执行计划。然后由之前提及的芯片上的安全模块对两个执行计划进行平衡、仲裁和验证,在确保驱动命令是所需的操作后,将执行计划发送给传动装置ECU以驱动汽车,整个循环过程以高帧速率连续运行。Tesla宣称,FSD Computer的故障率非常低,甚至比人失去意识的可能性还要低一个数量级。

  

  FSD Computer工作流程简图

  FSD Computer板载了8颗比较廉价的双通道LPDDR4-2133内存,位宽为128字节,带宽为63.58GB/s,每个芯片4颗。这应该是Tesla权衡过成本和性能后得出的最佳方案,毕竟内存控制器一向是芯片中的面积大户,并且事关性能又轻易削减不得,性能和规模的平衡处理非常重要。另外每个芯片各有一颗NAND闪存用于存储操作系统和数据。热管理方面,采用了和H 2.5一样的水冷方案,确保整个工作过程的安全和稳定。FSD芯片内存采用了比较廉价的双通道LPDDR4-2133的方案,

  与 HW2.0 或 2.5 定制版的NVIDIA PX2相比,FSD Computer在性能和成本上都有了提升 ,Tesla给出的数据是:FSD 每秒可处理图片 2300 张,而 HW 2.5 的每秒处理能力仅为 110 张,算力提升了21倍;FSD的成本相对于HW 2.5下降了20%。不过FSD整体72 W的功耗,略高于HW 2.5解决方案的57 W,这主要是为NPU的消耗。不得不说,特斯拉走上自研芯片这条道路还是非常正确的,不但节省了大量的资金耗费,同时也带来了新的利润增长点。

  Tesla FSD Computer和芯片已经正式运行了一段时间,总的来看,它带来了诸如交通信号灯识别、自动泊车、自动辅助变道、城市内自动辅助驾驶、自动辅助导航驾驶、停车召唤等功能,让汽车的自动驾驶能力提升了一个台阶。不仅如此,在这一代FSD芯片发布后,Tesla也没有停下脚步,而是加快进度,研发下一代FSD芯片。

  现在Tesla已经具备了强大算力的FSD芯片,还有通过车队源源不断生成的道路数据,那么只需要通过OTA升级Tesla的软件,就可以推动Autopilot功能的不断优化升级。作为视觉感知派的践行者,Tesla 始终坚持发展以摄像头为主体的“机器视觉”技术—Tesla Vision,Tesla Vision的核心是视觉神经网络,而这正是Autopilot Vision & Tesla AI 高级总监 Andrej Karpathy在Tesla工作的重点。在Autonomy Investor Day上,Andrej系统性地阐述了Tesla在视觉神经网络和数据搜集体系上的建设成果。

  那么神经网络在车上是如何运作的呢?简单来说流程如下:首先通过车上的8个摄像头获取道路的数据,然后将这些数据以视频流的形式输入Autopilot的计算平台,接着部署在计算平台上的预训练视觉神经网络对视频数据进行快速处理和解析,完成对车道线、交通标志、车辆障碍物等的识别,对周围车辆、行人等的动作和行为做出预判,识别出汽车可行使区域,并进行路径规划等其他任务。

     理解了Tesla视觉神经网络的工作原理,要确保Autopilot辅助驾驶功能的稳定可靠,甚至实现完全自动驾驶,就需要视觉神经网络能够持续准确的解析车辆周围的环境。但是复杂的驾驶环境为神经网络的运作带来了挑战。那么如何确保神经网络的性能满足系统的需求呢?一般来说,可以通过增加训练数据或者优化神经网络结构和算法来实现。而增加训练数据在很大程度上来说效果更显著,这也是Tesla 车队的优势。

  但是不是单纯的强调训练数据量的增加就可以了呢?Andrej举了一个车道线识别的例子。为了让汽车学会正确识别车道线,需要从车队获取数据,并由人工标记(Labeling)出车道线,然后完成神经网络的训练。通常情况下,为了降低人工标记的成本,会随机的从车队数据库里选择部分图片进行标注,这会造成训练数据单一问题,比如样本中包大量高速公路场景的数据,而缺少城市街道、隧道、阴天等复杂场景数据,带来的后果是:训练完成的神经网络能够正确识别高速公路工况下的车道线,但可能会对一些弯曲道路或复杂场景的车道线做出错误的识别。这是因为用于训练神经网络的数据中缺少对这些场景的覆盖,解决的方案就是增加这些场景的数据量。此外,关于利用模拟仿真数据实现数据多样性的问题,Andrej和马斯克认为利用模拟器仿真尽管很高效,但无法创造现实世界中驾驶场景可能出现的各种情况(现实世界中存在着难以计数的奇怪场景),因此不可行。由此, Andrej指出要成功训练神经网络,必须具备大规模、多样化、真实的道路数据集。

  成功训练神经网络要点

  通过Tesla车队获取神经网络需要的数据已经不是问题,但现实世界中仍存在各种“稀有场景”,这会给神经网络的识别任务制造麻烦,那么如何解决这些“稀有场景”的识别问题呢?Andrej举了一个这方面的例子,在无人驾驶中,物体识别是一个重要的问题,只有准确识别了汽车、自行车、行人等各种不同对象,才能对他们进行跟踪,了解他们如何运动,从而为无人驾驶汽车制定不同的应对策略。下图左半部分为人工标记的用于训练神经网络图片,图中标记了汽车、骑自行车的行人;右半部分为利用神经网络进行识别时现实世界的场景,出现了一辆自行车悬挂在一辆汽车的尾部,神经网络按照标准的视觉识别算法将其分类为机动车辆(红色框)和自行车(黄色框)两种,仅从对象识别的角度来说,这无疑是正确的,但是从下游的控制和规划任务的目标来说,自行车固定在汽车上,和汽车一起运动,并不需要作为一个独立的对象进行跟踪,因此这种场景就需要将其标记为一辆汽车。为了彻底解决这个识别问题,可以向车队搜集大量类似的图片,完成人工标记并合并到原来的数据集,并重新训练神经网络,结果是神经网络的识别性能得到改善,当再次遇到这种场景时,就只识别为一辆汽车,这就是“稀有场景”问题的解决方法。因为”稀有场景“会经常遇到,所以神经网络不断的被迭代更新,车辆也变得越来越智能。

  

  总结一下,Autopilot 神经网络预测迭代的流程为:一开始从车队获得一个随机种子数据集,人工对这些数据集进行标记并用于神经网络的训练,然后将神经网络部署到车上,车辆具备判断神经网络发生误识别的机制,例如当检测到神经网络在后续识别中做出(Inaccuracy)错误的识别或者车辆在“影子模式”下检测到司机进行了某种干预操作时,就会触发反馈机制,车辆会向服务器回传这些发生异常的数据,工作人员对异常数据开展分析并重新标记,同时向车队请求跟多类似的数据,这些数据被正确标记后合并到原始数据集,重新训练神经网络并部署到车上,就这样不断的循环迭代,这个改进神经网络预测的迭代过程被称为“Data Engine”。

  

   改进神经网络预测迭代流程—“Data Engine”

  以上只是一个单任务神经网络预测的迭代过程,但实际的自动驾驶场景中往往需要对多个任务进行处理。下图为一个普通的社区道路中,自动驾驶车辆所必须准确和高可靠性识别的全部要素,包括:运动目标、静止目标、道路标识和交通信号灯标识等四大类目标。对于以上任何一种目标的识别错误,都会导致灾难性后果。而且从时效上讲,这些目标中我们并没有办法通过优先级判断来决定那个识别任务将得到优先照顾而率先完成,因为它们都重要,同等重要的多识别任务,必须以最高效的方式得到并行识别并送到后端处理。这就需要构建多任务神经网络来处理这样的问题,不过在这里,对于多任务神经网络构建、训练等相关内容不作介绍,如果感兴趣,可以参考Andrej关于多任务学习的演讲《Multi-Task Learning in the Wilderness @ ICML 2019》。

  

  在这里想强调的重点是:Data Engine迭代过程同样适用于多任务神经网络的优化。在单任务学习的场景下,我们可以为每个子任务训练一个神经网络,比如一个单独的神经网络完成目标检测,另一个完成可驾驶区域识别,另一个完成轨迹生成,等等。在多任务神经网络的框架之下,我们可以同时训练这些任务。相关子任务可以共享参数,子任务之间互相平衡,这更容易达成整体的优化目标。MIT研究人员Lex Fridman对单任务和多任务神经网络的迭代训练做了一个很好的总结,如下图所示。

  

  在解决“稀有场景”的过程中有一项很重要的工作— 对“稀有场景”数据进行人工标记。对于大量的上报数据,在Tesla的云平台必须要有足够的计算力/人力做标记处理,否则类似的训练,可能会因为上报数据的错误分类而导致已有的自动驾驶模型在局部恶化。这带来的问题是:要升级Autopilot的功能,就得准备负担昂贵的人工标记成本。而且这个问题会随着Tesla车队的进一步扩张而不断被放大,如果处理不好就无法发挥Autopilot算法自我演进的最大特色。如果希望大规模降低自动驾驶神经网络在后台的训练成本,同时还不影响模型的训练速度和准确性,实际上Tesla需要解决的首要问题就是对于高价值场景(所谓的Corner Cases)“自动标记”的问题。Tesla 采用了一种叫做自我监督学习的深度学习方法来实现数据“自动标记”,那么什么是自我监督学习呢?自我监督学习通过设计辅助任务来学习可区别性的视觉特征,这样一来,目标标签能够直接从训练数据或图像中获得,并为计算机视觉模型的训练提供监督信息。例如,在解决Cut in(变道)问题预测时,Tesla就采用了自我监督学习的方法。Andrej介绍了Tesla的Autopilot神经网络中的“Cut-ins”预测模型是如何搜集数据并完成自我训练的。在Autopilot神经网络中,负责处理相邻车道车辆“Cut-in”动作判断/识别的模型是独立运作的。如果希望这个模型能够非常好地模仿人类的预判和分析水准,就需要提供大规模的实际道路数据去对它进行训练。Tesla完成数据自动搜集的过程如下: 车辆的前置摄像头将会捕捉位于前方所有车道的车辆信息,包括本车道和相邻车道; 车辆的前置摄像头对于所有视线范围内的运动车辆进行测量,测量数据包含车辆位置(相对于本车)和车辆速度; 一旦发生相邻车道车辆的“Cut-in”动作时(相邻车道内前方车辆的轮胎压触车道线触发),则本次行为被判定为Cut-in动作,即下图左半部分中显示红色框的时刻,数据被记录并上报云端服务器; 上报的数据中包含本次Cut-in动作完整的模式数据,比如:本车速度、位置,相邻车道车辆的速度、位置,车道线的变化(是否有车道合并或者分叉),红绿灯状态、相邻车道车辆的前后车辆的速度、位置......等等。 

  利用Tesla庞大的车队获取大量Cut-in数据并进行神经网络训练,当把训练好的Cut-in模型下发到车队中的每一台车辆上时,Tesla采取了所谓的“影子模式”的方式,来“离线”地对Cut-in模型进行校准。“影子模式”意味着,Cut-in更新的模型即便被下载到车队,也不会实际指挥Tesla的车辆执行实际的“换道”类别操作,包括“自适应巡航”和“换道超车”等标准的ADAS功能。而是活跃在后台默默进行相关判断。比如下图右半部分中,Cut-in模型在“影子模式”下工作,监控到右侧前方车辆之后(下图中的那辆车),会使用当前的模型来判断/预测目标车辆的动作趋势,并在合适的时机(时间和位置点)上给出最终的判断。如果对于目标车辆的Cut-in切入换道操作判断正确了,则无需上报任何数据;如果对目标车辆的Cut-in切入换道操作判断失误了(Negative),即上图中的有前方车辆并没有在指定时间和预测位置上切入本车道,则此数据被自动标识为Negative Sample而被送到云端,继续对Cut-in模块进行修正性训练,直到达到下一个可以接受的阶段,再次将模型下发车队,继续“影子模式”测试。如此多次迭代之后,位于云端的Cut-in模型不断完善,当达到设定的安全标准后,才最终开放给Tesla车队。只要车辆行驶,不论Autopilot是否开启,“影子模式“都可以运行,参与对模型训练、数据搜集和模型优化。Autopilot的很多功能,如Auto Steer+、Navigate on Autopilot等辅助驾驶功能都是在“影子模式”下测试验证,并不断优化后推送给车队的。

  我们看到在这个Cut-in的模型训练过程中,几乎无需人工干预,自动化的目标识别技术可以准确识别每一个Cut-in场景中的结构化数据,省掉了人工标注的繁琐。 而且总管整个模型训练—部署—影子模式激活—修正—矫正性训练—部署……这个闭环当中,可以看到人力资源基本是不消耗的,系统效率得到大幅度提升。

  

   利用Fleet learning 和 Shadow mode训练“Cut-ins”模型

  值得注意的是,如今在Tesla Autopilot 神经网络训练大闭环里,都实现了自动化。“Label”的过程是经由多种传感器联合完成的,这可以大幅度降低人工标注的成本并且提升效率;而“Deploy”过程则是通过标准的OTA流程完成,这可以不断的将功能优化升级的Autopilot特征部署到车上;更进一步,Tesla还在“Identify an inaccuracy”中采用独一无二的“影子模式”,这反过来又从车队中捕捉大量人类司机的正确驾驶判断。

  拥有复杂交通灯的交叉路口对自动驾驶汽车来说是颇具挑战的一种场景。这个时候系统该怎么决策呢?Tesla使用的方法叫做行为克隆(Behaviour Cloning,模仿学习的一种)。行为克隆是什么意思呢?这个相对好理解得多,我们人类学习新技能就是通过观察别人怎么做从而完成学习。Andrej介绍了Tesla使用行为克隆方法让车辆模仿人类实现车辆十字路口路径规划的项目,简单的过程如下:

  首先从Tesla 车队中获取信息,当每一辆Tesla汽车(无论 Auopilot 启用与否)经过十字路口时,8 颗摄像头都会生成一系列图像数据,同时人类驾驶员会采取相应的驾驶决策(包括车辆所在位置、车速、转向角度、刹车力度等等),图像数据和对应的驾驶员决策信息就是用来训练神经网络的数据集,当搜集的数据足够多的时候,就可以用来训练神经网络,然后部署到车上,以“影子模式”运行,不断的优化网络。最终可以实现:当另一辆Tesla在 Autopilot 启用状态下经过该路口时,Autopilot 就会模仿人类驾驶员的安全驾驶行为去进行决策。不仅如此,在同城的其他区、其他城市乃至其他国家,遇到类似情形的路口时,深度神经网络会调取驾驶员的安全驾驶行为去匹配遇到的情形,完成学习能力的迁移。

  Path Prediction

     在Autonomy day上,马斯克再次表达了对激光雷达的态度,公开diss了所有使用激光雷达的自动驾驶公司,说用激光雷达真是“荒唐”,他们“注定失败”,还抱着胳膊亮出邪魅狂狷的一抹微笑,点着头对在座的各位说:“You’ll see.” 激光雷达相对于摄像头最直观的优点就是能够快速构建三维场景,针对这一点,Andrej从专业的角度进行了论证,证明了基于视觉传感器+算法也可以构建深度感知。Andrej 首先介绍了人类和动物利用双眼构建立体视觉的过程,还举了一个利用单目视觉图像中的线索(图中两根铁轨的距离符合近大远小的透视现象)测距的例子,以此表明:双目或单目视觉都可以用来构建立体视觉,问题的本质不在视觉传感器,而在于背后的处理算法,即如何从单纯的视觉信息中,提取构建立体视觉的结构化数据。Andrej介绍了三种方法: 传统计算机视觉技术:利用Tesla车上配置的多摄像头获取环境图像数据,然后对这些多视角图像进行裁剪拼接,重构出场景的深度信息; 传感器融合技术:摄像头获得丰富的感知信息,毫米波雷达能够精确测距,将两种传感器融合,并基于神经网络对目标进行追踪,这样就获得了视觉深度信息; 自我监督学习方法:用视频连续帧的不同视角的几何信息作为监督信号训练了一种端到端的单目图像深度估计和车辆运动估计的框架,包括一个用于单一视角深度估计的Depth CNN,以及用于连续帧间运动估计的Pose CNN,通过将当前帧图像结合预测的深度图以及帧间转移投影到临近帧上,计算像素误差作为训练的loss,对两个网络进行联合训练。预测阶段,两个网络可以独立使用进行推理。

    构建立体视觉的三种方法

  Andrej做了个总结:人类仅靠视觉而没有激光雷达就可以驾驶的很好,功能强大的视觉识别对于自动驾驶是绝对必要的,没有必要使用激光雷达。就像我们必须要有能够真正了解你周围环境的神经网络,激光雷达点云缺少丰富的环境信息,而视觉则能提供周边环境的详细细节信息。Andrej认为,激光雷达是一条捷径,但它回避了对自动驾驶至关重要的视觉识别的基本问题,它会给人一种技术进步的错觉,但没有解决本质问题。

  最后,Andrej谈到了制约高等级自动驾驶的“长尾问题“,他表示解决这些问题将会非常棘手和困难。Tesla拥有非常强大的视觉系统,能够从庞大的车队获得各种“极端情况”,而且与所有竞争对手相比,Tesla遇到这些“极端情况”的频率将更高,这非常有利于向神经网络提供正确的数据进行迭代训练,以更快的速度解决这些“极端情况”,这正是Tesla实现全自动驾驶的优势所在。

  

   自动驾驶“长尾问题”

  在Pete 和 Andrej 的带领下,Tesla 掌握了无人驾驶的两大基础核心技术:芯片和算法,这也是Autonomy Day上最大的亮点。而要利用这些先进的技术打造Autopilot 辅助驾驶功能,并大规模的工程化,还需要更多人的努力,这正是Autopilot 工程副总裁Stuart Bowers所负责的工作。针对每一项Autopilot辅助驾驶功能,Bowers团队需要完成感知、路径规划、车端控制等任务模块的开发,系统仿真模拟、操作系统内核修复、车队“影子模式”下测试,达到一定标准后进入阶段部署,利用“早期用户参与计划”继续测试,直到满足质量标准后进行大规模的部署(Wide roll out),车端通过OTA获得Autopilot新功能,但是基于“影子模式”收集数据的工作并没有停,这可以确保Autopilot功能在用户使用过程中得到不断的优化。Stuart分享了“Navigate on autopilot”项目开发部署的经过,其中影响最深刻的是Autopilot 模式下在车队级别已经成功完成了900万次变道,而且每天都能累积10万次成功的车道变更案例。在Stuart看来,基于“Data Engine”、“影子模式”等工具构成的算法基础设施,再加上FSD Computer的强大功能,很快就可以实现城市街道上运行“Navigate on autopilot”功能,这样人类驾驶员就可以完全放手了。

  在Autonomy Day上,马斯克发布了Tesla Robotaxi计划。Robotaxi即无人驾驶出租车,因为取消了司机,所以参与运营的车辆需要达到SAE level 4以上的自动驾驶级别,这就要求支撑自动驾驶的架构设计考虑足够的冗余。马斯克介绍说,从2016年10月起,Tesla 发布 HW 2.0时就已经在硬件层面上对整个车辆进行了冗余设计,主要包括电源、总线通信、执行机构。如确保每个关键的驱动系统都有两个独立的电源系统和总线通信线路,以防其中一个失效时,关键的驱动组件仍能正常运行;车辆的转向系统、制动系统也都做了备份设计,当其中一套系统发生故障时,另一套仍然可用。同时,基于Pete、Andrej和Stuart三人在Autopilot 硬件、视觉&AI算法以及软件方面取得的成就,Tesla制定了雄心勃勃的计划,马斯克表示,他“非常有信心”在2019年底前实现完全自动驾驶系统所需的全部功能,并与2020年推出 Robotaxi 网约车服务,Tesla Robotaxi 务将仅限于特定的管辖区,因为无法在所有地方都获得监管部门的批准,但马斯克相信在明年年底前至少在一个市场被许可。

  马斯克详细的介绍了Tesla Robotaxi 运作模式。总的来说,Tesla Robotaxi 的商业模式更像是 Uber 和 Airbnb 的组合。Tesla 构建了一个名叫“Tesla Network”的网络平台,任何Tesla 车主都可以将自己的无人驾驶汽车加入到这个网络中,在特定的时间将车辆共享给朋友、同事或网友。Tesla将从每笔交易中收取20%至30%的收入,剩下的都将回馈给Tesla 车主。如果用户想使用 Tesla Robotaxi,只需要在手机上下载一个应用程序,然后从停车场召唤(Summon)一辆Tesla,Tesla 就会自动开到你的位置,方便用户乘车出行,当车辆租借时间结束后,车辆将自动返回。马斯克还表示,在没有足够车主共享Tesla汽车的地方,将由Tesla 公司自己运营的 Model 3自动驾驶车队来满足需求,并计划未来两年内以Model 3为基础尝试制造没有方向盘、没有踏板的Robo Taxi,将Model 3 Robo Taxi的整车成本从3.8万美元降至2.5万美元。这就是马斯克在完全自动驾驶之后的 Robotaxi 计划。马斯克表示到2020年年中,估计将有超过 100 万辆 Tesla 汽车在路上使用全自动驾驶硬件,这意味着届时将有 100 万台 Robotaxi 的潜力。只是实现这些远景的前提是Tesla 先落地完全自动驾驶能力,不跳票。

  

     通过Autonomy Day,Tesla 高调的展示了自动驾驶领域的技术实力和野心,描绘了一副非常好的出行蓝图。也许,把Tesla 说成是汽车界的Apple总会引起很多人的反驳,也许Tesla如今在汽车行业还没有那么大的影响力。这里只说Tesla 的自动驾驶技术,如果说Apple最大的卖点是那个不卡顿的IOS系统,那么Tesla 也正在打造自己最大卖点: Autopilot。

   5)软件更新,全力以赴完全自动驾驶功能

  在2018年10月 Navigate on Autopilot功能推出后,Autopilot 软件团队的精锐力量全部聚焦到了增强召唤(Enhanced Summon)功能的研发上。所谓增强召唤,就是指你在停车场利用手机 App 召唤你的Tesla 汽车,车辆都能够应对复杂的环境和狭小的车位,及时避开障碍物,在停车场的任何位置找到你。这个功能是不是听来很熟悉,这正是Robotaxi中召唤车辆的场景。

  

   

  增强召唤功能演示

  2019 年4月6日,马斯克在 Twitter 预告“增强召唤”将于一周后大规模推送。但随后 Autopilot 的实际表现证明,那个版本的“增强召唤”完全没有马斯克说得那么效果拔群。

  2019年4月22日的Tesla投资者日上,马斯克无意中透露最新版本的“增强召唤”仍在内测中,而它目前还不适合大规模推送给用户。在这个会议上,马斯克还做出承诺:Tesla将在年底之前让汽车在城市街道和高速公路上拥有“完全”自动驾驶能力。

     然而,软件的开发并不顺利,马斯克对此表达了不满,于是对Autopilot 团队进行了重组,5月10日,tuart 治下的软件工程团队最先被动刀,先后有五位工程师离职:

  在 Autopilot 内部,一场更大的风暴正在来临。Stuart 被削去了几项职权,其手下的员工却得到提拔:Ashok Elluswamy 被提拔为感知 & 计算机视觉团队负责人、CJ Moore 出任 Autopilot 模拟、质量控制负责人,路径规划负责人变成了 Drew Baglino,上述三人改为直接向 Elon 汇报。也就是说,在核心五人组(CEO、CFO、CTO、首席设计师、汽车业务总裁)之外,向马斯克汇报的除了遍布全球的 22 位副总裁,新增 3 位 Autopilot 团队执行负责人。新的组织结构如下:

  到了2019年7月,Autopilot 团队还未搞定“增强召唤” 马斯克连续几天在Twitter做了说明,推文内容如下:

  2019年7月8日:“拥有复杂交通灯的交叉路口和购物中心停车场的交叉口是两个最大的软件挑战。开发团队分支的大部分精力都投入在这些场景中,但要达到 99.9999% 的安全性还需要付出大量的努力。”

  2019年7月13日:“停车场(增强召唤)是个非常棘手的问题。今天晚些时候会对“增强召唤”进行深入的工程审查。"

  2019年7月16日:回答一位网友的问题时,马斯克透露“增强召唤”将于 8 月 16 日前后进行大规模推送。Autopilot 团队攻克了大量复杂的挑战。对于新版增强召唤,Elon 的评价是 Magical。

  

  马斯克关于“增强召唤”的推文

  2019年8月16日,马斯克承诺的“增强召唤”功能再次被推迟。Stuart Bowers离职,以常驻高管身份加盟风投公司Greylock。

  2019年8 月 21 日,马斯克发 Twitter 表示,推迟 4-8 周推送 V10 系统更新。

  2019年9月26日,Tesla在官网上发布了V10.0 软件的信息,并宣布V 10.0软件在美国率先上线。这一次,Tesla 车主们期待已久的“增强召唤”功能终于推出了。借助这一功能,车主只要点击手机 App,就能让停车场里的Tesla自动行驶到自己跟前,车主要做的就是盯着它行驶过来,别在路上出岔子就行。对爱尝鲜的Tesla用户来说,他们马上就在停车场“遛”起了自己的车,并将视频分享到社交网络。

  10 月 3 日,马斯克发推文称,Tesla用户已经使用智能召唤功能超过 55 万次。从网上的反馈看,在智能召唤模式下的电动车也发生了一些小事故。为了保证安全,Tesla为智能召唤准备了各种安全措施: 首先,如果你的手机距离车辆超过 60 米,智能召唤就无法启用 其次,Tesla提醒用户,在使用智能召唤时应能全程看到车辆 最后,长按手机上的虚拟按钮车辆才会移动,一旦松开手指,车辆就会停下来

  同时,Tesla还为智能召唤模式设定了 6 英里/小时(不到 10 公里/小时)的限速。在这样的速度下,车辆能及时停住,即使真的撞到了人,也不会造成大的伤害。除此之外,Tesla还将智能召唤调试得非常谨慎,从多数视频中可以看出,一旦路况变复杂或者前路变窄,车辆就会变得犹豫不决。显然,不出事故是Tesla第一目标。需要注意的是,智能召唤目前只限定在停车场使用,如果行驶路线上有公共街道,车辆就会停下来。有这么多限制条件的智能召唤,实际应用场景非常受限,它花的时间可能比车主自己走去停车场取车还要长,而且自己取车还不会耽误其他车辆出入。当然,V10.0 上的智能召唤只是第一个版本,未来智能召唤的距离将会不断增长,甚至不再需要车主站在那里监督车辆, 要知道,这项功能推出不到一个月时间,就有百万次使用量,这说明了大家对这个功能的认可,同时积累的数据也能够帮助Tesla快速的改进这项功能。

     2019年已经过去了,Tesla未能如愿实现全自动驾驶的所有功能,在 Tesla 官网上“全自动驾驶能力”的订单页面上,还有两项功能有待实现:

  识别并响应交通信号灯和停车标志

  在城市街道上自动驾驶

  无人驾驶技术的发展本来就困难重重,Tesla还选择了“视觉感知” 的Hard 模式。客观上讲,Tesla Autopilot的迭代速度在业界算是快的。马斯克在Autonomy Day曾今说过,他设定的目标都实现了,只是有时会晚一些。文章的最后放上一张马斯克的计划,希望Tesla在2020年能够实现这些还未实现的目标,带来更多的惊喜。

  

  参考资料:

  与时间赛跑,特斯拉Autopilot进化史  https://www.d1ev.com/news/qiye/106332

  Tesla Autonomy Day   https://www.iqiyi.com/v_19rsgd8fxc.html

  Tesla中国网站   https://www.tesla.cn/autopilot

  特斯拉 Autopilot:组织架构、软件、硬件全解码  http://www.cheyun.com/content/29081