Created by Jie Zhang, Jian Liu, Xiuping Liu, Wei Jiang, Junjie Cao, Kewei Tang.
FI-Conv is a simple and general framework for feature learning from point cloud. This code is based on the architecture of PointCNN. (PointCNN+FI-Conv)
-
per voxel labelling accuracy on ScanNet (85.1%).results shown in table 4.
-
We provide a pre-trained model. The size of it is larger than 100M. Before using it, you need to install "git-lfs" first, and then clone the remote repository to the local through "git lfs clone https://github.com/jiezhangxl/PointCNN-FI-Conv.git".
The code is implemented and tested with Tensorflow 1.10 or 1.12 in python3 scripts. It has dependencies on some python packages such as transforms3d, h5py, plyfile, and maybe more if it complains. Install these packages before the use of PointCNN+FI-Conv.
Here we list the commands for training/evaluating PointCNN+FI-Conv on segmentation tasks on ScanNet dataset.
We follow pointnet++ preprocessed data. You can download it at here (1.72GB). Unzip the data into "..\data\scannet\seg"
We use farthest point sampling (the implementation from PointNet++) in segmentation tasks. Compile FPS before the training/evaluation:
cd sampling
bash tf_sampling_compile.sh
If "undefined symbol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv" error is prompted, you can delete "-D_GLIBCXX_USE_CXX11_ABI=0" in "tf_sampling_compile.sh" and recompile.
cd data_conversions
python3 prepare_scannet_seg_data.py
python3 prepare_scannet_seg_filelists.py
cd ../pointcnn_seg
./train_val_scannet.sh -g 0 -x scannet_x8_2048_fps
./test_scannet.sh -g 0 -x scannet_x8_2048_fps -l ../../models/seg/FIConv+XConv+Random+Optimization_scannet_x8_2048_fps_xxxx/ckpts/iter-xxxxx -r 4
cd ../evaluation
python3 eval_scannet.py -d ../../data/scannet/seg/test -p ../../data/scannet/seg/scannet_test.pickle
Please note, in training, trained models are saved in "ckpts" and their Acc are recorded in "log.txt". When using "test_scannet.sh", you need choose one model with higher Acc from ckpts, such as "./test_scannet.sh -g 0 -x scannet_x8_2048_fps -l ../../models/seg/FIConv+XConv+Random+Optimization_scannet_x8_2048_fps_2021-05-05-13-14-39_419/ckpts/iter-168000 -r 4"
we also provide a Pretrained model. You can use it by the following code.
cd pointcnn_seg
./test_scannet.sh -g 0 -x scannet_x8_2048_fps -l ../model/iter-232000 -r 4
cd ../evaluation
python3 eval_scannet.py -d ../../data/scannet/seg/test -p ../../data/scannet/seg/scannet_test.pickle