In [1]:
import ibeis
import vtool
import utool
import numpy as np
import numpy.linalg as npl
np.set_printoptions(precision=2)
In [2]:
ibeis.ensure_pz_mtest()
ibs = ibeis.opendb('PZ_MTEST')
In [3]:
taids = ibs.get_valid_aids()
tvecs_list = ibs.get_annot_desc(taids)
tvec_list = np.vstack(tvecs_list)
print(len(tvecs_list))
print(len(tvec_list))
In [4]:
#import pyflann
#flann = pyflann.FLANN()
#help(flann.kmeans)
#centroids = flann.kmeans(tvec_list, num_clusters=1000, max_iterations=100)
In [5]:
labels, words = vtool.clustering.precompute_akmeans(tvec_list, 1000, 30, cache_dir='.')
In [6]:
print(words.shape)
In [7]:
help(vtool.nearest_neighbors.flann_cache)
In [8]:
help(vtool.clustering.precompute_akmeans)
In [9]:
centroid_flann = vtool.nearest_neighbors.flann_cache(words, cache_dir='.', flann_params={})
In [10]:
indexes, dists = centroid_flann.nn_index(tvec_list, 1)
print(indexes.shape)
In [11]:
wx2_tvec = utool.group_items(tvec_list.tolist(), indexes.tolist())
In [12]:
word_index = list(wx2_tvec.keys())[0]
vecs = np.array(wx2_tvec[word_index], dtype=np.float64)
word = np.array(words[word_index], dtype=np.float64)
residuals = np.array([word - vec for vec in vecs])
residuals_n = vtool.linalg.normalize_rows(residuals)
#print(vecs)
#print(residuals)
print(residuals_n)
print(residuals_n.shape)
print((residuals_n ** 2).sum(-1))
#print(word)
In [13]:
# Compare each residual vec to all others in this word index
rvecs = residuals_n
similarity_matrix = (rvecs.dot(rvecs.T))
print(similarity_matrix)
print(similarity_matrix.shape)
In [13]:
In [13]:
In [13]:
In [13]:
In [13]:
In [13]: