コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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
コード例 #4
0
 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())
コード例 #5
0
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()
コード例 #6
0
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)
コード例 #7
0
 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())