def itml_cmc(features, train_idxs, query_idxs, camId, gallery_idxs, labels): N, m = features[train_idxs].shape # features[train_idxs][:1000, ].shape eigvals, eigvecs = calc_eig_pca_small(features[train_idxs].T, m, N) m = 50 m_eigvecs = eigvecs[:, :m] avg_face = compute_avg_face(features[train_idxs].T) phi = features - avg_face m_features = np.dot(phi, m_eigvecs) itml = ITML_Supervised(verbose=True, num_constraints=5000, gamma=0.2) X = m_features[train_idxs] Y = labels[train_idxs] X_itml = itml.fit_transform(X, Y) M = itml.metric() nn_idx_mat = evaluation( knn, features=m_features, gallery_idxs=gallery_idxs, query_idxs=query_idxs, camId=camId, labels=labels, metric='mahalanobis', metric_params={'VI': M} ) return plot_CMC(nn_idx_mat, query_idxs, labels)
def main(): # Get training file name from the command line traindatafile = sys.argv[1] # The training file is in libSVM format tr_data = load_svmlight_file(traindatafile) Xtr = tr_data[0].toarray() # Converts sparse matrices to dense Ytr = tr_data[1] # The trainig labels Indices_array = np.arange(Ytr.shape[0]) np.random.shuffle(Indices_array) Xtr = Xtr[Indices_array] Xtr = Xtr[:6000] Ytr = Ytr[Indices_array] Ytr = Ytr[:6000] itml = ITML_Supervised() itml.fit(Xtr, Ytr) Met = itml.metric() # print Met; np.save("itml_model.npy", Met)
def get_metric(): ad=pd.read_csv('ad_feature.csv',header=0,sep='\t') data=ad.values m=np.array([[.0,.0,.0],[.0,.0,.0],[.0,.0,.0]]) itml = ITML_Supervised(num_constraints=200) for i in range(6): data_r=np.array(random.sample(data.tolist(),int(len(data)/300))) x=data_r[:,[2,3,4]] y=data_r[:,1] itml.fit(x,y) m=m+itml.metric() m=m/6 return m
def test_itml_supervised(self): seed = np.random.RandomState(1234) itml = ITML_Supervised(num_constraints=200) itml.fit(self.X, self.y, random_state=seed) L = itml.transformer_ assert_array_almost_equal(L.T.dot(L), itml.metric())
def main(): print("importing data...") data = loadmat('assets/cuhk03_new_protocol_config_labeled.mat') with open('assets/feature_data.json') as f: features = ujson.load(f) print("data imported") features = np.array(features) train_idxs = data['train_idx'].flatten() - 1 query_idxs = data['query_idx'].flatten() - 1 camId = data['camId'].flatten() gallery_idxs = data['gallery_idx'].flatten() - 1 labels = data['labels'].flatten() N, m = features[train_idxs].shape # features[train_idxs][:1000, ].shape eigvals, eigvecs = calc_eig_pca_small(features[train_idxs].T, m, N) m = 50 m_eigvecs = eigvecs[:, :m] avg_face = compute_avg_face(features[train_idxs].T) phi = features - avg_face m_features = np.dot(phi, m_eigvecs) itml = ITML_Supervised(verbose=True, num_constraints=5000, gamma=0.1) X = m_features[train_idxs] Y = labels[train_idxs] X_itml = itml.fit_transform(X, Y) M = itml.metric() plot_3d(X_itml, Y) nn_idx_mat = evaluation(knn, features=m_features, gallery_idxs=gallery_idxs, query_idxs=query_idxs, camId=camId, labels=labels, metric='mahalanobis', metric_params={'VI': M}) acc = get_all_rank_acc(nn_idx_mat, query_idxs, labels) print("Accuracy:") print(acc) test_set_idxs = np.append(gallery_idxs, query_idxs) features_ITML = itml.transform(m_features) X_test = features_ITML[test_set_idxs] Y_test = labels[test_set_idxs] n_cluster = np.unique(Y_test).size nmi_kmean, acc_kmean = evaluation_k_means(X_test, n_cluster, Y_test) print("ITML k-means accuracy (test set):") print(acc_kmean) gamma = [i / 10 for i in range(1, 11)] X_itmls = [] all_rank_acc_g = [] for g in gamma: itml = ITML_Supervised(verbose=True, num_constraints=5000, gamma=0.2) X = m_features[train_idxs] X_itml = itml.fit_transform(X, Y) X_itmls.append(X_itml) M = itml.metric() nn_idx_mat = evaluation(knn, features=m_features, gallery_idxs=gallery_idxs, query_idxs=query_idxs, camId=camId, labels=labels, metric='mahalanobis', metric_params={'VI': M}) acc_g = get_all_rank_acc(nn_idx_mat, query_idxs, labels) all_rank_acc_g.append(acc_g) plt.plot(gamma, all_rank_acc_g) plt.legend(('Rank 1', 'Rank 5', 'Rank10')) plt.ylabel('Accuracy') plt.xlabel('gamma') print(all_rank_acc_g) plt.show()
def gettestData(): # Get testing file name from the command line testdatafile = sys.argv[2] # The testing file is in libSVM format ts_data = load_svmlight_file(testdatafile) Xts = ts_data[0].toarray() # Converts sparse matrices to dense Yts = ts_data[1] # The trainig labels return Xts, Yts # get training data Xtr, Ytr = gettrainData() # get testing data Xts, Yts = gettestData() # Taking only a fraction of data. i.e. 1/4th Xtr = Xtr[:len(Xtr)//4] Ytr = Ytr[:len(Ytr)//4] itml = ITML_Supervised(num_constraints=1000) # learning itml.fit(Xtr, Ytr) # Get the learnt metric M = itml.metric() # Metric saved np.save("model.npy", M)
def test_itml_supervised(self): seed = np.random.RandomState(1234) itml = ITML_Supervised(num_constraints=200) itml.fit(self.X, self.y, random_state=seed) L = itml.transformer() assert_array_almost_equal(L.T.dot(L), itml.metric())