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_rWe 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-reinstallhint 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.pyafter 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
libxrandrorlibxineramaor other libs not found install them via
sudo apt-get install libxrandr-dev
sudo apt-get install libxinerama-devList 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.