感知: 3D目标检测 Sparse BEV 补1

1. DETR3D 2021(DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries)

Ref 1. https://zhuanlan.zhihu.com/p/430198800
Coarse-to-Fine的形式,Decode每层都输出预测框和类别,做Loss计算。
DETR3D首先根据object query预测N个参考点,然后利用相机参数将参考点反投影回图像,对2D图像特征进行采样,最后根据采样得到的2D图像特征预测3D目标信息。
单点特征采样:DETR3D只会选取参考点反投影位置对应的图像特征,导致模型对于全局特征学习的不够充分。

1. 有无Corase2Fine?如何实现?

2. PETR 2022(Implicit BEV Pos Embed) (PETR: Position Embedding Transformation for Multi-View 3D Object Detection)

1. 3D Position Encoder

将空间特征编码到图像二维特征中。

2. Object queries 生成

DETR使用一组可学习的参数作为初始的object query,DETR3D基于初始的object query预测一组参考点,PETR为了降低3D场景的收敛难度,首先在3D世界空间中以均匀分布的方式初始化一组可学习的3D锚点,然后锚点经过一个小型MLP生成初始的object query。论文作者还提到,如果使用DETR的方式或在BEV空间生成锚点,最终模型性能都不理想。

3. Decoder

和标准DETR一样,Cross attention模式
PETR系列算法利用基于query的架构和全局cross attention来实现多视图特征融合。PETR排除了密集的视图转换模块,但与DETR类似,它使用全局注意力,导致了较高的理论计算成本。

3. FUTR3D 2023(FUTR3D: A Unified Sensor Fusion Framework for 3D Detection)

4. BEVFormer 2022(Transformer for BEV feature)

Ref 1. 一文读懂BEVFormer论文: https://zhuanlan.zhihu.com/p/538490215

1. Queries如何生成

BEV Queries是预定义的一组栅格形(grid-shaped)可学习参数,简称QRH×W×C,在输入到BEVFormer之前,BEV Queries加上了可学习的位置编码(learnable positional embedding)

具体组成?
(待补充...)

2. Temporal self attenion reference points/off set 如何生成?如何组合多个采样特征

  • 从经典 RNN 网络获得启发,将 BEV特征 Bt 视为能够传递序列信息的 memory。每一时刻生成的 BEV 特征 Bt 都从上一时刻的 BEV 特征 Bt1 获取所需的时序信息,这样能保证动态地获取所需的时序特征,而非像堆叠不同时刻 BEV 特征那样只能获取定长的时序信息。

  • BEVFormer中TSA采用了继承式的时域信息融合方式:利用attention机制在t时刻融合了t-1时刻的BEV features信息,由于t-1时刻的BEV features 也融合了更早时刻(t-2)的信息,因此t时刻BEV features间接地融合了比t-1时刻更早的信息。但是这种继承式时域融合方式有遗忘的特点,即不能有效利用较长时间的历史信息。BEVFormer V2把时域融合改成了:根据ego motion,把过去多个时刻的BEV features 对齐到当前时刻,然后在channel 维度把这些对齐后的BEV features 与当前时刻BEV features串联,然后用Residual 模块降低channel数,就完成了时域融合。

如何在Bt1产生参考点?
Bt1根据自车运动对齐到t时刻记作Bt1,(x, y) 处 query在Bt1的参考点为(x, y)

3. Spatial cross attention reference points/off set 如何生成?

  • 无需reference points,BEV query显示表示某个BEV网格处的特征。
  • 论文中把BEV平面中的栅格叫做2D参考点(2D reference points)。论文中定义nuScenes数据集栅格尺寸200x200,对应[-51.2米, 51.2米],那么s就是0.512米。把BEV平面在z轴方向选取Nref个3D参考点进行扩展,表示车辆周围有限空间。
  • 最后,对Vhit,Nref个sampled features进行加权求和,作为spatial cross-attention的输出来更新BEV query,从而完成 spatial 空间的特征聚合。
  • 在BEV Query对应的图像2D features 有效区域附近计算注意力,把图像2D features加权融合到BEV Query作为SCA的输出。

补充:
将每个BEV grid的Nref点投影到N个图像特征,作为参考点,在参考点周围采样图像特征需要off set,此off set怎么获得?
通过bev query接MLP/CNN获得?(是一种方式)

4. 是否Corase-to-fine,如何实现的?

无?(未看源码,暂无结论)

4. Sparse3D

Ref 1. https://zhuanlan.zhihu.com/p/635478379
Ref 2. https://zhuanlan.zhihu.com/p/674699884

1. v1: Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion

  • Sparse 4D采样:对于每个3D anchor,分配多个4D关键点,然后将其投影到多视图/尺度/时间戳图像特征上,以采集样相应的特征;
  • 分层特征融合:分层融合不同视图/尺度、不同时间戳和不同关键点的采样特征,生成高质量的实例特征。通过这种方式,Sparse4D能够在不依赖密集视图变换(类似于基于LSS的方法基本都是密集视图变化)或全局注意力的情况下,高效地实现3D检测,并且更适合在边缘设备上部署。
  • 此外,作者引入了一个实例级深度重加权模块,以缓解3D到2D投影中的不适定问题。(具体参考 Ref 2)

补充:
1. 代码内 anchor 是如何表示的?参数是否是可学习的?(均匀分布的预制框,不可学习?)
均匀分布的预制框,可学习的(nn.Parameter(anchor, requires_grad=True))

2. v2: Sparse4D v2 Recurrent Temporal Fusion with Sparse Model

1. v1问题

  • Sparse4D的时态模块存在一个显著的限制,即在执行特征融合之前需要对多帧历史数据进行采样。这导致计算复杂性随历史帧数的增加而线性增加,导致推理和训练速度降低,GPU内存使用增加并且难以有效地整合长期时态特征。

2. v2特点

  • 提出Sparse4D的增强版本,通过实现一种递归形式的多帧特征采样,改进了时态融合模块(通过用一种基于实例特征的循环方式替代多帧采样方法,类似于基于query的跟踪器和SteamPETR);
  • 有效地解耦图像特征和结构anchor特征,Sparse4D实现了对时态特征的高效转换,从而仅通过逐帧传输稀疏特征促进了时态融合;
  • 具体而言,对于第一帧,使用单帧Sparse4D执行检测,输出一组带有它们相应实例特征的3D边界框。对于后续帧,将前一帧的输出转换到当前帧。实例特征保持不变,而实例状态(例如3D边界框)则投影到当前帧上作为anchor,利用自车运动数据。
  • Sparse4Dv2引入的改进,包括增强的时态模块、可变形聚合操作的重构、相机参数编码的整合以及密集深度监督。
  • 在Sparse4D中,一个实例由三个部分表示:anchor、实例特征(instance feature)和anchor embedding。anchor是结构化信息,表示实例的状态,并具有实际的物理意义。实例特征是从图像中提取的高阶语义特征,主要来自图像编码器。而anchor embedding是锚点的特征编码,使用一个小的anchor编码器 Ψ 将anchor的结构化信息映射到高维空间。这种设计完全解耦了图像特征和实例(指的是anchor)的结构化状态,因此可以更方便地添加先验知识。对于实例的时序传播,仅仅需要投射前一帧的anchor到当前帧,然后再对投射到当前帧的anchor进行编码,而实例特征不用改变。
  • 收敛困难:稀疏形式的感知算法,大多数都面临这个收敛困难的问题,收敛速度相对较慢、训练不稳定导致最终指标不高;在Sparse4D-V2 中,我们主要采用了额外的深度估计任务来帮助网络训练,但由于用上了额外的点云作为监督。

3. v3: Sparse4D v3 Advancing End-to-End 3D Detection and Tracking

1. v2问题

  • 网络收敛慢,引入额外深度估计任务帮助训练,使用点云做监督(理想情况不需要借助额外点云数据);

2. v3特点

  • 引入了DETR-like 2D 检测论文中最为有效的辅助任务"query denosing"并将其改进成了时序形式,此外我们提出另外一个辅助训练任务 "quality estimation",这两个任务不仅加速了模型收敛,同时让感知性能更优。
  • 针对端到端跟踪任务,我们很惊喜得发现无需加入任何训练策略和优化,只需要在测试时引入简单的跟踪策略,仅依赖于Sparse4D 中的实例时序传播策略,即可实现SOTA 的性能指标。

补充:
1. Temporal denosing 中Noisy Instances feature是如何产生的?
噪声GT需要转为instance的形式以输入进网络中,首先噪声GT可以直接作为anchor,把噪声GT编码成高维特征作为anchor embed,相应的instance feature直接以全0来初始化。

posted @   ldfm  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示