TransCAR是密歇根州立大学在2023年发表在IROS上的一篇论文
论文地址 :TransCAR
文章目录
前言
DETR3D是在DETR的基础上,从2D检测拓展到3D检测,利用相机的内外参,将3D点转换到图像坐标系下,获取对应的图像特征。同时,DETR3D还引用了Deformable DETR中的iterative bounding box refinement。关于DETR3D的理解可以参考:DETR3D原理分析与代码解读、DETR3D:将DETR用于3D目标检测任务。
一、TransCAR
相机网络通过环视图像生成 vision-updated object queries,雷达网络对点云进行特征提取和位置编码,将 vision-updated object queries 和点云特征进行特征融合。网络架构如下图所示。
二、Camera Network
本文基于 nuScenes 数据集,将6个摄像头采集的环绕主车360度的全景图像和初始 3D object queries 作为输入,最后输出 vision-updated 3D object queries。camera network 使用ResNet-101和特征金字塔(FPN)获得多尺度的图像特征,这些多尺度的图像特征为检测不同大小的目标提供了丰富的信息。参考DETR3D,使用6个 Transformer decoder layers 生成 vision-updated 3D object queries,每一层的输出都作为下一层的输入。
对于第一层 Transformer decoder,随机初始化
N
N
N(本文中
N
=
900
N = 900
N=900 )个可学习的3D object queries
Q
0
=
Q^0 =
Q0= {
q
1
0
,
q
2
0
,
…
,
q
N
0
{q^0_1},{q^0_2},…,{q^0_N}
q10,q20,…,qN0},上标为 Transformer decoder 层数,下标为对应的 object queries 索引,网络从训练数据中学习 3D object queries 的位置分布。
对于后续 Transformer decoder layer,输入为上一层 decoder 输出的 object queries,针对每一个 object queries 都可以编码得到一个 object 的3D中心位置
P
i
P_i
Pi。由于 nuScenes 是由6个相机构成,将这些3D中心点通过相机的内外参矩阵投影到图像特征图上,所以最后会得到
6
×
N
6 × N
6×N 个中心点。通过双线性插值对图像特征进行采样,本文采用特征金字塔获取图像特征,对于每一个3D中心点
P
i
P_i
Pi 会从特征金字塔的每一层中进行采样,采样后的图像特征
f
i
f_i
fi 为每一层特征总和。同样由于 nuScenes 的六张图像覆盖了全景,那么显然3D中心点
P
i
P_i
Pi 不可能会出现在某些视角的图像中,此时找到的图像特征是不可取的,因此采用0填充这些视野外对应的图像信息。
每一层 Transformer decoder 将 object queries 与图像特征结合,生成更新后的 object queries
Q
l
=
Q^l =
Ql= {
q
1
l
,
q
2
l
,
…
,
q
N
l
{q^l_1},{q^l_2},…,{q^l_N}
q1l,q2l,…,qNl},
Q
l
Q^l
Ql 为 第
l
l
l 层 Transformer decoder 的输出。对于更新后的
Q
l
Q^l
Ql 使用两个神经网络预测3D边界框和类别标签。
为什么要用环视图像生成 3D object queries,这是因为雷达与摄像头相比雷达的垂直视野有限,位于雷达垂直视野之外的物体将会被遗漏,同时由于雷达更难检测出小物体,然而摄像头具有更好的可见度,因此利用环视图像来预测 3D object queries。
三、Radar Network
雷达网络旨在学习有用的雷达特征,并对其3D位置进行编码以进行融合,网络架构如下图所示。
首先对雷达点云在BEV空间的一定范围内进行过滤,通过累积前 5 帧的雷达并将其转换为当前帧等一系列预处理操作将输入的雷达点拓展为36通道。
使用MLP学习雷达点云特征
F
r
F_r
Fr 和雷达点的位置编码
P
r
P_r
Pr,两者均为
M
×
C
M×C
M×C,
M
M
M 为点云中点的数量,
C
C
C 为特征通道数。本文中
M
、
C
M、C
M、C 分别为1500和256。将学习到的点云特征和位置编码结合起来作为最终的点云特征
F
r
a
d
a
r
=
(
F
r
+
P
r
)
F_{radar} = (F_r + P_r)
Fradar=(Fr+Pr),这些点云特征与来自摄像头网络的 vision-updated 3D object queries 一起用于下一步的 TransCAR 融合。
四、TransCAR Fusion
TransCAR Fusion 将之前步骤中的 vision-updated 3D object queries 和点云特征作为输入,并输出用于预测 3D 边界框的 fused 3D object queries。 三个 Transformer decoder 在 TransCAR Fusion 模块中以迭代方式工作。 提出 query-radar attention mask 是为了帮助交叉注意层更好地学习 vision-updated 3D object queries 和点云特征之间的交互和关联。
Query-Radar Attention Mask
当输入的K、Q、V的数量都很大时,此时运算量是非常大的。所以不需要学习每一个之间的交互。对于 q i q_i qi 只有其附近的点云特征是有用的,因此我们只需要与附近的点云特征进行交互,没有必要将 q i q_i qi 与其他点云特征交互。所以采用了一个二进制的 N × M N×M N×M 的 query-radar attention mask M,仅当第 i 个查询 q i q_i qi 和第 j 个雷达特征 f j f_j fj 之间的欧几里德距离小于阈值时,M 中的位置 (i, j) 才被允许关注。 TransCAR 融合中存在三个 query-radar attention mask,对应于三个 Transformer decoder。 这三个掩模的半径分别为 2m、2m 和 1m。
Transformer Camera and Radar Cross-Attention
三个 Transformer 交叉注意力 decoder 级联,以学习 TransCAR 融合 vision-updated 3D object queries 和点云特征之间的关联。Transformer decoder 架构如下图所示:
对于初始 decoder ,从相机网络输出的 vision-updated 3D object queries 作为输入
Q
i
m
g
Q_{img}
Qimg,点云特征作为K、V。query-radar attention mask M1 用于防止关注某些不必要的对。 decoder 内的交叉注意力层将输出注意力分数矩阵
A
1
A_1
A1。对于
A
1
A_1
A1第 i 行中的M个元素,它们代表第 i 个object queries与所有M个点云特征之间的注意力分数。输出结果为
F
r
a
d
1
∗
=
(
A
1
⋅
F
r
a
d
)
F^∗_{rad1} = (A_1 · F_{rad})
Frad1∗=(A1⋅Frad),将
F
r
a
d
1
∗
F^∗_{rad1}
Frad1∗ 通过前馈网络
Φ
F
F
N
1
Φ_{FFN1}
ΦFFN1,形成 initial fused 3D object queries
Q
f
1
=
Φ
F
F
N
1
(
Q
i
m
g
+
F
r
a
d
1
∗
)
Q_{f1} = Φ_{FFN1}(Q_{img}+F^∗_{rad1})
Qf1=ΦFFN1(Qimg+Frad1∗)。对应 TransCAR 网络架构图中的
Q
f
1
Q_{f1}
Qf1。
接下来的两层与第一层相似。但是这两层的输入为上一层生成的 fused 3D object queries,通过重新计算 query-radar attention mask
M
i
M_i
Mi,同时对新生成的 object queries 重新在图像中采样对应的位置的图像特征
f
f
i
f_{f_i}
ffi,与初始解码器类似,注意力加权的点云特征为
F
r
a
d
i
∗
=
(
A
i
⋅
F
r
a
d
)
F^∗_{radi} = (A_i · F_{rad})
Fradi∗=(Ai⋅Frad),通过前馈网络输出 fused object queries
Q
f
i
=
Φ
F
F
N
i
(
Q
f
i
−
1
+
F
r
a
d
i
∗
+
f
f
i
)
Q_{fi} = Φ_{FFN_i}(Q_{f_{i-1} }+ F^*_{ rad_i} + f_{f_i})
Qfi=ΦFFNi(Qfi−1+Fradi∗+ffi)。
五、Box Encoding and Loss Function
Box Encoding
我们将3D边界框 3D编码为11位向量
b
3
D
b_{3D}
b3D:
其中 cls = {c1, …, cn} 是类标签,x、y 和 z 是3D中心位置,h、w 和 l 是3D维度,θ 是航向角,
v
x
v_x
vx 和
v
y
v_y
vy 是沿着 x 和 y 轴的速度。对于每个输出 object queries q,网络预测其类别分数 c 和3D 界框参数
b
b
b:
其中∆x,∆y和∆z是预测和上一层 query positions 之间的偏移量。与DETR3D估算Sigmoid空间中的位置偏移不同,我们直接回归3D笛卡尔坐标中的位置偏移。DETR3D使用Sigmoid空间,因为他们希望将位置输出保持在[0,1]之间,所以所有的查询位置都在距离边界内。而对于TransCAR,我们从优化的视觉更新查询开始,其位置相对更准确。因此,我们可以避免可能会影响学习的冗余的非线性激活。
Loss
损失和DETR中一致采用set-to-set 匈牙利损失计算方式,对预测出的(回归, 分类)结果和GT的(回归, 分类)结果进行匹配。回归损失采用L1,分类损失使用focal loss。
θ 表示排列集合,
p
^
σ
(
i
)
(
c
i
)
\widehat{p}_{σ(i)}(c_i)
p
σ(i)(ci) 表示排列索引为 σ(i) 的类
c
i
c_i
ci 的概率,
L
b
o
x
L_{box}
Lbox 是边界框的 L1 差值,
b
i
b_i
bi 和
b
^
σ
(
i
)
\widehat{b}_{σ(i)}
b
σ(i) 是 groundtruth box 和预测框。
总结
本文提出了 TransCAR,通过环视摄像头得到 vision-updated 3D object queries,从雷达数据中学到点云特征和 vision-updated 3D object queries 之间的交互。
是否可以对 object queries 进行优化,以减少 decoder 层数。
本文是自己对论文的理解,如有不同见解,欢迎讨论、指正。