EFG框架简介
EFG(Efficient, Flexible, and General)是一个旨在保持最小化的高效、灵活和通用深度学习框架。它由V2AI团队开发,为研究人员提供了探索各种计算机视觉研究主题的项目模板。
EFG框架具有以下主要特点:
-
高效性:通过优化的代码实现和数据处理流程,确保模型训练和推理的高效执行。
-
灵活性:提供模块化的设计,便于研究人员快速实现和测试新的算法思想。
-
通用性:支持多种计算机视觉任务,如2D/3D目标检测、分割等。
-
最小化:保持核心代码的简洁,避免冗余功能,便于理解和使用。
-
开放性:开源代码并欢迎社区贡献,促进学术交流。
框架最新动态
EFG框架一直在持续更新和完善中。以下是最近的一些主要更新:
- 2023.08.22 发布ICCV 2023论文《TrajectoryFormer: 3D Object Tracking Transformer with Predictive Trajectory Hypotheses》的代码实现。
- 2023.04.13 支持使用Mask2Former进行COCO全景分割任务。
- 2023.03.30 支持PyTorch 2.0版本。
- 2023.03.21 发布CVPR 2023亮点论文《ConQueR: Query Contrast Voxel-DETR for 3D Object Detection》的代码实现。
- 2023.03.21 发布EFG代码库,支持2D目标检测(MS COCO数据集)和3D目标检测(Waymo和nuScenes数据集)。
这些更新体现了EFG框架在不断扩展其功能,支持更多前沿的计算机视觉任务和模型。
框架性能基准
EFG框架在多个计算机视觉任务上都展现了优秀的性能。下图展示了EFG与其他主流框架在推理速度和内存占用方面的对比:
从图中可以看出,EFG在保持高准确率的同时,具有更快的推理速度和更低的内存占用。这得益于EFG框架的高效设计和优化实现。
安装与使用
环境要求
在安装EFG之前,请确保您的系统满足以下要求:
- gcc 5 (支持c++11或更新版本)
- Python >= 3.6
- CUDA >= 10.1
- PyTorch >= 1.6
安装步骤
- 克隆EFG代码库:
git clone https://github.com/poodarchu/EFG.git
cd EFG
- 安装EFG:
pip install -v -e .
- 设置日志路径:
echo "export EFG_CACHE_DIR=/path/to/your/logs/dir" >> ~/.bashrc
数据准备
EFG支持多个数据集,以下以Waymo数据集为例说明数据准备过程:
- 下载Waymo数据集(v1.2.0或v1.3.2等版本)
- 从tfrecord文件中提取帧数据到pkl文件
- 创建数据集软链接
- 生成数据摘要和gt数据库
详细的数据准备命令可以参考EFG的GitHub仓库说明。
训练与评估
EFG提供了简单的命令行工具用于模型训练和评估:
# 使用默认1个GPU训练
efgrun
# 使用多个GPU训练
efgrun --num-gpus x
# 指定训练、验证或测试任务
efgrun --num-gpus x task [train | val | test]
# 从断点恢复训练
efgrun --num-gpus x --resume
# 动态修改配置选项
efgrun --num-gpus x dataloader.num_workers 0
模型会在训练结束后自动进行评估。也可以单独运行评估:
efgrun --num-gpus x task val
模型库
EFG提供了多个在主流数据集上预训练的模型。以下是部分模型在Waymo Open Dataset 3D目标检测任务上的性能:
方法 | 帧数 | 训练轮数 | 车辆mAPH/L2 | 行人mAPH/L2 | 自行车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 |
这些模型展示了EFG框架在3D目标检测任务上的出色性能,特别是ConQueR模型在较短的训练轮数内就达到了优秀的检测精度。
社区贡献
EFG是一个开源项目,欢迎社区成员参与贡献。如果您对EFG感兴趣并希望做出贡献,可以通过以下方式参与:
- 提交问题和功能请求:在GitHub仓库的Issues页面提交您发现的问题或希望添加的新功能。
- 提交代码:通过Pull Request提交您的代码贡献,维护者会进行审核和合并。
- 改进文档:帮助完善EFG的文档,使其更易于理解和使用。
- 分享使用经验:在社区中分享您使用EFG的经验和技巧,帮助其他用户。
如果您有任何问题或建议,也可以直接联系项目维护者(poodarchu@gmail.com)。
总结
EFG作为一个高效、灵活、通用的深度学习框架,为计算机视觉研究提供了强大的工具支持。它不仅支持多种视觉任务,还在性能和易用性方面都有出色表现。随着社区的不断贡献和维护团队的持续优化,EFG有望在未来支持更多前沿的研究方向,成为计算机视觉领域更加重要的开源框架。
研究人员和开发者可以利用EFG快速实现自己的创新想法,推动计算机视觉技术的进步。我们期待看到更多基于EFG的优秀工作,共同促进人工智能技术的发展。