Awesome
CudaOT
Repository for solving discrete optimal transport problems via Cplex, Sinkhorn, FastEMD and the GPU implementation of the Multi-Scale Sparse Sinkhorn.
This library is designed to solve a very large instance of discrete optimal transport problems.
Environment Requirements
Programming Language: CUDA C/C++ (tested on cuda/11.1)
eigen3 library headers: These can be installed via the package manager on most distributions, e.g. via package libeigen3-dev on Ubuntu.
Installation Instructions
For unified memory implementation
(1) In the CMakeLists.txt
, edit the variable CUDA_INSTALL_PATH
to match the CUDA installation directory. Edit the variable CPLEX_LIBRARY
to match the CPLEX installation directory for building TransportNetwork.
(2) Type cmake .
and make
to compile.
Examples
(1)Cplex: The Cplex solver computes the unregularized OT problems.
(2)FastEMD: The details of FastEMD can be found at: https://github.com/tillhainbach/FastEMD
(3)Multi-scale OT: The CPU version of the multi-scale Sinkhorn Algorithm. The Document could be found at: https://github.com/bernhard-schmitzer/MultiScaleOT
(4)M3S: The implementation of the multi-scale sparse Sinkhorn. More details will be released later.
(5)LogDomainSK: Implemented the Sinkhorn algorithm on log domain.
(6)FastTransport: Fast Network Simplex for Optimal Transport: https://github.com/nbonneel/network_simplex
(7)3D Wasserstein Distance: code/3D Wasserstein Distance/plot3D_Wasserstein.m
(8)Color transfer between images: code/Color transfer between images/Multi_scale_Color_Transfer.ipynb
Reference
[1] I. Corporation, Ibm ilog cplex optimizer, (2013), http://www.ilog.com/products/cplex/.
[2] R. Flamary and N. Courty, Pot python optimal transport library, 2017, https://pythonot.github.io/.
[3] B. Schmitzer and C. Schnorr, A hierarchical approach to optimal transport, vol. 7893, 06 2013, pp. 452–571464, https://doi.org/10.1007/978-3-642-38267-3 38.
[4] B. Schmitzer, Stabilized sparse scaling algorithms for entropy regularized transport problems, SIAM Journal on Scientific Computing, 41 (2016).
[5] Computational optimal transport: Complexity by accelerated gradient descent is better than by sinkhorn’s algorithm, in Proceedings of the 35th International Conference on Machine Learning(ICML) in PMLR, 02 2018, pp. 80:1367–1376.
[6] N. Bonneel, M. van de Panne, S. Paris, and W. Heidrich, Displacement Interpolation Using Lagrangian Mass Transport, ACM Transactions on Graphics (SIGGRAPH ASIA 2011), 30 (2011).
[7] Pele O., Werman M. (2008) A Linear Time Histogram Metric for Improved SIFT Matching. In: Forsyth D., Torr P., Zisserman A. (eds) Computer Vision – ECCV 2008. ECCV 2008. Lecture Notes in Computer Science, vol 5304. Springer, Berlin, Heidelberg
[8] O. Pele and M. Werman, "Fast and robust Earth Mover's Distances," 2009 IEEE 12th International Conference on Computer Vision, Kyoto, 2009, pp. 460-467.
[9] Charlier, B., Feydy, J., Glaunès, J. A., Collin, F.-D. & Durif, G. Kernel Operations on the GPU, with Autodiff, without Memory Overflows. Journal of Machine Learning Research 22, 1–6 (2021).
[10] Jean Feydy, Thibault Séjourné, Franc¸ois-Xavier Vialard, Shun-ichi Amari, Alain Trouve, and Gabriel Peyré. Interpolating between optimal transport and mmd using sinkhorn divergences. In The 22nd International Conference on Artificial Intelligence and Statistics, pages 2681–2690, 2019.