faiss的python接口使用
faiss的python接口使用
- 1. 简介
- 2. 安装
- 3. 示例
1. 简介
faiss是一种ann(Approximate Nearest Neighbor)库,可以用于特征的入库,检索。
不仅可以在cpu上使用,还可以利用GPU进行检索,提高检索的速度。
具体可以参考:https://github.com/facebookresearch/faiss
2. 安装
cpu版本,适用于各个系统
pip install faiss-cpu
cpu + gpu版本,目前不适用于windows系统
pip install faiss-gpu
3. 示例
新建索引
import faiss# 传入特征维度 dim = 2048# IndexFlatIP表示利用内积来比较特征的相似度 # 这里一般会让提取的特征进行L2归一化,那么内积就等于余弦相似度 index_ip = faiss.IndexFlatIP(dim)# IndexFlatL2表示利用L2距离来比较特征的相似度 index_l2 = faiss.IndexFlatL2(dim)
添加特征入库
import numpy as np# 新建一个特征,维度为2048,shape为(1, 2048) feature = np.random.random((1, 2048)).astype('float32') index_ip.add(feature)# 当然,也可以一次性添加多个特征 features = np.random.random((10, 2048)).astype('float32') index_ip.add(features)# 打印index_ip包含的特征数量 print(index_ip.ntotal)
自己指定每个特征的id
在第2步中,添加特征的id是根据特征入库的顺序对应的,如果想自己指定id,可以用IndexIDMap包装一层,代码如下所示:
index_ids = faiss.IndexFlatIP(2048) index_ids = faiss.IndexIDMap(index_ids)# 添加特征,并指定id,注意添加的id类型为int64 ids = 20 feature_ids = np.random.random((1, 2048)).astype('float32') index_ids.add_with_ids(feature_ids, np.array((ids,)).astype('int64'))
这里要注意,包装的索引必须是空的,即一开始新建索引之后,就进行包装,不能入库过一些特征后中途再包装。
检索
feature_search = np.random.random((1, 2048)).astype('float32')# 检索最相似的topK个特征 topK = 5 D, I = index_ip.search(feature_search, topK) # 返回的D表示相似度(或者距离), I表示检索的topK个特征id(索引)
保存/读取索引文件
faiss的另一个优点是,可以将保存着特征的索引持久化,保存为文件,类似数据库,这样就不用每次都提取特征了。
# 保存索引 faiss.write_index(index_ip, 'my.index')# 读取索引 index = faiss.read_index('my.index')
GPU的使用
# 利用单个gpu res = faiss.StandardGpuResources()gpu_index = faiss.index_cpu_to_gpu(res, 0, index_ip)
其他操作可以参考faiss在github上的地址。
结束。
faiss的python接口使用相关推荐
- Faiss(12):python接口faiss.py文件分析
1. 前言 本篇笔记主要分析faiss code下的python接口文件--faiss.py的工作流程以及内容. 2. faiss.py分析 2.1 导入文件 在faiss code 编译完成后,在p ...
- python接口自动化5-Json数据处理
前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...
- 安装mysqldb python接口时找不到mysql_config
我正在尝试使Python脚本在通过ssh连接到的Linux服务器上运行. 该脚本使用mysqldb. 我有我需要的所有其他组件,但是当我尝试通过setuptools安装mySQLdb时,如下所示: p ...
- caffe python接口_ubuntu配置caffe的python接口pycaffe
参考网站: ubuntu配置caffe的python接口pycaffe 依赖 前提caffe已经正确编译.见Ubuntu配置caffe库包sudo apt-get install python-pip ...
- python自动化测试视频百度云-Python接口自动化测试视频教程下载
Python接口自动化测试视频教程下载 课程介绍: 此套Python接口自动化测试视频教程适合入门接口测试和学习python+requests自动化的学员学习,教程对http协议.fiddler抓包与 ...
- python自动化测试视频百度云-Python接口自动化测试 PDF 超清版
给大家带来的一篇关于Python自动化相关的电子书资源,介绍了关于Python.接口自动化.测试方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小61.2 MB,王浩然编写,目前豆瓣.亚马 ...
- python自动化测试视频百度云-python接口自动化测试视频教程全集
python接口自动化测试视频教程全集 下载地址:https://k.weidian.com/Pfm=DyuI 课程内容: 第一章:接口测试基础 1-1 接口自动化课程简介 1-2 接口测试课程大纲 ...
- Caffe学习系列(13):数据可视化环境(python接口)配置
原文有更新: Caffe学习系列(13):数据可视化环境(python接口)配置 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5088399. ...
- caffe预测、特征可视化python接口调用
转载自: 深度学习(九)caffe预测.特征可视化python接口调用 - hjimce的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/hjimce/articl ...
最新文章
- .NET Core如何为项目提供高性能解决方案?
- powerdesigner使用vba脚本创建物理模型的表和列
- Python 基本数据类型、运算符
- 用友软件工程IT应用研究院
- Windows Phone 7中用好Silverlig“.NET研究”ht开发利器
- mysql单表索引个数_MySQL性能:多个表与单个表和分区上的索引
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- 正在爆发的互联网革命
- PHP 根据URL将图片下载到本地(curl爬取)
- QT Opencv 抽奖系统
- 用python做曲_谁在用 python 弹奏一曲《菊花台》
- P、NP、NPC、NP-Hard
- 误删除文件恢复工具免费下载
- 在注视之外:对于认知和认知发展研究,眼动追踪还能揭示什么?
- 基于ssm的酒店客房管理系统(含数据库结构文档)
- Python API+Postman+jmeter
- Mac电脑优点是什么,缺点是什么?
- CSDN怎么改变字体颜色
- pbl和sbl_探讨:PBL教学法
- 如何构建故障与危机的处理能力?《高可用及容灾架构体系化建设》下篇