项目介绍:Superpoint Transformer
什么是 Superpoint Transformer?
Superpoint Transformer(SPT) 是一种基于超级点的变换器架构,专门用于对大规模 3D 场景进行语义分割。这个方法包含一个快速算法,它可以把点云分割成一个层级化的超级点结构,并使用自注意机制来开发超级点之间的多尺度关系。
SPT 的最大特点在于高效且精准。通过将复杂的点云数据简化为更具结构性质的超级点,SPT 能以较少的参数数实现出色的分割性能。对于研究人员和工程师,它能在更短的时间内完成训练,从而节省计算资源。
这是 SPT 在不同数据集上的表现:
- S3DIS 6-Fold:76.0 mIoU
- KITTI-360 Val:63.5 mIoU
- DALES:79.6 mIoU
SuperCluster 的作用
SuperCluster 是另一种基于超级点的架构,专门针对非常大的 3D 场景进行全景分割。它基于 SPT,我们将全景分割任务表述为超级点图聚类问题。这个模型经过训练,可以预测一个图优化问题的输入参数,其解决方案就是全景分割。
超级簇主要有以下特点:
- 具备可扩展的设计,可在单个 GPU 上处理前所未有规模的场景。
- 拥有不到 1M 的参数数量,使其极为轻量。
- 处理速度极快,例如可以在一个 GPU 上用时 10.1 秒处理一个包含 1800 万个点的场景。
在各个数据集上的全景分割性能如下:
- S3DIS 6-Fold:55.9 PQ
- KITTI-360 Val:48.3 PQ
- DALES:61.2 PQ
使用指南
环境需求
本项目在以下环境中得到测试:
- Linux 操作系统
- 64G 内存
- NVIDIA GTX 1080 Ti (11G)、NVIDIA V100 (32G)、NVIDIA A40 (48G) 显卡
- CUDA 11.8 和 12.1
- Conda 23.3.1
安装步骤
通过运行 install.sh
脚本来安装所有的依赖:
./install.sh
数据集准备
请参考项目提供的 数据集页面 以设置数据集路径和文件结构。
训练和评估
-
训练模型:你可以通过不同的配置来训练 SPT 或 SuperCluster。
示例命令:
python src/train.py experiment=semantic/s3dis datamodule.fold=5
-
模型评估:使用以下命令来从检查点文件中评估我们的模型:
示例命令:
python src/eval.py experiment=semantic/s3dis datamodule.fold=5 ckpt_path=/path/to/your/checkpoint.ckpt
项目更新
- 2024年6月27日,发布 Superpoint Transformer 教程。
- 2024年2月28日,发布全景分割的重大代码更新。
- 2023年10月15日,论文在 3DV 2024 被接收为口头报告。
- 2023年10月6日,在 ICCV 2023 上展示 Superpoint Transformer 的海报。
项目结构
项目文件夹主要由以下结构组成:
configs/
:包含 Hydra 配置文件。src/
:源代码,包括模型、数据模块和其他组件。notebooks/
:Jupyter 笔记本,用于演示和测试。
结语
如果大家对本项目感兴趣,欢迎在 GitHub 上给我们一个星星支持。您的支持是我们前进的动力!如果在引用我们的工作时,请附上适当的引用条目。感谢您的关注和支持!