• Stars
    star
    134
  • Rank 261,165 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created 12 months ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fit low-dimensional subspaces to physical systems with neural networks (SIGGRAPH 2023)

Data-Free Learning of Reduced-Order Kinematics (SIGGRAPH 2023)

Authors: Nicholas Sharp, Cristian Romero, Alec Jacobson, Etienne Vouga, Paul G. Kry, David I.W. Levin, Justin Solomon

a rendering of a ball rolling on a cloth, demonstrating a reduced subspace

[project page] [PDF] [video]

Use neural networks to fit low-dimensional subspaces for simulations, with no dataset neededโ€”the method automatically explores the potential energy landscape.

This repo contains an implementation of our core procedure on some sample physical systems.

Installing

This repository is standard Python code, tested with Python 3.9 on Ubuntu 20.04, as well as OSX systems.

The most significant depenency is JAX, which can be installed according to instructions here: https://jax.readthedocs.io/en/latest/

Other dependencies are all available through pip and conda. Conda environment.yml file is included to help resolve dependencies.

This code runs on CPUs or GPUs, although generally the GPU will be dramatically faster.

Running

Basic

To run our systems and visualize them in a GUI, call

python src/main_run_system.py --system_name [system_name] --problem_name [problem_name]

where the available systems and problems are given below. This will run the system in the full configuration space. Click on UI elements in the upper-right to run the dynamics, etc. Note that the triangular tree nodes can be expanded to yield more options.

Fitting

To fit a subspace, call the following function. See the paper for parameters for the examples we showed.

python src/main_learn_subspace.py --system_name [system_name] --problem_name [problem_name] --subspace_dim=8 --weight_expand=1.0 --sigma_scale=1.0 --output_dir output/

which will iterative train and dump the resulting network files to output/

Running fitted models

Once the subspace has been fitted, it can be loaded in to the run script as

python src/main_run_system.py --system_name [system_name] --problem_name [problem_name] --subspace [subspace_file_prefix]

to explore the subspace. Note that [subspace_file_prefix] should not be a full filename, but the prefix which is printed by the training script.

Three quick notes about apparent performance:

  • JAX code is JIT-compiled, so all routines will have a lag when they are called for the first time.
  • JAX by default allocates nearly all available GPU memory at startup.
  • This vesion of our GUI is implemented in a way which may be slow on some machines. Be wary that rendering the scene data may actually be dominating the runtime, for incidental software reasons unrelated to our algorithm. Alternate GUIs can be used to circumvent the issue if needed.

Physical systems

The following systems are included:

  • "FEM" -- finite elemnet deformables in 2d and 3d
    • "bistable" -- 2d bistable bar
    • "load3d" -- 3d cantilevered bar
    • "heterobeam" -- 3d cantilevered bar with non-constant stiffness
  • "rigid3d" -- rigid bodies in 3d
    • "klann" -- Klann linkage
    • "stewart" -- Stewart mechansim

More Repositories

1

polyscope

A C++ & Python viewer for 3D data like meshes and point clouds
C++
1,616
star
2

geometry-central

Applied 3D geometry in C++, with a focus on surface meshes.
C++
985
star
3

potpourri3d

An invigorating blend of 3D geometry tools in Python.
Python
388
star
4

diffusion-net

Pytorch implementation of DiffusionNet for fast and robust learning on 3D surfaces like meshes or point clouds.
Python
369
star
5

happly

A C++ header-only parser for the PLY file format. Parse .ply happily!
C++
278
star
6

robust-laplacians-py

Build high-quality Laplace matrices on meshes and point clouds in Python. Implements [Sharp & Crane SGP 2020].
C++
178
star
7

neural-implicit-queries

Queries on neural implicit surfaces via range analysis: ray casting, intersection, closest point, & more. SIGGRAPH 2022 paper. JAX implementation.
Python
169
star
8

DDGSpring2016

Code repository for 15-869 Discrete Differential Geometry at CMU in Spring 2016.
Python
121
star
9

intrinsic-triangulations-tutorial

An introductory course intrinsic triangulations for powerful & robust geometry processing --- tutorial code and links.
Python
119
star
10

nonmanifold-laplacian

A robust Laplace matrix for general (possibly nonmanifold) triangle meshes, and point clouds [Sharp & Crane SGP 2020]
C++
113
star
11

learned-triangulation

Source code for "PointTriNet: Learned Triangulation of 3D Point Sets", by Nicholas Sharp and Maks Ovsjanikov at ECCV 2020
Python
98
star
12

variational-surface-cutting

Codebase for "Variational Surface Cutting" by Sharp & Crane, SIGGRAPH 2018
C++
87
star
13

flip-geodesics-demo

Construct geodesic paths, loops, networks on surface with a fast and simple edge flipping algorithm. C++ demo app and more.
C++
80
star
14

vector-heat-demo

C++ demo of the Vector Heat Method (Sharp, Soliman, and Crane. 2019.)
C++
58
star
15

navigating-intrinsic-triangulations-demo

Demo code for "Navigating Intrinsic Triangulations". Sharp, Soliman, and Crane. 2019
C++
46
star
16

gc-polyscope-project-template

A template project to get started with geometry-central and Polyscope.
C++
43
star
17

polyscope-py

Python bindings for Polyscope
Python
29
star
18

arrgh

A small python utility to pretty-print a table summarizing arrays & scalars from numpy, pytorch, etc.
Python
24
star
19

discretization-robust-correspondence-benchmark

Benchmark for the generalization of 3D machine learning models across different remeshing/samplings of a surface.
Python
11
star
20

geometry-central-tutorials

Tutorials for the geometry-central geometry processing library.
C++
9
star
21

libigl-polyscope-project-template

An example project and build system using libIGL and Polyscope
CMake
7
star
22

RNA-Surface-Segmentation-Dataset

A dataset of segmented RNA molecule surfaces, as a benchmark task in 3D machine learning on surfaces. From Poulenard et al., 3DV 2019.
7
star
23

polyscope-docs

Documentation for polyscope
HTML
3
star
24

nmwsharp.github.io

HTML
1
star