超硬核解析:为什么 AP 2.0 没有哨兵模式?为什么行车记录的画面质量这么差?

超硬核解析:为什么 AP 2.0 没有哨兵模式?为什么行车记录的画面质量这么差?

我们知道,特斯拉在 V9 版本的软件更新中,添加了广受好评的行车记录仪和哨兵模式。但对于不同车型的「区分对待」,却引发了人们不少的问题,比如:

  • 在 MCU 1 + AP 2.5 的车型上,行车记录仪只有前、左、右三个画面;
  • 在 MCU 2 + AP 2.5 的车型上,特斯拉却增加了后摄像头的画面;
  • 在 AP 2.0 硬件的车型上,完全就不支持行车记录仪和哨兵模式;
  • 无论是行车记录仪还是哨兵模式的视频,不仅颜色极差,而且帧率不高;
  • 经常还会有车主收到「USB 驱动器缓慢」的问题。

那么,为什么会这样?

最近,绿神也在研究这个问题,并发现了一些有趣的答案。

在开始解释援引知情,首先需要科普一些知识,小板凳做好了。

首先,特斯拉录制的这些视频,是用 h264 YUV420P 进行编码的,且在这个过程中进行了过度压缩,导致这些视频比特率仅仅约为 4Mbps,帧率也只有 36 fps。

第二,HW 2.5 相比 HW 2.0 的整体集成度空前提高。HW 2.0 的主板仅有一颗英伟达 Parker 架构的 CPU 和 Pascal 架构的 GPU,且这颗 GPU 通过类似开发主板桥接的方式与主基板连接在一起。而 HW 2.5 却多出来一块 CPU 模组,GPU 模组也被直接集成到主板中,不再通过桥接方式连接。

第三,由于多了一个 CPU,所以 HW 2.5+ 实际上是由两个「独立」的 Parker 架构 CPU 计算节点加上一个 Parker 架构的 GPU 所构成的。你完全可以把他们想象成两个不同的 Linux 电脑,被封装在了一块主板上。

其中,节点 A 是主要用于运算的部分,所有 AutoPilot 相关的代码都会在这里运行。而节点 B 则是节点 A 的一个「缩水版」,内存变小,砍掉了除了系统启动需要之外的存储。此外,B 节点也也没有专用的 GPU。

但耐人寻味的是,B 节点的处理器芯片实际上还是有 256 个 CUDA 内核(英伟达推出的运算架构,旨在让 GPU 具备处理复杂计算的能力),但是特斯拉并没有启用它。

第四,虽然特斯拉说 HW 2.5 与 HW 2.0 在硬件上和传感器上没有太大差别,但实际上,特斯拉在 HW 2.5 硬件上,将摄像头从 RCCC 滤镜换成了 RCCB 滤镜。(具体用途,可以阅读这篇文章:https://zhuanlan.zhihu.com/p/57681796

有了这些理论知识铺垫,我们就可以开始来解答这个问题了。

绿神发现,AP 2.5 硬件上的所有视频压缩工作,都是在这个「残缺版」的 B 节点上完成的。如果在没有视频相关的任务时,这个节点就是不工作的。甚至在哨兵模式推出之前,B 节点就完全处在一个沉睡的状态下。

也就是真实的「一核有难,一核围观」……

而之所以这些工作都在 B 节点上运行,是因为 A 节点的 ISP(影像信号处理器)在处理来自车身上的 8 个摄像机视频数据时,已经是 100% 满功率运行。

这也就解释了为什么 AP 2.0 硬件缺失这些功能的原因。

那么,为什么这些视频的质量这么差?

主要原因在于,这些视频是由 AP 的摄像头所录制的,需要 MCU 通过 AP 网络将这些视频流实时「下载」下来,并使用 GStreamer 将所有的数据转存到 U 盘上并转码,而不是将视频素材存储在 MCU 的内存缓冲区中。

这样虽然加快了视频存储到 U 盘的速度,也不用再给车内其他系统增加压力,但却是一种「非常愚蠢」的解决办法,不仅会造成不可估量的过度压缩,对于 MCU 的压力也陡增。

鉴于 MCU 1 在处理普通的操作都已经「体验极差」,再增加后置摄像头的画面,估计就直接跪了。

然而就算是算力提升的 MCU 2,也还是时不时顶不住,这就是为什么有车主收到「USB 驱动器缓慢」提示的原因 —— 完全不是你 U 盘的锅,而是特斯拉的锅。

另外,为了提高视频的可用性,特斯拉还将视频划分成了四个「象限」进行存储。颜色滤镜中的每个像素,都单独存储为了一个类似「画中画」的色块。

绿神表示,这样的操作看起来很奇怪,而且也让它无法真正比较来自这两个地方的镜头或是运行自己的去色算法。但这样做的好处,是可以避免在摄像头在光电转换时被拜耳图像处理所破坏,便于重建原始图像。

所以绿神认为,特斯拉的 ISP 还做了许多锐化和不同类型的色彩校正。

那么具体体现在哪里?让我们来看看下面两张对比图(注意路面的线和路边的标志)。

忽略被算法「洗」掉的阳光,你会发现,经过处理之后的画面,能够让 Autopilot 更加清晰地「看」清到右边的停车标志、路面划线以及道路边缘线等关键数据。

总而言之,行车记录仪和哨兵模式这两个功能,实际上特斯拉是把自己的需求置于车主的需求之上,这有点让人忍不住吐槽。但这就是特斯拉的世界观,在这里,使命和愿景大于一切。

至少你现在已经知道,他们从这些「劣质」视频里得到的数据,比从实际录像中直接提取的要好得多。

有趣的是,绿神还提到,其实代码中还有鱼眼支持,但它并没有被启用。他猜测,主要是因为那些 USB 2.0 的 U 盘根本无法承受这样的数据量。

注释:由于并非相关计算机专业,难免在翻译和重写的过程中出现错误和疏忽,如果发现了这些小毛病,欢迎指出。感谢绿神和知乎 Ryan Woo 的文章《Tesla 的全自动驾驶之路——从 Autopilot 2.0 到 3.0 (上)》。

Leave a Reply

Your email address will not be published.
Required fields are marked *