1 背景
团队:地平线
时间:
代码:
简介:
- 这篇论文是Sparse4D的续作,区别主要在于特征时序融合上,新版提高了运算效率。
- 后续端到端SparseDrive的基本框架与这篇基本类似。
2 存在的问题
2.1 其他稀疏3D检测的问题
PETR是query-based方法,但是为了实现特征融合,进行了全局注意力机制,导致高计算量。
2.2 Sparse4Dv1的问题
- Sparse4Dv1的时序特征融合hierarchy fusion是循环实现的,v2考虑每一帧都融合前一帧。复杂度从O(N)变成O(1)
- 引入了memory queue,让上一时刻检查好的障碍物信息(Feature和Anchor)都能在本帧复用;
- 用CUDA重写了deformable aggregation,提高了运算效率
- 将相机参数加入了权重计算机制,避免该部分隐式地学习相机参数,且泛化能力弱;
- 使用dense depth supervision。之前是用depth reweitght显示预测深度,监督3D anchor的深度。
3 具体方案
image通过backbone和FPN,得到多尺度特征,略。
3.1 single frame layer
这一层是为了提取这一帧新出现的障碍物。根据SparseDrive在附录的信息,初始化900组特征和anchor,然后选出打分最高的300组highest confidence instances给到multi-frame layers。
3.2 5 multi-frame layers
-
这一层拿到sigle frame layer输出的300组障碍物信息,然后再从memory queue中提取600组障碍物信息,进行拼接。这600个是已经在上一帧出现过的
a. 注意获取的600组障碍物,其anchor经过了坐标转换的。 -
先经过cross attention,进行障碍物与其历史的时序特征交互;从图上来看,query是之前的600和现在的300,但是key和value是之前的900,这是怎么进行时序交互的呢?
-
再进行self-attention,进行障碍物之间的特征交互;这个才是cross attention吧
-
再进行deformable aggregation + FFN + output layer
a. 注意在Sparse4Dv1中,有一个权重计算,这个权重是分配了不同尺度和不同视角的权重,跟相机参数有关;在v2中,直接把相机参数编码进去,那样能避免模型再学,导致泛化性能差(换一个其他参数的相机就不行了)
3.3 密集深度监督
- 在训练的时候用,推理的时候不用。
- 对每一个尺度的特征图,过一个1x1的卷积得到深度,用lidar point cloud进行监督。具体怎么监督?
- 通过消融实验表明,该模块能提高mAP8.5个百分点。