Exemplo n.º 1
0
import pickle
import numpy as np

dataset = 'vrd'
if dataset == 'vrd':
    from open_relation.dataset.vrd.label_hier.obj_hier import objnet
else:
    from open_relation.dataset.vg.label_hier.obj_hier import objnet

# prepare label maps
org2wn = objnet.raw2wn()
label2index = objnet.label2index()
index2label = objnet.index2label()

# evaluation result
e_p_path = 'e_p.bin'
e_p_list = pickle.load(open(e_p_path, 'rb'))

# cal acc for each class
e_freq = dict()
e_acc = dict()

# prediction matrix : expected -> prediction
mat2org = [label2index[i] for i in org2wn.keys()]
org2mat = dict()
for i, org in enumerate(mat2org):
    org2mat[org] = i
e_p_mat = np.zeros((len(mat2org), len(mat2org)))

for e_p in e_p_list:
    if e_p[0] not in e_acc:

def eval4(label_vecs, label2index, label1, label2):
    ind1 = label2index[label1]
    ind2=  label2index[label2]
    vec1 = label_vecs[ind1]
    vec2 = label_vecs[ind2]
    sub = vec1 - vec2
    sub[sub < 0] = 0
    sub_square = sub * sub
    E = np.sqrt(np.sum(sub_square))
    print('P( %s , %s ) = %.2f' % (label1, label2, E))



if __name__ == '__main__':
    # label vectors
    weight_path = data_config.extra_config[target].config['label_vec_path']
    label_vec_file = h5py.File(weight_path, 'r')
    label_vecs = np.array(label_vec_file['label_vec'])

    # label mapping
    label2index = classnet.label2index()
    index2label = classnet.index2label()
    raw2wn = classnet.raw2wn()

    eval2(label_vecs, index2label, label2index, raw2wn)
    # eval3(label_vecs, index2label, label2index, raw2wn, 'jeans')
    # eval4(label_vecs, label2index, 'shirt', 'garment.n.01')
    # objnet.get_node_by_name('person').show_hyper_paths()