This repo contains a complete implementation of a encoder-decoder model that takes in point cloud observations and represents fine-grained 3D geometry as implicit signed distance field. It is adapted from DI-Fusion and DeepSDF.
- Ubuntu >= 18.04
- cuda >= 10.2
- cudnn 7
- Python 3.7
We recommend installing python dependencies in a virtual environment (python 3.7):
pip3 install -r requirements.txt
To generate training data yourself, please install the following dependencies:
- CLI11
- Eigen-3.3.9
- Use other versions may cause issues
- Pangolin
- Make sure you use the stable release version
- May need to install mpark/variant
- Flann
- Make sure cuda toolkit is correctly installed and configured
- Enable BUILD_CUDA_LIB before running 'cmake ..'
The general process to install the packages:
cd <your-lib-folder>
# 1. Download the package or use git clone, for example:
git clone https://github.com/CLIUtils/CLI11.git
# 2. Create build folder under package path, for example:
cd CLI11 && mkdir build && cd build
# 3. Run cmake
cmake ..
# 4. Run make and install to the system
make
make install
First build the cuda-based mesh sampler:
cd <this-repo>/sampler_cuda
mkdir build && cd build
cmake ..
make -j
Then run:
# Enable headless rendering
export PANGOLIN_WINDOW_URI=headless://
python data_generator_sdf.py configs/data-cutting-shape.yaml --nproc 8
Note that you need to specify the input and output path in configs/data-cutting-shape.yaml
.
python network_trainer_sdf.py configs/train-sdf.yaml [--options]
Please refer to configs/train-sdf.yaml
for different running options. The code supports parallel training.
You can also use tensorboard to monitor the training process:
tensorboard --logdir di-checkpoints/train_cutting/tensorboard