def db_eval(techniques, sequences, inputdir=cfg.PATH.SEGMENTATION_DIR, metrics=None): """ Perform per-frame sequence evaluation. Arguments: techniques (string,list): name(s) of the method to be evaluated. sequences (string,list): name(s) of the sequence to be evaluated. inputdir (string): path to the technique(s) folder. Returns: db_eval_dict[method][measure][sequence] (dict): evaluation results. """ if isinstance(techniques, str): techniques = [techniques] if isinstance(sequences, str): sequences = [sequences] ndict = lambda: defaultdict(ndict) db_eval_dict = ndict() # RAW, per-frame evaluation timer = Timer() log.info("Number of cores allocated: %d" % cfg.N_JOBS) for technique in techniques: log.info('Evaluating technique: "%s"' % technique) timer.tic() J,j_M,j_O,j_D,F,f_M,f_O,f_D,T,t_M = \ zip(*Parallel(n_jobs=cfg.N_JOBS)(delayed(db_eval_sequence)( technique,sequence,inputdir,metrics) for sequence in sequences)) log.info('Processing time: "%.3f"' % timer.toc()) # STORE RAW EVALUATION for seq_id, sequence in enumerate(sequences): db_eval_dict[technique]['J'][sequence] = J[seq_id] db_eval_dict[technique]['F'][sequence] = F[seq_id] db_eval_dict[technique]['T'][sequence] = T[seq_id] return db_eval_dict
def db_eval(techniques,sequences,inputdir=cfg.PATH.SEGMENTATION_DIR,metrics=None): """ Perform per-frame sequence evaluation. Arguments: techniques (string,list): name(s) of the method to be evaluated. sequences (string,list): name(s) of the sequence to be evaluated. inputdir (string): path to the technique(s) folder. Returns: db_eval_dict[method][measure][sequence] (dict): evaluation results. """ if isinstance(techniques,str): techniques = [techniques] if isinstance(sequences,str): sequences = [sequences] ndict = lambda: defaultdict(ndict) db_eval_dict = ndict() # RAW, per-frame evaluation timer = Timer() log.info("Number of cores allocated: %d"%cfg.N_JOBS) for technique in techniques: log.info('Evaluating technique: "%s"'%technique) timer.tic() J,j_M,j_O,j_D,F,f_M,f_O,f_D,T,t_M = \ zip(*Parallel(n_jobs=cfg.N_JOBS)(delayed(db_eval_sequence)( technique,sequence,inputdir,metrics) for sequence in sequences)) log.info('Processing time: "%.3f"'%timer.toc()) # STORE RAW EVALUATION for seq_id,sequence in enumerate(sequences): db_eval_dict[technique]['J'][sequence] = J[seq_id] db_eval_dict[technique]['F'][sequence] = F[seq_id] db_eval_dict[technique]['T'][sequence] = T[seq_id] return db_eval_dict