Vision3D is a 3D vision library built with PyTorch, in order to reproduce the state-of-the-art 3D vision models.
Current supported models are:
- PointNet (w/ and w/o TNet).
- PointNet++ (SSG and MSG).
- DGCNN.
Current supported datasets are:
- ModelNet40.
- ShapeNetPart.
- S3DIS.
Vision3D is tested on Python 3.7, PyTorch 1.3.1, Ubuntu 18.04, CUDA 10.2 and cuDNN 7.6.5, but it should work with other configurations. Currently, Vision3d only support training and testing on GPUs.
Install Vision3D with the following command:
python setup.py build develop
All requirements will be automatically installed.
Vision3D uses pre-processed ModelNet40 dataset from PointNet++.
Download the dataset from here.
Modify data_root
in tools/datasets/modelnet40.py
and run the file for further pre-processing.
The script will generate 5 hdf5 files for training and 2 hdf5 files for testing with the corresponding id json files.
You can also use the dataset from here.
Vision3D uses pre-processed ShapeNetPart dataset with normal from PointNet++.
Download the dataset from here.
Modify data_root
in tools/datasets/shapenetpart.py
and run the file for further pre-processing.
The script will generate 4 pickle files for train, val, trainval and test, respectively.
Vision3D supports both on-the-fly training augmentation and preprocessed data.
Before using S3DIS in Vision3D, you need to generate .npy
files following the instructions in pointnet.
For preprocessed hdf5 training data, download from here.
Whole-scene evaluation should be used for testing.
Modify data_root
in tools/datastes/s3dis.py
and run the file to generate whole-scene testing hdf5 files for fast evaluation.
The models are located in experiments
and each model contains five files:
config.py
contains overall configurations of the model.dataset.py
contains data loaders and data augmentations.model.py
contains the description of the model.train.py
contains the training code.test.py
contains the test code.
Before starting, modify config.root_dir
and config.data_root
in config.py
. Run train.py
and test.py
with --devices
argument to specify the GPU(s) to use. Please refer to the code for details.
Sample training and testing scripts are in tools
.
Please refer to MODEL_ZOO.md for details.
- Support more datasets.
- S3DIS support.
- ScanNet support.
- Support more models.
- PointCNN.
- InterpCNN.
- PointConv.
- Support more tasks.
- Object detection.
- Instance segmentation.
- Support more features.
- Multi-process multi-GPU training (
DistributedDataParallel
).
- Multi-process multi-GPU training (
- Charles R. Qi, Hao Su, Kaichun Mo, Leonidas J. Guibas. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. CVPR 2017.
- Charles R. Qi, Li Yi, Hao Su, and Leonidas J. Guibas. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. NIPS 2017.
- Yue Wang, Yongbin Sun, Ziwei Liu, Sanjay E. Sarma, Michael M. Bronstein, and Justin M. Solomon. Dynamic Graph CNN for Learning on Point Clouds. TOG.