Tesla AI DAY 深度分析 硬核!Tesla Vision EP2
本文来源:知乎PerceptionX
/ 导读 /
先大层面概括下 Tesla 目前(2021.8.19)所展示的总架构为:
首先 raw image 进来,16bit 36hz;
通过 rectify layer, 把图片转到 virtual camera 下
通过一个 RegNet, 其实是一个 ResNet 的形式,然后给出不同尺度下的 features.
通过 BiFPN, 把不同尺度下的 features, 从上到下,又从下到上,来来回回对不同尺度下的 features 做一个融合。
通过 transformer 的形式投到 BEV 视角下,得到一个俯视的 feature
给到 feature queue 里面,加入时序信号,video module 实际是对时序信号的一次融合。之后得到一个多 camera 融合并加入了时序信号的 features
最后给到不同的 detection head 里面去做检测;
Recap:
加入时序信息
在遮挡的情况下,可预测出被遮挡物体的位置
对路面的标识会有一些记忆,例如左下图片的直走与左拐的 road mark, 可以帮助
预测前车的轨迹,即前面的车大概率会往前或往左拐
可预测未来的可行驶区域
为了加上时序这一功能,于是在网络上增加以下模块:
加入了 kinematics / IMU (里程计信息) ,与 transformed 后的 multi-cam feature 结合,形成一个 feature queue;feature queue 包含时序信号,所以我们就需要把时序信息放进来:
a.Ego car kinematics 更多是一个动力信息,这里面给到 1x1x4x60 这里面其中一个 x4 的维度我们推测是 velocity (Vx,Vy), acceleration(Ax,Ay),
b.Multi-cam features 带上时序,以及 positional encoding 加上时序的位置信息。
2. 增加 video module 模块
3. 最后给出一个 multi-camera video features 这一个模块,就是对多个 features 做一个融合
Video Module Queue
当我们Query 建立起来后, 我们要怎么去使用它呢?换而言之,我们要什么时候push or pop 我们的数据呢?
Tesla 这边给出了一个方案,例如,每隔 27ms,push 一个 key,
同时我们可以根据路程来定的一个序列,例如我们在这里看到一个左拐和一个直行的标志,这一部分的 query 是我的 ego car 每走一米,query 都会做一个 push and pop operation. 这样我们就可以建立起 time based query and space based query.
这个例子非常生动形象,可能当时 Andrej 都没有讲透,为什么我们要加入这个时序信息呢?假如说我们 network 下一步直接输出 trajectory 的话,因为我之前看到了左转车道,所以即使前面没有一辆车带着我走,我都能知道我在这个十字路口下一步的 trajectory 应该引导到哪一个方向。这估计是加入时序信息最大的 motivation。
Video Module:
Video module 其实就是把 feature query 再做一次融合,大家可以看到 3D Conv 上输入一个 20x80x300x12 的 query,这里 x12 是之前 Time-60 经过 sub-sample 变成 Time-12 的时序信息。为了把 features 做一个融合,我们可以用 3D Convolution or Transformer 的方法,把 Time 的维度降为 1,再传到 detection head。Tesla 这边还用了一个 Spatial RNN,并且详细地介绍了他们的方法, 主要是想凸显他们在做道路重建的模块:
Transformer: 这里有篇论文大家可以参考看看:AXIAL ATTENTION IN MULTIDIMENSIONAL TRANSFORMERS arxiv.org/pdf/1912.1218
其实当时 Andrej 轻描淡写 30 秒把 3D convolution or Transformer 的方法给讲过去了,实际上如果要复现,估计一个季度的时间也不一定可以..
Spatial RNN
Spatial RNN 是一个 20x80x256 的 feature, 同时组合上动力学信号,为什么需要 kinematics(动力学信号)呢?首先他需要维护一个很大的 Spatial Grid,如图:
如图是 Tesla 把 spatial RNN train 出来后 hidden state feature map 的可视化; 我们可以看到 Tesla 提取了比较丰富的道路语义信息; 同时我们可以看前 10 个通道平均的一个可视化输出, 可以看出车在运动过程中对道路有一个比较好的感知.
当把这些 features(10 个通道)放在一起的时候, 根据 spatial RNN 不断地去迭代与输出 hidden state, 根据 hidden state 上面的 feature, 检测出路沿和车道线,就可以对周围的环境建图, 如图: Tesla 的网络是一个纯视觉的网络, 输出的是在 BEV 视角下的地图. 这是一种不依赖高精地图, 自主建图导航的一种方法. 这里大家可能会疑惑对于这个网络, 我们的 ground truth 是怎么取得呢?
HDMap Net
Li, Qi, et al. "HDMapNet: An Online HD Map Construction and Evaluation Framework." arXiv preprint: 2107.06307
这篇文章的motivation是提出了一种强大的在线地图学习方法,实现直接从相机图像和激光雷达点云预测本地语义地图。相比于传统建图方式: Lidar, IMU, GPS, Wheel Odo 做SLAM,再通过手工进行标注, 得到一个高精地图,在线地图学习的方法节省了大量的人力和资源,也给系统开发人员在 scalability和准确性之间提供了另一个可能的选择。该方法的实现过程非常类似于tesla video module,接下来我们给大家介绍一下这篇工作:
网络结构,输入是 surrounding images and lidar point clouds, 这两个数据可以同时给,也可以单独给。image 过一个 perspective view 下的一个 encoder, 得到 3 维的 features, 然后再过一个 MLP 转换到 BEV。Lidar 这边也做相似的处理,转换到 BEV decoder 下,然后我就可以给不同的 head 去做任务,例如 BEV 视角下的一个 segmentation,instance embedding, 还有 direction prediction. 通过 instance embedding 去结合 semantics segmentation,加上道路的方向信息,就可以产生一个向量化的 HD Map,右边 BEV feature 表示后面他将在 BEV 下做检测任务。
简单来说就是 image plane 投到 BEV 视角下去做检测,这跟 Tesla 有异曲同工之妙。这里想说明一点是这个技术不只有 tesla 能想到,其实业界中也会有类似的方法,只是 tesla 很少发 paper。上图的 pipeline 很像 tesla 加入时序信号前的网络,都是 raw image 进来,然后经过 encoder, 转到 BEV 视角下,再给到 detector 去做 segmentation 等。都是在转换后的“Vector space” / BEV 视角下做各种任务。
加入时序信息后效果
加上时序信息后,被遮挡的物体在vector space上也能很好的检测以及轨迹预测,相对与single frame 会有很大的效果提升。不仅对Object detection 有帮助,还对depth and velocity的检测也有提升,如图
这里有两个chart,上面是depth estimation, 下面的是velocity estimation. 对legend方面做一下解释:绿色线是radar的输出,假设为ground truth, 蓝色线未加入时序信息video module的输出结果,黄色是根据single camera 的深度做一个微分的结果。大家可以看到,加入video module后,整个深度与速度信息的估计性能的提升是很明显的。
Put everything together, Tesla 目前所展示的总架构为:
首先 raw image 进来,16bit 36hz;
通过 rectify layer, 把图片转到 virtual camera 下
通过一个 RegNet, 其实是一个 ResNet 的形式,然后给出不同尺度下的 features.
通过 BiFPN, 把不同尺度下的 features, 从上到下,又从下到上,来来回回对不同尺度下的 features 做一个融合。
通过 transformer 的形式投到 BEV 视角下,得到一个俯视的 feature
给到 feature queue 里面,加入时序信号,video module 实际是对时序信号的一次融合。之后得到一个多 camera 融合并加入了时序信号的 features
最后给到不同的 detection head 里面去做检测;
最后得到的效果是:
CVPR 2021 workshop Andrej Recap
在CVPR 2021 workshop的时候,当时Andrej就透露过他们的架构,如上图,对于camera fusion这模块上,当img -- multicam -- detector head 的时候,我们猜测tesla 会用上3种 fusion的方法:3D convolution, transformer, Spatial RNN.
Future Work, 未来可改进的地方:
Tesla vision 在融合时序信号时引用 feature queue 的方法,其实是在网络比较靠后的部分,他们未来尝试在比较靠前的部分就把 spatial temporal 的信号输入进来,比如说用一些光流的手段,直接把时序信号加到底层网络里面。
Spatial RNN 是用一个 dense raster output, 后处理也比较复杂,但是应用在一个对时延要求比较高的场景下,可见这个网络还需要优化;所以 Tesla 在研究对于各个场景,比如说道路场景,有没有一种更为稀疏的表示方法,计算成本也小一点。
Warpping up this session
▎最新热文
CES 2022上,一些值得关注的自动驾驶亮点自动驾驶和智慧交通有它会更好