Skip to content

[SIGGRAPH 2024] Official PyTorch Implementation of "BrepGen: A B-rep Generative Diffusion Model with Structured Latent Geometry".

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
LICENSE_GPL
Notifications You must be signed in to change notification settings

samxuxiang/BrepGen

Repository files navigation

BrepGen: A B-rep Generative Diffusion Model with Structured Latent Geometry (SIGGRAPH 2024)

arXiv webpage Youtube

Xiang Xu, Joseph Lambourne, Pradeep Jayaraman, Zhengqing Wang, Karl Willis, and Yasutaka Furukawa

alt BrepGen

We present a diffusion-based generative approach that directly outputs a CAD B-rep. BrepGen uses a novel structured latent geometry to encode the CAD geometry and topology. A top-down generation approach is used to denoise the faces, edges, and vertices.

Requirements

Environment (Tested)

  • Linux
  • Python 3.9
  • CUDA 11.8
  • PyTorch 2.2
  • Diffusers 0.27

Dependencies

Install PyTorch and other dependencies:

pip install -r requirements.txt

Install Diffusers:

pip install diffusers["torch"] transformers

Install OCCWL following the instruction here.

Note: try building from source if pip install chamferdist does not work.

Data

Download ABC STEP files (100 folders), or the Furniture Data.

The faces, edges, and vertices need to be extracted from the STEP files.

Process the B-reps (under data_process folder):

sh process.sh

Remove repeated CAD models (under data_process folder, default is 6 bit ):

sh deduplicate.sh

We also provide the post-processed data for DeepCAD, ABC, and Furniture.

Training

Train the surface and edge VAE (wandb for logging):

sh train_vae.sh

Train the latent diffusion model (change path to previously trained VAEs):

sh train_ldm.sh

--cf classifier-free training for the Furniture dataset.

--data_aug randomly rotate the CAD model during training (optional).

Generation and Evaluation

Randomly generate B-reps from Gaussian noise, both STEP and STL files will be saved:

python sample.py --mode abc

This will load the settings in eval_config.yaml. Make sure to update model paths to the correct folder.

Run this script for evaluation (change the path to generated data folder, with at least 3,000 samples):

sh eval.sh

This computes the JSD, MMD, and COV scores. Please also download sampled point clouds for test set.

Pretrained Checkpoint

We also provide the individual checkpoints trained on different datasets.

Source Dataset
DeepCAD vae model latent diffusion model
ABC vae model latent diffusion model
Furniture vae model latent diffusion model

Acknowledgement

This research is partially supported by NSERC Discovery Grants with Accelerator Supplements and DND/NSERC Discovery Grant Supplement, NSERC Alliance Grants, and John R. Evans Leaders Fund (JELF). We also thank Onshape for their support and access of the publicly available CAD models.

Citation

If you find our work useful in your research, please cite the following paper

@article{xu2024brepgen,
  title={BrepGen: A B-rep Generative Diffusion Model with Structured Latent Geometry},
  author={Xu, Xiang and Lambourne, Joseph G and Jayaraman, Pradeep Kumar and Wang, Zhengqing and Willis, Karl DD and Furukawa, Yasutaka},
  journal={arXiv preprint arXiv:2401.15563},
  year={2024}
}

About

[SIGGRAPH 2024] Official PyTorch Implementation of "BrepGen: A B-rep Generative Diffusion Model with Structured Latent Geometry".

Resources

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
LICENSE_GPL

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published