github地址: https://github.com/hkust-vgd/shellnet
Installation
The code is based on PointCNN. Please install TensorFlow, and follow the instruction in PointNet++ to compile the customized TF operators in the
tf_ops
folder.The code has been tested with Python 3.6, TensorFlow 1.13.2, CUDA 10.0 and cuDNN 7.3 on Ubuntu 14.04.
對於數據集Semantic3D
You can download our preprocessed hdf5 files and labels here.
下載下來處理好的semantic數據集的文件後,按照setting/seg_semantic3d.py文件中的文件結構(參照每個.txt文件中的目錄結構)將下載下來的文件打包好備用:
filelist = '../data/semantic3d/downsampled/train_data_files.txt' filelist_val = '../data/semantic3d/downsampled/val_data_files.txt' filelist_test = '../data/semantic3d/raw/test_reduced_files.txt'
Then:
python3 train_val_seg.py -x seg_semantic3d python3 test_seg_semantic3d.py -l log/seg/shellconv_seg_semantic3d_xxxx/ckpts/epoch-xxx cd evaluation python3 semantic3d_merge.py -d <path to *_pred.h5> -v <reduced or full>
注: If you prefer to process the data by yourself, here are the steps we used. In general, this data preprocessing of this dataset is more involved. First, please download the original Semantic3D dataset. We then downsample the data using this script. Finally, we follow PointCNN's script to split the data into training and validation set, and prepare the .h5 files.
1. tensorflow.python.framework.errors_impl.NotFoundError:undefined symbol: _ZN10tensorflow12OpDefBuilder4AttrESs
(此方法對於pointnet++同樣適用!!!)
在編譯tf_op之後生成.so文件,但是在運行python3 train_val_seg.py -x seg_semantic3d時報上述錯誤
解決辦法: https://github.com/charlesq34/pointnet2/issues/48
修改sampling/.sh文件,見紅色字體:
g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I ${TF_ROOT}/include -I ${CUDA_ROOT}/include -I ${TF_ROOT}/include/external/nsync/public -lcudart -L ${CUDA_ROOT}/lib64/ -L ${TF_ROOT} -ltensorflow_framework -O2 #-D_GLIBCXX_USE_CXX11_ABI=0
This is the script i used for compiling. Hope it helps.
In general if you compiled Tensorflow from source with gcc Version >4 you dont need the option -D_GLIBCXX_USE_CXX11_ABI=0.