StreamPETR:革命性3D物体检测框架快速入门指南
StreamPETR:革命性3D物体检测框架快速入门指南
【免费下载链接】StreamPETR[ICCV 2023] StreamPETR: Exploring Object-Centric Temporal Modeling for Efficient Multi-View 3D Object Detection项目地址: https://gitcode.com/gh_mirrors/st/StreamPETR
StreamPETR是ICCV 2023收录的创新3D物体检测框架,专注于探索以物体为中心的时间建模技术,为多视图3D物体检测提供高效解决方案。该框架在保持高精度的同时显著提升处理速度,是自动驾驶和机器人感知领域的突破性工具。
🚀 什么是StreamPETR?
StreamPETR(Streaming Perception Transformer)是一种基于Transformer架构的3D物体检测系统,专为处理连续视频流数据设计。它通过创新的物体中心时间建模方法,有效融合多帧视觉信息,在仅使用摄像头输入的情况下实现高性能3D检测,同时保持出色的实时性。
核心优势
- 高效时序建模:采用物体级记忆机制,避免冗余计算
- 实时处理能力:在NVIDIA RTX 3090上可达31.7 FPS
- 高精度检测:在nuScenes数据集上达到62.0 mAP和67.6 NDS
- 纯视觉方案:无需激光雷达,降低硬件成本
🔍 StreamPETR工作原理
StreamPETR的核心创新在于其物体中心的时序建模方法。传统方法通常处理完整的历史帧,导致计算冗余,而StreamPETR只追踪关键物体信息,大幅提升效率。
StreamPETR框架展示了物体中心时序建模流程,包括历史记忆队列、传播Transformer和更新记忆队列
框架主要由三部分组成:
- 历史记忆队列:存储过去帧的物体特征
- 传播Transformer:融合当前帧与历史物体信息
- 更新记忆队列:动态维护关键物体特征
这种设计使系统能够高效处理视频流数据,同时保持对物体的长期追踪能力。
📊 性能表现
StreamPETR在nuScenes数据集上实现了精度与速度的完美平衡。与其他先进方法相比,它在保持高检测精度的同时,显著提升了处理速度:
StreamPETR在mAP(平均精度)和FPS(每秒帧数)上的表现对比
关键性能指标:
- mAP(平均精度):62.0
- NDS(nuScenes检测分数):67.6
- AMOTA(多目标跟踪精度):65.3
- 处理速度:31.7 FPS(RTX 3090)
🛠️ 快速开始
环境准备
StreamPETR需要以下基础环境:
- Python >= 3.8
- CUDA == 11.2
- PyTorch == 1.9.0
- mmdet3d == 1.0.0rc6
步骤1:创建并激活虚拟环境
conda create -n streampetr python=3.8 -y conda activate streampetr步骤2:安装PyTorch
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步骤3:安装可选的Flash Attention
pip install flash-attn==0.2.2步骤4:克隆仓库
git clone https://gitcode.com/gh_mirrors/st/StreamPETR cd StreamPETR步骤5:安装mmdetection3d
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 git clone https://github.com/open-mmlab/mmdetection3d.git cd mmdetection3d git checkout v1.0.0rc6 pip install -e . cd ..数据准备
步骤1:下载nuScenes数据集从nuScenes官网下载数据集到./data/nuscenes
步骤2:创建信息文件
python tools/create_data_nusc.py --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes2d --version v1.0步骤3:下载预训练权重
mkdir ckpts # 下载预训练权重到ckpts目录准备完成后,目录结构应如下:
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评估跟踪性能:
python nusc_tracking/pub_test --version v1.0-trainval --checkpoint {PATH_RESULTS.JSON} --data_root {PATH_NUSCENES}速度测试
python tools/benchmark.py projects/configs/test_speed/stream_petr_r50_704_bs2_seq_428q_nui_speed_test.py💡 实用训练技巧
- 训练方式选择:提供滑动窗口训练和流视频训练两种方式。流视频训练收敛较慢但节省4倍训练时间
- 损失权重调整:将边界框回归的x,y权重从1.0调整为2.0可提升性能
- 学习率设置:小模型建议设置更高的学习率(0.25或0.5)
- Sync-BN:对小模型使用Sync-BN可获得更稳定的结果
- 查询数量:训练60个epoch时,300+128查询与644+256查询效果相近,但更利于部署
📚 相关资源
官方文档:
- 环境设置
- 数据准备
- 训练与推理
配置文件:
- StreamPETR配置:projects/configs/StreamPETR/
- RepDETR3D配置:projects/configs/RepDETR3D/
模型代码:
- StreamPETR头部:projects/mmdet3d_plugin/models/dense_heads/streampetr_head.py
- 传播Transformer:projects/mmdet3d_plugin/models/utils/petr_transformer.py
📝 引用
如果您在研究中使用StreamPETR,请引用以下论文:
@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} }StreamPETR为3D物体检测领域带来了革命性的效率提升,特别适合实时自动驾驶和机器人应用。通过本指南,您可以快速部署并体验这一先进技术的强大能力!
【免费下载链接】StreamPETR[ICCV 2023] StreamPETR: Exploring Object-Centric Temporal Modeling for Efficient Multi-View 3D Object Detection项目地址: https://gitcode.com/gh_mirrors/st/StreamPETR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
