1 团队
团队:清华大学,地平线
投稿会议:暂时未知,挂在rxiv
代码链接:https://github.com/swc-17/SparseDrive
开环测试数据集:nuScenes
简述:使用了稀疏表征
2 背景
2.1 突出贡献
没有使用稠密的BEV(dense BEV Features),而是采用了稀疏表征sparse scene representation,提高了训练和推理速度
(sparseAD是不是也这么说?)
2.2 其他好点子
障碍物预测和自车规划应该是并行的,而不是串行的,原因如下:
- 障碍物和自车的交互是双向的,因此网络结构不能设置为串行的,不能有先后之分(good idea)
- 障碍物和自车都需要对场景的理解,这种场景的理解不能只停留在感知里(场景理解很难,要不然大语言模型也不会运用到自动驾驶里,比如DriveVLM)
- 障碍物和自车的行为都具有不确定性inherent uncertainty
3 具体模型
3.1 概览
模型分成串行的3步:
- 图片编码image encoder。因为这是从感知做起的
- 对称稀疏表示symmetric sparse perception。负责检测和追踪detection branch,以及在线建图online mapping branch。对称是想说模型处理障碍物和车道线的方式是一样的,拼一起对称
- 并行规划器parallel motion planner。障碍物预测和自车规划是并行的。
3.2 对称稀疏感知symmetric sparse perception
1个非时间解码器non-temporal decoder和多个时间解码器temporal decoder。
写的不好,网络结构看图就行,但是没讲为什么这么设计
3.3 并行规划器parallel motion planner
串行以下3步
3.3.1 ego initialization
ego同obs一样,也是由feature和anchor box表征。为什么要用俩呢?anchor box也存的是自车状态信息,为什么不编码得到feature呢?
- 对于feature,用前视相机的feature map进行平均池化得到;
- 对于anchor box,有位置、长宽、角度、速度信息。其中速度信息是解码得到的,如果直接从gt拿,会造成自车状态泄露ego status leakage。这为啥会泄露??
3.3.2 时空交互
- agent-temporal cross attention
- agent-agent self attention
- agent-map corss attention
输出: - 每个障碍物预测km条轨迹
- 自车预测ncxkp条轨迹。nc是高级cmd信息(左右转和直行),kp是每种信息下的模态
- 预测是用的MLP解码得到的(附录里写了)
3.3.3 后处理
- 选定cmd;
- 障碍物碰撞检测;
- 选剩下分最高的。
3.4 训练
采用2阶段训练。先训练感知模块,再联合训练感知和规划模块。
3.5 评价
这篇论文计算L2的方式有大问题,所以本文的贡献非常值得怀疑。
最终的avg值是之前平均值的平均值,以未来轨迹[1, 2, 3, 4, 5, 6]为例,new_values就记录了截止第i时刻的平均是,即[1.0, 1.5, 2.0, 2.5, 3.0],avg是在此基础上的平均2.5,如果拿[1, 2, 3, 4, 5, 6]算平均的话,是3.5,这样的计算方式让avg下降了28%。碰撞率同理。
value = planning_results[key].tolist()
new_values = []
for i in range(len(value)):
new_values.append(np.array(value[:i+1]).mean())
value = new_values
avg = [value[1], value[3], value[5]]
avg = sum(avg) / len(avg)
value.append(avg)
metric_dict[key] = avg
4 评价
- 这篇论文侧重实践
5 没有讲清楚的点
- depth estimate