参考代码:暂无
1. 概述
介绍:FCOS使用2D图像作为感知输入,在经过trick调整和优化之后也能在3D目标检测任务中获得不错的效果,也就说明了只使用2D图像对于3D目标也是具备感知,这一点是这篇文章便是以此关键点出发构造BEV检测算法。在以往的BEV目标检测算法中,只会在BEV特征上使用检测头去检测场景中的目标,之后通过梯度反传去更新网络之前的模块,这就可能会导致如backbone性能无法有效发挥或出现灾难性遗忘的情况,对此文章在2D特征维度引入一个附加3D目标检测头,用以为网络添加特征约束和优化后面BEV中DETR检测任务头中的query,使得网络收敛更快。结合InternImage作为backbone、时序特征融合、检测query优化等策略文章的算法目前刷到了SOTA。
对于常见2D和BEV下的检测算法其pipeline见下图所示:
上面左右两幅图展示了2D和BEV模态下的目标检测任务,但是它们都有一个特点便是loss产生的梯度会传递很长的距离才能到达输入节点。在现有的BEV分割任务中已经证实添加2D辅助分支对于提升BEV的感知结果是有收益的。基于这样的观察文章在2D特征处添加3D目标检测模块,并用它的检测结果优化BEV检测中的query。
2. 方法设计
2.1 整体pipeline
从上图中可以看到文章的BEV检测算法与Bevformer算法框架类似,最大的区别是添加了一个2D辅助感知分支,将其检测结果作为后续BEV的额外query,类似于两阶段检测算法中第一阶段的检测用于提取proposal,而后续阶段在此基础上进一步优化。
2.2 具体实现
1. backbone部分:
在检测任务中经常使用VoVNet-99作为backbone,而文中则采用InternImage,其原因便是其设计思路与transformer网络更为相似,其抽取特征的能力更强。backbone的选择对性能带来的影响:
2. BEV特征构建:
对于BEV特征的构建与BevFormer类似也是采用query的形式,不过在时序特征融合部分采利用了帧间pose信息将不同帧的pose变换到同一坐标系下concat,这样会比原方案中使用GRU的方案效果更好。此