All Projects → lzhengning → SubdivNet

lzhengning / SubdivNet

Licence: MIT license
Subdivision-based Mesh Convolutional Networks.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to SubdivNet

Openwisp Network Topology
Network topology collector and visualizer. Collects network topology data from dynamic mesh routing protocols or other popular networking software like OpenVPN, allows to visualize the network graph, save daily snapshots that can be viewed in the future and more.
Stars: ✭ 67 (-62.36%)
Mutual labels:  mesh-networks
Wgsd
A CoreDNS plugin that provides WireGuard peer information via DNS-SD semantics
Stars: ✭ 169 (-5.06%)
Mutual labels:  mesh-networks
Awesome Mesh
This is a list for mesh networking: Documentation, Free Software mesh protocols, and applications. A mesh network is a network topology in which each node relays data for the network. All mesh nodes cooperate in the distribution of data in the network.
Stars: ✭ 227 (+27.53%)
Mutual labels:  mesh-networks
Ot Rtos
OpenThread RTOS, an integration of OpenThread, LwIP, and FreeRTOS.
Stars: ✭ 90 (-49.44%)
Mutual labels:  mesh-networks
Berkanansdk
Bluetooth mesh messaging SDK for apps
Stars: ✭ 150 (-15.73%)
Mutual labels:  mesh-networks
Prototype Cjdns Pi
Prototype system for mesh networks on single board computers
Stars: ✭ 205 (+15.17%)
Mutual labels:  mesh-networks
Spruce Network
Decentralized peer-to-peer mesh network.
Stars: ✭ 61 (-65.73%)
Mutual labels:  mesh-networks
edgevpn
⛵ The immutable, decentralized, statically built p2p VPN without any central server and automatic discovery! Create decentralized introspectable tunnels over p2p with shared tokens
Stars: ✭ 223 (+25.28%)
Mutual labels:  mesh-networks
Multipeer
📱📲 A wrapper for the MultipeerConnectivity framework for automatic offline data transmission between devices
Stars: ✭ 170 (-4.49%)
Mutual labels:  mesh-networks
Netjsongraph.js
NetJSON NetworkGraph visualizer based on d3.js
Stars: ✭ 216 (+21.35%)
Mutual labels:  mesh-networks
Wifimeshraspberrypi
Workshop to create a sensor application over a WiFi Mesh network
Stars: ✭ 99 (-44.38%)
Mutual labels:  mesh-networks
Django Netjsongraph
Network Topology Visualizer & Network Topology Collector
Stars: ✭ 131 (-26.4%)
Mutual labels:  mesh-networks
Drago
A flexible configuration manager for Wireguard networks
Stars: ✭ 204 (+14.61%)
Mutual labels:  mesh-networks
P2p Internet Workshop
Building the Peer-to-Peer Internet workshop series
Stars: ✭ 88 (-50.56%)
Mutual labels:  mesh-networks
MeshNetSimulator
A simulator for sketching mesh network routing strategies
Stars: ✭ 71 (-60.11%)
Mutual labels:  mesh-networks
Quantumgate
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++.
Stars: ✭ 62 (-65.17%)
Mutual labels:  mesh-networks
Lime Packages
OpenWrt packages composing LibreMesh meta-firmware for wireless mesh networking
Stars: ✭ 204 (+14.61%)
Mutual labels:  mesh-networks
aredn ar71xx
AREDN develop branch porting on top of OpenWRT 19.07.0
Stars: ✭ 68 (-61.8%)
Mutual labels:  mesh-networks
p2p-project
A peer-to-peer networking framework to work across languages
Stars: ✭ 68 (-61.8%)
Mutual labels:  mesh-networks
Openthread
OpenThread released by Google is an open-source implementation of the Thread networking protocol
Stars: ✭ 2,643 (+1384.83%)
Mutual labels:  mesh-networks

Subdivision-based Mesh Convolutional Networks

The implementation of SubdivNet in our paper, Subdivion-based Mesh Convolutional Networks

teaser

News

  • 🔥This paper was accepted by ACM TOG.

Features

  • Provides implementations of mesh classification and segmentation on various datasets.
  • Provides ready-to-use datasets, pretrained models, training and evaluation scripts.
  • Supports a batch of meshes with different number of faces.

Requirements

  • python3.7+
  • CUDA 10.1+
  • Jittor

To install other python requirements:

pip install -r requirements.txt

Fetch Data

This repo provides training scripts for classification and segementation, on the following datasets,

  • shrec11-split10
  • shrec11-split16
  • cubes
  • manifold40 (based on ModelNet40)
  • humanbody
  • coseg-aliens
  • coseg-vases

To download the preprocessed data, run

sh scripts/<DATASET_NAME>/get_data.sh

The Manfold40 dataset (before remeshed, without subdivision connectivity) can be downloaded via this link. Note that this version cannot be used as inputs of SubdivNet. To train SubdivNet, run scripts/manifold40/get_data.sh.

Training

To train the model(s) in the paper, run this command:

sh scripts/<DATASET_NAME>/train.sh

To speed up training, you can use multiple gpus. First install OpenMPI:

sudo apt install openmpi-bin openmpi-common libopenmpi-dev

Then run the following command,

CUDA_VISIBLE_DEVICES="2,3" mpirun -np 2 sh scripts/<DATASET_NAME>/train.sh

Evaluation

To evaluate the model on a dataset, run:

sh scripts/<DATASET_NAME>/test.sh

The pretrained weights are provided. Run the following command to download them.

sh scripts/<DATASET_NAME>/get_pretrained.sh

Visualize

After testing the segmentation network, there will be colored shapes in a results directory.

How to apply SubdivNet to your own data

SubdivNet cannot be directly applied to any common meshes, because it requires the input to hold the subdivision connectivity.

To create your own data with subdivision connectivity, you may use the provided tool that implements the MAPS algorithm. You may also refer to NeuralSubdivision, as they provide a MATLAB script for remeshing.

To run our implemented MAPS algorithm, first install the following python dependecies,

triangle
pymeshlab
shapely
sortedcollections
networkx
rtree

Then see datagen_maps.py and modify the configurations to remesh your 3D shapes for subdivision connectivity.

Cite

Please cite our paper if you use this code in your own work:

@article{DBLP:journals/tog/HuLGCHMM22,
  author    = {Shi{-}Min Hu and
               Zheng{-}Ning Liu and
               Meng{-}Hao Guo and
               Junxiong Cai and
               Jiahui Huang and
               Tai{-}Jiang Mu and
               Ralph R. Martin},
  title     = {Subdivision-based Mesh Convolution Networks},
  journal   = {{ACM} Trans. Graph.},
  volume    = {41},
  number    = {3},
  pages     = {25:1--25:16},
  year      = {2022},
  url       = {https://doi.org/10.1145/3506694},
  doi       = {10.1145/3506694}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].