这里时间比较有限,优先看Sparse4Dv3方法里面相对以前改动的地方。
0.参考
代码v1/v2/v3:https://github.com/HorizonRobotics/Sparse4D
跑起来:https://github.com/HorizonRobotics/Sparse4D/blob/v3.0/docs/quick_start.md
1.方法
(1)时序实例去噪(3D)

代码解析:在head的InstanceBank模块中,两组kmeans提前初始化好的均匀分布锚点:nuscenes_kmeans900.npy,然后另外一组锚点,通过SparseBox3DKeyPointsGenerator模块进行forward噪声生成,然后通过二分图匹配(在哪?)。通过时间差,补偿锚点的中心点、尺寸、yaw、速度等。






(2)质量估计 (Quality Estimation)

代码解析:下面三张图,由配置文件,可以知道是用到了质量估计这个模块的。



代码解析:下面三张图,由配置文件,可以知道中心点的使用的交叉熵损失函数,而yaw角度的优化,使用的高斯focal loss损失函数进行优化。看起来跟论文中的是正好反过来的!!!



(3)解耦注意力 (Decoupled Attention)

将锚点独立的高维特征编码 (independently conduct high-dimensional feature encoding),随后将它们拼接 (concatenate) 起来。将与原始 Sparse4D 相比,这种方法带来了更低的计算量和参数开销 (lower computational and parameter overhead)。然后E 和 F 分别代表锚点嵌入 (anchor embedding) 和实例特征 (instance feature)也拼接起来。
代码解析:我们可以看到将a这个独立高维特征编码后进行add或者concatenate操作,其中是进行add还是cat操作通过self.mode这个参数进行配置的。head中anchor_encoder中type="SparseBox3DEncoder"对应 mode="cat"。




(4)扩展到追踪 (Extend to Tracking)

代码解析:Sparse4DHead中forward,通过调用instance_back.get返回instance_feature与anchor 作为R;

代码解析:Sparse4DHead中forward,通过调用instance_back.cache,将topk的instance_feature存在cache中;


代码解析:Sparse4DHead中forward,通过调用instance_back.get_instance_id,如果id为空或置信度>threshold,给赋新的id(self.pred_id基础上+i);

2.结果
v3增加了track的任务,帧率上降低并不多。mAP提升了2.5个点,对于IDS可能还需要做一些优化。
