Official repository of the ECCV 2024 paper DiscoMatch: Fast Discrete Optimisation for Geometrically Consistent 3D Shape Matching by Paul Roetzer*
, Ahmed Abbas*
, Dongliang Cao, Florian Bernard and Paul Swoboda.
For more information, please visit our our project page.
*
: Authors contributed equally.
You need a working c++ compiler and cmake. Note: builds are only tested on unix machines.
- Create python environment
conda create -n disco-match python=3.8 # create new virtual environment
conda activate disco-match
conda install pytorch cudatoolkit -c pytorch # install pytorch
git clone [email protected]:paul0noah/disco-match.git
cd disco-match
pip install -r requirements.txt # install other necessary libraries via pip
- Install sm-comb (code to create the windheuser problem, also includes sm-comb solver)
git clone [email protected]:paul0noah/sm-comb.git
cd sm-comb
python setup.py install
cd ..
- Install disco match solver
git clone [email protected]:LPMP/BDD.git
cd BDD
git checkout f377a82736435bc4988e2c41e5c8029c168e9505
python setup.py install
cd ..
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.
See discomatch_example.py
for example usage.
There are some issues with the .off
file format. Use e.g. meshlab to convert them to .obj
for example
- Torch cuda not availabe:
The answer containing the
--upgrade --force-reinstall
hint in this stackoverflow (thread)[https://stackoverflow.com/questions/70340812/how-to-install-pytorch-with-cuda-support-with-pip-in-visual-studio] solved itpip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 --upgrade --force-reinstall
- (on macOS) install OpenMP with Homebrew
brew install libomp
β gives you e.g./opt/homebrew/Cellar/libomp/
- add the following to
BDD/setup.py
after the indicated line:whereif _cuda_flag == "ON": cmake_args.append('-DWITH_CUDA=ON') ### ADDED LINES: cmake_args.append('-DOpenMP_CXX_FLAGS="-Xclang -fopenmp -I /path/to/libomp/include/"') cmake_args.append('-DOpenMP_C_FLAGS="-Xclang -fopenmp -I /path/to/libomp/include/"') cmake_args.append('-DOpenMP_CXX_LIB_NAMES=libomp') cmake_args.append('-DOpenMP_C_LIB_NAMES=libomp') cmake_args.append('-DOpenMP_libomp_LIBRARY=/path/to/libomp/lib/libomp.dylib') cmake_args.append('-DCMAKE_SHARED_LINKER_FLAGS="-L /path/to/libomp/lib -lomp -Wl,-rpath, /opt/homebrew/Cellar/libomp/17.0.6/lib"') ### END OF ADDED LINES
/path/to/libomp/
should be replaced with e.g./opt/homebrew/Cellar/libomp/17.0.6/
- clear the build directory and run installation again (i.e.
python setup.py install
)
-
opengl not found:
sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev
-
if
libxrandr
orlibxinerama
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
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.
@inproceedings{roetzerabbas2024discomatch,
author = {Paul Roetzer and Ahmed Abbas and Dongliang Cao and Florian Bernard and Paul Swoboda},
title = { DiscoMatch: Fast Discrete Optimisation for Geometrically Consistent 3D Shape Matching },
booktitle = {In Proceedings of the European conference on computer vision (ECCV)},
year = 2024
}
This repo is licensed under MIT licence.