如何应用超过一百万个向量与其他一百万个向量的相似性算法(或比较)?

数据挖掘 Python 计算机视觉 相似 opencv
2021-09-21 03:06:20

如何应用超过一百万个向量与另外一百万个向量的相似性算法(或比较)?

我正在关注这个 pyimage 搜索教程,但是当我有数百万张图像要比较时,我不知道如何扩大算法。就像将超过 100 万张图像与其他 100 万张图像的相似度进行比较。它在 100000 处因内存不足错误而停止。

2个回答

您可能想看看这个项目FAISS

Faiss 是一个用于高效相似性搜索和密集向量聚类的库。它包含在任意大小的向量集中搜索的算法,直到那些可能不适合 RAM 的向量。

它有很好的包装器供您在 Python 中使用。查看wiki以获取有关如何将其集成到应用程序中的示例。

它在构建时考虑了可伸缩性,支持数百万向量的索引和比较,并且可以在 CPU 或 GPU 上运行。

您可能可以使用Dask来执行此操作。

Dask 原生扩展 Python。Dask 为分析提供高级并行性,为您喜爱的工具实现大规模性能

Dask 将安排您的计算,以便您不会耗尽内存,然后为您提供计算结果。它支持数据科学堆栈中的许多库,包括scikit-learnpandasnumpy