Giter Club home page Giter Club logo

facebookresearch / vcmeshconv Goto Github PK

View Code? Open in Web Editor NEW
95.0 14.0 21.0 234 KB

Learning latent representations of registered meshes is useful for many 3D tasks. Techniques have recently shifted to neural mesh autoencoders. Although they demonstrate higher precision than traditional methods, they remain unable to capture fine-grained deformations. Furthermore, these methods can only be applied to a template-specific surface mesh, and is not applicable to more general meshes, like tetrahedrons and non-manifold meshes. While more general graph convolution methods can be employed, they lack performance in reconstruction precision and require higher memory usage. In this paper, we propose a non-template-specific fully convolutional mesh autoencoder for arbitrary registered mesh data. It is enabled by our novel convolution and (un)pooling operators learned with globally shared weights and locally varying coefficients which can efficiently capture the spatially varying contents presented by irregular mesh connections. Our model outperforms state-of-the-art methods on reconstruction accuracy. In addition, the latent codes of our network are fully localized thanks to the fully convolutional structure, and thus have much higher interpolation capability than many traditional 3D mesh generation models.

License: Other

Python 48.13% CMake 0.37% C++ 51.50%

vcmeshconv's Introduction

Fully Convolutional Mesh Autoencoder using Efficient Spatially Varying Kernels

Code for the paper Fully Convolutional Mesh Autoencoder using Efficient Spatially Varying Kernels, arxiv 2020.

Introduction

Learning latent representations of registered meshes is useful for many 3D tasks. Techniques have recently shifted to neural mesh autoencoders. Although they demonstrate higher precision than traditional methods, they remain unable to capture fine-grained deformations. Furthermore, these methods can only be applied to a template-specific surface mesh, and is not applicable to more general meshes, like tetrahedrons and non-manifold meshes. While more general graph convolution methods can be employed, they lack performance in reconstruction precision and require higher memory usage. In this paper, we propose a non-template-specific fully convolutional mesh autoencoder for arbitrary registered mesh data. It is enabled by our novel convolution and (un)pooling operators learned with globally shared weights and locally varying coefficients which can efficiently capture the spatially varying contents presented by irregular mesh connections. Our model outperforms state-of-the-art methods on reconstruction accuracy. In addition, the latent codes of our network are fully localized thanks to the fully convolutional structure, and thus have much higher interpolation capability than many traditional 3D mesh generation models.

This repo contains:

  1. "GraphSampling" is a C++ code for sampling on the mesh template to generate the connectivity structures for learning. Please use the cmake to create the MakeFile for compiling.Please look at the help in the function to know how to run it. It will take an template mesh and output the sampled connectivity file to the output path.

  2. "GraphAutoEncoder" is a python code which uses PyTorch to train an autoencoder on a sequence of registered meshes with the same topology with the template mesh used in "GraphSampling". It takes a configuration file as input (One example of configure file is named "config_train.config"). The main training file is "graphVAE_train.py". The proposed mesh conv operator is defined in "graphVAESSW.py".

Please see INSTRUCTIONS.md for the usage.

License

This project is under the CC-BY-NC 4.0 license. See LICENSE for details.

Citation

If you use our code, models or wish to refer to our results, please use the following BibTex entry:

@InProceedings{Yi_2020_ARXIV,
  author = {Zhou, Yi and Wu, Chenglei and Li, Zimo and Cao, Chen and Ye, Yuting and Saragih, Jason and Li, Hao and Sheikh, Yaser},
  title = {Fully Convolutional Mesh Autoencoder using Efficient Spatially Varying Kernels},
  booktitle = {arxiv},  
  year = {2020}
}

vcmeshconv's People

Stargazers

Mona Jalal avatar Junqing Chen avatar  avatar  avatar Haoran  avatar  avatar Andrea Quattrini avatar  avatar LIU, Yunlong avatar Jack avatar Jack Schedel avatar Bulat Suleymanov avatar Ellery Twelve avatar SuLi avatar Fabian Kemper avatar Slava Elizarov avatar Selena avatar  avatar Raphaël avatar  avatar  avatar Qing Chen avatar Aref Hemati avatar Antonio Alliegro avatar Teppei Fujisawa avatar huihui avatar  avatar Siqi Liu avatar S. Hahner avatar  avatar  avatar Slobodan Blazeski avatar Mingzhe He avatar robotzzq avatar Zeyu Zhang avatar  avatar Rick avatar Lnyan avatar  avatar fabyday avatar  avatar Gokce avatar James Zhao avatar L avatar  avatar Alireza Javaheri avatar Mohamed Aymane Zizi avatar Julien Tinguely avatar Sergei Zobov avatar Hyo avatar Gayathri Mahalingam avatar Chen Guo avatar  avatar Rajat Rasal avatar Cho-Ying Wu avatar  avatar Kirill Klimov avatar Hao Tian avatar 爱可可-爱生活 avatar  avatar Matt De Vries avatar Mona Jalal avatar  avatar Mino_Qin avatar Zhongpai Gao avatar Tykis avatar Lu Ming avatar  avatar  avatar lilkypimp1 avatar Tong Wu avatar  avatar Theodore Galanos avatar xiaofanglegoc avatar coffeier avatar  avatar Kun Su avatar Webber Huang avatar Siegfried Loeffler avatar  avatar Junjie Wang avatar Jackie Allex avatar Petteri Teikari avatar Chunyu Wang avatar Ben Ahlbrand avatar  avatar Jibril Muhammad Adam avatar liuge29 avatar Jie Yang avatar  avatar Forrest Satterfield avatar Edward Seo avatar Byungkuk Choi avatar  avatar  avatar

Watchers

James Cloos avatar Mona Jalal avatar Cami Williams avatar  avatar Amit avatar Dmitry Vinnik avatar  avatar  avatar Jose C. Rubio avatar Arun Sathiya avatar Pyjcsx avatar  avatar paper2code - bot avatar Mona Jalal avatar

vcmeshconv's Issues

Missing information to repoduce the code

Thank you for providing the code for the paper.

Can you please provide the file INSTRUCTIONS.md, since the link in your Readme is not working?

How can your architecture be applied to other datasets? Can you provide some information on how the file structure needs to be, please?

connection_layer_lst_enc in config_train.config file.

Could someone tell me about why confing_train.config file has a line like ​
connection_layer_lst_enc: ["pool1", "pool3", "pool5"]
instead of ["pool0", "pool1", "pool2", "pool3", "pool4", "pool5", "pool6"]

Thank you in advance

The parameter "weight_num" in the code

A great work!
When I read the code, I found a parameter "weight_num" in the code, and its value is always 17 in all layers. What dose it means?
Appreciate for your reply!
Thanks!

customize the choice of latent vertices.

In this example, we trained an autoencoder on a registered 3D hand dataset. The dataset was captured by Facebook Reality Labs internally. The hand mesh contains about 40k vertices with 3d coordinates and RGB color on each vertex. We set the latent vertices to be at the tips of the five fingers and the wrist. (yes, you can customize the choice of latent vertices using our code). The following video shows the reconstruction results on the test set.


I saw this article. So I have a question.
How do i do customize the choice of latent vertices.

We sincerely need your reply.
Please reply.

How to divide training set and test set for DFAUST?

I'm curious about the model's ability to reconstruct different subjects. For example, training on subject A and test on subject B. Was the experiment mentioned in the paper implemented like this? Any suggestion would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.