|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import argparse |
|
import glob |
|
from os.path import join, realpath, dirname |
|
|
|
from tqdm import tqdm |
|
from multiprocessing import Pool |
|
from utils.pysot.datasets import VOTDataset |
|
from utils.pysot.evaluation import AccuracyRobustnessBenchmark, EAOBenchmark |
|
|
|
if __name__ == '__main__': |
|
parser = argparse.ArgumentParser(description='VOT Evaluation') |
|
parser.add_argument('--dataset', type=str, help='dataset name') |
|
parser.add_argument('--result_dir', type=str, help='tracker result root') |
|
parser.add_argument('--tracker_prefix', type=str, help='tracker prefix') |
|
parser.add_argument('--show_video_level', action='store_true') |
|
parser.add_argument('--num', type=int, help='number of processes to eval', default=1) |
|
args = parser.parse_args() |
|
|
|
root = join(realpath(dirname(__file__)), '../data') |
|
tracker_dir = args.result_dir |
|
trackers = glob.glob(join(tracker_dir, args.tracker_prefix+'*')) |
|
trackers = [t.split('/')[-1] for t in trackers] |
|
|
|
assert len(trackers) > 0 |
|
args.num = min(args.num, len(trackers)) |
|
|
|
if args.dataset in ['VOT2016', 'VOT2018', 'VOT2019']: |
|
dataset = VOTDataset(args.dataset, root) |
|
dataset.set_tracker(tracker_dir, trackers) |
|
ar_benchmark = AccuracyRobustnessBenchmark(dataset) |
|
ar_result = {} |
|
with Pool(processes=args.num) as pool: |
|
for ret in tqdm(pool.imap_unordered(ar_benchmark.eval, |
|
trackers), desc='eval ar', total=len(trackers), ncols=100): |
|
ar_result.update(ret) |
|
|
|
benchmark = EAOBenchmark(dataset) |
|
eao_result = {} |
|
with Pool(processes=args.num) as pool: |
|
for ret in tqdm(pool.imap_unordered(benchmark.eval, |
|
trackers), desc='eval eao', total=len(trackers), ncols=100): |
|
eao_result.update(ret) |
|
ar_benchmark.show_result(ar_result, eao_result, show_video_level=args.show_video_level) |
|
|