def get_iou(data_list, class_num, save_path=None): from multiprocessing import Pool from utils.metric import ConfusionMatrix ConfM = ConfusionMatrix(class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() classes = np.array(('background', # always index 0 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')) for i, iou in enumerate(j_list): print('class {:2d} {:12} IU {:.2f}'.format(i, classes[i], j_list[i])) print('meanIOU: ' + str(aveJ) + '\n') if save_path: with open(save_path, 'w') as f: for i, iou in enumerate(j_list): f.write('class {:2d} {:12} IU {:.2f}'.format(i, classes[i], j_list[i]) + '\n') f.write('meanIOU: ' + str(aveJ) + '\n')
def get_iou(data_list, class_num, save_path=None): from multiprocessing import Pool from utils.metric import ConfusionMatrix ConfM = ConfusionMatrix(class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() classes = np.array(( 'background', # always index 0 'REA', 'SRF', 'PED')) for i, iou in enumerate(j_list): print('class {:2d} {:12} IU {:.2f}'.format(i, classes[i], j_list[i])) print('meanIOU: ' + str(aveJ) + '\n') if save_path: with open(save_path, 'w') as f: for i, iou in enumerate(j_list): f.write('class {:2d} {:12} IU {:.2f}'.format( i, classes[i], j_list[i]) + '\n') f.write('meanIOU: ' + str(aveJ) + '\n')
def get_iou(data_list, class_num, dataset, save_path=None): from multiprocessing import Pool from utils.metric import ConfusionMatrix ConfM = ConfusionMatrix(class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() classes = np.array(("road", "sidewalk", "building", "wall", "fence", "pole", "traffic_light", "traffic_sign", "vegetation", "terrain", "sky", "person", "rider", "car", "truck", "bus", "train", "motorcycle", "bicycle")) for i, iou in enumerate(j_list): print('class {:2d} {:12} IU {:.2f}'.format(i, classes[i], 100 * j_list[i])) print('meanIOU: ' + str(aveJ) + '\n') if save_path: with open(save_path, 'w') as f: for i, iou in enumerate(j_list): f.write('class {:2d} {:12} IU {:.2f}'.format( i, classes[i], 100 * j_list[i]) + '\n') f.write('meanIOU: ' + str(aveJ) + '\n') return aveJ
def get_iou(data_list, class_num, dataset, save_path=None): from multiprocessing import Pool from utils.metric import ConfusionMatrix ConfM = ConfusionMatrix(class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() if dataset == 'pascal_voc': classes = np.array(( 'background', # always index 0 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')) elif dataset == 'cityscapes': classes = np.array( ("road", "sidewalk", "building", "wall", "fence", "pole", "traffic_light", "traffic_sign", "vegetation", "terrain", "sky", "person", "rider", "car", "truck", "bus", "train", "motorcycle", "bicycle")) for i, iou in enumerate(j_list): print('class {:2d} {:12} IU {:.2f}'.format(i, classes[i], j_list[i])) print('meanIOU: ' + str(aveJ) + '\n') if save_path: with open(save_path, 'w') as f: for i, iou in enumerate(j_list): f.write('class {:2d} {:12} IU {:.2f}'.format( i, classes[i], j_list[i]) + '\n') f.write('meanIOU: ' + str(aveJ) + '\n') return aveJ
def get_iou(data_list, class_num, save_path=None): ConfM = ConfusionMatrix(class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() #print('meanIOU: ' + str(aveJ) + '\n') if save_path: with open(save_path, 'w') as f: f.write('meanIOU: ' + str(aveJ) + '\n') f.write(str(j_list)+'\n') f.write(str(M)+'\n') return aveJ
args = parse_args() m_list = [] data_list = [] test_ids = [i.strip() for i in open(args.test_ids) if not i.strip() == ''] for index, img_id in enumerate(test_ids): if index % 100 == 0: print('%d processd'%(index)) pred_img_path = os.path.join(args.pred_dir, img_id+'.png') gt_img_path = os.path.join(args.gt_dir, img_id+'.png') pred = cv2.imread(pred_img_path, cv2.IMREAD_GRAYSCALE) gt = cv2.imread(gt_img_path, cv2.IMREAD_GRAYSCALE) # show_all(gt, pred) data_list.append([gt.flatten(), pred.flatten()]) ConfM = ConfusionMatrix(args.class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() with open(args.save_path, 'w') as f: f.write('meanIOU: ' + str(aveJ) + '\n') f.write(str(j_list)+'\n') f.write(str(M)+'\n')
def get_iou(args, data_list, class_num, save_path=None): from multiprocessing import Pool from utils.metric import ConfusionMatrix ConfM = ConfusionMatrix(class_num) f = ConfM.generateM pool = Pool() m_list = pool.map(f, data_list) pool.close() pool.join() for m in m_list: ConfM.addM(m) aveJ, j_list, M = ConfM.jaccard() if args.dataset == 'pascal_voc': classes = np.array(( 'background', # always index 0 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')) elif args.dataset == 'pascal_context': classes = np.array( ('background', 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'table', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor', 'bag', 'bed', 'bench', 'book', 'building', 'cabinet', 'ceiling', 'cloth', 'computer', 'cup', 'door', 'fence', 'floor', 'flower', 'food', 'grass', 'ground', 'keyboard', 'light', 'mountain', 'mouse', 'curtain', 'platform', 'sign', 'plate', 'road', 'rock', 'shelves', 'sidewalk', 'sky', 'snow', 'bedclothes', 'track', 'tree', 'truck', 'wall', 'water', 'window', 'wood')) elif args.dataset == 'cityscapes': classes = np.array( ("road", "sidewalk", "building", "wall", "fence", "pole", "traffic_light", "traffic_sign", "vegetation", "terrain", "sky", "person", "rider", "car", "truck", "bus", "train", "motorcycle", "bicycle")) for i, iou in enumerate(j_list): if j_list[i] > 0: print('class {:2d} {:12} IU {:.2f}'.format(i, classes[i], j_list[i])) print('meanIOU: ' + str(aveJ) + '\n') if save_path: with open(save_path, 'w') as f: for i, iou in enumerate(j_list): f.write('class {:2d} {:12} IU {:.2f}'.format( i, classes[i], j_list[i]) + '\n') f.write('meanIOU: ' + str(aveJ) + '\n')