本文整理汇总了Python中faiss.IndexFlatL2方法的典型用法代码示例。如果您正苦于以下问题:Python faiss.IndexFlatL2方法的具体用法?Python faiss.IndexFlatL2怎么用?Python faiss.IndexFlatL2使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类faiss
的用法示例。
在下文中一共展示了faiss.IndexFlatL2方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_knn_search
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def test_knn_search(size=10000, gpu_id=None):
x = np.random.rand(size, 512)
x = x.reshape(x.shape[0], -1).astype('float32')
d = x.shape[1]
tic = time.time()
if gpu_id is None:
index = faiss.IndexFlatL2(d)
else:
cfg = faiss.GpuIndexFlatConfig()
cfg.useFloat16 = False
cfg.device = gpu_id
flat_config = [cfg]
resources = [faiss.StandardGpuResources()]
index = faiss.GpuIndexFlatL2(resources[0], d, flat_config[0])
index.add(x)
print('Index built in {} sec'.format(time.time() - tic))
distances, I = index.search(x, 21)
print('Searched in {} sec'.format(time.time() - tic))
print(distances.shape)
print(I.shape)
print(distances[:5])
print(I[:5])
示例2: cluster
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def cluster(vectorized, ncentroids):
import faiss
x = vectorized
niter = 50
verbose = True
d = x.shape[1]
kmeans = faiss.Kmeans(d, ncentroids, niter=niter, verbose=verbose)
kmeans.train(x)
# for i, v in enumerate(kmeans.centroids):
# print(i)
index = faiss.IndexFlatL2(d)
index.add(x)
D, I = index.search(kmeans.centroids, 1)
x_reduced = x[I, :].squeeze()
return x_reduced
示例3: _build_approximate_index
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def _build_approximate_index(self,
data: np.ndarray):
dimensionality = data.shape[1]
nlist = 100 if data.shape[0] > 100 else 2
if self.kernel_name in {'rbf'}:
quantizer = faiss.IndexFlatL2(dimensionality)
cpu_index_flat = faiss.IndexIVFFlat(quantizer, dimensionality, nlist, faiss.METRIC_L2)
else:
quantizer = faiss.IndexFlatIP(dimensionality)
cpu_index_flat = faiss.IndexIVFFlat(quantizer, dimensionality, nlist)
gpu_index_ivf = faiss.index_cpu_to_gpu(self.resource, 0, cpu_index_flat)
gpu_index_ivf.train(data)
gpu_index_ivf.add(data)
self.index = gpu_index_ivf
示例4: train_coarse_quantizer
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def train_coarse_quantizer(data, quantizer_path, num_clusters, hnsw=False, niter=10, cuda=False):
d = data.shape[1]
index_flat = faiss.IndexFlatL2(d)
# make it into a gpu index
if cuda:
res = faiss.StandardGpuResources()
index_flat = faiss.index_cpu_to_gpu(res, 0, index_flat)
clus = faiss.Clustering(d, num_clusters)
clus.verbose = True
clus.niter = niter
clus.train(data, index_flat)
centroids = faiss.vector_float_to_array(clus.centroids)
centroids = centroids.reshape(num_clusters, d)
if hnsw:
quantizer = faiss.IndexHNSWFlat(d, 32)
quantizer.hnsw.efSearch = 128
quantizer.train(centroids)
quantizer.add(centroids)
else:
quantizer = faiss.IndexFlatL2(d)
quantizer.add(centroids)
faiss.write_index(quantizer, quantizer_path)
示例5: initialize_celeb
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def initialize_celeb(self):
print("Initializing celebrity network...")
with CustomObjectScope({'relu6': keras.layers.ReLU(6.),
'DepthwiseConv2D': keras.layers.DepthwiseConv2D,
'lifted_struct_loss': lifted_struct_loss,
'triplet_loss': triplet_loss}):
self.siameseNet = keras.models.load_model(os.path.join(self.siamesepath, "feature_model.h5"))
self.siameseNet._make_predict_function()
##### Read celebrity features
celebrity_features = self.siamesepath + os.sep + "features_" + self.celeb_dataset + ".h5"
print("Reading celebrity data from {}...".format(celebrity_features))
with h5py.File(celebrity_features, "r") as h5:
celeb_features = np.array(h5["features"]).astype(np.float32)
self.path_ends = list(h5["path_ends"])
self.celeb_files = [os.path.join(self.visualization_path, s.decode("utf-8")) for s in self.path_ends]
print("Building index...")
self.celeb_index = faiss.IndexFlatL2(celeb_features.shape[1])
self.celeb_index.add(celeb_features)
示例6: create_tree
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def create_tree(data,approx,metric,use_faiss,n_trees):
'''
Create a faiss/cKDTree/KDTree/annoy index for nearest neighbour lookup. All undescribed input
as in ``bbknn.bbknn()``. Returns the resulting index.
Input
-----
data : ``numppy.array``
PCA coordinates of a batch's cells to index.
'''
if approx:
ckd = AnnoyIndex(data.shape[1],metric=metric)
for i in np.arange(data.shape[0]):
ckd.add_item(i,data[i,:])
ckd.build(n_trees)
elif metric == 'euclidean':
if 'faiss' in sys.modules and use_faiss:
ckd = faiss.IndexFlatL2(data.shape[1])
ckd.add(data)
else:
ckd = cKDTree(data)
else:
ckd = KDTree(data,metric=metric)
return ckd
示例7: recover_closest_one_dataset
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def recover_closest_one_dataset(feature_matrix_all, image_paths, save_path, n_image_samples=10, n_closest=3):
"""
Provide sample recoveries.
Args:
feature_matrix_all: np.ndarray [n_samples x embed_dim], full data embedding of test samples.
image_paths: list [n_samples], list of datapaths corresponding to <feature_matrix_all>
save_path: str, where to store sample image.
n_image_samples: Number of sample recoveries.
n_closest: Number of closest recoveries to show.
Returns:
Nothing!
"""
image_paths = np.array([x[0] for x in image_paths])
sample_idxs = np.random.choice(np.arange(len(feature_matrix_all)), n_image_samples)
faiss_search_index = faiss.IndexFlatL2(feature_matrix_all.shape[-1])
faiss_search_index.add(feature_matrix_all)
_, closest_feature_idxs = faiss_search_index.search(feature_matrix_all, n_closest+1)
sample_paths = image_paths[closest_feature_idxs][sample_idxs]
f,axes = plt.subplots(n_image_samples, n_closest+1)
for i,(ax,plot_path) in enumerate(zip(axes.reshape(-1), sample_paths.reshape(-1))):
ax.imshow(np.array(Image.open(plot_path)))
ax.set_xticks([])
ax.set_yticks([])
if i%(n_closest+1):
ax.axvline(x=0, color='g', linewidth=13)
else:
ax.axvline(x=0, color='r', linewidth=13)
f.set_size_inches(10,20)
f.tight_layout()
f.savefig(save_path)
plt.close()
####### RECOVER CLOSEST EXAMPLE IMAGES #######
示例8: recover_closest_inshop
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def recover_closest_inshop(query_feature_matrix_all, gallery_feature_matrix_all, query_image_paths, gallery_image_paths, save_path, n_image_samples=10, n_closest=3):
"""
Provide sample recoveries.
Args:
query_feature_matrix_all: np.ndarray [n_query_samples x embed_dim], full data embedding of query samples.
gallery_feature_matrix_all: np.ndarray [n_gallery_samples x embed_dim], full data embedding of gallery samples.
query_image_paths: list [n_samples], list of datapaths corresponding to <query_feature_matrix_all>
gallery_image_paths: list [n_samples], list of datapaths corresponding to <gallery_feature_matrix_all>
save_path: str, where to store sample image.
n_image_samples: Number of sample recoveries.
n_closest: Number of closest recoveries to show.
Returns:
Nothing!
"""
query_image_paths, gallery_image_paths = np.array(query_image_paths), np.array(gallery_image_paths)
sample_idxs = np.random.choice(np.arange(len(query_feature_matrix_all)), n_image_samples)
faiss_search_index = faiss.IndexFlatL2(gallery_feature_matrix_all.shape[-1])
faiss_search_index.add(gallery_feature_matrix_all)
_, closest_feature_idxs = faiss_search_index.search(query_feature_matrix_all, n_closest)
image_paths = gallery_image_paths[closest_feature_idxs]
image_paths = np.concatenate([query_image_paths.reshape(-1,1), image_paths],axis=-1)
sample_paths = image_paths[closest_feature_idxs][sample_idxs]
f,axes = plt.subplots(n_image_samples, n_closest+1)
for i,(ax,plot_path) in enumerate(zip(axes.reshape(-1), sample_paths.reshape(-1))):
ax.imshow(np.array(Image.open(plot_path)))
ax.set_xticks([])
ax.set_yticks([])
if i%(n_closest+1):
ax.axvline(x=0, color='g', linewidth=13)
else:
ax.axvline(x=0, color='r', linewidth=13)
f.set_size_inches(10,20)
f.tight_layout()
f.savefig(save_path)
plt.close()
示例9: compute_cluster_assignment
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def compute_cluster_assignment(centroids, x):
assert centroids is not None, "should train before assigning"
d = centroids.shape[1]
index = faiss.IndexFlatL2(d)
index.add(centroids)
distances, labels = index.search(x, 1)
return labels.ravel()
示例10: build_nn_index
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def build_nn_index(self, database):
'''
:param database: numpy array of Nx3
:return: Faiss index, in CPU
'''
index = faiss.IndexFlatL2(self.dimension) # dimension is 3
index.add(database)
return index
示例11: build_nn_index
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def build_nn_index(self, database):
'''
:param database: numpy array of Nx3
:return: Faiss index, in CPU
'''
# index = faiss.GpuIndexFlatL2(self.res, self.dimension, self.flat_config) # dimension is 3
index_cpu = faiss.IndexFlatL2(self.dimension)
index = faiss.index_cpu_to_gpu(self.res, self.opt.gpu_id, index_cpu)
index.add(database)
return index
示例12: main
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def main():
index_dirs = [
'../exp/v2clean/feats_index19_ms_L2_ep4_freqthresh-3_loss-arcface_verifythresh-30/']
test_dirs = [
'../exp/v2clean/feats_test19_ms_L2_ep4_freqthresh-3_loss-arcface_verifythresh-30/']
train_dirs = [
'../exp/v2clean/feats_train_ms_L2_ep4_freqthresh-3_loss-arcface_verifythresh-30/']
ids_index, feats_index = utils.prepare_ids_and_feats(index_dirs, normalize=True)
ids_test, feats_test = utils.prepare_ids_and_feats(test_dirs, normalize=True)
ids_train, feats_train = utils.prepare_ids_and_feats(train_dirs, normalize=True)
print('build index...')
cpu_index = faiss.IndexFlatL2(feats_index.shape[1])
gpu_index = faiss.index_cpu_to_all_gpus(cpu_index)
gpu_index.add(feats_index)
dists, topk_idx = gpu_index.search(x=feats_test, k=100)
print('query search done.')
subm = pd.DataFrame(ids_test, columns=['id'])
subm['images'] = np.apply_along_axis(' '.join, axis=1, arr=ids_index[topk_idx])
subm = reranking_submission(ids_index, feats_index,
ids_test, feats_test,
ids_train, feats_train,
subm, topk=100)
output_name = ROOT + f'output/submit_retrieval.csv.gz'
subm[['id', 'images']].to_csv(output_name, compression='gzip', index=False)
print('saved to ' + output_name)
cmd = f'kaggle c submit -c landmark-retrieval-2019 -f {output_name} -m "" '
print(cmd)
subprocess.run(cmd, shell=True)
示例13: get_df_and_dists
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def get_df_and_dists(topk=100):
test_dirs = [
ROOT + 'exp/v19c/feats_test19_ms_L2_ep4_scaleup_ep3_freqthresh-2_loss-cosface_pooling-G,G,G,G_verifythresh-30/',
ROOT + 'exp/v20c/feats_test19_ms_L2_ep5_augmentation-middle_epochs-7_freqthresh-3_loss-arcface_verifythresh-30/',
ROOT + 'exp/v21c/feats_test19_ms_L2_ep6_scaleup_ep5_augmentation-middle_epochs-7_freqthresh-3_loss-arcface_verifythresh-30/',
ROOT + 'exp/v22c/feats_test19_ms_L2_ep4_scaleup_ep3_base_margin-0.4_freqthresh-2_verifythresh-30/',
ROOT + 'exp/v23c/feats_test19_ms_L2_ep6_scaleup_ep5_augmentation-middle_epochs-7_freqthresh-3_verifythresh-30/',
ROOT + 'exp/v24c/feats_test19_ms_L2_ep5_augmentation-middle_epochs-7_freqthresh-3_loss-cosface_verifythresh-30/',
]
train_dirs = [
ROOT + 'exp/v19c/feats_train_ms_L2_ep4_scaleup_ep3_freqthresh-2_loss-cosface_pooling-G,G,G,G_verifythresh-30/',
ROOT + 'exp/v20c/feats_train_ms_L2_ep5_augmentation-middle_epochs-7_freqthresh-3_loss-arcface_verifythresh-30/',
ROOT + 'exp/v21c/feats_train_ms_L2_ep6_scaleup_ep5_augmentation-middle_epochs-7_freqthresh-3_loss-arcface_verifythresh-30/',
ROOT + 'exp/v22c/feats_train_ms_L2_ep4_scaleup_ep3_base_margin-0.4_freqthresh-2_verifythresh-30/',
ROOT + 'exp/v23c/feats_train_ms_L2_ep6_scaleup_ep5_augmentation-middle_epochs-7_freqthresh-3_verifythresh-30/',
ROOT + 'exp/v24c/feats_train_ms_L2_ep5_augmentation-middle_epochs-7_freqthresh-3_loss-cosface_verifythresh-30/',
]
weights = [
0.5,
1.0,
1.0,
0.5,
1.0,
1.0,
]
logger.info('load ids and features.')
ids_test, feats_test = utils.prepare_ids_and_feats(test_dirs, weights, normalize=True)
ids_train, feats_train = utils.prepare_ids_and_feats(train_dirs, weights, normalize=True)
logger.info('done.')
logger.info('build index...')
cpu_index = faiss.IndexFlatL2(feats_train.shape[1])
cpu_index.add(feats_train)
dists, topk_idx = cpu_index.search(x=feats_test, k=topk)
logger.info('query search done.')
df = pd.DataFrame(ids_test, columns=['id'])
df['images'] = np.apply_along_axis(' '.join, axis=1, arr=ids_train[topk_idx])
return df, dists
示例14: euclidean_search_test
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def euclidean_search_test(fn_npy):
ds = load_train_ensemble_dataset()
cpu_index = faiss.IndexFlatL2(ds[f'feats_train'].shape[1])
cpu_index.add(ds[f'feats_train'])
_, all_ranks = cpu_index.search(x=ds[f'feats_test'], k=100)
Path(fn_npy).parent.mkdir(parents=True, exist_ok=True)
np.save(fn_npy, all_ranks)
示例15: __init__
# 需要导入模块: import faiss [as 别名]
# 或者: from faiss import IndexFlatL2 [as 别名]
def __init__(self, database, method):
super().__init__(database, method)
self.index = {'cosine': faiss.IndexFlatIP,
'euclidean': faiss.IndexFlatL2}[method](self.D)
if os.environ.get('CUDA_VISIBLE_DEVICES'):
print('CUDA', os.environ.get('CUDA_VISIBLE_DEVICES'))
self.index = faiss.index_cpu_to_all_gpus(self.index)
self.add()