Home

Awesome

GraphX-Convolution

The official implementation of the ICCV 2019 paper "GraphX-convolution for point cloud deformation in 2D-to-3D conversion".

framework

Update 1: We have achieved a better performance with PointCloudResLowRankGraphXUpDecoder, which is an upgraded version of the best deformation network in the paper. The new network works comparably with the best network in the paper but consumes much less memory.

Update 2 (Sep 7, 2020): Refactor the code to work with the latest Neuralnet-pytorch.

Prerequisite

Pytorch (>=1.0.0)

Neuralnet-pytorch (pip install "neuralnet-pytorch[gin] @ git+git://github.com/justanhduc/neuralnet-pytorch.git@6bda19fdc57f176cb82f58d287602f4ccf4cfc23" --global-option="--cuda-ext")

Gin-config

Matplotlib

TensorboardX

The code has been tested on a Linux Ubuntu 16.04 machine.

Data

The data we used in our experiment provided by ShapeNet. However, for convenience, we used the pre-processed data provided by Pixel2mesh. The data can be downloaded from here.

The train/test split used in the paper is the default split provided by ShapeNet. For more convenience, we provide the pre-processed train/test file lists in data.

To process the data into the format used by the code, execute

cd data
python split.py path/to/the/downloaded/data/folder

A pre-processed zip file can be found here

Training and testing

Training

After the database is setup, we are ready to train the model. In the configs folder, we have prepared the basic training configs for several models used in the paper. After the data is downloaded, specify the data root in these config files.

By default, the script creates a results folder containing checkpoint folders corresponding to the model name. The model name can be specified in the config files.

Then, simply execute

cd src
python train.py path/to/a/config/file (--gpu 0)

To resume a half-done training, simply specify the checkpoint folder in the config file. Then run the training script as in the training step.

Evaluation

Be sure to use the same config file and specify the checkpoint folder in the config file. After the model is fully trained, to test the model, use

python test.py path/to/a/config/file (--gpu 0)

The script calculates the Chamfer distance (CD) scores similar to Pixel2mesh.

Results

Visualizations

<p align='center'> <img src='imgs/results/airplane.gif' width="250px"> <img src='imgs/results/bench.gif' width="250px"> <img src='imgs/results/car.gif' width="250px"> </p> <p align='center'> <img src='imgs/results/lamp.gif' width="250px"> <img src='imgs/results/monitor.gif' width="250px"> <img src='imgs/results/table.gif' width="250px"> </p>

Numerical results

MethodsChamferIoU
3D-R2N21.4450.631
PSG0.5930.640
Pixel2mesh0.591-
GAL-0.712
Ours (UpResGraphX)0.2520.725

Citation

TBA