虽然大多数现有的端到端驾驶方法都专注于单一输入模式,但自动驾驶系统通常配备摄像头和 Li DAR 传感器。这提出了重要的问题:我们能否整合这两种模式的表征,以利用它们在自动驾驶方面的互补优势?我们应该在多大程度上独立处理不同的模式,我们应该采用什么样的融合机制来获得最大的性能增益?传感器融合领域的先前工作主要集中在驾驶的感知方面,例如2D 和 3D 对象检测、运动预测和深度估计。这些方法侧重于学习捕获 3D 场景的几何和语义信息的状态表示。它们主要基于图像空间和不同 LiDAR 投影空间之间的几何特征投影进行操作,例如鸟瞰图 (BEV) 和范围视图 (RV)。信息通常从投影 2D 或 3D 空间中每个要素周围的局部邻域聚合。
虽然这些方法比纯图像方法要好,但我们观察到其架构设计中的局部性假设阻碍了它们在复杂城市场景中的性能(表 1a)。例如,在十字路口处理交通时,自动驾驶车辆需要考虑多个动态代理和交通灯之间的交互(图 1)。虽然深度卷积网络可用于在单个模态内捕获全局上下文,但将它们扩展到多种模态或模型对特征之间的交互作用并非易事。为了克服这些限制,我们使用Transformer的注意力机制将关于 3D 场景的全局上下文推理直接集成到不同模态的特征提取层中。我们考虑单视图图像和 Li DAR 输入,因为它们是互补的,我们的重点是集成来自不同类型模态的表示。我们将生成的模型称为 TransFuser,并将其集成到专为端到端驾驶设计的自回归路点预测框架(图 2)中。
IL 的目标是学习模仿专家
π
∗
\pi^*
π∗行为的策略
π
\pi
π。 在我们的设置中,策略是从输入到航点的映射,这些航点提供给单独的低级控制器以输出动作。 我们考虑 IL 的行为克隆 (BC) 方法,这是一种监督学习方法。 首先在环境中推出专家策略以收集大小为
Z
Z
Z 的数据集
D
=
{
(
X
i
,
W
i
)
}
Z
i
=
1
D = {\{ (X^i, W^i) \} ^Z}_{i=1}
D={(Xi,Wi)}Zi=1,该数据集由环境的高维观测值
X
X
X 和相应的专家轨迹组成 ,由 BEV 空间中的一组 2D 路点定义,即
W
=
{
w
t
=
(
x
t
,
y
t
)
}
T
t
=
1
W = {\{ w_t = (x_t, y_t) \}^T}_{t=1}
W={wt=(xt,yt)}Tt=1。 该 BEV 空间使用自动驾驶车辆的坐标系。 策略
π
\pi
π 使用收集的数据
D
D
D 和损失函数
L
L
L 以监督方式进行训练。
高维观测值
X
X
X 包括来自单个时间步长的前置摄像头图像输入和 LiDAR 点云。 我们使用单个时间步长输入,因为先前关于自动驾驶 IL 的工作表明,使用观察历史可能不会导致性能提升。 我们使用预测轨迹
π
(
X
)
\pi(X)
π(X) 和专家轨迹
W
W
W 之间的
L
1
L_1
L1 距离作为损失函数。 我们假设可以访问逆动力学模型,该模型实现为 PID 控制器
I
I
I,它执行低级控制,即转向、油门和制动,提供未来轨迹
W
W
W。动作被确定为
a
=
I
(
W
)
a=I(W)
a=I(W) 。
Global Planner:我们遵循 CARLA 0.9.10 的标准协议,并假设高级目标位置
G
G
G 作为 GPS 坐标提供。 请注意,这些目标位置稀疏且相距数百米,这与策略 KaTeX parse error: Undefined control sequence: \p at position 1: \̲p̲ 预测的本地航路点相反。
输出表示:我们预测 BEV 空间中自动驾驶车辆的未来轨迹
W
W
W,以自动驾驶车辆的当前坐标系为中心。 轨迹由一系列 2D 航路点表示,
{
w
t
=
(
x
t
,
y
t
)
}
T
t
=
1
{\{ w_t = (x_t, y_t) \}^T}_{t=1}
{wt=(xt,yt)}Tt=1。 我们使用
T
=
4
T = 4
T=4,这是我们的逆动力学模型所需的默认航点数。
形式上,我们将输入序列表示为
F
i
n
∈
R
N
×
D
f
F^{in} \in R^{N \times D_f}
Fin∈RN×Df ,其中
N
N
N 是序列中标记的数量,每个标记由维度为
D
f
D_f
Df 的特征向量表示。 Transformer使用线性投影来计算一组查询(queries)、键(keys)和值(values)(Q、K 和 V)。
其中
M
q
∈
R
D
f
×
D
q
M^q \in R^{D_f \times D_q}
Mq∈RDf×Dq ,
M
k
∈
R
D
f
×
D
k
M^k \in R^{D_f \times D_k}
Mk∈RDf×Dk 和
M
v
∈
R
D
f
×
D
v
M^v \in R^{D_f \times D_v}
Mv∈RDf×Dv 是权重矩阵。 它使用
Q
Q
Q 和
K
K
K 之间的缩放点积来计算注意力权重,然后聚合每个查询(query)的值,
最后,Transformer使用非线性变换来计算与输入特征
F
i
n
F^{in}
Fin 具有相同形状的输出特征
F
o
u
t
F^{out}
Fout。
Transformer在整个架构中多次应用注意力机制,从而产生
L
L
L 个注意力层。 标准Transformer中的每一层都有多个并行的注意力“head(头)”,其中涉及为方程(2)中的每个
F
F
F 生成几个
Q
Q
Q、
K
K
K 和
V
V
V 值,并将来自方程(3)的 A 的结果值连接起来。
令单个模态的中间网格结构特征图为维度
H
×
W
×
C
H \times W \times C
H×W×C 的 3D 张量。 对于
S
S
S 种不同的模态,这些特征堆叠在一起形成维度序列
(
S
∗
H
∗
W
)
×
C
(S ∗ H ∗ W) \times C
(S∗H∗W)×C。我们添加了一个可学习的位置嵌入(positional embedding),它是一个维度为
(
S
∗
H
∗
W
)
×
C
(S ∗ H ∗ W) \times C
(S∗H∗W)×C的可训练参数,以便网络可以在训练时推断不同标记之间的空间依赖性。我们还通过使用线性层将标量值投影到
C
C
C 维向量来提供当前速度作为输入。输入序列、位置嵌入和速度嵌入使用逐元素求和相结合,形成维度为
(
S
∗
H
∗
W
)
×
C
(S ∗ H ∗ W) \times C
(S∗H∗W)×C 的张量。如图 2 所示,这个张量tensor作为输入输入到产生相同维度输出的Transformer。为了清楚起见,我们在图 2 中省略了位置嵌入和速度嵌入输入。然后将输出重新整形为
S
S
S 个维度为
H
×
W
×
C
H \times W \times C
H×W×C 的特征图,并使用现有特征图的元素求和反馈到每个单独的模态分支。上述机制构成了单一尺度的特征融合。这种融合在不同分辨率的图像和 LiDAR BEV 分支的 ResNet 特征提取器中多次应用(图 2)。然而,以高空间分辨率处理特征图在计算上是昂贵的。因此,我们使用平均池化从早期编码器块中将更高分辨率的特征图下采样到
H
=
W
=
8
H = W = 8
H=W=8的固定分辨率,然后将它们作为输入传递给Transformer,并使用双线性将输出上采样到原始分辨率在使用现有特征图进行元素求和之前的插值。
在这项工作中,我们证明了基于现有传感器融合方法的 IL 策略在复杂的驾驶场景中存在高违规率。 为了克服这一限制,我们提出了一种新颖的多模态融合Transformer (TransFuser),用于集成不同模态的表示。 TransFuser 使用注意力来捕捉全局 3D 场景上下文并专注于动态代理和交通灯,从而在 CARLA 上实现最先进的性能。 鉴于我们的方法灵活且通用,使用其他传感器进一步探索它会很有趣,例如雷达,或将其应用于其他具体的 AI 任务。