TransFusion:Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers 论文笔记

原文链接:https://arxiv.org/pdf/2203.11496.pdf

1.引言

        目前的融合方法分为结果级融合、提案级融合以及点级融合。结果级融合在图像上进行2D检测,然后提升到3D空间生成3D提案,再通过PointNet进行边界框估计;提案级融合使用RoI池化操作在共享的提案内融合多模态特征。这些粗粒度的融合方法性能不佳,因为矩形提案内有大量背景噪声。

        点级融合性能更佳,即通过校准矩阵建立点与像素的硬性关联,然后将图像特征附加到点云特征维度。但通过相加或拼接的融合会收到低质量的图像特征(如低光照条件)影响;此外,点与像素的硬性关联依赖高精度校准矩阵,且忽略了许多富含语义信息的像素。

        本文的思想是将硬性关联变为软性关联,使得模型对退化的图像质量和传感器失调更加鲁棒。具体而言,本文使用两个transformer解码层作为检测头,其输入为激光雷达BEV特征图和图像特征图,如下图所示。第一层使用一组稀疏的物体查询,从激光雷达特征生成初始边界框。物体查询是输入依赖且类别感知的,从而可用更好地位置和类别信息丰富查询。第二层自适应地融合查询与空间上下文关联的图像特征,将交叉注意力的空间范围限制在初始边界框周围以使网络更好地访问相关位置。该方法为物体查询提供了更丰富的特征,且对较差的图像条件更具有鲁棒性,因为点和像素的关联是软性且自适应的。最后为了处理点云中难以检测的物体,还引入图像指导的查询初始化模块。

3.方法

3.1 准备知识:2D检测中的transformer

        DETR使用transformer将一组可学习嵌入(称为物体查询)转换为一组预测,后续工作为物体查询添加了位置信息。最终的预测是相对于查询位置的偏移量,以降低优化难度。

        本文的物体查询包含了查询位置(提供物体定位)和查询特征(编码了实例信息,如边界框的尺寸和朝向等)。

3.2 查询初始化

        输入依赖:过去的工作将物体查询作为网络参数学习,而不考虑输入数据。这些输入无关的查询需要额外的解码层来学习物体中心的位置。本文使用基于中心热图的输入依赖初始化策略,以求仅使用一层解码层就能达到有竞争力的性能。

        首先给定激光雷达BEV特征图,预测一个K通道热图,每个通道对应一个类别。将热图看作X\times Y\times K个候选目标的集合,选择前N个候选目标作为初始物体查询。同时为避免查询之间距离太近,仅选择局部最大的元素。这些被选择的候选目标的位置和特征被用于初始化查询位置和查询特征。

        类别感知:由于BEV下的同类别物体尺度方差很小,为利用这一点,本文为物体查询加入类别嵌入,即将类别独热向量的线性投影与查询特征相加。该类别嵌入为 自注意力建模物体间关系 以及 交叉注意力建模物体与上下文的关系 提供了有用的信息,且在预测时能提供类别的先验知识。

3.3 Transformer解码器和FFN

        解码器与DETR类似。物体查询和图像/激光雷达BEV特征图之间的交叉注意力为物体查询聚合相关的上下文,物体查询之间的自注意力推理物体查询的成对关系。查询位置使用MLP编码为位置编码并与查询特征相加。

        前馈网络(FFN)独立地将各物体查询解码为边界框和类别标签,其中边界框的预测目标与CenterPoint相似,即二维位置偏移量、中心高度、长宽高、朝向角的正余弦以及二维速度。

        本文使用辅助解码机制,即在每个解码层后添加FFN和监督。这样能在第一层解码层输出初始边界框,输入到激光雷达-相机融合模块,以限制交叉注意力的搜索范围。

3.4 激光雷达-相机融合

        基于硬性关联的点级融合会浪费大量的图像特征。本文在transformer解码器中使用交叉注意力进行自适应特征融合。

        图像特征融合中的SMCA:使用校准矩阵选择包含查询位置的视图图像,然后在物体查询和图像特征图中使用交叉注意力。但图像包含了许多不相关的特征,可能需要更长的训练时间,因此本文使用空间调制交叉注意力(SMCA)模块,通过在查询投影点周围的2D高斯掩膜M(生成方式类似CenterNet)来加权交叉注意力:

M_{ij}=\exp\left( -\frac{(i-c_x)^2+(j-c_y)^2}{\sigma r^2} \right )

其中(i,j)索引M的某个位置,(c_x,c_y)是查询投影点,r是边界框的外接圆半径,\sigma是调节高斯分布带宽的超参数。

        然后该掩膜与所有注意力头中的交叉注意力图按元素相乘,这样使得物体查询关注2D边界框周围的相关区域以加速训练,并为进一步的边界框回归和分类提供有价值的语义信息。

        最后另一个FFN使用包含激光雷达和图像信息的物体查询预测最终边界框。

3.5 边界框分配和损失

        使用匈牙利算法进行预测和真实边界框的双向匹配,匹配代价为分类代价、回归代价和IoU代价的加权和:

C_{match}=\lambda_1 L_{cls}(p,\hat{p})+\lambda_2 L_{reg}(b,\hat{b})+\lambda_3 L_{iou}(b,\hat{b})

其中L_{cls}为二元交叉熵损失,L_{reg}为边界框中心(归一化到[0,1]内)的L1损失,L_{iou}为IoU损失。通常预测会比真实边界框多,未匹配的预测被视为负样本。

        计算所有匹配样本的分类focal损失,回归L1损失,以及对于热图预测使用减少惩罚的focal损失(类似CenterPoint)。

        注意两个解码层均使用了该边界框分配和损失。

3.6 图像指导的查询初始化

        为进一步提高对小物体的检测能力以及对稀疏激光雷达的鲁棒性,本文提出图像指导的查询初始化,使用图像和激光雷达点云特征初始化查询。

        具体而言,使用交叉注意力将图像特征投影到BEV平面与激光雷达BEV特征融合。如下图所示,多视图图像先沿纵轴压缩作为交叉注意力的键-值序列,这是因为图像列与BEV位置的关系容易使用相机几何建立,且通常一个图像列最多包含一个物体,因此这样做可以在不丢失关键信息的情况下减小计算量。尽管会丢失细粒度图像信息,该结果仍然满足要求,因为这一步的目的只是为初始化查询提供提示。

        最后,类似3.2节,使用融合特征图预测热图,并与激光雷达热图平均得到最终的热图,以初始化物体查询。这样,网络可以检测激光雷达难以检测的物体。

4.实施细节

        训练:首先预训练2D主干网络并在后续训练中固定参数;然后先仅使用激光雷达数据训练3D主干和第一个解码层(使用常用的数据增广方法),再加入激光雷达-相机融合模块和图像指导查询初始化模块训练。分为两步训练的效果要比联合训练效果好,可能是由于第一步训练能使用更灵活的数据增广方法(如复制粘贴增广方法)。

        测试:最终的得分是热图得分和分类得分的几何平均;且没有使用非最大抑制(NMS)。此外,在相机视野外使用点云进行检测,可以直接跳过融合阶段使用初始边界框,因此无需额外的检测模型。

5.实验

        在nuScenes和Waymo Open数据集上实验。将仅使用激光雷达数据和第一个解码器的模型称为TransFusion-L。

5.1 主要结果

        nuScenes上的结果:TransFusion-L性能能大幅超过SotA的激光雷达检测方法和一些多模态方法,这归因于transformer的关系建模能力和查询初始化策略。

        TransFusion性能能大幅超过所有模型(包含使用了额外训练数据的模型),且软关联机制使得模型对较差图像条件和传感器失调更加鲁棒。

        Waymo Open上的结果:多模态带来的性能提升相对较小,这可能有两个原因:语义信息对Waymo Open上的粗粒度分类影响较小;Waymo Open的激光雷达点云比nuScenes更密集,导致第一解码层的结果已经比较准确。

        若引入多帧数据和二阶段细化,本文的方法可以达到更好。

        扩展到跟踪任务:使用CenterPoint的检测跟踪算法验证本文模型的泛化性,性能超过了所有任务。

5.2 对较差图像条件的鲁棒性

        两个比较基准为TransFusion-L使用逐点拼接特征融合方法(称为CC)和PointAugmenting中的融合方法(称为PA),两者均为硬性关联方法。

        夜间:TransFusion融合方式能带来最大的性能提升。

        退化图像质量:推断时,随机将图像特征设置为0。CC和PA方法中,激光雷达特征和图像特征紧密耦合,导致巨大的性能下降;而TransFusion只有略微的性能下降,这是由于该方法的顺序设计和注意力融合策略,即先基于激光雷达数据进行初始预测,再自适应地引入图像的有用信息。此外,若已知相机故障,可以直接禁用融合模块,使系统仍可正常工作。

        传感器失调:推断时为校准矩阵添加随机平移偏差。本文方法在1\textup{m}失调量下性能仍只有很小的下降,而其余方法性能明显下降。这是因为注意力机制可以根据上下文信息自适应地寻找相关图像特征。

5.3 消融研究

        查询初始化:对TransFusion-L进行实验,当无类别感知时,性能略有下降;但当无输入依赖性时(查询位置改为可学习参数),性能大幅下降,增加解码层数可以提高性能,但仍低于原始的TransFusion-L。此外,当同时存在输入依赖和类别感知时,增加解码层数带来的性能提升很小,说明不需要更多的解码器。

        融合成分:从TransFusion中分别去掉特征融合模块和图像指导的查询初始化后,性能均有下降,且前者的下降更多,因其能提供有区分性的实例特征;TransFusion-L能够给出高召回率的检测,故后者的影响相对较小,但在激光雷达更稀疏的情况下该模块会更加重要。与其他融合方法相比,本文方法以相近的延迟和参数量带来了更好的性能。另一实验表明融合能为远距离物体检测带来更大的性能提升。

补充材料

A.网络结构

        用于初始边界框预测和激光雷达-相机融合的transformer解码器如下图所示,其中位置编码是学习得到的。

        对于图像指导的查询初始化模块,仅使用交叉注意力以节省计算,其中键-值序列来自压缩图像特征,查询序列来自激光雷达BEV特征(如图2所示)。

        可通过使用可变形注意力来进一步减小计算量。

B.实施细节

        查询数量在训练时固定,在测试时可随意更改。对于小物体如行人、交通锥和自行车,选择候选目标时没有使用局部最大约束。

        将过去数帧的点云转换到当前帧坐标下以生成更密集的点云;进行了类别平衡采样。

C.标签分配策略

        由于正文提到的双向分配策略需要调节超参数,本文还设计了一个启发式分配策略:一个真实边界框仅会被分配给一个同类别且距离最近的预测框;如果一个预测框被分配给多个真实边界框,则仅与更近的那个匹配。这样可能会导致出现部分未匹配的真实边界框。该启发式分配策略在不拥挤的场景下有很好的性能;但在拥挤场景下不能防止重复检测。

D.NMS的影响

        有方法研究表明在没有非最大抑制的情况下,一对一的正样本分配和分类代价是关键。本文的双向匹配方法满足这两个条件,因此NMS对结果没有影响。但对于启发式分配策略而言,没有在分配中考虑分类代价,故添加NMS能达到更好的性能。

F.2D网络的讨论

        通常在多模态融合任务中,2D主干是由其余任务预训练得到的。本文研究了什么任务预训练2D主干以及使用什么分辨率的特征对多模态融合3D检测最有利。实验表明,2D实例分割任务和最高分辨率的特征(FPN Level 0)能带来最好的结果,后者可能是因为其包含了最细粒度的特征,对检测小物体或距离远的物体有帮助。

G.在测试时调整查询数量

        若已知某些场景先验如拥挤程度,可以调整测试时的查询数量;此外可以改变查询数量来平衡精度与速度。

I.定性结果

        可视化可发现,相比于TransFusion-L,TransFusion能减小FP和FN(误检和漏检)。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,报错信息显示在安装mmdetection3d时出现了问题。具体来说,报错信息包括两个部分。首先,报错一指出在执行`get_indice_pairs`函数时出现了错误,具体错误信息是`cuda execution failed with error 2`。其次,报错二指出在编译`scatter_points_cuda.cu`文件时出现了错误,具体错误信息是`no instance of overloaded function "at::Tensor::index_put_" matches the argument list`。 针对这个问题,可能的原因是环境配置或依赖项安装不正确。为了解决这个问题,可以尝试以下几个步骤: 1. 确保已正确创建并激活了名为`transfusion`的conda环境,并且Python版本为3.7。 2. 确保已正确安装了PyTorch、mmcv和mmdet。可以使用`pip list`命令检查已安装的包,并确保版本与引用中提供的版本一致。 3. 检查CUDA和cuDNN的版本是否与安装的PyTorch版本兼容。可以在PyTorch官方网站上查找相应的兼容性信息。 4. 如果报错一中的错误是由于CUDA执行失败导致的,可以尝试更新显卡驱动程序或降低PyTorch的版本。 5. 如果报错二中的错误是由于编译错误导致的,可以尝试更新或重新安装相关的依赖项,如mmpycocotools。 关于mmpycocotools的安装问题,由于提供的引用内容中没有包含相关信息,无法给出具体的解决方案。但一般来说,可以尝试使用以下命令安装mmpycocotools: ``` pip install mmpycocotools ``` 如果仍然遇到问题,建议查阅相关文档或寻求开发者或社区的帮助来解决安装问题。 #### 引用[.reference_title] - *1* *2* *3* [TransFusion环境配置以及遇到的各种报错处理](https://blog.csdn.net/weixin_43603658/article/details/131756871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值