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
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()
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
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)
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
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
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),