We provide scripts, preprocessed datasets, and pretrained models to reproduce the results reported in the paper, specifically the generation quality (Tables 1 and 4) and generation speed (Table 2).
π Pretrained models: Download here,
π Preprocessed datasets: Download here.
Please organize the downloaded files as follows:
{repo_root}/
βββ logs/pretrained/
β βββ deepcad/
β β βββ config.yaml
β β βββ ckpts/
β β βββ epoch_5999-*.ckpt
β βββ abc/
β βββ config.yaml
β βββ ckpts/
β βββ epoch_5999-*.ckpt
βββ data/
βββ abc_processed/
βββ v1_1_grid8.h5
# DeepCAD split files
βββ deepcad_30_train.txt
βββ deepcad_30_val.txt
βββ deepcad_30_test.txt
βββ deepcad_30_pkl_absence.txt
# ABC split files
βββ abc_50_train.txt
βββ abc_50_val.txt
βββ abc_50_test.txt
βββ abc_50_pkl_absence.txt
# Test point clouds for Table 1 (1-NNA, COV, MMD)
βββ deepcad_30_test_brep_points.npz
βββ abc_50_test_brep_points.npz
# FID cache for Table 1
βββ fid/
βββ fid_cache_vanilla_deepcad_30_4views_test.npz
βββ fid_cache_vanilla_abc_50_4views_test.npz
# Mesh-sampled test point clouds for Table 4 (from BrepGen)
βββ deepcad_30_test_pcd/
β βββ *.ply
βββ abc_50_test_pcd/
βββ *.ply
To evaluate generation quality, the script samples 10,000 UV grids using the diffusion model, then postprocesses them into B-reps. We validate using the first 3,000 valid (watertight) B-reps, as not all UV grids yield valid outputs.
You can modify:
- test_batch_size to fit your GPU memory
- test_num_sample to adjust the number of sampled grids
DeepCAD
python scripts/run.py --test --wandb-offline logs/pretrained/deepcad \
--ckpt-path logs/pretrained/deepcad/ckpts/epoch_5999-step_486000-val_loss_0.0133.ckpt \
--override "test_batch_size=2500|test_num_sample=10000"
ABC
python scripts/run.py --test --wandb-offline logs/pretrained/abc \
--ckpt-path logs/pretrained/abc/ckpts/epoch_5999-step_756000-val_loss_0.0141.ckpt \
--override "test_batch_size=2500|test_num_sample=10000"
Given the masked uvgrids generated from step 2, we postprocess them into B-reps and evaluate the quality of generated B-reps.
DeepCAD
python -m scripts.postprocessing.npz_pp save-breps logs/pretrained/deepcad/vis/test/step-000486000/deepcad_30/cfg_1.00 --coarse-to-fine
ABC
python -m scripts.postprocessing.npz_pp save-breps logs/pretrained/abc/vis/test/step-000756000/abc_50/cfg_1.00 --coarse-to-fine --dataset-name abc --max-n-prims 50
To evaluate generation speed (as shown in Table 2), run the following:
DeepCAD
python -m scripts.metrics.test_speed main \
logs/pretrained/deepcad/ckpts/epoch_5999-step_486000-val_loss_0.0133.ckpt \
--coarse-to-fine --n-generate 100
ABC
python -m scripts.metrics.test_speed main \
logs/pretrained/abc/ckpts/epoch_5999-step_756000-val_loss_0.0141.ckpt \
--coarse-to-fine --n-generate 100