We release our PointNet++ and MinkowskiEngine UNet models pretrained with our proposed FAC with the hope that other researchers might also benefit from these pretrained backbones. Due to license issue, models pretrained on Waymo cannot be released. For PointnetMSG and Spconv-UNet models, we encourage the researchers to train by themselves using the provided script.
We first provide PointNet++ models with different sizes.
network | epochs | batch-size | ScanNet Det with VoteNet | url | args |
---|---|---|---|---|---|
PointNet++-1x | 150 | 2048 | 61.9 | model | config |
PointNet++-2x | 200 | 4096 | 63.3 | model | config |
PointNet++-3x | 150 | 4096 | 64.1 | model | config |
PointNet++-4x | 100 | 4096 | 63.8 | model | config |
The ScanNet detection evaluation metric is mAP at IOU=0.25. You need to change the scale parameter in the config files accordingly.
We provide the joint training results here, with different epochs. We use epoch 400 to generate the results reported in the paper.
Backbone | epochs | batch-size | url | args |
---|---|---|---|---|
PointNet++ & MinkowskiEngine UNet | 300 | 3192 | model | config |
PointNet++ & MinkowskiEngine UNet | 400 | 1024 | model | config |
PointNet++ & MinkowskiEngine UNet | 500 | 1024 | model | config |
PointNet++ & MinkowskiEngine UNet | 600 | 1024 | model | config |
PointNet++ & MinkowskiEngine UNet | 700 | 1024 | model | config |
You can use the requirements.txt to setup the environment. First download the git-repo and install the pointnet modules:
git clone --recursive https://github.com/facebookresearch/DepthContrast.git
cd pointnet2
python setup.py install
Then install all other packages:
pip install -r requirements.txt
or
conda install --file requirements.txt
For voxel representation, you have to install MinkowskiEngine. Please see here on how to install it.
For the lidar point cloud pretraining, we use models from OpenPCDet. It should be in the third_party folder. To install OpenPCDet, you need to install spconv, which is a bit difficult to install and may not be compatible with MinkowskiEngine. Thus, we suggest you use a different conda environment for lidar point cloud pretraining.
To experiment with it on one GPU and debugging, you can do:
python main.py /path/to/cfg/file
For the actual training, please use the distributed trainer. For multi-gpu training in one node, you can run:
python main.py /path/to/cfg_file --multiprocessing-distributed --world-size 1 --rank 0 --ngpus number_of_gpus
To run it with just one gpu, just set the --ngpus to 1. For submitting it to a slurm node, you can use ./scripts/pretrain_node1.sh. For hyper-parameter tuning, please change the config files.
Distributed training is available via Slurm. We provide several SBATCH scripts to reproduce our results. For example, to train FAC on 4 nodes and 32 GPUs with a batch size of 1024 run:
sbatch ./scripts/pretrain_node4.sh /path/to/cfg_file
Note that you might need to remove the copyright header from the sbatch file to launch it.