This project accompanies the paper "Geometry-informed Neural Networks", which does objective-based generation without examples.
/
├── _quickstart # Entry point for the program
├── run.py # Entry point for the program
├── train/ # Functionality for training
│ └── ginn_trainer.ip # Defines the GINN training process
├── configs/ # YML configurations
├── GINN/ # Folder for GINN training
│ ├── geometry/ # General geometric primitives
│ ├── helpers/ # Helpers useful for training, e.g. measuring time
│ ├── morse/ # Collection of classes to manage the connectedness loss based on Morse theory
│ ├── visualize/ # Plotters for 2D and 3D
│ ├── simJEB/ # Meshes defining the interface and design region
├── models/ # Model definitions for different architectures
├── visualization/ # Global helpers for visualization
└── tests/ # Contains tests for some classes
└── evaluation/ # Contains code to compute metrics of generated shapes
Plateau’s problem is to find the surface
With notebooks/minimal_surface.ipynb you can train a neural network to learn a shape with minimal surface. It just takes a few seconds to converge.
Reaction-diffusion systems were introduced by Alan Turing to explain how patterns
in nature, such as stripes and spots, can form as a result of a simple physical process of reaction and
diffusion of two substances. A celebrated model of such a system is the Gray-Scott model, which
produces a variety of patterns by changing just two parameters – the feed-rate
To demonstrate a generative PINN on a problem that admits multiple solutions, we omit the initial condition and
instead consider stationary solutions, which are known to exist for some parameters
For more details, see our paper, Section 4.3.
Install the necessary dependencies
pip install -r requirements.txt
You can start training a shape for the obstacle by specifying the config from the 'configs' folder.
python run.py --gpu_list 0 --yml obst2d_siren.yml
Training with 16 latent codes from scratch takes around 5 hours on a Titan V GPU (12 GB RAM). The following Figure shows the shapes of 16 latent codes of a softplus-MLP model trained with explicit diversity.
The problem specification for the jet engine bracked (JEB) draws inspiration from an engineering design competition hosted by General Electric and GrabCAD (paper, website). The challenge was to design the lightest possible lifting bracket for a jet engine subject to both physical and geometrical constraints. Here, we focus only on the geometric constraints: the shape must fit in a provided design space
You can finetune a jet engine bracket using the notebook _quickstart_3d.ipynb. The notebook only performs a few training iterations as training a single neural network to produce a shape from scratch takes around 15 hours on a Titan V GPU (12 GB RAM). For the jet engine bracket, we recommend to follow these steps:
- First precompute and save points of the jet engine bracket design problem. This can be done by using the code in
/notebooks/mesh_to_samples.ipynb
. - Then use the
simjeb_cond_siren.yml
config.