OpenDriveLab / ST-P3

[ECCV 2022] ST-P3, an end-to-end vision-based autonomous driving framework via spatial-temporal feature learning.
Apache License 2.0
280 stars 34 forks source link

关于感知部分没明白的问题 #12

Closed hrz2000 closed 1 year ago

hrz2000 commented 1 year ago

image 感谢你们很棒的工作,在读论文的感知部分的时候遇到一些没有理解的问题,十分期待你们的回答 问题1. 不太明白为什么还要加入future motion,前面在self.calculate_birds_eye_view_features函数中根据future motion将lift后的点云已经调整到了当前时刻的坐标系得到bev特征,为什么这里还要再concat上future motion呢?请问有相关的消融实验结果吗? 问题2. 红色部分,在x = torch.cat([x, future_egomotions_spatial], dim=-3)中,future_egomotions_spatial和x的对应关系很奇怪呀,x是按照时间顺序的,当前时刻的bev特征是在时间维度s的最后一个,为什么future_egomotions_spatial是把0放在前面,先前帧的的future motion放在后面呢? 按照我的理解应该是这样组织才对, image 十分期待您的解答!

charleshsc commented 1 year ago

感谢你对本篇工作的关注。 问题1. future motion实际上就是 自车在每帧之间的变化过程,我们将所有历史帧对齐后其实也损失掉了自车的运动信息(因为是以自车作为中心的),考虑到汽车之间的相对运动,丢失自车信息可能错误估计其他所有车辆每帧之间的位移从而不利于后续对车辆未来位置的估计。 问题2. 关键在于future_egomotion 的意义,因为在从数据集生成 future_egomotion 标签时是一个连续的过程,但如果我们提取单独一个片段来分析,那么这个时候第1帧(1-base)就得看作是最开始状态,而future_egomotion[t] 可看作从 t 到 t+1的变化过程,故最开始状态自然就为0,而第2帧则是由第1帧通过future_egomotion[1]得来...,按照该想法进行对齐。

by the way,该部分代码其实是继承自fiery代码库,我觉得问题2按照你的想法进行组织其实结果差距不会很大,结果仅是底层网络学习的映射关系不同而已。