Awesome
GraphX-Convolution
The official implementation of the ICCV 2019 paper "GraphX-convolution for point cloud deformation in 2D-to-3D conversion".
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"
)
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
Methods | Chamfer | IoU |
---|---|---|
3D-R2N2 | 1.445 | 0.631 |
PSG | 0.593 | 0.640 |
Pixel2mesh | 0.591 | - |
GAL | - | 0.712 |
Ours (UpResGraphX) | 0.252 | 0.725 |
Citation
TBA