def meta_script_saveNpzScorePerShot_normalized(params,out_dir_scores,out_dir_actual): mani=TubeHash_Manipulator(params['path_to_db']); mani.openSession(); vals=mani.select((Tube.class_idx_pascal,Tube.video_id,Tube.shot_id),distinct=True); mani.closeSession() print len(vals) args=[]; for idx,(class_idx,video_id,shot_id) in enumerate(vals): params_curr = copy.deepcopy(params); params_curr['class_idx'] = class_idx params_curr['video_id'] = video_id params_curr['shot_id'] = shot_id file_curr = str(params_curr['class_idx'])+'_'+str(params_curr['video_id'])+'_'+str(params_curr['shot_id'])+'.p'; params_curr['out_file_scores'] = os.path.join(out_dir_scores,file_curr) params_curr['idx'] = idx; if os.path.exists(params_curr['out_file_scores']): # continue; # else: params_curr['out_file_scores']=os.path.join(out_dir_actual,file_curr) args.append(params_curr); print len(args) # args=args[3000:]; print len(args) n_jobs=12 p = multiprocessing.Pool(min(multiprocessing.cpu_count(),n_jobs)) p.map(script_saveNpzScorePerShot_normalized,args);
def getScoreForIdx(table_idx, path_to_db, class_idx_pascal=None, npz_path=None, n_jobs=1, total_counts=None): mani = Tube_Manipulator(path_to_db) mani.openSession() mani_hash = TubeHash_Manipulator(path_to_db) mani_hash.openSession() toSelect = (Tube.class_idx_pascal, Tube.video_id, Tube.img_path) criterion = (Tube.idx == table_idx, ) [(class_idx_gt, video_idx, frame_path)] = mani.select(toSelect, criterion) if class_idx_pascal is not None: class_idx = class_idx_pascal else: class_idx = class_idx_gt toSelect = (TubeHash.hash_table, TubeHash.hash_val) criterion = (TubeHash.idx == table_idx, ) hash_table_info = mani_hash.select(toSelect, criterion) print len(hash_table_info) mani_hash.closeSession() mani.closeSession() args = [] for hash_table_no in range(len(hash_table_info)): hash_table = hash_table_info[hash_table_no][0] hash_val = hash_table_info[hash_table_no][1] if npz_path is not None: args.append((npz_path, hash_table, hash_val, class_idx, video_idx, class_idx_gt, total_counts)) else: args.append((path_to_db, hash_table, hash_val, class_idx, video_idx, class_idx_gt)) if n_jobs > 1: p = multiprocessing.Pool(min(multiprocessing.cpu_count(), n_jobs)) if npz_path is not None: scores = p.map(getScoreForHashValFromNpz, args) else: scores = p.map(getScoreForHashVal, args) else: scores = [] for arg in args: if npz_path is not None: scores.append(getScoreForHashValFromNpz(arg)) else: scores.append(getScoreForHashVal(arg)) return scores, class_idx_gt, frame_path
def getScoreForIdx(table_idx,path_to_db,class_idx_pascal=None,npz_path=None,n_jobs=1,total_counts=None): mani=Tube_Manipulator(path_to_db); mani.openSession(); mani_hash=TubeHash_Manipulator(path_to_db); mani_hash.openSession(); toSelect = (Tube.class_idx_pascal,Tube.video_id,Tube.img_path) criterion = (Tube.idx==table_idx,); [(class_idx_gt,video_idx,frame_path)] = mani.select(toSelect,criterion) if class_idx_pascal is not None: class_idx=class_idx_pascal; else: class_idx=class_idx_gt toSelect=(TubeHash.hash_table,TubeHash.hash_val); criterion=(TubeHash.idx==table_idx,) hash_table_info=mani_hash.select(toSelect,criterion); print len(hash_table_info); mani_hash.closeSession(); mani.closeSession(); args=[]; for hash_table_no in range(len(hash_table_info)): hash_table=hash_table_info[hash_table_no][0]; hash_val=hash_table_info[hash_table_no][1]; if npz_path is not None: args.append((npz_path,hash_table,hash_val,class_idx,video_idx,class_idx_gt,total_counts)); else: args.append((path_to_db,hash_table,hash_val,class_idx,video_idx,class_idx_gt)); if n_jobs>1: p = multiprocessing.Pool(min(multiprocessing.cpu_count(),n_jobs)) if npz_path is not None: scores=p.map(getScoreForHashValFromNpz,args) else: scores=p.map(getScoreForHashVal,args) else: scores=[]; for arg in args: if npz_path is not None: scores.append(getScoreForHashValFromNpz(arg)); else: scores.append(getScoreForHashVal(arg)); return scores,class_idx_gt,frame_path
def getHashInfoForImg(path_to_db,img_path): mani=Tube_Manipulator(path_to_db); mani.openSession(); #get patch id patch_id=mani.select((Tube.idx,),(Tube.img_path==img_path,)); assert len(patch_id)==1; patch_id=patch_id[0][0]; mani.closeSession(); #get hash vals mani_hash=TubeHash_Manipulator(path_to_db); mani_hash.openSession(); toSelect=(TubeHash.hash_table,TubeHash.hash_val) criterion=(TubeHash.idx==patch_id,); hash_info_patch=mani_hash.select(toSelect,criterion); mani_hash.closeSession(); return hash_info_patch
def getHashInfoForImg(path_to_db, img_path): mani = Tube_Manipulator(path_to_db) mani.openSession() #get patch id patch_id = mani.select((Tube.idx, ), (Tube.img_path == img_path, )) assert len(patch_id) == 1 patch_id = patch_id[0][0] mani.closeSession() #get hash vals mani_hash = TubeHash_Manipulator(path_to_db) mani_hash.openSession() toSelect = (TubeHash.hash_table, TubeHash.hash_val) criterion = (TubeHash.idx == patch_id, ) hash_info_patch = mani_hash.select(toSelect, criterion) mani_hash.closeSession() return hash_info_patch
def script_saveHashTableDensities(hash_table, path_to_db, out_file): mani_hash = TubeHash_Manipulator(path_to_db) mani_hash.openSession() toSelect = (TubeHash.hash_val, ) criterion = (TubeHash.hash_table == hash_table, ) hash_vals = mani_hash.select(toSelect, criterion) mani_hash.closeSession() hash_vals = [hash_val[0] for hash_val in hash_vals] hash_vals = np.array(hash_vals, dtype=np.uint8) hash_dict = {} for val_curr in np.unique(hash_vals): hash_dict[val_curr] = (hash_vals == val_curr).sum() pickle.dump(hash_dict, open(out_file, 'wb'))
def script_saveHashTableDensities(hash_table,path_to_db,out_file): mani_hash=TubeHash_Manipulator(path_to_db); mani_hash.openSession(); toSelect=(TubeHash.hash_val,); criterion=(TubeHash.hash_table==hash_table,); hash_vals=mani_hash.select(toSelect,criterion); mani_hash.closeSession(); hash_vals=[hash_val[0] for hash_val in hash_vals]; hash_vals=np.array(hash_vals,dtype=np.uint8); hash_dict={}; for val_curr in np.unique(hash_vals): hash_dict[val_curr]=(hash_vals==val_curr).sum(); pickle.dump(hash_dict,open(out_file,'wb'));
def meta_script_saveNpzScorePerShot_normalized(params, out_dir_scores, out_dir_actual): mani = TubeHash_Manipulator(params['path_to_db']) mani.openSession() vals = mani.select((Tube.class_idx_pascal, Tube.video_id, Tube.shot_id), distinct=True) mani.closeSession() print len(vals) args = [] for idx, (class_idx, video_id, shot_id) in enumerate(vals): params_curr = copy.deepcopy(params) params_curr['class_idx'] = class_idx params_curr['video_id'] = video_id params_curr['shot_id'] = shot_id file_curr = str(params_curr['class_idx']) + '_' + str( params_curr['video_id']) + '_' + str(params_curr['shot_id']) + '.p' params_curr['out_file_scores'] = os.path.join(out_dir_scores, file_curr) params_curr['idx'] = idx if os.path.exists(params_curr['out_file_scores']): # continue; # else: params_curr['out_file_scores'] = os.path.join( out_dir_actual, file_curr) args.append(params_curr) print len(args) # args=args[3000:]; print len(args) n_jobs = 12 p = multiprocessing.Pool(min(multiprocessing.cpu_count(), n_jobs)) p.map(script_saveNpzScorePerShot_normalized, args)