Skip to content

jiezhangxl/PointCNN-FI-Conv

Repository files navigation

FI-Conv: Feature interpolation convolution for point cloud analysis

Created by Jie Zhang, Jian Liu, Xiuping Liu, Wei Jiang, Junjie Cao, Kewei Tang.

Introduction

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".

PointCNN+FI-Conv Usage

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.

download data

We follow pointnet++ preprocessed data. You can download it at here (1.72GB). Unzip the data into "..\data\scannet\seg"

farthest point sampling

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.

data preparing, training and evaluating

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published