Пример #1
0
def get_y_pred(model_path, test_data_path, is_decaf6=False, top_k=1, bagging=False, preprocessing=None):
    model = init(model_path, is_decaf6=is_decaf6)

    target_size = (224, 224)
    if is_decaf6:
        target_size = (227, 227)

    dico = get_dico()
    y_true = []
    y_pred = []
    s = 0
    for t in list(os.walk(test_data_path)):
        s += len(t[2])
    style_names = os.listdir(test_data_path)
    print('Calculating predictions...')
    bar = ProgressBar(max_value=s)
    i = 0
    for style_name in style_names:
        style_path = join(test_data_path, style_name)
        img_names = os.listdir(style_path)
        label = dico.get(style_name)
        for img_name in img_names:
            img = load_img(join(style_path, img_name), target_size=target_size)
            x = img_to_array(img)
            if bagging:
                pred = _bagging_predict(x, model, preprocessing)
            else:
                x = _preprocess_input(x, preprocessing)
                pred = model.predict(x[np.newaxis, ...])
            args_sorted = np.argsort(pred)[0][::-1]
            y_true.append(label)
            y_pred.append([a for a in args_sorted[:top_k]])
            i += 1
            bar.update(i)
    return np.asarray(y_pred), y_true
Пример #2
0
def get_scores_labels(model, test_data_path, is_decaf=False):
    target_size = (224, 224)
    if is_decaf:
        target_size = (227, 227)
    dico = get_dico()
    y = []
    scores = []
    s = 0
    for t in list(os.walk(test_data_path)):
        s += len(t[2])
    style_names = os.listdir(test_data_path)
    print('Calculating predictions...')
    bar = ProgressBar(max_value=s)
    i = 0
    for style_name in style_names:
        style_path = join(test_data_path, style_name)
        img_names = os.listdir(style_path)
        label = dico.get(style_name)
        for img_name in img_names:
            img = load_img(join(style_path, img_name), target_size=target_size)
            x = img_to_array(img)

            pred = model.predict(x[np.newaxis, ...])
            y.append(label)
            scores.append(pred[0])
            i += 1
            bar.update(i)

    index_shuf = range(len(y))
    y = [y[i] for i in index_shuf]
    scores = [scores[i] for i in index_shuf]
    return np.asarray(scores), y
def plot_confusion_matrix(labels, preds):
    conf_arr = confusion_matrix(labels, preds)

    dico = get_dico()

    new_conf_arr = []
    for row in conf_arr:
        new_conf_arr.append(row / sum(row))

    plt.matshow(new_conf_arr)
    plt.yticks(range(25), dico.keys())
    plt.xticks(range(25), dico.keys(), rotation=90)
    plt.colorbar()
    plt.show()
Пример #4
0
def plot_confusion_matrix(labels,preds):
    conf_arr = confusion_matrix(labels, preds)

    dico = get_dico()

    new_conf_arr = []
    for row in conf_arr:
        new_conf_arr.append(row / sum(row))

    plt.matshow(new_conf_arr)
    plt.yticks(range(25), dico.keys())
    plt.xticks(range(25), dico.keys(), rotation=90)
    plt.colorbar()
    plt.savefig('./conf_mat.eps',format='eps', dpi=1000,bbox_inches='tight')
def get_per_class_accuracy(labels, preds):
    names = []
    accs = []
    dico = get_dico()
    inv_dico = invert_dico(dico)
    for value in set(labels):
        s = 0
        n = 0
        for i in range(len(labels)):
            if (labels[i] == value):
                n = n + 1
                if (preds[i] == value):
                    s = s + 1
        names.append(inv_dico.get(value))
        accs.append(s / n * 100, )
    return accs, names
Пример #6
0
def plot_confusion_matrix(labels,preds):
    print("build matrix")
    conf_arr = confusion_matrix(labels, preds)

    dico = get_dico()

    new_conf_arr = []
    for row in conf_arr:
        new_conf_arr.append(row / sum(row))

    plt.matshow(new_conf_arr)
    plt.yticks(range(25), dico.keys())
    plt.xticks(range(25), dico.keys(), rotation=90)
    plt.colorbar()
    plt.show()
    plt.savefig('../../assets/confusion_matrix.png', dpi = 300)
Пример #7
0
def get_pred(model, image_path, is_decaf6=False, top_k=1,bagging=DEFAULT_BAGGING,preprocessing=DEFAULT_PREPROCESSING):
    target_size = (224, 224)
    if is_decaf6:
        target_size = (227, 227)
    img = load_img(image_path, target_size=target_size)
    x = img_to_array(img)
    if bagging:
        pred = _bagging_predict(x, model,preprocessing=preprocessing)
    else:
        x = _preprocess_input(x,preprocessing=preprocessing)
        pred = model.predict(x[np.newaxis, ...])
    dico = get_dico()
    inv_dico = invert_dico(dico)
    args_sorted = np.argsort(pred)[0][::-1]
    preds = [inv_dico.get(a) for a in args_sorted[:top_k]]
    pcts = [pred[0][a] for a in args_sorted[:top_k]]
    return preds,pcts
Пример #8
0
def get_y_pred(model_path, test_data_path,top_k=1):

    model = load_model(model_path)

    target_size =(224,224)

    dico = get_dico()
    y_true = []
    y_pred = []
    s = 0
    for t in list(os.walk(test_data_path)):
        s += len(t[2])
    style_names = os.listdir(test_data_path)
    if '.DS_Store' in style_names:
        style_names.remove('.DS_Store')
    print('Calculating predictions...')
    bar = ProgressBar(max_value=s)
    i = 0
    for style_name in style_names:
        style_path = join(test_data_path, style_name)
        img_names = os.listdir(style_path)
        if '.DS_Store' in img_names:
            img_names.remove('.DS_Store')
        label = dico.get(style_name)
        for img_name in img_names:
            img = load_img(join(style_path, img_name),target_size=target_size)
            x = img_to_array(img)

            #With bagging
            pred = _bagging_predict(style_name, img_name, x,model)

            args_sorted = np.argsort(pred)[0][::-1]
            y_true.append(label)
            y_pred.append([a for a in args_sorted[:top_k]])
            i += 1
            bar.update(i)
    return np.asarray(y_pred), y_true
Пример #9
0
                                       args.data_path,
                                       is_decaf=args.isdecaf)

    n_per_classes = 87
    new_scores = []
    new_labels = []
    for classe in set(labels):
        n_class = 0
        for i, label in enumerate(labels):
            if label == classe and n_class < n_per_classes:
                n_class += 1
                new_scores.append(scores[i, :])
                new_labels.append(label)
    print(len(new_scores), len(new_labels))

    dico = get_dico()
    inv_dico = {v: k for k, v in dico.items()}
    APs = []

    new_scores = np.asarray(new_scores)
    for classe in set(labels):
        temp_labels = []
        for i, label in enumerate(new_labels):
            if label == classe:
                temp_labels.append(1)
            else:
                temp_labels.append(0)
        temp_scores = new_scores[:, classe]
        score = average_precision_score(np.asarray(temp_labels), temp_scores)
        APs.append(score)
        print(np.sum(np.asarray(temp_labels)), len(temp_labels),