阅读笔记-Multi-Modal Fusion Transformer for end-to-end autonomous driving

来源: arXiv:2104.09224v1
代码:https://github.com/autonomousvision/transfuser

Title

以前没接触过自动驾驶方面的文章,最近在看transformer的文章所以扫一眼,这里简单记录下该方法的思路,实验部分就不多说了。

该文章解决的任务是自动驾驶中的状态预测问题,举个直观的例子,一辆无人车在时刻t获得了当前时刻的场景信息(可以是图像、雷达等不同介质),然后根据这些信息做出一定的动作,比如左转、右转或者直行等,这些动作进一步反馈给控制系统进行操作。

解决的框架是imitation learning,即模仿学习。模型模仿已有的 (状态,动作)映射,对当前状态采取动作,这样整个模型的训练其实可以看做始终有监督的分类或者回归任务。模仿学习存在的问题在于没有对状态有用信息的甄别信息,举个例子,如果模型总是看印度阿三说英语,那他学到的估计是英语+各种没有必要的手势 :), 另一个问题是已有的标签需要专家给出,而这部分数据获得困难,一旦遇到没有见过的场景很容易出现误差进而累计误差。

思路是利用tansformer将全局信息嵌入到 LiDAR获得的BEV视图和视觉图像中,且两种模态的数据进行融合。

有必要解释一下BEV视图,大家都知道多线LiDAR获得的是一定范围内的3D点云图, 而BEV是在空间内均匀划分相同大小的空间盒子,利用盒子内的点云提供每一个盒子的表示特征,于是或者不同高度的特征图,举个本文使用的方式作为例子,本文使用的点云覆盖水平面积是32mx32m, 于是水平面上以划分网格,高度上通过ground plane(与雷达通告的水平面)划分为两部分,于是所有的点云被划分入 32/0.125 x 32/0.125 x 2 个盒子中,然后统计每个盒子中点云的数量作为该盒子的特征,就得到 2 x 256 x 256 的特征图
就是这里的BEV特征图。

两种模态数据融合方式比较直观,如下图所示:


Architecture

无论RGB还是BEV都利用resnet结构获得不同尺度的特征图,而transformer则在相同尺度内融合两种模态的数据和全局信息。具体而言,以最后一个stage输出的特征图为例, 将RGB分支和BEV分支的特征图分别变为h'w'个token 进行合并变成 2h'w'的token放入到transformer中进行信息融合,注意此时每个token都考虑到了两个分支的所有token信息,融合更加彻底,然后将融合后的特征再叠加到分支的主干上进行下一个stage。
在transformer的输入信息中,除了每个stage输出的token,还需要融合位置编码,显然尺寸和cat之后的特征相同,初次之外还融合了当前自车的速度信息,即将速度标量线性映射成长度为C的特征向量后叠加到输入上。

为了降低计算规模,从feature map中提取token时可以采用平均池化的方式减少token的数量,然后再在与分支叠加时使用上采样统一尺寸。

两个分支的最终输出平均池化后是长度相同的特征向量,该特征向量叠加后用于预测未来若干时刻的状态, 预测部分MLP包含2个隐层, 后面每个时刻的预测是一个GRU部件,其输入包含前一时刻的预测位置和当前时刻的GPS位置信息,而每一时刻的输出则是相对于前一时刻的增量。图中的w是xy点,即该任务模型输出是位置序列,然后控制器根据该预测执行动作。

损失函数直接采用的是L1损失。

思考:

  1. 虽然本文是不同模态的数据,但其实都是转换成了类似图像的形式作为输入,那么对于类似任务,比如ReID任务这类比较是否相同的任务也同样可以采取类似的信息融合方式。
  2. 即然是siamese 结构,那么如果把两个输入直接concat之后输入到类似PVT这种结构中效果会怎样呢?

你可能感兴趣的:(阅读笔记-Multi-Modal Fusion Transformer for end-to-end autonomous driving)