一个高效、灵活且通用的深度学习框架,保持最小化。用户可以使用EFG按照项目模板探索任何研究主题。
最新动态
- 2023.08.22 发布ICCV2023论文代码:TrajectoryFormer: 具有预测轨迹假设的3D目标跟踪Transformer。
- 2023.04.13 支持使用Mask2Former进行COCO全景分割。
- 2023.03.30 支持Pytorch 2.0。
- 2023.03.21 发布CVPR2023亮点论文代码:ConQueR: 用于3D目标检测的查询对比Voxel-DETR。
- 2023.03.21 发布EFG代码库,支持2D目标检测(MS COCO数据集)和3D目标检测(Waymo和nuScenes数据集)。
0. 基准测试
1. 安装
1.1 前提条件
- gcc 5 (c++11或更新版本)
- python >= 3.6
- cuda >= 10.1
- pytorch >= 1.6
# spconv
spconv_cu11{X}(根据你的cuda版本设置X)
# waymo_open_dataset
## python 3.6
waymo-open-dataset-tf-2-1-0==1.2.0
## python 3.7, 3.8
waymo-open-dataset-tf-2-4-0==1.3.1
1.2 从源代码构建
git clone https://github.com/poodarchu/EFG.git
cd EFG
pip install -v -e .
# 设置日志路径以保存模型检查点、训练日志等
echo "export EFG_CACHE_DIR=/path/to/your/logs/dir" >> ~/.bashrc
2. 数据
2.1 数据准备 - Waymo
# 下载waymo数据集v1.2.0(或v1.3.2等)
gsutil -m cp -r \
"gs://waymo_open_dataset_v_1_2_0_individual_files/testing" \
"gs://waymo_open_dataset_v_1_2_0_individual_files/training" \
"gs://waymo_open_dataset_v_1_2_0_individual_files/validation" \
.
# 从tfrecord提取帧到pkl
CUDA_VISIBLE_DEVICES=-1 python cli/data_preparation/waymo/waymo_converter.py --record_path "/path/to/waymo/training/*.tfrecord" --root_path "/path/to/waymo/train/"
CUDA_VISIBLE_DEVICES=-1 python cli/data_preparation/waymo/waymo_converter.py --record_path "/path/to/waymo/validation/*.tfrecord" --root_path "/path/to/waymo/val/"
# 创建数据集的软链接
cd /path/to/EFG/datasets; ln -s /path/to/waymo/dataset/root waymo; cd ..
# 从提取的帧创建数据摘要和gt数据库
python cli/data_preparation/waymo/create_data.py --root-path datasets/waymo --split train --nsweeps 1
python cli/data_preparation/waymo/create_data.py --root-path datasets/waymo --split val --nsweeps 1
2.2 数据准备 - nuScenes
# nuScenes
dataset/nuscenes
├── can_bus
├── lidarseg
├── maps
├── occupancy
│ ├── annotations.json
│ └── gts
├── panoptic
├── samples
├── sweeps
├── v1.0-mini
├── v1.0-test
└── v1.0-trainval
# 创建数据集的软链接
cd /path/to/EFG/datasets; ln -s /path/to/nuscenes/dataset/root nuscenes; cd ..
# 假设这里我们使用nuScenes/samples图像,将gts和annotations.json放在nuScenes/occupancy下
python cli/data_preparation/nuscenes/create_data.py --root-path datasets/nuscenes --version v1.0-trainval --nsweeps 11 --occ --seg
3. 开始使用
3.1 训练与评估
# cd playground/path/to/experiment/directory
efg_run --num-gpus x # 默认为1
efg_run --num-gpus x task [train | val | test]
efg_run --num-gpus x --resume
efg_run --num-gpus x dataloader.num_workers 0 # 动态更改config.yaml中的选项
模型将在训练结束时自动评估。或者,
efg_run --num-gpus x task val
4. 模型库
所有模型均在8 x NVIDIA A100 GPU上训练和评估。
Waymo开放数据集 - 3D目标检测(验证集 - mAPH/L2)
方法 | 帧数 | 训练周期 | 车辆 | 行人 | 骑车人 |
---|---|---|---|---|---|
CenterPoint | 1 | 36 | 66.9/66.4 | 68.2/62.9 | 69.0/67.9 |
CenterPoint | 4 | 36 | 70.0/69.5 | 72.8/69.7 | 72.6/71.8 |
Voxel-DETR | 1 | 6 | 67.6/67.1 | 69.5/63.0 | 69.0/67.8 |
ConQueR | 1 | 6 | 68.7/68.2 | 70.9/64.7 | 71.4/70.1 |
nuScenes - 3D目标检测(验证集)
方法 | 训练周期 | mAP | NDS | 日志 |
---|---|---|---|---|
CenterPoint | 20 | 59.0 | 66.7 |
5. 寻求贡献
EFG目前处于相对初步的阶段,我们还有很多工作要做。如果您有兴趣贡献,可以发送邮件至poodarchu@gmail.com。
6. 引用
@article{chen2023trajectoryformer,
title={TrajectoryFormer: 3D Object Tracking Transformer with Predictive Trajectory Hypotheses},
author={Chen, Xuesong and Shi, Shaoshuai and Zhang, Chao and Zhu, Benjin and Wang, Qiang and Cheung, Ka Chun and See, Simon and Li, Hongsheng},
journal={arXiv preprint arXiv:2306.05888},
year={2023}
}
@inproceedings{zhu2023conquer,
title={Conquer: Query contrast voxel-detr for 3d object detection},
author={Zhu, Benjin and Wang, Zhe and Shi, Shaoshuai and Xu, Hang and Hong, Lanqing and Li, Hongsheng},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={9296--9305},
year={2023}
}
@misc{zhu2023efg,
title={EFG: An Efficient, Flexible, and General deep learning framework that retains minimal},
author={EFG Contributors},
howpublished = {\url{https://github.com/poodarchu/efg}},
year={2023}
}