Pygmtools: Python图匹配工具

pygmtools: Python Graph Matching Tools

PyPi version PyPI pyversions Downloads Documentation Status codecov discord channel QQ group GitHub stars
News

pygmtools 已在 JMLR 上发表!如果我们的工具对您的研究有帮助,请引用我们的论文


pygmtools (Python 图匹配工具) 提供了 Python 中的图匹配求解器,并且可以通过以下方式轻松访问:

$ pip install pygmtools

官方文档: https://pygmtools.readthedocs.io

源代码: https://github.com/Thinklab-SJTU/pygmtools

图匹配是模式识别、数据挖掘等领域中的一个基础但具有挑战性的问题。图匹配旨在通过解决一个NP难组合优化问题,找到多个图之间的节点到节点的对应关系。

在Python中进行图匹配曾经很困难,而这个库旨在让研究人员的生活更轻松。 值得一提的是,pygmtools 具有以下特点:

  • 支持各种求解器,包括传统的组合求解器(包括线性、二次和多图)以及基于深度学习的新型求解器;

  • 支持多种后端,包括普遍可访问的numpy,以及一些支持GPU的最先进深度学习架构: pytorch, paddle, jittor, tensorflow, mindspore;

  • 深度学习友好,这些操作旨在在计算过程中最好地保留梯度,并支持批量操作以获得最佳性能。

安装

您可以在PyPI上安装稳定版本:

$ pip install pygmtools

或通过运行以下命令获取最新版本:

$ pip install -U https://github.com/Thinklab-SJTU/pygmtools/archive/master.zip # with --user for user install (no root)

现在pygmtools可以使用numpy后端了。

以下包是必需的,并将由pip自动安装:

Python >= 3.8
requests >= 2.25.1
scipy >= 1.4.1
Pillow >= 7.2.0
numpy >= 1.18.5
easydict >= 1.7
appdirs >= 1.4.4
tqdm >= 4.64.1
networkx >= 2.8.8
aiohttp
async-timeout

可用的图匹配求解器

该库为以下求解器提供了用户友好的API:

可用的后端

该库旨在支持具有相同API集的多后端。 请按照官方说明安装您的后端。

以下后端可用:

  • Numpy (默认 后端,仅限CPU)

numpy logo

  • PyTorch (GPU友好,深度学习友好)

pytorch logo

  • Jittor (GPU友好,支持JIT,深度学习友好)

jittor logo

paddle logo

tensorflow logo

开发状态

Numpy

PyTorch

Jittor

PaddlePaddle

Tensorflow

MindSpore

线性求解器

经典求解器

多图求解器

📆

📆

神经求解器

📆

📆

示例图库

📆

📆

✔: 支持; 📆: 计划在未来的版本中实现(欢迎贡献!)。

更多详情,请阅读文档

预训练模型

该库包含多个神经网络求解器。预训练模型应在需要时自动从Google Drive下载。如果您在访问Google Drive时遇到问题,请手动下载预训练模型并将其放置在~/.cache/pygmtools(适用于Linux)。

可获取于: [google drive] [baidu drive]

深度图匹配基准

pygmtools 还配备了多个图匹配基准的标准数据接口。详情请阅读 相应的文档

我们还维护了一个包含深度图匹配模型非平凡实现的存储库,如果您感兴趣,请查看 ThinkMatch

与社区聊天

如果您有任何问题,或者遇到任何问题,请随时在GitHub上提出问题

如果您更喜欢以下聊天室,我们也提供:

  • Discord(针对英语使用者):

    discord
  • QQ Group (for Chinese speakers)/QQ群(中文用户): 696401889

    ThinkMatch/pygmtools交流群

贡献

欢迎社区的任何贡献/想法/建议!在开始您的贡献之前,请阅读 贡献指南

开发者和维护者

pygmtools 由上海交通大学ThinkLab的成员开发和维护。

引用Pygmtools

pygmtools 已发表在《机器学习研究杂志》(JMLR)上。如果您发现我们的工具包对您的研究有帮助,请引用:

Runzhong Wang, Ziao Guo, Wenzheng Pan, Jiale Ma, Yikai Zhang, Nan Yang, Qi Liu, Longxuan Wei, Hanxue Zhang, Chang Liu, Zetian Jiang, Xiaokang Yang, and Junchi Yan.
Pygmtools: A Python Graph Matching Toolkit.
Journal of Machine Learning Research, 25(33):1−7, 2024.

以Bibtex格式:

@article{wang2024pygm,
  author  = {Runzhong Wang and Ziao Guo and Wenzheng Pan and Jiale Ma and Yikai Zhang and Nan Yang and Qi Liu and Longxuan Wei and Hanxue Zhang and Chang Liu and Zetian Jiang and Xiaokang Yang and Junchi Yan},
  title   = {Pygmtools: A Python Graph Matching Toolkit},
  journal = {Journal of Machine Learning Research},
  year    = {2024},
  volume  = {25},
  number  = {33},
  pages   = {1-7},
  url     = {https://jmlr.org/papers/v25/23-0572.html},
}

参考文献

[1] Sinkhorn, Richard, 和 Paul Knopp. “关于非负矩阵和双随机矩阵。” 太平洋数学杂志 21.2 (1967): 343-348.

[2] Munkres, James. “分配和运输问题的算法。” 工业与应用数学学会杂志 5.1 (1957): 32-38.

[3] Leordeanu, Marius, 和 Martial Hebert. “使用成对约束的对应问题的光谱技术。” 国际计算机视觉会议 (2005).

[4] Cho, Minsu, Jungmin Lee, 和 Kyoung Mu Lee. “用于图匹配的重新加权随机游走。” 欧洲计算机视觉会议 (2010).

[5] Leordeanu, Marius, Martial Hebert, 和 Rahul Sukthankar. “一种用于图匹配和地图推理的整数投影固定点方法。” 神经信息处理系统进展 22 (2009).

[6] Yan, Junchi, 等. “通过亲和力优化与渐进一致性正则化的多图匹配.” IEEE 模式分析与机器智能汇刊 38.6 (2015): 1228-1242.

[7] 江泽天, 王天哲, 和严俊驰. “通过超图上的最短路径统一离线和在线多图匹配.” IEEE模式分析与机器智能汇刊 43.10 (2020): 3648-3663.

[8] Solé-Ribalta, Albert, 和 Francesc Serratosa. “基于共同标签的多图匹配的渐进分配算法。” 国际模式识别与人工智能杂志 27.01 (2013): 1350001.

[9] 王润中, 严俊驰, 和杨小康. “通过差异最小化实现多模式图匹配的无监督学习.” IEEE模式分析与机器智能汇刊 45.8 (2023): 10500-10518.

[10] 王润中,严俊驰,和杨晓康。 “组合学习鲁棒深度图匹配:一种基于嵌入的方法。” IEEE模式分析与机器智能汇刊 45.6 (2023): 6984-7000.

[11] Yu, Tianshu, 等. “学习深度图匹配与通道独立嵌入和匈牙利注意力。” 国际学习表示会议. 2019.

[12] 王润中, 严俊驰, 和杨晓康. “神经图匹配网络:学习Lawler的二次分配问题并扩展到超图和多图匹配.” IEEE模式分析与机器智能汇刊 44.9 (2022): 5261-5279.

[13] 王润中, 严俊驰, 和杨晓康. “通过动态嵌入的图编辑距离组合学习.” IEEE/CVF计算机视觉与模式识别会议 (2021): 5241-5250.

官方文档内容