论文名称:TransFusion: Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers
论文链接:https://arxiv.org/pdf/2203.11496v1.pdf
代码链接:https://github.com/xuyangbai/transfusion
如图1
所示,左图是照明较差的例子,右图是由于点云的稀疏性,使得用相机参数进行hard-association
的融合方式浪费了许多图像特征,同时对相机参数很敏感,因为投影点可能由于较小的校准误差而落在物体外部。
针对以上问题,论文提出了一种基于注意力的对齐和融合方式,对图像退化和标定矩阵具有鲁棒性。
三个创新点:
TransFusion 的流程如图2
所示,重点是融合方法:给定 LiDAR BEV 特征和图像特征,tranformer 检测头利用 LiDAR 信息,结合初始化的object queries
进行第一次预测,得到初始预测initial predictions
,然后将object queries
和对应的图像特征融合,得到融合特征。
每个object query
包含了query position
和query feature
,分别包含物体位置信息和边界框信息。
提出了基于中心热力图初始化object queries
的方法,使其与输入相关,从而具有更好的先验信息,只需要 1层 transformer decoder 就能达到好的效果,加快了收敛速度。假设 LiDAR BEV 特征为 F L ∈ R X × Y × d F_L\in \mathbb{R}^{X \times Y\times d} FL∈RX×Y×d,则初始化步骤如下:
query positions
,对应 BEV 特征作为初始query features
。因此,初始的 queries 会接近可能存在的物体中心,所以能减少 decoder 层。与2D平面不同,BEV 平面中同类物体尺度很接近,这个性质有利于进行多类别检测,所以对于每个 S ^ i , j , k \hat{S}_{i,j,k} S^i,j,k,先用 one-hot 类别向量通过线性层映射得到 R d \mathbb{R}^d Rd 向量(category embedding
),再把 S ^ i , j , k \hat{S}_{i,j,k} S^i,j,k对应的query feature
和 category embedding
按元素相加,得到 category-aware query features。
decoder 的设计与 DETR 中一致,如图3
所示,左图用于第一次预测,右图用于模态融合。
第一个解码器层:
query position
通过MLP 编码为 d d d 维向量,作为位置编码,然后与query feature
按元素相加。queries 最终通过解码器和FFN,得到3D边界框和类别。与CenterPoint一样,FFN预测的是相对于queries 的中心偏移量 δ x , δ y \delta_x,\delta_y δx,δy、边界框高 z z z、尺度 l o g ( l ) , l o g ( w ) , l o g ( h ) log(l),log(w),log(h) log(l),log(w),log(h)、航向角 s i n ( α ) , cos ( α ) sin(\alpha),\cos(\alpha) sin(α),cos(α)、速度 v x , v y v_x,v_y vx,vy,同时为 K K K 类预测概率 p ^ ∈ [ 0 , 1 ] K \hat{p}\in [0,1]^K p^∈[0,1]K,每部分的参数都是由1x1卷积计算得到。最终输出: { b ^ t , p ^ t } t N \{\hat{b}_t,\hat{p}_t\}_t^N {b^t,p^t}tN, b ^ t \hat{b}_t b^t 是第 i i i 个 query 对应的预测边界框, p ^ t \hat{p}_t p^t 是对应的类别。
在第一个解码器层后加FFN,进行监督学习,是使用了使用了辅助损失函数。注意,除了2.5
节的方法,目前为止还没使用到图像。
point-fusion 的方法中,由于点云的稀疏,融合时会导致损失大量图像语义信息,所以论文在图像像素和点云之间使用soft association
,保留了所有图像特征 F C ∈ R N v × H × W × d F_C\in R^{N_v\times H\times W\times d} FC∈RNv×H×W×d,作为memory bank
, N v N_v Nv 是视角个数。
使用cross-attention
机制,建立soft association
,使得网络能够自适应地决定需要从图像中获取哪些信息。首先用第一次预测结果和相机矩阵找到 object queries 所在的图像,然后在对应的图像特征和 object queries 做cross attention
。由于点云和图像特征来自不同的domain,要使得queries 落在与3D边界框相关的图像区域,需要很长的收敛时间,所以论文设计了spatially modulated cross attention (SMCA)
模块。
实现方法是通过生成一个weight mask
M M M,按元素乘以 cross-attention map,使得每个query 只关注3D投影在图像平面的2D边界框区域。 M M M生成方法如下:
M i j = e x p ( − ( i − c x ) 2 + ( j − c y ) 2 σ r 2 ) M_{ij}=exp(-\frac{(i-c_x)^2+(j-c_y)^2}{\sigma r^2}) Mij=exp(−σr2(i−cx)2+(j−cy)2)
其中 ( i , j ) (i,j) (i,j) 是位置索引, ( c x , c y ) (c_x,c_y) (cx,cy) 是2D中心,由3D中心投影到图像平面得到, r r r 是3D边界框投影的最小外切圆的半径, σ \sigma σ 是调整高斯分布宽度的超参数。
与DETR 中相同,使用二分图匹配进行正样本匹配,匹配损失如下:
C m a t c h = λ 1 L c l s ( p , p ^ ) + λ 2 L r e g ( b , b ) ^ + λ 3 L i o u ( b , b ^ ) C_{match}=\lambda_1L_{cls}(p,\hat{p})+\lambda_2L_{reg}(b,\hat{b)}+\lambda_3L_{iou}(b,\hat{b}) Cmatch=λ1Lcls(p,p^)+λ2Lreg(b,b)^+λ3Liou(b,b^)
其中 L c l s L_{cls} Lcls 用二元交叉熵损失, L r e g L_{reg} Lreg 在预测的BEV中心和 ground truth 中心用L1损失(都归一化到 [ 0 , 1 ] [0,1] [0,1]), L i o u L_{iou} Liou 是预测框和真实框的IoU损失。未匹配到的预测框则为负样本。
给定所有样本,分类损失用 focal loss,回归损失用 L1 loss(只对正样本),热力图损失用 CenterPoint 中的 penalty-reduced focal loss,总损失是三部分的加权和,两个解码器层的标签分配策略和损失函数一致。
加入图像信息初始化query,能进一步提高检测小物体的能力。 首先将图像特征 F C ∈ R N v × H × W × d F_C\in R^{N_v\times H\times W\times d} FC∈RNv×H×W×d 映射到 BEV 平面,再与 BEV 特征 F L F_L FL 做 cross-attention,得到 LiDAR-camera BEV 特征 F L C F_{LC} FLC。具体如下:
如图4
所示,将多视角的图像特征(图中只画了一个)在高度维度压缩,作为 K , V K,V K,V序列,与 LiDAR BEV 特征做 cross-attention,得到 F L C F_{LC} FLC,之后与2.1
节类似,预测热力图,再与只用 LiDAR 得到的热力图 S ^ \hat{S} S^ 取平均,得到最终的热力图 S ^ L C \hat{S}_{LC} S^LC,用 S ^ L C \hat{S}_{LC} S^LC 选择和初始化 object queries
。使用更先进的将图像特征映射到BEV平面的方法可能可以提高性能。
2D骨干网络用 DLA34,3D骨干网络用 VoxelNet。