Need help with MeshCNN?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ranahanocka
1.0K Stars 196 Forks MIT License 35 Commits 60 Opened issues

Description

Convolutional Neural Network for 3D meshes in PyTorch

Services available

!
?

Need anything else?

Contributors list

# 27,215
Python
pytorch
mesh
geometr...
29 commits
# 17,532
pytorch
apache
luis
languag...
1 commit
# 44,273
Python
pytorch
Shell
mesh
1 commit
# 196,502
Python
pytorch
Shell
mesh
1 commit




MeshCNN in PyTorch

SIGGRAPH 2019 [Paper] [Project Page]

MeshCNN is a general-purpose deep neural network for 3D triangular meshes, which can be used for tasks such as 3D shape classification or segmentation. This framework includes convolution, pooling and unpooling layers which are applied directly on the mesh edges.


The code was written by Rana Hanocka and Amir Hertz with support from Noa Fish.

Getting Started

Installation

  • Clone this repo:
    bash
    git clone https://github.com/ranahanocka/MeshCNN.git
    cd MeshCNN
    
  • Install dependencies: PyTorch version 1.2. Optional : tensorboardX for training plots.
    • Via new conda environment
      conda env create -f environment.yml
      (creates an environment called meshcnn)

3D Shape Classification on SHREC

Download the dataset

bash
bash ./scripts/shrec/get_data.sh

Run training (if using conda env first activate env e.g.

source activate meshcnn
)
bash
bash ./scripts/shrec/train.sh

To view the training loss plots, in another terminal run

tensorboard --logdir runs
and click http://localhost:6006.

Run test and export the intermediate pooled meshes:

bash
bash ./scripts/shrec/test.sh

Visualize the network-learned edge collapses:

bash
bash ./scripts/shrec/view.sh

An example of collapses for a mesh:

Note, you can also get pre-trained weights using bash

./scripts/shrec/get_pretrained.sh
.

In order to use the pre-trained weights, run

train.sh
which will compute and save the mean / standard deviation of the training data.

3D Shape Segmentation on Humans

The same as above, to download the dataset / run train / get pretrained / run test / view

bash
bash ./scripts/human_seg/get_data.sh
bash ./scripts/human_seg/train.sh
bash ./scripts/human_seg/get_pretrained.sh
bash ./scripts/human_seg/test.sh
bash ./scripts/human_seg/view.sh

Some segmentation result examples:

Additional Datasets

The same scripts also exist for COSEG segmentation in

scripts/coseg_seg
and cubes classification in
scripts/cubes
.

More Info

Check out the MeshCNN wiki for more details. Specifically, see info on segmentation and data processing.

Citation

If you find this code useful, please consider citing our paper

@article{hanocka2019meshcnn,
  title={MeshCNN: A Network with an Edge},
  author={Hanocka, Rana and Hertz, Amir and Fish, Noa and Giryes, Raja and Fleishman, Shachar and Cohen-Or, Daniel},
  journal={ACM Transactions on Graphics (TOG)},
  volume={38},
  number={4},
  pages = {90:1--90:12},
  year={2019},
  publisher={ACM}
}

Questions / Issues

If you have questions or issues running this code, please open an issue so we can know to fix it.

Acknowledgments

This code design was adopted from pytorch-CycleGAN-and-pix2pix.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.