/spider-match

πŸ•·οΈ SpiderMatch: 3D Shape Matching with Global Optimality and Geometric Consistency

Primary LanguagePythonMIT LicenseMIT

πŸ•·οΈ SpiderMatch: 3D Shape Matching with Global Optimality and Geometric Consistency

Official repository for the CVPR 2024 best paper award candidate paper: SpiderMatch: 3D Shape Matching with Global Optimality and Geometric Consistency by Paul Roetzer and Florian Bernard (University of Bonn). For more information, please visit our our project page.

βš™οΈ Installation

Prerequesites

You need a working c++ compiler and cmake. Note: builds are only tested on unix machines.

Installation Step-by-Step

  1. Create python environment
conda create -n spidermatch python=3.8
conda activate spidermatch
conda install pytorch cudatoolkit -c pytorch # install pytorch
git clone git@github.com:paul0noah/spider-matchs.git
cd spider-match
pip install -r requirements.txt # install other necessary libraries via pip
  1. Install sm-3dcouple (code to create the SpiderMatch integer linear program)
git clone git@github.com:paul0noah/sm-3dcouple.git
cd sm-3dcouple
python setup.py install
cd ..
  1. Retrieve a gurobi license from the official webpage

πŸ“ Dataset

Datasets are available from this link. Put all datasets under ./datasets/ such that the directory looks somehow like this Two example files for FAUST_r shapes are included in this repository.

β”œβ”€β”€ datasets
    β”œβ”€β”€ FAUST_r
    β”œβ”€β”€ SMAL_r
    β”œβ”€β”€ DT4D_r

We thank the original dataset providers for their contributions to the shape analysis community, and that all credits should go to the original authors.

πŸ§‘β€πŸ’»οΈβ€ Usage

See spidermatch_example.py for example usage.

🚧 Troubleshooting

Shapes not readable

There are some issues with the .off file format. Use e.g. meshlab to convert them to .obj for example

Some libs for sm-3dcouple not found

  • opengl not found: sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

  • if libxrandr or libxinerama or other libs not found install them via

sudo apt-get install libxrandr-dev
sudo apt-get install libxinerama-dev

List of potential libs not found: libxrandr, libxinerama, libxcursor, libxi

πŸ™ Acknowledgement

The implementation of DiffusionNet is based on the official implementation. The framework implementation is adapted from Unsupervised Deep Multi Shape Matching. This repository is adapted from Unsupervised-Learning-of-Robust-Spectral-Shape-Matching.

πŸŽ“Attribution

@inproceedings{roetzer2024spidermatch,
    author     = {Paul Roetzer and Florian Bernard},
    title     = { SpiderMatch: 3D Shape Matching with Global Optimality and Geometric Consistency },
    booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
    year     = 2024
}

License πŸš€

This repo is licensed under MIT licence.