global is_draw, output_txt args = GetArgs() input_root = args.input_root output_root = args.output_root is_draw = args.is_draw pool = Pool(int(cpu_count() * 7 / 8)) for input_dir in os.listdir(input_root): input_txt_list = [] input_jpg_list = [] output_jpg_list = [] input_txt_dir = os.path.join(input_root, input_dir, 'txt') input_jpg_dir = os.path.join(input_root, input_dir, 'jpg') input_txt_list += GetFileList(input_txt_dir, ['.txt']) temp_list = GetFileList(input_jpg_dir, ['.jpg']) input_jpg_list += temp_list output_dir = os.path.join(output_root, input_dir) if not os.path.exists(output_dir): os.mkdir(output_dir) if is_draw: output_jpg_dir = os.path.join(output_dir, 'jpg') if not os.path.exists(output_jpg_dir): os.mkdir(output_jpg_dir) for pth in temp_list: complete_path = os.path.join(output_jpg_dir, pth.split('/')[-1]) output_jpg_list.append(complete_path) results = pool.map( get_box_range,
IoU = args.IoU input_txt_root = args.input_root output_txt_root = args.output_root box_range_df = pd.read_csv(args.box_range) box_range_dict = {box_range_df['picture'][i]:[box_range_df['top_left'][i],\ box_range_df['top_right'][i],\ box_range_df['bottom_left'][i],\ box_range_df['bottom_right'][i]]\ for i in range(len(box_range_df))} input_txt_list = [] output_txt_list = [] box_range_list = [] for txt_dir in os.listdir(input_txt_root): input_txt_dir = os.path.join(input_txt_root, txt_dir) temp_list = GetFileList(input_txt_dir, ['.txt']) input_txt_list += temp_list output_txt_dir = os.path.join(output_txt_root, txt_dir) if not os.path.exists(output_txt_dir): os.mkdir(output_txt_dir) for pth in temp_list: complete_path = os.path.join(output_txt_dir, pth.split('/')[-1]) output_txt_list.append(complete_path) jpg_name = pth.split('/')[-1].split('.')[0] + '.jpg' box_range_list.append(box_range_dict[jpg_name]) pool = Pool(int(cpu_count()*7/8)) pool.map(filter_with_box_range, zip(input_txt_list, output_txt_list, box_range_list)) toc = time.clock() print('running time:{:.3f} seconds'.format(toc-tic))
args = parser.parse_args() return args if __name__=='__main__': tic = time.clock() global categories, threshold, vec_num args = get_args() input_root = args.input_root output_dir = args.output_dir input_txt_list = [] for input_dir in os.listdir(input_root): input_txt_dir = os.path.join(input_root, input_dir, 'txt') input_txt_list += GetFileList(input_txt_dir, ['.txt']) num = len(input_txt_list) pool = Pool(int(cpu_count()*7/8)) labels = pool.map(get_labels, input_txt_list) categories = list(set(list(itertools.chain.from_iterable(labels)))) optimal_infs = {ele:5*[0] for ele in categories} for threshold in np.arange(0.1, 1.0, 0.1): results = pool.map(get_label_dict, zip(input_txt_list, [categories]*num, [threshold]*num)) label_infs = {} for ele in categories: label_infs[ele] = sum([label_dict[ele] for label_dict in results]) entropy = get_entropy(label_infs[ele][1:-1]) label_infs[ele] = [threshold] + list(label_infs[ele][1:-1]) + [entropy] if optimal_infs[ele][-1] < entropy:
default=None, type=str) parser.add_argument('-out', dest='cluster_jpg_root', help='output pictures for each cluster', default=None, type=str) if len(sys.argv) == 1: parser.print_help() sys.exit(1) args = parser.parse_args() return args if __name__ == '__main__': tic = time.clock() global cluster_jpg_root, cat_jpg_dir args = get_args() cluster_txt_dir = args.cluster_txt_dir cat_jpg_dir = args.cat_jpg_dir cluster_jpg_root = args.cluster_jpg_root cluster_txt_list = GetFileList(cluster_txt_dir, ['.rois.txt']) pool = Pool(int(cpu_count() * 7 / 8)) pool.map(get_pic_of_cluster, cluster_txt_list) toc = time.clock() print('running time:{:.3f}'.format(toc - tic))
with open(args.cfg_Visualize, 'r') as f: for line in f: infos = line.strip().split('=') conf[infos[0]] = infos[1] categories = conf['cls_names'].split(',') real_txt_list = [] real_jpg_list = [] output_jpg_list = [] real_root = conf['real_root'] output_jpg_root = conf['output_root'] for data_dir in conf['real_dir'].split(','): txt_pth = os.path.join(real_root, data_dir, 'txt') jpg_pth = os.path.join(real_root, data_dir, 'jpg') real_txt_list += GetFileList(txt_pth, ['.txt']) temp_jpg_list = GetFileList(jpg_pth, ['.jpg']) real_jpg_list += temp_jpg_list output_jpg_dir = output_jpg_root for idir in data_dir.split('/'): output_jpg_dir = os.path.join(output_jpg_dir, idir) if not os.path.exists(output_jpg_dir): os.mkdir(output_jpg_dir) for pth in temp_jpg_list: complete_path = os.path.join(output_jpg_dir, 'merged_' + pth.split('/')[-1]) output_jpg_list.append(complete_path) predicted_txt_list = [] predicted_root = conf['predicted_root'] for data_dir in conf['predicted_dir'].split(','):
abs_distance = args.abs_distance unIoU = 1 - args.IoU conf = {} with open(args.cfg_GetOptimalThreshold, 'r') as f: for line in f: infos = line.strip().split('=') conf[infos[0]] = infos[1] categories = conf['cls_names'].split(',') real_txt_list = [] real_root = conf['real_root'] for data_dir in conf['real_dir'].split(','): complete_pth = os.path.join(real_root, data_dir) real_txt_list += GetFileList(complete_pth, ['.txt']) predicted_txt_list = [] predicted_root = conf['predicted_root'] for data_dir in conf['predicted_dir'].split(','): complete_pth = os.path.join(predicted_root, data_dir) predicted_txt_list += GetFileList(complete_pth, ['.txt']) else: if len(sys.argv) == 1: args = GetArgs() categories = ['apple','beer','broccoli','chineseCabbage','cucumber','egg',\ 'eggplant','grape','ham','milk','onion','orange','papaya','pear',\ 'potato','radish','strawberry','tomato','watermelon','whiteradish'] abs_distance = np.inf unIoU = 0.5
if __name__ == '__main__': tic = time.clock() global handle_categories1, handle_categories2, threshold handle_categories1 = ['cucumber', 'eggplant', 'ham'] handle_categories2 = ['Hcucumber','Scucumber','Xcucumber',\ 'Heggplant','Seggplant','Xeggplant',\ 'Hham','Sham','Xham'] args = GetArgs() input_txt_root, output_txt_root = args.input, args.output input_txt_list, output_txt_list = [], [] pool = Pool(int(cpu_count() * 7 / 8)) if args.mode == 'to_hsx': threshold = args.threshold for input_txt_dir in GetFileList(input_txt_root, []): temp_list = GetFileList(input_txt_dir + '/txt', ['.txt']) input_txt_list += temp_list output_txt_dir = output_txt_root for idir in [input_txt_dir.split('/')[-1], 'txt']: output_txt_dir = os.path.join(output_txt_dir, idir) if not os.path.exists(output_txt_dir): os.mkdir(output_txt_dir) for pth in temp_list: complete_path = os.path.join(output_txt_dir, pth.split('/')[-1]) output_txt_list.append(complete_path) pool.map(modify_labels_to_hsx, zip(input_txt_list, output_txt_list)) elif args.mode == 'to_origin': for input_txt_dir in GetFileList(input_txt_root, []):
conf = {} with open(args.cfg_FilterWithThreshold, 'r') as f: for line in f: infos = line.strip().split('=') conf[infos[0]] = infos[1] categories = conf['cls_names'].split(',') input_txt_list = [] output_txt_list = [] input_txt_root = conf['input_txt_root'] output_txt_root = conf['output_txt_root'] for txt_dir in conf['input_txt_dir'].split(','): input_txt_dir = os.path.join(input_txt_root, txt_dir) temp_list = GetFileList(input_txt_dir, ['.txt']) input_txt_list += temp_list output_txt_dir = output_txt_root for idir in txt_dir.split('/'): output_txt_dir = os.path.join(output_txt_dir, idir) if not os.path.exists(output_txt_dir): os.mkdir(output_txt_dir) for pth in temp_list: complete_path = os.path.join(output_txt_dir, pth.split('/')[-1]) output_txt_list.append(complete_path) thre_df = pd.read_csv(conf['optimal_threshold_csv_path']) thre_dict = {categories[i]:thre_df['optimal_threshold'][i] for i in range(len(categories))} else: if len(sys.argv) == 1: args = GetArgs()