文章目录
- 前言
- 安装
- 小试牛刀
- 项目延伸
- 总结
前言
Faiss的全称是Facebook AI Similarity Search。
这是一个开源库,针对高维空间中的海量数据,提供了高效且可靠的检索方法。
暴力检索耗时巨大,对于一个要求实时人脸识别的应用来说是不可取的。
而Faiss则为这种场景提供了一套解决方案。
Faiss从两个方面改善了暴力搜索算法存在的问题:降低空间占用加快检索速度首先,
Faiss中提供了若干种方法实现数据压缩,包括PCA、Product-Quantization等
ref:https://zhuanlan.zhihu.com/p/133210698,https://zhuanlan.zhihu.com/p/357414033
代码仓库:https://github.com/facebookresearch/faiss
faiss的用法在这里:https://github.com/facebookresearch/faiss/wiki/Getting-started
ref:https://github.com/ChunelFeng/caiss 据说这个也不错,我还没试,从名字也可以看出来是类似 faiss的东西
ref:https://blog.csdn.net/yaozaiyuanfang/article/details/116608345
ref: https://blog.csdn.net/yaozaiyuanfang/article/details/116608375?spm=1001.2014.3001.5502 —这个总结的也不错
安装
ref:https://anaconda.org/pytorch/faiss-gpu
用的gpu版本,貌似cpu版本也可以使用
安装命令:
conda install -c pytorch faiss-gpu
因为我看着有 -c pytorch, 为了不污染我原来的pytorch环境,所以新建了一个环境:
conda create -n faiss python==3.8
conda install -c pytorch faiss-gpu
其实是我多虑了, -c 是指通道,-c pytorch表示要从名为pytorch的channel中安装faiss-gpu软件包。
所以我又在常用的环境,运行了一下这个命令.
小试牛刀
faiss 是一个快速检索向量的应用,此时我们还需要一个提取特征向量的神经网络。
我选用的是:RepVGG
代码在16仓库的这里:/home/jianming_ge/workplace/zhongwaiyun/Faiss-ytst
import timm
import os
from timm.models.efficientnet import _cfg
# 查看vgg相关的模型
vgg_models = timm.list_models("*vgg*")
# ['repvgg_a2', 'repvgg_b0', 'repvgg_b1', 'repvgg_b1g4', 'repvgg_b2', 'repvgg_b2g4', 'repvgg_b3', 'repvgg_b3g4', 'vgg11', 'vgg11_bn', 'vgg13', 'vgg13_bn', 'vgg16', 'vgg16_bn', 'vgg19', 'vgg19_bn'] repvgg_b3g4 是网络结构最复杂的模型,抽取特征也最好
# weights_path= os.path.join(os.path.dirname(os.path.abspath(__file__)),"weights","repvgg_b3g4-73c370bf.pth")
weights_path= "/home/jianming_ge/workplace/zhongwaiyun/Faiss-ytst/weights/repvgg_b3g4-73c370bf.pth"
config = _cfg(url='', file=weights_path)
#
model = timm.create_model('repvgg_b3g4',pretrained=True,features_only=True,pretrained_cfg=config)
model