Esempio n. 1
0
def main():

    return
    path_to_db = 'sqlite://///disk2/novemberExperiments/experiments_youtube/patches_nn_hash.db'
    mani = Tube_Manipulator(path_to_db)
    mani_hash = TubeHash_Manipulator(path_to_db)

    mani.openSession()
    deep_features_path_all = mani.select((Tube.deep_features_path, ),
                                         distinct=True)
    deep_features_path_all = [x[0] for x in deep_features_path_all]

    print len(deep_features_path_all)
    # print deep_features_path_all[:10]

    mani_hash.openSession()

    for idx_deep_features_path, deep_features_path in enumerate(
            deep_features_path_all[11:]):
        t = time.time()
        hash_file = deep_features_path[:-4] + '_hash.npy'
        print hash_file
        idx_info = mani.select(
            (Tube.idx, Tube.deep_features_idx),
            (Tube.deep_features_path == deep_features_path, ))
        # idx_all,deep_features_idx_all=zip(*idx_info);
        hash_vals = np.load(hash_file)
        # print len(idx_all),hash_vals.shape
        for idx_foreign, row in idx_info:
            # hash_vals_curr=hash_vals[row];
            for hash_table, hash_val in enumerate(hash_vals[row]):
                # pass;
                # print type(idx_foreign),type(hash_table),type(int(hash_val))
                mani_hash.insert(idx=idx_foreign,
                                 hash_table=hash_table,
                                 hash_val=int(hash_val),
                                 commit=False)

        if idx_deep_features_path % 10 == 0:
            mani_hash.session.commit()

        # print time.time()-t;

    mani_hash.closeSession()
    mani.closeSession()
Esempio n. 2
0
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
Esempio n. 3
0
def getInfoForFeatureExtractionForVideo(path_to_db,video_info,numberOfFrames):
    info_for_extraction=[];
    mani=Tube_Manipulator(path_to_db);
    mani.openSession();
    for pascal_id in video_info:
        video_ids=video_info[pascal_id];
        for video_id in video_ids:
            info=mani.select((Tube.img_path,Tube.class_id_pascal,Tube.deep_features_path,Tube.deep_features_idx),(Tube.video_id==video_id,Tube.class_id_pascal==pascal_id),distinct=True,limit=numberOfFrames);
            info_for_extraction=info_for_extraction+info;
    mani.closeSession();
    return info_for_extraction
Esempio n. 4
0
def getTubePathsForShot(path_to_db,class_id_pascal,video_id,shot_id,frame_to_choose='middle'):
    mani=Tube_Manipulator(path_to_db);
    
    mani.openSession();
    frame_ids=mani.select((Tube.frame_id,),(Tube.class_id_pascal==class_id_pascal,Tube.shot_id==shot_id,Tube.video_id==video_id),distinct=True);
    
    frame_ids=[frame_id[0] for frame_id in frame_ids];
    frame_ids.sort();
    
    if frame_to_choose=='middle':
        middle_idx=len(frame_ids)/2;
        frame_id=frame_ids[middle_idx];
    else:
        frame_id=0;

    paths=mani.select((Tube.img_path,),(Tube.class_id_pascal==class_id_pascal,Tube.shot_id==shot_id,Tube.video_id==video_id,Tube.frame_id==frame_id),distinct=True);
    paths=[path[0] for path in paths];

    mani.closeSession();
    return paths;
Esempio n. 5
0
def main():
    


    return
    path_to_db='sqlite://///disk2/novemberExperiments/experiments_youtube/patches_nn_hash.db';
    mani=Tube_Manipulator(path_to_db);
    mani_hash=TubeHash_Manipulator(path_to_db);
    
    mani.openSession();
    deep_features_path_all=mani.select((Tube.deep_features_path,),distinct=True);
    deep_features_path_all=[x[0] for x in deep_features_path_all];
    
    print len(deep_features_path_all);
    # print deep_features_path_all[:10]

    mani_hash.openSession();
    
    for idx_deep_features_path,deep_features_path in enumerate(deep_features_path_all[11:]):
        t=time.time();
        hash_file=deep_features_path[:-4]+'_hash.npy';
        print hash_file
        idx_info=mani.select((Tube.idx,Tube.deep_features_idx),(Tube.deep_features_path==deep_features_path,));
        # idx_all,deep_features_idx_all=zip(*idx_info);
        hash_vals=np.load(hash_file);
        # print len(idx_all),hash_vals.shape
        for idx_foreign,row in idx_info:
            # hash_vals_curr=hash_vals[row];
            for hash_table,hash_val in enumerate(hash_vals[row]):
                # pass;
                # print type(idx_foreign),type(hash_table),type(int(hash_val))
                mani_hash.insert(idx=idx_foreign,hash_table=hash_table,hash_val=int(hash_val),commit=False);
        
        if idx_deep_features_path%10==0:
            mani_hash.session.commit();

        # print time.time()-t;

    mani_hash.closeSession();
    mani.closeSession();
def saveTotalClassBreakdowns(path_to_db,out_file):
    mani=Tube_Manipulator(path_to_db);
    mani.openSession();
    toSelect=(Tube.class_idx_pascal,Tube.video_id,Tube.shot_id,Tube.tube_id);
    vals=mani.select(toSelect,distinct=True);
    mani.closeSession();
    vals=np.array(vals);
    class_idx_db=vals[:,0];
    ids_db=vals[:,1:];

    column_names=['video','shot','tube'];
    counts=getClassCountsByIdType(class_idx_db,ids_db,column_names)
    pickle.dump(counts,open(out_file,'wb'));
Esempio n. 7
0
def saveTotalClassBreakdowns(path_to_db, out_file):
    mani = Tube_Manipulator(path_to_db)
    mani.openSession()
    toSelect = (Tube.class_idx_pascal, Tube.video_id, Tube.shot_id,
                Tube.tube_id)
    vals = mani.select(toSelect, distinct=True)
    mani.closeSession()
    vals = np.array(vals)
    class_idx_db = vals[:, 0]
    ids_db = vals[:, 1:]

    column_names = ['video', 'shot', 'tube']
    counts = getClassCountsByIdType(class_idx_db, ids_db, column_names)
    pickle.dump(counts, open(out_file, 'wb'))
Esempio n. 8
0
def getNVideosByPascalIds(path_to_db,pascal_ids,numberofVideos):
    
    dict_out={};

    mani=Tube_Manipulator(path_to_db);
    mani.openSession();
    for pascal_id in pascal_ids:
        total_ids=mani.select((Tube.video_id,),(Tube.class_id_pascal==pascal_id,),distinct=True,limit=numberofVideos);
        total_ids=[total_id[0] for total_id in total_ids];
        # random.shuffle(total_ids);
        # selected_ids=total_ids[:numberofVideos];
        dict_out[pascal_id]=total_ids;
    mani.closeSession();
    return dict_out
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
Esempio n. 10
0
def script_saveBigFeatureMats(params):
    out_file_featureMats_pre = params.out_file_featureMats_pre
    out_file_meta_pre = params.out_file_meta_pre
    path_to_db = params.path_to_db
    out_file_paths = params.out_file_paths
    num_batches = params.num_batches

    if not os.path.exists(out_file_paths):
        mani = Tube_Manipulator(path_to_db)
        mani.openSession()
        paths_to_features = mani.select((Tube.deep_features_path, ),
                                        distinct=True)
        paths_to_features = [path_curr[0] for path_curr in paths_to_features]
        mani.closeSession()

        random.shuffle(paths_to_features)
        pickle.dump(paths_to_features, open(out_file_paths, 'wb'))

    paths_to_features = pickle.load(open(out_file_paths, 'rb'))
    paths_to_features.sort()

    batch_size = len(paths_to_features) / num_batches
    idxRange = util.getIdxRange(len(paths_to_features), batch_size)
    print len(idxRange), idxRange[-1]

    # start_idx=0;

    for start_idx in range(len(idxRange) - 1):
        out_file_curr = out_file_featureMats_pre + '_' + str(
            start_idx) + '.npz'
        out_file_meta_curr = out_file_meta_pre + '_' + str(start_idx) + '.p'
        print start_idx, idxRange[start_idx], idxRange[
            start_idx + 1], out_file_curr, out_file_meta_curr,
        paths_to_features_curr = paths_to_features[
            idxRange[start_idx]:idxRange[start_idx + 1]]

        t = time.time()

        train, shape_record = getGiantFeaturesMatGPU(paths_to_features_curr)
        train = np.array(train)

        np.savez(out_file_curr, train)
        pickle.dump([paths_to_features_curr, shape_record],
                    open(out_file_meta_curr, 'wb'))
        print time.time() - t
        break
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
Esempio n. 12
0
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
Esempio n. 13
0
def script_saveBigFeatureMats(params):
    out_file_featureMats_pre=params.out_file_featureMats_pre
    out_file_meta_pre=params.out_file_meta_pre
    path_to_db=params.path_to_db
    out_file_paths=params.out_file_paths
    num_batches=params.num_batches

    if not os.path.exists(out_file_paths):
        mani=Tube_Manipulator(path_to_db);
        mani.openSession()
        paths_to_features=mani.select((Tube.deep_features_path,),distinct=True);
        paths_to_features=[path_curr[0] for path_curr in paths_to_features];
        mani.closeSession();

        random.shuffle(paths_to_features);
        pickle.dump(paths_to_features,open(out_file_paths,'wb'));

    paths_to_features=pickle.load(open(out_file_paths,'rb'));
    paths_to_features.sort();

    batch_size=len(paths_to_features)/num_batches;
    idxRange=util.getIdxRange(len(paths_to_features),batch_size);
    print len(idxRange),idxRange[-1];

    # start_idx=0;
    
    for start_idx in range(len(idxRange)-1):
        out_file_curr=out_file_featureMats_pre+'_'+str(start_idx)+'.npz';
        out_file_meta_curr=out_file_meta_pre+'_'+str(start_idx)+'.p';
        print start_idx,idxRange[start_idx],idxRange[start_idx+1],out_file_curr,out_file_meta_curr,
        paths_to_features_curr=paths_to_features[idxRange[start_idx]:idxRange[start_idx+1]]
        

        t=time.time();
        
        train,shape_record=getGiantFeaturesMatGPU(paths_to_features_curr);
        train=np.array(train);
        
        np.savez(out_file_curr,train);
        pickle.dump([paths_to_features_curr,shape_record],open(out_file_meta_curr,'wb'))
        print time.time()-t
        break
Esempio n. 14
0
def getInfoForExtractionForTube(path_to_db,pascal_id,video_id,shot_id,tube_id):
    mani=Tube_Manipulator(path_to_db);
    mani.openSession();
    info=mani.select((Tube.img_path,Tube.class_id_pascal,Tube.deep_features_path,Tube.deep_features_idx),(Tube.video_id==video_id,Tube.class_id_pascal==pascal_id,Tube.tube_id==tube_id,Tube.shot_id==shot_id),distinct=True);
    mani.closeSession();
    return info