DeepGCNs: Can GCNs Go as Deep as CNNs?
In this work, we present new ways to successfully train very deep GCNs. We borrow concepts from CNNs, mainly residual/dense connections and dilated convolutions, and adapt them to GCN architectures. Through extensive experiments, we show the positive effect of these deep GCN frameworks.
[Project] [Paper] [Slides] [Tensorflow Code] [Pytorch Code]
## Overview
We do extensive experiments to show how different components (#Layers, #Filters, #Nearest Neighbors, Dilation, etc.) effect `DeepGCNs`. We also provide ablation studies on different type of Deep GCNs (MRGCN, EdgeConv, GraphSage and GIN).
Further information and details please contact [Guohao Li](https://ghli.org) and [Matthias Müller](https://matthias.pw/).
## Requirements
* [TensorFlow 1.12.0](https://www.tensorflow.org/)
* [h5py](https://www.h5py.org/)
* [vtk](https://vtk.org/) (only needed for visualization)
* [jupyter notebook](https://jupyter.org/) (only needed for visualization)
## Conda Environment
In order to setup a conda environment with all neccessary dependencies run,
```
conda env create -f environment.yml
```
## Getting Started
You will find detailed instructions how to use our code for semantic segmentation of 3D point clouds, in the folder [sem_seg](sem_seg/). Currently, we provide the following:
* Conda environment
* Setup of
S3DIS Dataset
* Training code
* Evaluation code
* Several pretrained models
* Visualization code
## Citation
Please cite our paper if you find anything helpful,
```
@InProceedings{li2019deepgcns,
title={DeepGCNs: Can GCNs Go as Deep as CNNs?},
author={Guohao Li and Matthias Müller and Ali Thabet and Bernard Ghanem},
booktitle={The IEEE International Conference on Computer Vision (ICCV)},
year={2019}
}
```
```
@misc{li2019deepgcns_journal,
title={DeepGCNs: Making GCNs Go as Deep as CNNs},
author={Guohao Li and Matthias Müller and Guocheng Qian and Itzel C. Delgadillo and Abdulellah Abualshour and Ali Thabet and Bernard Ghanem},
year={2019},
eprint={1910.06849},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
```
## License
MIT License
## Acknowledgement
This code is heavily borrowed from [PointNet](https://github.com/charlesq34/pointnet) and [EdgeConv](https://github.com/WangYueFt/dgcnn). We would also like to thank [3d-semantic-segmentation](https://github.com/VisualComputingInstitute/3d-semantic-segmentation) for the visualization code.