前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10 亿图片仅需 17.7微秒:Facebook AI 实验室开源图像搜索工具Faiss

10 亿图片仅需 17.7微秒:Facebook AI 实验室开源图像搜索工具Faiss

作者头像
新智元
发布2018-03-27 15:16:49
1.9K0
发布2018-03-27 15:16:49
举报
文章被收录于专栏:新智元

【新智元导读】Facebook的 FAIR 最新开源了一个用于有效的相似性搜索和稠密矢量聚类的库,名为 Faiss,在10亿图像数据集上的一次查询仅需17.7 微秒,比此前的方法准确度略高,而且快 8.5 倍。

Faiss 是由 Facebook AI Research(FAIR)开发的一个用于有效的相似性搜索(similarity search)和稠密矢量聚类(clustering of dense vectors)的库。它包含了在任何大小的向量集合里进行搜索的算法,向量集合的大小甚至可以达到装不进 RAM。它还包含了用于评估和参数调优的支持代码。Faiss 是用 C ++编写的,带有 Python / numpy 的完整包装。其中最有用的一些算法是在 GPU 上实现的。

我们比较了 Wieschollek et al. 在 Sift1B 数据集的10 亿 SIFT 图像特征,其中 nq = 104。我们比较了相同内存使用情况下的搜索效果,以得到类似的精确度(更精确的方法可能需要更多搜索时间或更大的内存使用)。在单个 GPU 上,每个向量大小是 m= 8 bytes,我们的结果是 R@10 = 0.376,每个查询向量需 17.7 µs。而在作比较的研究中,R@10 = 0.35,每个查询向量需 150 µs。也就是说,我们的实现准确度更高,而且速度是它的 8.5 倍。

介绍

Faiss 包含了几种用于相似性搜索的方法。它假定示例可以被表示为向量,以及可以通过整数识别,并且这些向量可以与 L2 位距或点积进行比较。与一个查询向量(query vector)相似的向量是具有最低 L2 位距或最高点积的查询向量。Faiss 还支持余弦相似性(cosine similarity),因为这是在标准化向量上的点积。

大多数方法,例如基于二元向量和紧凑量化代码的方法,仅使用向量的压缩表征,并不需要保留原始向量。这通常会导致搜索的准确度降低,但是这些方法可以再单个服务器上的主存储器中扩展到数十亿个向量。

GPU 上的实现可以接受来自 CPU 或 GPU 存储器的输入。在装有 GPU 的服务器上,GPU 索引可以被用作 CPU 索引的插入替换(例如,使用 GpuIndexFlatL2 替换 IndexFlatL2),并且可以自动处理发往/来自 GPU 存储器的副本。

构建

这个库基本上是用 C++ 实现的,带有可选的通过 CUDA 提供的 GPU 支持,以及一个可选的 Python 接口。使用 Makefile 进行编译。详细信息可参见INSTALL:https://github.com/facebookresearch/faiss/blob/master/INSTALL

Faiss 如何工作

Faiss 是围绕存储了一个向量集的索引类型(index type)构建的,并且提供利用 L2 和/或点积向量比较在其中进行搜索的函数。有些索引类型是简单的基线,例如精确搜索。大多数可用的索引结构都对应了一下的几点权衡:

  • 搜索时间
  • 搜索质量
  • 每个索引向量使用的内存大小
  • 训练时间
  • 无监督训练对外部数据的需求

获取 Faiss 的完整文档

  • 完整文档(包括一个指南)可以参阅 GitHub 的 wiki 页:http://github.com/facebookresearch/faiss/wiki
  • doxygen 文档提供了每个类的信息:http://rawgithub.com/facebookresearch/faiss/master/docs/html/annotated.html
  • 重现本研究论文的结果,可以参考基准 README:https://github.com/facebookresearch/faiss/blob/master/benchs/README.md

论文地址:https://arxiv.org/pdf/1702.08734.pdf

开源地址:https://github.com/facebookresearch/faiss

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档