def generate_data(data_path, out_path, ignore_sample_path=None, benchmark='cv', dataset='test'): if ignore_sample_path != None: with open(ignore_sample_path, 'r') as f: ignore_samples = [line.strip() + '.skeleton' for line in f.readlines()] else: ignore_samples = [] sample_name = [] sample_label = [] for filename in os.listdir(data_path): if filename in ignore_samples: continue action_class = int(filename[filename.find('A') + 1:filename.find('A') + 4]) subject_id = int(filename[filename.find('P') + 1:filename.find('P') + 4]) camera_id = int(filename[filename.find('C') + 1:filename.find('C') + 4]) if benchmark == 'cv': training = (camera_id in training_cameras) elif benchmark == 'cs': training = (subject_id in training_subjects) else: raise ValueError() if dataset == 'train': training = training elif dataset == 'test': training = not training else: raise ValueError() if training: sample_name.append(filename) sample_label.append(action_class - 1) if dataset == 'train': sample_name, val_name, sample_label, val_label = train_test_split(sample_name, sample_label, test_size=0.05, random_state=10000) with open('{}/val_label.pkl'.format(out_path), 'wb') as f: pickle.dump((val_name, list(val_label)), f) f_data = open_memmap('{}/val_data.npy'.format(out_path), dtype='float32', mode='w+', shape=(len(val_label), 3, max_frame, num_joint, max_body)) for idx, s in enumerate(val_name): print_output(idx * 1.0 / len(val_label), '({:>5}/{:<5}) Processing {:>5}-{:<5} data: ' .format(idx + 1, len(val_name), benchmark, 'val')) data = read_xyz(os.path.join(data_path, s), max_body=max_body, num_joint=num_joint) f_data[idx, :, 0:data.shape[1], :, :] = data with open('{}/{}_label.pkl'.format(out_path, dataset), 'wb') as f: pickle.dump((sample_name, list(sample_label)), f) f_data = open_memmap('{}/{}_data.npy'.format(out_path, dataset), dtype='float32', mode='w+', shape=(len(sample_label), 3, max_frame, num_joint, max_body)) for idx, s in enumerate(sample_name): print_output(idx * 1.0 / len(sample_label), '({:>5}/{:<5}) Processing {:>5}-{:<5} data: ' .format(idx + 1, len(sample_name), benchmark, dataset)) data = read_xyz(os.path.join(data_path, s), max_body=max_body, num_joint=num_joint) f_data[idx, :, 0:data.shape[1], :, :] = data sys.stdout.write('\n')
def gendata(data_path, out_path, ignored_sample_path=None, benchmark='xview', part='eval'): if ignored_sample_path != None: with open(ignored_sample_path, 'r') as f: ignored_samples = [ line.strip() + '.skeleton' for line in f.readlines() ] else: ignored_samples = [] sample_name = [] sample_label = [] for filename in os.listdir(data_path): if filename in ignored_samples: continue action_class = int( filename[filename.find('A') + 1:filename.find('A') + 4]) subject_id = int( filename[filename.find('P') + 1:filename.find('P') + 4]) camera_id = int( filename[filename.find('C') + 1:filename.find('C') + 4]) if benchmark == 'xview': istraining = (camera_id in training_cameras) elif benchmark == 'xsub': istraining = (subject_id in training_subjects) else: raise ValueError() if part == 'train': issample = istraining elif part == 'val': issample = not (istraining) else: raise ValueError() if issample: sample_name.append(filename) sample_label.append(action_class - 1) with open('{}/{}_label.pkl'.format(out_path, part), 'wb') as f: pickle.dump((sample_name, list(sample_label)), f) # np.save('{}/{}_label.npy'.format(out_path, part), sample_label) fp = open_memmap( '{}/{}_data.npy'.format(out_path, part), dtype='float32', mode='w+', shape=(len(sample_label), 3, max_frame, num_joint, max_body)) for i, s in enumerate(sample_name): print_toolbar(i * 1.0 / len(sample_label), '({:>5}/{:<5}) Processing {:>5}-{:<5} data: '.format( i + 1, len(sample_name), benchmark, part)) data = read_xyz( os.path.join(data_path, s), max_body=max_body, num_joint=num_joint) fp[i, :, 0:data.shape[1], :, :] = data end_toolbar()
def gendata(data_path, out_path, ignored_sample_path=None, benchmark='xview', part='eval'): if ignored_sample_path != None: with open(ignored_sample_path, 'r') as f: ignored_samples = [ line.strip() + '.skeleton' for line in f.readlines() ] else: ignored_samples = [] sample_name = [] sample_label = [] for filename in os.listdir(data_path): if filename in ignored_samples: continue action_class = int( filename[filename.find('A') + 1:filename.find('A') + 4]) subject_id = int( filename[filename.find('P') + 1:filename.find('P') + 4]) camera_id = int( filename[filename.find('C') + 1:filename.find('C') + 4]) if benchmark == 'xview': istraining = (camera_id in training_cameras) elif benchmark == 'xsub': istraining = (subject_id in training_subjects) else: raise ValueError() if part == 'train': issample = istraining elif part == 'val': issample = not (istraining) else: raise ValueError() if issample: sample_name.append(filename) sample_label.append(action_class - 1) with open('{}/{}_label.pkl'.format(out_path, part), 'w') as f: pickle.dump((sample_name,list(sample_label)), f) # np.save('{}/{}_label.npy'.format(out_path, part), sample_label) fp = open_memmap( '{}/{}_data.npy'.format(out_path, part), dtype='float32', mode='w+', shape=(len(sample_label), 3, max_frame, num_joint, max_body)) for i, s in enumerate(sample_name): print_toolbar(i * 1.0 / len(sample_label), '({:>5}/{:<5}) Processing {:>5}-{:<5} data: '.format( i + 1, len(sample_name), benchmark, part)) data = read_xyz( os.path.join(data_path, s), max_body=max_body, num_joint=num_joint) fp[i, :, 0:data.shape[1], :, :] = data end_toolbar()
def make_data_ntu(origin_path, output_path, benchmark, part): # ignore sample if ignore_sample_path != None: with open(ignore_sample_path, 'r') as f: ignored_sample = [ line.strip() + '.skeleton' for line in f.readlines() ] else: ignored_sample = [] sample_name = [] sample_label = [] # start for filename in os.listdir(origin_path): # pass: ignore sample if filename in ignored_sample: continue action_class = int(filename[filename.find('A') + 1:filename.find('A') + 4]) subject_id = int(filename[filename.find('P') + 1:filename.find('P') + 4]) camera_id = int(filename[filename.find('C') + 1:filename.find('C') + 4]) # xsub or xview if benchmark == 'xview': istraining = (camera_id in training_cameras) elif benchmark == 'xsub': istraining = (subject_id in training_subjects) else: raise ValueError() # train or test if part == 'train': issample = istraining elif part == 'test': issample = not (istraining) else: raise ValueError() if issample: # storage: data name sample_name.append(filename) # storage: label sample_label.append(action_class - 1) # store: label with open('{}/{}_label.pkl'.format(output_path, part), 'wb') as f: pickle.dump((sample_name, list(sample_label)), f) # store: data fp = open_memmap('{}/{}_joint.npy'.format(output_path, part), dtype='float32', mode='w+', shape=(len(sample_label), 3, max_frame, num_joint, max_body)) for i, s in enumerate(sample_name): print_toolbar( i * 1.0 / len(sample_label), '({:>5}/{:<5}) Writing {:>5}-{:<5} data: '.format( i + 1, len(sample_name), benchmark, part)) data = read_xyz(os.path.join(origin_path, s), max_body=max_body, num_joint=num_joint) fp[i, :, 0:data.shape[1], :, :] = data end_toolbar()
def gendata(data_path, out_path, ignored_sample_path=None, benchmark='xview', part='eval'): if ignored_sample_path != None: with open(ignored_sample_path, 'r') as f: ignored_samples = [ line.strip() + '.skeleton' for line in f.readlines() ] else: ignored_samples = [] sample_name = [] sample_label = [] for filename in os.listdir(data_path): if filename in ignored_samples: continue action_class = int(filename[filename.find('A') + 1:filename.find('A') + 4]) subject_id = int(filename[filename.find('P') + 1:filename.find('P') + 4]) camera_id = int(filename[filename.find('C') + 1:filename.find('C') + 4]) if benchmark == 'xview': istraining = (camera_id in training_cameras) elif benchmark == 'xsub': istraining = (subject_id in training_subjects) else: raise ValueError() if part == 'train': issample = istraining elif part == 'val': issample = not (istraining) else: raise ValueError() ####OVERIDING FOR ZERO SHOT if part == 'train' and action_class in unseen_classes: issample = False if part == 'val' and action_class in unseen_classes: issample = True ###################TODO: SO in our train seen classes split we only include this 2 subjects and cameras and only seen classes, but ########for test data we include the remaining classes of all cameras and subjects irrespective #### SO DURING TRAINING IF YOU FIND THAT UNSEEN CLASS JUST NEGLECT IT DON"T EVEN LOOK AT CAMERAS AND SUBJECTS, AND DURING TEST DATA, IF YOU #### FIND THE UNSEEN CLASSES INCLUDE THEM NO MATTER WHAT THERE CAMERA AND SUBJECT ID IS ...... if issample: sample_name.append(filename) sample_label.append(action_class - 1) with open('{}/{}_label.pkl'.format(out_path, part), 'wb') as f: pickle.dump((sample_name, list(sample_label)), f) # np.save('{}/{}_label.npy'.format(out_path, part), sample_label) fp = open_memmap('{}/{}_data.npy'.format(out_path, part), dtype='float32', mode='w+', shape=(len(sample_label), 3, max_frame, num_joint, max_body)) for i, s in enumerate(sample_name): print_toolbar( i * 1.0 / len(sample_label), '({:>5}/{:<5}) Processing {:>5}-{:<5} data: '.format( i + 1, len(sample_name), benchmark, part)) data = read_xyz(os.path.join(data_path, s), max_body=max_body, num_joint=num_joint) fp[i, :, 0:data.shape[1], :, :] = data end_toolbar()
def gendata(data_path, out_path, ignored_sample_path=None, benchmark='xview', part='eval'): if ignored_sample_path != None: with open(ignored_sample_path, 'r') as f: ignored_samples = [ line.strip() + '.skeleton' for line in f.readlines() ] else: ignored_samples = [] sample_name = [] sample_label = [] pdb.set_trace() for filename in os.listdir(data_path): if filename in ignored_samples: continue action_class = int(filename[filename.find('A') + 1:filename.find('A') + 4]) subject_id = int(filename[filename.find('P') + 1:filename.find('P') + 4]) camera_id = int(filename[filename.find('C') + 1:filename.find('C') + 4]) if benchmark == 'xview': istraining = (camera_id in training_cameras) elif benchmark == 'xsub': istraining = (subject_id in training_subjects) else: raise ValueError() ###CHECKS IF THE FILE IS PART OF TRANING DATA OR TEST DATA ###################TODO: SO in our train seen classes split we only include this 2 subjects and cameras and only seen classes, but ########for test data we include the remaining classes of all cameras and subjects irrespective #### SO DURING TRAINING IF YOU FIND THAT UNSEEN CLASS JUST NEGLECT IT DON"T EVEN LOOK AT CAMERAS AND SUBJECTS, AND DURING TEST DATA, IF YOU #### FIND THE UNSEEN CLASSES INCLUDE THEM NO MATTER WHAT THERE CAMERA AND SUBJECT ID IS ...... ######TODO IMP.....WE NEED TO ENSURE THIS HAPPENS AND WE STORE IN THE SAME ORDER FOR FEATURES AS WELL #### THIS IS NOT AN ISSUE BECAUSE FOR FINDING FEATURES IT READS THE FILE NAME STORED IN THE LABELS ACCORDINGLY if part == 'train': issample = istraining elif part == 'val': issample = not (istraining) else: raise ValueError() if issample: sample_name.append(filename) sample_label.append(action_class - 1) ####SUBTRACTING -1 from the action class ####TILL NOW U READ ALL THE ACTION LABELS APPEND THE FILE NAME AND THE ACTION IN A LIST AND SAVE IT AS A PICKE FILE with open('{}/{}_label.pkl'.format(out_path, part), 'wb') as f: pickle.dump((sample_name, list(sample_label)), f) # np.save('{}/{}_label.npy'.format(out_path, part), sample_label) pdb.set_trace() fp = open_memmap('{}/{}_data.npy'.format(out_path, part), dtype='float32', mode='w+', shape=(len(sample_label), 3, max_frame, num_joint, max_body)) ###fp is just a numpy array for i, s in enumerate(sample_name): print_toolbar( i * 1.0 / len(sample_label), '({:>5}/{:<5}) Processing {:>5}-{:<5} data: '.format( i + 1, len(sample_name), benchmark, part)) data = read_xyz(os.path.join(data_path, s), max_body=max_body, num_joint=num_joint) ####data.shape = (3, 178, 25, 2) ###so if there frames less then 300, then the remaining ones are assigned 0 fp[i, :, 0:data.shape[1], :, :] = data end_toolbar()