1 POSTECH 2 Samsung Research America 3 RLWRLD
* Equal contribution
Summary: We propose a new shape-matching methodology, Combinative Matching, which significantly reduces local ambiguities in matching by explicitly modeling both identical surface shapes and opposite volume occupancy.
- Python 3.8
- PyTorch 1.10.1
- PyTorch Lightning 1.9
Conda environment settings:
conda create -n cmnet python=3.8
conda activate cmnet
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
pip install pytorch-lightning==1.9
pip install einops trimesh wandb open3d gtsam
pip install git+https://github.com/KinglittleQ/torch-batch-svd
pip install git+'https://github.com/otaheri/chamfer_distance'
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
cd lib/pointops
python setup.py install && cd -To use the Breaking Bad dataset, follow the instructions in this repository to download both the everyday and artifact subsets.
- We used the Volume-constrained Breaking Bad dataset (v2) for the main experiments.
- Additional evaluation results on the Vanilla Breaking Bad dataset (v1) are provided in our supplementary material [arXiv].
# Single-GPU training for pairwise assembly
python main.py --data_category {everyday, artifact} --logpath {exp_name}
# Multi-GPU training (ex. 4 GPUs) for pairwise assembly
python main.py --data_category {everyday, artifact} --logpath {exp_name} --gpus 0 1 2 3 # Pairwise assembly testing
python test.py --data_category {everyday, artifact} --load {ckp_path} To train and test on multi-part assembly, please use the --mpa flag on main.py.
# Single-GPU training for multi-part assembly
python main.py --data_category {everyday, artifact} --logpath {exp_name} --mpa
# Multi-GPU training (ex. 4 GPUs) for multi-part assembly
python main.py --data_category {everyday, artifact} --logpath {exp_name} --mpa --gpus 0 1 2 3 For multi-part assembly testing, please use multi_part_assembly.py, which includes pose graph optimization support.
# Multi-part assembly testing
python multi_part_assembly.py --data_category {everyday, artifact} --load {ckp_path}Checkpoints for both Vanilla Breaking Bad (v1) and Volume-constrained Breaking Bad (v2) datasets are available on our [Google Drive].
If you use this code for your research, please consider citing:
@inproceedings{lee2025combinative,
title={Combinative Matching for Geometric Shape Assembly},
author={Lee, Nahyuk and Min, Juhong and Lee, Junhong and Park, Chunghyun and Cho, Minsu},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
pages={9540--9549},
year={2025}
}The codebase is largely built on the following repositories.
- PMTR (ICML 2024)
- GeoTransformer (CVPR 2022)
- Jigsaw (NeurIPS 2023)
