近日,特斯拉自动驾驶软件总监 Ashok Elluswamy 在 CVPR 2022 会议上做了一个演讲,介绍了特斯拉自动驾驶团队在过去一年中取得的多项成果,尤其是名为 Occupancy Networks 的神经网络模型(以下简称占据网络)。
他讲到,自动驾驶系统传统上用到的语义分割、深度信息等做法存在不少问题,比如 2D 转 3D 比较困难,对深度信息的估算不准等。
在使用占据网络后,该模型能够预测车辆周围物体占据的空间(包括动态物体下一步的动作产生的空间)。
基于此,车辆在不需要识别具体的障碍物是什么的情况下,就能做出避让动作 ——Ashok Elluswamy 在推特上甚至开起了玩笑,说特斯拉的车甚至能躲避 UFO!
基于该技术,车辆还能够看到周围角落里是否有障碍物,以此能够跟人类司机一样实现无保护转向!
简而言之,就是占据网络明显增强了特斯拉的自动驾驶能力(L2)。
据称,特斯拉自动驾驶系统每天能防止 40 起因司机失误造成的车祸!
此外,Ashok Elluswamy 还着重介绍了特斯拉 Autopilot 系统在防止驾驶员误操作方面的努力。
通过感知外界环境和驾驶员的操作系统,车辆能够识别到驾驶员的误操作,比如在错误的时候踩下了加速踏板,车辆会中止加速并且进行自动刹车!
▲ 特斯拉主动制动
这就是说,此前国内频繁曝出的一些因为驾驶员误操作而产生的“刹车失灵”问题将被从技术上进行限制。
不得不说特斯拉在推动技术进步上真的很有一手。以下为 Ashok Elluswamy 的演讲视频编译,略有删改。
一、纯视觉算法强大 二维图像转三维
演讲伊始,Ashok 表示,并不是所有人都了解特斯拉自动驾驶系统具体的功能,因此他简单介绍了一下。
▲Ashok
据他介绍,特斯拉自动驾驶系统可以帮助车辆实现车道保持、车辆跟随、减速过弯等,除了这些,特斯拉自动驾驶系统还配备了标准安全功能,例如紧急制动和避障,可以避免多种碰撞事故。
除此之外,自 2019 年以来,约有 100 万辆特斯拉可以在高速公路上使用更先进的导航,检查临侧车道信息来执行变道,识别高速路的出入口。
而且特斯拉自动驾驶系统还能在停车场自动泊车、识别交通信号灯和路牌,以及能进行右转弯,绕开汽车等障碍物。目前,这些功能已经经过了十几万名特斯拉车主的验证。
在演讲中,Ashok 还拿出了一段用户录制的视频。视频显示,用户在旧金山拥挤的道路上行驶时,车机屏幕显示了周围的环境,例如道路边界、车道线、附近车辆的位置和速度。
▲ 系统识别出周围环境
而这些一方面需要特斯拉车机和摄像头等硬件的支持,一方面还需要特斯拉自动驾驶系统内置的算法和神经网络的支撑。
据 Ashok 介绍,特斯拉搭载了 8 个 120 万像素的摄像头,它们可以 360 度捕捉周围环境影像,平均每秒可以生成 36 帧图像。而后特斯拉的车机将对这些信息进行处理,每秒可进行 144 万亿次运算(TeraOPs / s)。
而且这些过程都是在基于纯视觉算法进行的,并未使用激光雷达和超声波雷达,也没有高清地图。
那特斯拉自动驾驶系统又是如何识别一般障碍物的呢?
Ashok 表示,当遇到一般障碍物时,系统会使用空间分割方法。使用空间分割方法时,系统对空间内的每一个像素进行标记,标记为“可行驶的”和“不可行驶的”,然后自动驾驶芯片再来处理这个场景。不过,这个方法也存在一些问题。
▲ 对物体的标记
首先,系统标记的物体像素处于二维空间,而为了给汽车在三维空间中导航,物体像素需要转换出三维空间中对应的预测值,这样特斯拉的系统才能建立互动的物理模型,并顺利处理导航任务。
▲ 对物体的标记
而系统在将物体像素从二维图像转换到三维图像时,需要进行图像语义分割(指像素级地识别图像,即标注出图像中每个像素所属的对象类别)。
这个过程会产生不必要的图像或系统中不必要的像素,而图像的地平面上的几个像素可以产生巨大的影响,直接决定如何将这个二维图像转换成三维图像。所以,特斯拉不希望在规划时产生这样影响较大的像素。
另外,不同障碍物还需要使用不同方法来判断。
一般来说,比较常用的还是物体的深度值(从观察者角度看向物体时的距离,这个距离再通过投影变换、标准化设备坐标、缩放平移后,最终得到的值)。
在某些场景中,系统可以先预测障碍物。而在另一个场景下,系统也可以对图像的像素检测深度,所以每个像素都会产生一些深度值。
▲ 深度图(右侧)
但是,尽管最终生成的深度图非常漂亮,而当用深度图进行预测时,只需要三个点。
而且在对这三个点进行可视化的时候,尽管在近处看着还行,但是随着距离的增加,它们也会发生形变,在下一阶段这些图像也很难继续使用。
例如,墙壁可能会发生形变而变弯曲。而地平面附近的物体也是由较少的点来确定的,这就使得在规划时系统无法正确判断障碍物。
而又因为这些深度图是在多个摄像头采集到的平面图像上转换而成的,因此最终很难产生一个相同的障碍物,而且系统也很难预测出障碍物的边界。
因此,特斯拉提出了占据网络方案来解决这个问题。
二、计算空间占用率 给物体编码
在演讲过程中,Ashok 还用视频展示了这个占据网络方案。他说,从视频上可以看出,在这个方案中,系统对 8 个摄像头捕捉到的图像处理,然后计算物体的空间占用率,最终生成了示意图。
▲ 生成的模拟图像
而且特斯拉汽车在行驶时每挪动一下,系统网络就会重新计算周围物体的空间占用率。另外,系统网络不仅会计算出一些静态物体的空间占用率,例如树木和墙壁,还会计算包括行驶的汽车在内的动态物体的空间占用率。
之后,网络将图像输出成三维图像,而且还可以预测被遮挡的物体,因此即使汽车只上传了物体的部分轮廓,用户也可以分辨清楚物体。
此外,尽管系统捕捉到的图像因为远近不同,图像的分辨率不同,但是基于以上方案,最终呈现的模拟三维图像的分辨率是相同的。
▲ 生成的图像分辨率相同
而这就意味着整个方案运行得十分高效,Ashok 表示,计算平台运行 10 毫秒,系统网络能够以 100 赫兹的速率运行,这个运行速率甚至比很多相机记录图像的速度还快。
那么,这个过程是如何完成的呢?这就需要了解一下占据网络方案的架构。
在讲解占据网络方案的架构时,Ashok 以特斯拉鱼眼摄像头和左侧摄像头拍到的图像为例,对两者图像校正过程进行了对比。
首先,系统会先对图像进行拉伸,然后提取图像特征,查询出三维图像相关的点是否被占用,然后使用三维位置编码,然后将其映射到固定的位置,之后这些信息会在之后的计算中被收集。
▲ 对图像进行初步处理
之后,系统将对图像空间进行位置嵌入,继续通过三维查询处理图像流,最终生成三维占用特征。因为生成的是高维占用特征,所以很难在空间的每一个点上执行此操作。因此系统会在较低维度生成这些高维特征,例如使用典型的上采样技术,生成高维空间占用率。
▲ 计算物体的空间占用率
有趣的是,Ashok 在演讲中透露,当初做这个占据网络方案只是用于处理静态的对象,但是最终发现只处理静态的树很难,而且系统在刚开始分辨“真假行人”的时候,也遇到了很多困难。
但是团队最终发现,无论这些障碍是移动的,还是静止的,系统最终只需做到能够躲避掉这些障碍就好了。
▲ 真假行人
因此,占据网络方案不再区分动态障碍物和静态障碍物,而是使用其他的分类对其进行处理,计算物体的瞬时空间占用率,不过这还不足以能保证特斯拉汽车可以安全行驶。
因为如果只计算瞬时空间占用率,当特斯拉汽车在高速上行驶时遇到一辆车,然后就开始放慢速度并不是很合理。系统更想知道,在之后不同的时刻这辆车的空间占用率,以及变化情况。
这样的话,系统就可以预测出这辆车何时会离开。所以,方案还涉及还预测了占用流。
▲ 占用流的计算过程
占用流这个数据可以是空间占用率或时间的一阶、高阶导数,也可以提供更精确的控制,将它们统一到同一个坐标系中。系统将使用同一种方法来生成空间占用率和占用流,这还将针对各种障碍物提供强大的保护。
三、障碍物类型不重要 系统可避免撞车
Ashok 还表示,常规运动或移动网络不能判断物体的类型,例如到底是静态的物体还是一辆行驶的车辆。
但是从控制层面来说,物体的种类实际上并不重要,占据网络方案提供了很好的保护,防止网络出现分类困境。
因为不管是什么原因造成的障碍,系统都会认为这部分的空间被占用了,并且以某一速度移动。一些特殊类型的车辆可能有奇怪的突起,很难用传统技术建模,系统则会用立方体或其他多边形来表示移动物体。
这样一来,物体就可以进行任意的挤压,用这种占位的方法,而不需要复杂的网格状拓扑结构建模。
当车辆在进行无保护或者有保护的转弯时,可以使用几何信息来推断遮挡情况。几何信息不仅要推测车辆摄像头所识别到的信息还需要推测未识别到的信息。
例如,当一辆车正在进行无保护转弯时,前面有一条分岔路,可能有潜在的车辆被树木和路标遮挡,所以汽车“知道”它不能从这些遮挡物中看到车辆。基于不同的控制策略,汽车可以提出问题并消除这种遮挡。
因此,对于一个静止的物体,车可以在行驶的途中识别其何时变得可见。由于有完整的三维障碍物,汽车也可以预判到什么距离会撞到这一物体,然后系统会通过平顺的控制来识别并通过这一被遮挡的物体。
所以占据网络方案在很多不同的方面都有助于改善控制栈。这一方案是神经辐射场的延伸,神经辐射场(NeRf)在过去几年里在很大程度上接管了计算机视觉研究。
▲ NeRf 与占据网络关联示意图
NeRf 是在单个场景或单个位置的图像重建场景,从单个位置的一个点进行重建。
Ashok 表示,特斯拉的车辆在行驶中,后台处理接收到的图像较为准确,所以可以(用 NeRf)生成跨时间并精确的图像路线,通过 NeRf 模型和 3D 状态差异化渲染图像来产生较准确的 3D 重建。
而现实世界的图像会存在一个问题 —— 我们在现实世界中会看到大量不真实或有差别的景象。
例如太阳眩光或挡风玻璃上的污垢或灰尘会因为光线的衍射而产生变化,或者雨滴会进一步扭曲光线的传播,最终产生伪影。
对此提高鲁棒性的方法是使用更高层次的描述符,但这些描述符在一定程度上不会改变局部照明伪影(如眩光)。
因为 RGB(颜色系统)图像可能非常嘈杂,但在 RGB 之上添加描述符可以提供一层语义上的保护,防止 RGB 值的变化。因此,特斯拉的目标是将这种方式用于占据网络方案。
▲ 描述符比 RGB 更具鲁棒性
由于占据网络方案需要在几个镜头中产生空间占用率,不能在汽车中运行完整的神经优化,但神经优化可以缩小在后台运行,确保它产生的空间占用率能够解释汽车在运行时收到的所有传感器的图像。
此外,也可以在训练时叠加描述符,为这些网络产生良好的监督;同时也可以通过差异化渲染不同的传感器数据来监督所持有的图像。
目前特斯拉已经有了减少障碍物的网络,下一步就是避免任何碰撞,Autopilot 已经有很多安全功能。
紧接着,Ashok 展示了三段 Autopilot 启动避免碰撞的视频。
这里的碰撞事故指的是由于驾驶员不小心将油门踏板当制动踏板踩下而导致的撞车事故。
Ashok 在表示驾驶员不小心将油门当成刹车踩时,汽车会加速并导致碰撞,但车辆会识别并自动中止加速,并自动刹车防止碰撞。
在第一段视频中,Ashock 表示如果 Autopilot 没有启动并阻止汽车加速,视频中的司机很可能会落入河中。
▲ 特斯拉 AP 启动避免车掉入河中
同样,第二段视频显示,一名特斯拉司机在停车时误踩油门,但 Autopilot 迅速启动并阻止汽车撞上商店和行人。
▲ 特斯拉 AP 启动避免车撞向商店
四、通过占用率 车辆自动规划路径
但让汽车平稳地制动并刹停可能需要数秒乃至数分钟的时间,而汽车在行驶的过程中,可能没有足够的时间来识别障碍物并进行计算。
所以我们要用神经网络来达到这一目的;尤其最近还出现了更加复杂的隐性场景。特斯拉自动驾驶团队所要做的也就是从以前的网络中获取空间占用率。
首先,要把空间占用率编码到一个超级压缩的多层感知器(MLP)中。本质上,这个 MLP 是对任何特定查询状态下是否可以避免碰撞的隐含表示,这个避免碰撞的方法在某一时间范围内提供了一些保证。例如,可以在 2 秒或 4 秒或某个时间范围内避免碰撞。
Ashok 在这里又举了一个例子,他给出了一条自上而下的道路,黑色像素是障碍物、灰色像素是路面、白色像素是道路车道线。在这个三维空间的俯视图中,可以把车放在任何像素的位置,模拟碰撞是否可以避免。
▲ 车辆行驶情况示意图
他表示:“如果你把汽车想象成一个单一的点,避免碰撞的周期设置为瞬间,那么当前时间是否会发生碰撞,仅仅取决于障碍物的位置;但问题是,汽车不是一个点,它有一个类似矩形的形状,也可以转向。”
因此,只有当将形状与障碍物卷积时,才能够立即知道汽车是否处于碰撞状态。
随着汽车的转向(或因失控旋转),碰撞场会发生变化。绿色意味着汽车处于一个没有碰撞的安全位置,红色意味着碰撞,所以当汽车旋转时,碰撞位置更多;但当汽车位置被对齐时,绿色的位置扩大,意味着汽车不会发生碰撞。
整体来看,Ashok 展示了如何利用多幅相机视频和产品产生密集的空间占用率和占用流,通过空间占用率可以通过神经网络产生一个有效的避碰场,即车辆通过摄像头“看”,根据经验判断,以合适的速度和方向通过障碍物的道路。
▲ 避免碰撞的隐式神经网络
Ashok 还分享了一个模拟环境下的实验,驾驶员踩下油门加速并且没有转向行为,汽车监测到会发生碰撞并规划一条路径以使汽车安全地通过。
Ashok 在演讲结束时表示,如果他们能够成功实施以上的所有技术,他们就可以生产出一辆永远不会撞车的汽车。
显然,这项工作还没有完成,在他的最后一张 PPT 中,Ashok 积极向工程师们发出邀请,欢迎他们加入特斯拉,制造一辆永远不会撞车的汽车!
▲ Ashok Elluswamy 欢迎更多人才加入特斯拉
结语:特斯拉不断探索自动驾驶
自从特斯拉带火自动驾驶技术后,自动驾驶的赛道便涌现了一大批的跟随者。但不得不说,特斯拉始终还是走在行业的前列,不断探索着自动驾驶的新方法。
本次特斯拉 Autopilot 项目负责人带来新的技术解读,也一定程度上为我们提前展示了特斯拉未来自动驾驶技术的亮点。凭借特斯拉不断探索的精神,其自动驾驶也会继续领跑整个汽车市场。