heatingma commited on
Commit
df2cf1f
1 Parent(s): d7ed7cb

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +203 -3
README.md CHANGED
@@ -1,3 +1,203 @@
1
- ---
2
- license: other
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <img src="https://pygmtools.readthedocs.io/en/latest/_static/images/pygmtools_logo.svg" alt="pygmtools: Python Graph Matching Tools" width="800"/>
2
+
3
+ [![PyPi version](https://badgen.net/pypi/v/pygmtools/)](https://pypi.org/pypi/pygmtools/)
4
+ [![PyPI pyversions](https://img.shields.io/badge/dynamic/json?color=blue&label=python&query=info.requires_python&url=https%3A%2F%2Fpypi.org%2Fpypi%2Fpygmtools%2Fjson)](https://pypi.python.org/pypi/pygmtools/)
5
+ [![Downloads](https://pepy.tech/badge/pygmtools)](https://pepy.tech/project/pygmtools)
6
+ [![Documentation Status](https://readthedocs.org/projects/pygmtools/badge/?version=latest)](https://pygmtools.readthedocs.io/en/latest/?badge=latest)
7
+ [![codecov](https://codecov.io/gh/Thinklab-SJTU/pygmtools/branch/main/graph/badge.svg?token=Q68XTY0N0C)](https://codecov.io/gh/Thinklab-SJTU/pygmtools)
8
+ [![discord channel](https://img.shields.io/discord/1028701206526304317.svg?&color=blueviolet&label=discord)](https://discord.gg/8m6n7rRz9T)
9
+ [![QQ group](https://img.shields.io/badge/QQ%20group-696401889-blue)](https://qm.qq.com/cgi-bin/qm/qr?k=QolXYJn_M5ilDEM9e2jEjlPnJ02Ktabd&jump_from=webapi&authKey=6zG6D/Js4YF5h5zj778aO5MDKOXBwPFi8gQ4LsXJN8Hn1V8uCVGV81iT4J/FjPGT)
10
+ [![GitHub stars](https://img.shields.io/github/stars/Thinklab-SJTU/pygmtools.svg?style=social&label=Star&maxAge=8640)](https://GitHub.com/Thinklab-SJTU/pygmtools/stargazers/)
11
+
12
+ -----------------------------------------
13
+
14
+ ``pygmtools`` (Python Graph Matching Tools) provides graph matching solvers in Python and is easily accessible via:
15
+
16
+ ```bash
17
+ $ pip install pygmtools
18
+ ```
19
+
20
+ Official documentation: https://pygmtools.readthedocs.io
21
+
22
+ Source code: https://github.com/Thinklab-SJTU/pygmtools
23
+
24
+ Graph matching is a fundamental yet challenging problem in pattern recognition, data mining, and others.
25
+ Graph matching aims to find node-to-node correspondence among multiple graphs, by solving an NP-hard combinatorial
26
+ optimization problem.
27
+
28
+ Doing graph matching in Python used to be difficult, and this library wants to make researchers' lives easier.
29
+ To highlight, ``pygmtools`` has the following features:
30
+
31
+ * *Support various solvers*, including traditional combinatorial solvers (including linear, quadratic, and multi-graph)
32
+ and novel deep learning-based solvers;
33
+ * *Support various backends*, including ``numpy`` which is universally accessible, and some state-of-the-art deep
34
+ learning architectures with GPU support:
35
+ ``pytorch``, ``paddle``, ``jittor``, ``tensorflow``, ``mindspore``;
36
+ * *Deep learning friendly*, the operations are designed to best preserve the gradient during computation and batched
37
+ operations support for the best performance.
38
+
39
+ ## Installation
40
+
41
+ You can install the stable release on PyPI:
42
+
43
+ ```bash
44
+ $ pip install pygmtools
45
+ ```
46
+
47
+ or get the latest version by running:
48
+
49
+ ```bash
50
+ $ pip install -U https://github.com/Thinklab-SJTU/pygmtools/archive/master.zip # with --user for user install (no root)
51
+ ```
52
+
53
+ Now the pygmtools is available with the ``numpy`` backend.
54
+
55
+ The following packages are required, and shall be automatically installed by ``pip``:
56
+
57
+ ```
58
+ Python >= 3.7
59
+ requests >= 2.25.1
60
+ scipy >= 1.4.1
61
+ Pillow >= 7.2.0
62
+ numpy >= 1.18.5
63
+ easydict >= 1.7
64
+ appdirs >= 1.4.4
65
+ tqdm >= 4.64.1
66
+ wget >= 3.2
67
+ ```
68
+
69
+ ## Available Graph Matching Solvers
70
+ This library offers user-friendly API for the following solvers:
71
+
72
+ * [Two-Graph Matching Solvers](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.classic_solvers.html)
73
+ * Linear assignment solvers including the differentiable soft
74
+ [Sinkhorn algorithm](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.linear_solvers.sinkhorn.html) [1],
75
+ and the exact solver [Hungarian](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.linear_solvers.hungarian.html) [2].
76
+ * Soft and differentiable quadratic assignment solvers, including [spectral graph matching](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.classic_solvers.sm.html) [3]
77
+ and [random-walk-based graph matching](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.classic_solvers.rrwm.html) [4].
78
+ * Discrete (non-differentiable) quadratic assignment solver
79
+ [integer projected fixed point method](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.classic_solvers.ipfp.html) [5].
80
+ * [Multi-Graph Matching Solvers](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.multi_graph_solvers.html)
81
+ * [Composition based Affinity Optimization (CAO) solver](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.multi_graph_solvers.cao.html) [6]
82
+ by optimizing the affinity score, meanwhile gradually infusing the consistency.
83
+ * Multi-Graph Matching based on
84
+ [Floyd shortest path algorithm](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.multi_graph_solvers.mgm_floyd.html) [7].
85
+ * [Graduated-assignment based multi-graph matching solver](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.multi_graph_solvers.gamgm.html) [8][9]
86
+ by graduated annealing of Sinkhorn’s temperature.
87
+ * [Neural Graph Matching Solvers](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.neural_solvers.html)
88
+ * Intra-graph and cross-graph embedding based neural graph matching solvers
89
+ [PCA-GM](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.neural_solvers.pca_gm.html)
90
+ and [IPCA-GM](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.neural_solvers.ipca_gm.html) [10]
91
+ for matching individual graphs.
92
+ * [Channel independent embedding (CIE)](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.neural_solvers.cie.html) [11]
93
+ based neural graph matching solver for matching individual graphs.
94
+ * [Neural graph matching solver (NGM)](https://pygmtools.readthedocs.io/en/latest/api/_autosummary/pygmtools.neural_solvers.ngm.html) [12]
95
+ for the general quadratic assignment formulation.
96
+
97
+ ## Available Backends
98
+ This library is designed to support multiple backends with the same set of API.
99
+ Please follow the official instructions to install your backend.
100
+
101
+ The following backends are available:
102
+
103
+ * [Numpy](https://numpy.org/) (**default** backend, CPU only)
104
+
105
+ <img src="https://pygmtools.readthedocs.io/en/latest/_images/numpy_logo.png" alt="numpy logo" width="200"/>
106
+
107
+ * [PyTorch](https://pytorch.org/) (GPU friendly, deep learning friendly)
108
+
109
+ <img src="https://pygmtools.readthedocs.io/en/latest/_images/pytorch_logo.png" alt="pytorch logo" width="200"/>
110
+
111
+ * [Jittor](https://github.com/Jittor/Jittor) (GPU friendly, JIT support, deep learning friendly)
112
+
113
+ <img src="https://pygmtools.readthedocs.io/en/latest/_images/jittor_logo.png" alt="jittor logo" width="200"/>
114
+
115
+ * [PaddlePaddle](https://www.paddlepaddle.org.cn/en) (GPU friendly, deep learning friendly)
116
+
117
+ <img src="https://pygmtools.readthedocs.io/en/latest/_images/paddle_logo.png" alt="paddle logo" width="200"/>
118
+
119
+ * [Tensorflow](https://tensorflow.google.cn/) (GPU friendly, deep learning friendly)
120
+
121
+ <img src="https://pygmtools.readthedocs.io/en/latest/_images/tensorflow_logo.png" alt="tensorflow logo" width="200"/>
122
+
123
+ ### Development status (0.3.8)
124
+
125
+ | | Numpy | PyTorch | Jittor | PaddlePaddle | Tensorflow | MindSpore |
126
+ | ------------------- | ----- | ------- | ------ | ------------ | ---------- | --------- |
127
+ | Linear Solvers | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
128
+ | Classic Solvers | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
129
+ | Multi-Graph Solvers | ✔ | ✔ | ✔ | ✔ | 📆 | 📆 |
130
+ | Neural Solvers | ✔ | ✔ | ✔ | ✔ | 📆 | 📆 |
131
+ | Examples Gallery | ✔ | ✔ | ✔ | ✔ | 📆 | 📆 |
132
+
133
+ ✔: Supported; 📆: Planned for future versions (contributions welcomed!).
134
+
135
+ For more details, please [read the documentation](https://pygmtools.readthedocs.io/en/latest/guide/get_started.html#install-other-backends).
136
+
137
+ ## Pretrained Models
138
+
139
+ The library includes several neural network solvers. The pretrained models shall be automatically downloaded upon
140
+ needed from Google Drive. If you are experiencing issues accessing Google Drive, please download the pretrained models
141
+ manually and put them at ``~/.cache/pygmtools`` (for Linux).
142
+
143
+ Available at:
144
+ [[google drive]](https://drive.google.com/drive/folders/1O7vkIW8QXBJsNsHUIRiSw91HJ_0FAzu_?usp=sharing)
145
+ [[baidu drive]](https://pan.baidu.com/s/1MvzfM52NJeLWx2JXbbc6HA?pwd=x8bv)
146
+
147
+ ## The Deep Graph Matching Benchmark
148
+
149
+ ``pygmtools`` is also featured with a standard data interface of several graph matching benchmarks. Please read
150
+ [the corresponding documentation](https://pygmtools.readthedocs.io/en/latest/guide/benchmark.html) for details.
151
+
152
+ We also maintain a repository containing non-trivial implementation of deep graph matching models, please check out
153
+ [ThinkMatch](https://thinkmatch.readthedocs.io/) if you are interested!
154
+
155
+ ## Chat with the Community
156
+
157
+ If you have any questions, or if you are experiencing any issues, feel free to [raise an issue](https://github.com/Thinklab-SJTU/pygmtools/issues/new) on GitHub.
158
+
159
+ We also offer the following chat rooms if you are more comfortable with them:
160
+
161
+ * Discord (for English speakers):
162
+
163
+ [![discord](https://discordapp.com/api/guilds/1028701206526304317/widget.png?style=banner2)](https://discord.gg/8m6n7rRz9T)
164
+
165
+ * QQ Group (for Chinese speakers)/QQ群(中文用户): 696401889
166
+
167
+ [![ThinkMatch/pygmtools交流群](http://pub.idqqimg.com/wpa/images/group.png)](https://qm.qq.com/cgi-bin/qm/qr?k=NlPuwwvaFaHzEWD8w7jSOTzoqSLIM80V&jump_from=webapi&authKey=chI2htrWDujQed6VtVid3V1NXEoJvwz3MVwruax6x5lQIvLsC8BmpmzBJOCzhtQd)
168
+
169
+ ## Contributing
170
+ Any contributions/ideas/suggestions from the community is welcomed! Before starting your contribution, please read the
171
+ [Contributing Guide](https://github.com/Thinklab-SJTU/pygmtools/blob/main/CONTRIBUTING.md).
172
+
173
+ ## Developers and Maintainers
174
+
175
+ ``pygmtools`` is currently developed and maintained by members from [ThinkLab](http://thinklab.sjtu.edu.cn) at
176
+ Shanghai Jiao Tong University.
177
+
178
+ ## References
179
+ <!--MLA style references-->
180
+
181
+ [1] Sinkhorn, Richard, and Paul Knopp. "Concerning nonnegative matrices and doubly stochastic matrices." Pacific Journal of Mathematics 21.2 (1967): 343-348.
182
+
183
+ [2] Munkres, James. "Algorithms for the assignment and transportation problems." Journal of the society for industrial and applied mathematics 5.1 (1957): 32-38.
184
+
185
+ [3] Leordeanu, Marius, and Martial Hebert. "A spectral technique for correspondence problems using pairwise constraints." International Conference on Computer Vision (2005).
186
+
187
+ [4] Cho, Minsu, Jungmin Lee, and Kyoung Mu Lee. "Reweighted random walks for graph matching." European conference on Computer vision. Springer, Berlin, Heidelberg, 2010.
188
+
189
+ [5] Leordeanu, Marius, Martial Hebert, and Rahul Sukthankar. "An integer projected fixed point method for graph matching and map inference." Advances in neural information processing systems 22 (2009).
190
+
191
+ [6] Yan, Junchi, et al. "Multi-graph matching via affinity optimization with graduated consistency regularization." IEEE transactions on pattern analysis and machine intelligence 38.6 (2015): 1228-1242.
192
+
193
+ [7] Jiang, Zetian, Tianzhe Wang, and Junchi Yan. "Unifying offline and online multi-graph matching via finding shortest paths on supergraph." IEEE transactions on pattern analysis and machine intelligence 43.10 (2020): 3648-3663.
194
+
195
+ [8] Solé-Ribalta, Albert, and Francesc Serratosa. "Graduated assignment algorithm for multiple graph matching based on a common labeling." International Journal of Pattern Recognition and Artificial Intelligence 27.01 (2013): 1350001.
196
+
197
+ [9] Wang, Runzhong, Junchi Yan, and Xiaokang Yang. "Graduated assignment for joint multi-graph matching and clustering with application to unsupervised graph matching network learning." Advances in Neural Information Processing Systems 33 (2020): 19908-19919.
198
+
199
+ [10] Wang, Runzhong, Junchi Yan, and Xiaokang Yang. "Combinatorial learning of robust deep graph matching: an embedding based approach." IEEE Transactions on Pattern Analysis and Machine Intelligence (2020).
200
+
201
+ [11] Yu, Tianshu, et al. "Learning deep graph matching with channel-independent embedding and hungarian attention." International conference on learning representations. 2019.
202
+
203
+ [12] Wang, Runzhong, Junchi Yan, and Xiaokang Yang. "Neural graph matching network: Learning lawler’s quadratic assignment problem with extension to hypergraph and multiple-graph matching." IEEE Transactions on Pattern Analysis and Machine Intelligence (2021).