gt_save_map = np.argmax(gt_save_mask,axis=-1) save = True if save: pred_dir = os.path.join(model_folder, 'pred_{}'.format(subset)) generate_folder(pred_dir) for pi, fn in enumerate(test_ids): imsave(pred_dir+'/{}'.format(fn), pr_save_map[pi,:,:]) io.imsave(model_folder+'/pr_{}.png'.format(fn.split('.')[0]), pr_save_map[pi,:,:]) y_true=gt_save_map.flatten(); y_pred = pr_save_map.flatten() cf_mat = confusion_matrix(y_true, y_pred) prec_scores = []; recall_scores = []; f1_scores = []; iou_scores=[] for i in range(cf_mat.shape[0]): prec_scores.append(precision(i,cf_mat)) recall_scores.append(recall(i,cf_mat)) f1_scores.append(f1_score(i,cf_mat)) print('Precision:{:.4f},{:,.4f},{:.4f}'.format(prec_scores[0], prec_scores[1], prec_scores[2])) print('mean precision: {:.4f}\n'.format(np.mean(prec_scores))) print('Recall:{:.4f},{:,.4f},{:.4f}'.format(recall_scores[0], recall_scores[1], recall_scores[2])) print('mean recall:{:.4f}\n'.format(np.mean(recall_scores))) # f1 score print('f1-score (pixel):{:.4f},{:,.4f},{:.4f}'.format(f1_scores[0],f1_scores[1],f1_scores[2])) print('mean f1-score (pixel):{:.4f}\n'.format(np.mean(f1_scores))) with open(result_dir+'/{}_summary_{}.txt'.format(subset, epoch), 'w+') as f: # save iou and dice f.write('iou_classes: {:.4f},{:.4f},{:.4f}; mIoU: {:.4f}'.format(iou_classes[0],iou_classes[1],iou_classes[2], mIoU)) f.write('dice_classes: {:.4f},{:.4f},{:.4f}; mDice: {:.4f}'.format(dice_classes[0],dice_classes[1],dice_classes[2], mDice)) # save confusion matrix f.write('confusion matrix:\n') np.savetxt(f, cf_mat, fmt='%-7d')
gt_maps=gt_maps[:,offset1:offset2,offset1:offset2] pr_maps=pr_maps[:,offset1:offset2,offset1:offset2] print('PSP output: {}'.format(pr_maps.shape)) y_true=gt_maps.flatten(); y_pred = pr_maps.flatten() cf_mat = confusion_matrix(y_true, y_pred) cf_mat_reord = np.zeros(cf_mat.shape) cf_mat_reord[1:,1:]=cf_mat[:3,:3];cf_mat_reord[0,1:]=cf_mat[3,0:3]; cf_mat_reord[1:,0]=cf_mat[0:3,3] cf_mat_reord[0,0] = cf_mat[3,3] print('Confusion matrix:') print(cf_mat_reord) prec_scores = []; recall_scores = []; f1_scores = []; iou_scores=[] for i in range(cf_mat.shape[0]): prec_scores.append(precision(i,cf_mat_reord)) recall_scores.append(recall(i,cf_mat_reord)) f1_scores.append(f1_score(i,cf_mat_reord)) print('Precision:{:.4f},{:,.4f},{:.4f},{:.4f}'.format(prec_scores[0], prec_scores[1], prec_scores[2], prec_scores[3])) print('Recall:{:.4f},{:,.4f},{:.4f},{:.4f}'.format(recall_scores[0], recall_scores[1], recall_scores[2], recall_scores[3])) # f1 score print('f1-score (pixel):{:.4f},{:,.4f},{:.4f},{:.4f}'.format(f1_scores[0],f1_scores[1],f1_scores[2],f1_scores[3])) print('mean f1-score (pixel):{:.4f}'.format(np.mean(f1_scores))) with open(model_folder+'/metric_summary.txt','w+') as f: # save iou and dice for metric, value in zip(metrics, scores[1:]): f.write("mean {}: {:.5}\n".format(metric.__name__, value)) # save confusion matrix f.write('confusion matrix:\n') np.savetxt(f, cf_mat_reord, fmt='%-7d') # save precision f.write('precision:{:.4f},{:,.4f},{:.4f},{:.4f}\n'.format(prec_scores[0], prec_scores[1], prec_scores[2], prec_scores[3]))
cf_mat = confusion_matrix(y_true, y_pred) cf_mat_reord = np.zeros(cf_mat.shape) cf_mat_reord[1:, 1:] = cf_mat[:3, :3] cf_mat_reord[0, 1:] = cf_mat[3, 0:3] cf_mat_reord[1:, 0] = cf_mat[0:3, 3] cf_mat_reord[0, 0] = cf_mat[3, 3] print('Confusion matrix:') print(cf_mat_reord) prec_scores = [] recall_scores = [] f1_scores = [] iou_scores = [] for i in range(cf_mat.shape[0]): prec_scores.append(precision(i, cf_mat_reord)) recall_scores.append(recall(i, cf_mat_reord)) f1_scores.append(f1_score(i, cf_mat_reord)) print('Precision:{:.4f},{:,.4f},{:.4f},{:.4f}'.format( prec_scores[0], prec_scores[1], prec_scores[2], prec_scores[3])) print('Recall:{:.4f},{:,.4f},{:.4f},{:.4f}'.format(recall_scores[0], recall_scores[1], recall_scores[2], recall_scores[3])) # f1 score print('f1-score (pixel):{:.4f},{:,.4f},{:.4f},{:.4f}'.format( f1_scores[0], f1_scores[1], f1_scores[2], f1_scores[3])) print('mean f1-score (pixel):{:.4f}'.format(np.mean(f1_scores))) with open(result_dir + '/{}_summary_{}.txt'.format(subset, epoch), 'w+') as f: # save iou and dice f.write( 'iou_classes: {:.4f},{:.4f},{:.4f},{:.4f}; mIoU: {:.4f}\n'.format(