暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

StreamPETR复现详解(论文复现)

wei_shuo 2024-10-18
429

StreamPETR复现详解(论文复现)

本文所涉及所有资源均在传知代码平台可获取

Table of Contents

论文内容详读

该论文提出了一种名为StreamPETR的长序列建模框架,用于多视角三维物体检测。该模型基于PETR系列中的稀疏查询设计,并系统地开发了一个对象中心的时序机制。该模型在线执行,并通过对象查询帧传递长期历史信息。此外,引入了运动感知层归一化以建模物体的移动。StreamPETR仅需微小的计算成本即可实现显著的性能提升,与单帧基线相比,取得了更好的效果。在标准nuScenes基准上,它是第一个在线多视角方法,实现了与激光雷达方法相当的表现(67.6%NDS和65.3%AMOTA)。轻量级版本实现了45.0%mAP和31.7FPS,优于最先进的方法(SOLOFusion)2.3%mAP和1.8倍更快的FPS

在这里插入图片描述

论文方法

方法描述

该论文提出了一种基于对象查询的时空交互网络(StreamPETR),用于多视图三维目标检测任务。该方法利用存储在内存队列中的历史信息来预测当前帧的目标状态,并通过全局注意力机制将这些信息传播到后续帧中。具体来说,该方法使用了图像编码器、记忆队列和传播变换器三个组件,其中记忆队列用于存储历史信息,传播变换器则负责处理空间和时间上的交互

方法改进

相比于传统的时空交互网络,StreamPETR引入了对象查询的概念,使得运动补偿更加方便。同时,该方法还采用了混合注意力层,以实现更高效的重复预测去除和特征聚合。此外,该方法还设计了一个灵活的记忆队列,可以根据需要自由控制最大内存大小和保存间隔

解决的问题

该方法解决了传统时空交互网络存在的计算复杂度高、难以处理动态场景等问题,能够在实时性和准确性之间取得平衡。实验结果表明,StreamPETR相对于其他方法具有更好的性能表现

论文实验

本文主要介绍了作者在大规模数据集上对StreamPETR方法的实验结果和分析。该方法是一种基于稀疏物体查询的时空交互模型,旨在提高3D目标检测的精度和效率。

在实验中,作者使用了两个大规模数据集:nuScenes和Waymo Open。他们比较了StreamPETR与之前的一些最先进的视觉3D检测器在这些数据集上的表现,并提供了详细的实验结果和分析。

具体来说,在nuScenes数据集上,作者将StreamPETR与其他一些方法进行了比较,包括单帧基线Focal-PETR以及密集BEV方法SOLOFusion等。他们在不同的网络架构和预训练策略下进行了实验,并给出了不同指标下的性能分数。例如,在mAP和NDS指标下,StreamPETR相对于单帧基线Focal-PETR有显著的提升,同时速度也更快。此外,当使用更小的V2-99骨干时,StreamPETR也可以超越其他方法的表现。

在3D多目标跟踪任务方面,作者将CenterPoint的多目标跟踪方法扩展到多视图设置,并通过与ByteTrackv2和其他方法的比较来证明StreamPETR的优势。

在Waymo Open数据集上,作者同样将StreamPETR与其他密集BEV方法进行了比较,如BEVFormer和MV-FCOS3D等。结果显示,StreamPETR在官方指标下具有明显优势,并且相对于其他方法具有更好的定位能力和纵向预测能力。

总的来说,作者通过对多个实验的比较和分析,证明了StreamPETR在大规模数据集上的优异表现,并提出了一些有益的结论和建议

论文总结

文章优点

  • 提出了一种有效的长序列3D物体检测方法StreamPETR,该方法采用了对象查询传播的方式,引入了运动信息,并且在计算存储方面具有较低的成本。
  • 在多个数据集上进行了实验验证,包括Waymo Open Dataset、Objects365等,结果表明StreamPETR相比于其他方法有更高的精度和效率。
  • 该研究为多视角3D物体检测领域提供了一个新的思路和解决方案,具有一定的理论意义和实际应用价值。

方法创新点

  • 利用了对象查询传播的思想,将时间信息通过对象查询传播到每一帧中,从而实现了长序列的3D物体检测。
  • 引入了运动信息,利用时空注意力机制来学习不同位置之间的相关性,提高了检测精度。
  • 在计算存储方面采用了低开销的方法,减少了模型复杂度和计算量

代码复现

环境设置

Python >= 3.8
CUDA == 11.1
PyTorch == 1.9.0
mmdet3d == 1.0.0rc6
flash-attn == 0.2.2

分步安装说明

A 创建conda虚拟环境并激活

conda create -n streampetr python=3.8 -y conda activate streampetr

b 按照官方说明安装 PyTorch 和 torchvision

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html # Recommended torch>=1.9

C 安装 flash-attn(可选)

pip install flash-attn==0.2.2

d 克隆流PETR

git clone https://github.com/exiawsh/StreamPETR

e 安装mmdet3d

pip install mmcv-full==1.6.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html pip install mmdet==2.28.2 pip install mmsegmentation==0.30.0 cd ./StreamPETR git clone https://github.com/open-mmlab/mmdetection3d.git cd mmdetection3d git checkout v1.0.0rc6 pip install -e .

数据准备

数据集
  1. 下载 nuScenes

  2. 创建 infos file

基于mmdetection3d中的数据准备修改,另外还创建了用于训练和评估的2D注释和时间信息。这里使用的nuscenes-mini数据集

python tools/create_data_nusc.py --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes2d --version v1.0-mini

预训练权重

cd /path/to/StreamPETR mkdir ckpts

将预训练权重下载到./ckpts. 官方提供了 预训练的V2-99 weights. 和DDAD15M (weights)

准备好后,将看到以下目录结构:

文件夹结构

StreamPETR ├── projects/ ├── mmdetection3d/ ├── tools/ ├── configs/ ├── ckpts/ ├── data/ │ ├── nuscenes/ │ │ ├── maps/ │ │ ├── samples/ │ │ ├── sweeps/ │ │ ├── v1.0-test/ | | ├── v1.0-trainval/ | | ├── nuscenes2d_temporal_infos_train.pkl | | ├── nuscenes2d_temporal_infos_val.pkl

在这里插入图片描述

训练& 推理

训练

你训练以下模型

tools/dist_train.sh projects/configs/StreamPETR/stream_petr_r50_flash_704_bs2_seq_24e.py 8 --work-dir work_dirs/stream_petr_r50_flash_704_bs2_seq_24e/

评估

你可以评估以下检测模型:

tools/dist_test.sh projects/configs/StreamPETR/stream_petr_vov_flash_800_bs2_seq_24e.py work_dirs/stream_petr_vov_flash_800_bs2_seq_24e/latest.pth 8 --eval bbox

Visualize

生成结果的json文件

./tools/dist_test.sh projects/configs/StreamPETR/stream_petr_vov_flash_800_bs2_seq_24e.py work_dirs/stream_petr_vov_flash_800_bs2_seq_24e/latest.pth 8 --format-only

可视化检测效果:

python3 tools/visualize.py # please change the results_nusc.json path in the python file

在这里插入图片描述

复现过程出现的问题

复现过程见演示视频,一般遵循说明安装没有问题,训练和可视化过程中遇到的问题视频中有解决

@article{wang2023exploring, title={Exploring Object-Centric Temporal Modeling for Efficient Multi-View 3D Object Detection}, author={Wang, Shihao and Liu, Yingfei and Wang, Tiancai and Li, Ying and Zhang, Xiangyu}, journal={arXiv preprint arXiv:2303.11926}, year={2023} }

文章代码资源点击附件获取

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论