最近在B站上重温了特斯拉8月20日直播的AI DAY live,视频中埃隆马斯克携特斯拉一众技术专家介绍了特斯拉在人工智能领域的探索性成果,视频内容划分为四个部分:
-
特斯拉FSD自动驾驶,汽车如何自主感知、规划和控制;
-
训练数据,用于神经网络训练的数据集:人工标记、自动标记、仿真;
-
人工智能计算机Dojo和神经网络D1芯片
-
人形机器人概念
虽然整个视频长达2个多小时,但其中的内容非常精彩,秀了一把AI黑科技,特别是自动驾驶方面。网上有很多对AI DAY以上各个方面的解读,看完以后,深深感觉到人工智能对现有知识体系的冲击,本文结合视频中自动驾驶的视觉神经网络,谈谈个人的一些想法。
FSD自动驾驶分为两个部分,一是Vision,基于纯视觉的感知,二是Plan and Control。本文主要讲讲第一部分视觉感知。
Vision由特斯拉人工智能和视觉总监Andrej Karpathy介绍,他形容特斯拉的车是一只人造动物(synthetic animal),它可以四处行走,感知环境,自主智能地行动。就像人类驾驶汽车依靠眼睛一样,基于视觉的特斯拉自动驾驶系统有8个摄像头,可捕捉所有角度,并以图像的形式将原始视觉信息输入系统。然后,这些图像由神经网络处理,反过来又会生成对周围不确定环境的预测。神经网络的输出是自动驾驶系统能读懂的矢量空间(vector space),即汽车周边环境的3D影像,然后把此数据传送给规划算法,规划算法计算汽车要行进的路线轨迹,由控制系统执行实际的转向和加速/减速动作。
8个摄像头通过神经网络生成”矢量空间“
人类视觉通过大脑视觉皮层生成信息
生物视觉感知VS机器视觉感知
自动驾驶系统中的视觉神经网络可以类比于生物视觉系统,摄像头是汽车的”眼睛”,它感知环境将信息发送到处理模块——汽车的”视觉皮层”。这些模块既模拟了处理线条、方向、深度、形状等的视觉皮层(V1、V2、V4)的低level区域,也模拟了识别整个物体的高level区域 (IT)。
Andrey回顾了四年前的FSD神经网络系统与现在系统的演进过程,四年前系统是基于单个相机图像进行处理,使用RegNet将Raw照片提取出不同像素深度和通道深度的结构,像素深但通道浅的解析局部细节,像素浅但通道深的解析全局语义。
BiFPN特征金字塔网络使得神经元在不同层面之间交换信息,既能得到局部的细节信息,又能得到完整的全局信息。
在不同的检测任务分配方面,使用的HydraNets,允许神经网络处理不同的任务。诸如目标检测、交通灯识别、车道线识别等任务。这样既实现信息的特征共享,又将不同的任务解耦。
HydatNet解耦架构
单个图像检测效果
从展示的单个图像检测效果来看,特斯拉通过大量的数据训练和FSD的算力,识别效果已经非常不错,能够识别汽车、停车标志、车道线、路边缘、交通灯、垃圾桶、警示锥等。
这也是当前业界计算机视觉的标准做法,这种方法很容易收集和标记图像。但在处理多个图像空间的融合时,这种方案还远远不够。如果需要自动驾驶能具备自主感知和决策的能力,要能够将不同相机的图像空间进行融合,在融合过程中,不同相机的目标检测进行拼接时,如下图,上面是各个相机路边缘检测效果,下面是在矢量空间的融合效果,可以看出拼接的效果不佳。
原因在于:
-
不同相机的像素预测深度很难达到完全一致且准确;
-
在不同相机对同一目标检测时,单个相机无法覆盖全貌,不能很好地对整个目标进行预测。
由图像空间预测转换为矢量空间预测,也就是获取所有相机的图像,通过一个Transformer转换为矢量空间。在图像空间中不再标记,直接标记矢量空间的各个目标。下面transformer模块,原理就是分解各个图像中的每个像素点,根据键码自我重新组合,构成矢量空间。
还需要考虑不同相机在转换时的校准参数差异。
transformer模块架构
矢量空间的多相机预测效果
多相机目标检测融合效果
汽车拥有记忆,汽车能够通过以前记忆的信息来对当前的场景进行预测。因此增加了一个特征队列(Feature Queue),它用来存储过往的记忆信息,还有车辆的速度与加速度信息,再用video module进行融合。这样,当预测的部分目标被挡住时,神经网络将以前的队列中寻找信息,不会丢失检测目标。
视频神经网络架构
视觉网络建立高精地图
视频网络还实现了对速度的预测,下图展示了单个相机(黄线)、视觉+雷达(绿线)、移除雷达的多相机融合(蓝线),视频网络与有雷达的情况一致,甚至超越了雷达。
总结:特斯拉视觉网络的架构,从最底层的相机输入原始图像,进行校正后进入RegNet(残差神经网络)处理不同尺度的特征,通过transformer模块将其表示到矢量空间。然后加入时间和空间队列,由一个视频模块进行处理,最后进入HydraNet的不同分支,用于不同的任务。
以上是Andrej Karpathy大神对特斯拉视觉网络的精彩演说,说了视觉网络的几个特点:
一是HydraNet,能够让网络处理不同的任务;
二是建立矢量空间,通过多相机融合,在三维空间重建了计算机能够理解的周边环境;
三是时间、空间序列和视频模块,让网络拥有了记忆。
特斯拉之所以有底气使用纯视觉自动驾驶方案,目标就是要让汽车像人一样开车,能够看懂周围的环境,并拥有时间和空间上的记忆。
从功能安全的角度来说,感觉软件的开发模式已经有了变化,传统的安全软件开发标准很多内容对于人工智能技术已经不适用了,有着跨时代的不同,有以下几点:
-
AI技术是数据驱动,而传统的安全软件是需求驱动。以往软件的开发模式时,先确定软件的需求,比如输入图像的所有像素点,要输出这个图像是一只猫还是一只狗,然后由程序员编写程序代码,这种功能对于软件开发者是无法完成的任务。而AI技术是一种完全不同的编程方法,通过输入大量的带有目标图像的数据集,对输出进行标记,以此来调整神经网络的参数。这样来说,只关注算法的行为,不是它的具体实现过程,而算法的行为则是由数据驱动的;
-
开发过程的不同,功能安全作为一种系统性的方法,建立的基础是传统的工业控制系统,是一个瀑布式的V模型开发过程,而AI技术是在不断迭代,AK的讲解可以看出特斯拉的方案是在不断演进,通过不断的数据训练,试错和修正来优化算法的性能;
-
架构、技术、工具的不同,传统软件的编译工具、开发工具、调试工具已经非常成熟,而AI软件的工具链还比较初级,传统软件是确定性的,而上面讲到的视觉神经网络,反复提到的词是“预测”,像自主的动物一样不断学习,比较,修正,再学习;
-
开发理念不同,故障导向安全是功能安全的出发点,但特斯拉的目标并不仅是安全,构建了一个三角形目标(safety-comfort-effciency),找到符合这三个要求的最优解,而且这个目标的权重是在随环境不同而变化。
特斯拉在人工智能领域能有如此大的发展,与其拥有一流的科技人才、海量的数据、强大的算力和垂直整合的生态链都有关系。看完以后,非常佩服特斯拉的科研和工程融合的能力,作为传统工业的从业者,也需要看到新兴技术带来的冲击。但是不是任何领域都要跟人工智能搭上边才算先进呢,用马斯克的一句话可以作为回答:
I discourage use of machine learning
我不提倡使用机器学习
because it really difficult
因为机器学习真的很难
basically unless you have to use machine learning, don’t do it.
除非机器学习是唯一的选择,否则不要使用它
原文始发于微信公众号(薄说安全):由特斯拉的视觉感知想到的