コード例 #1
0
ファイル: run_vot.py プロジェクト: studian/RLT-DIMP
def run_vot2020_LT(tracker_name,
                   tracker_param,
                   run_id=None,
                   gpu_id=0,
                   debug=0,
                   visdom_info=None):

    if gpu_id is not None:
        os.environ["CUDA_VISIBLE_DEVICES"] = str(gpu_id)

    tracker = Tracker(tracker_name, tracker_param, run_id)

    name = 'vot'
    DatasetInfo = namedtuple('DatasetInfo', ['module', 'class_name', 'kwargs'])
    pt = "pytracking.evaluation.%sdataset"  # Useful abbreviations to reduce the clutter
    dataset_dict = dict(vot=DatasetInfo(
        module=pt % "vot", class_name="VOTDataset", kwargs=dict()))
    dset_info = dataset_dict.get(name)
    if dset_info is None:
        raise ValueError('Unknown dataset \'%s\'' % name)
    m = importlib.import_module(dset_info.module)
    dataset = getattr(m, dset_info.class_name)(**dset_info.kwargs)
    dataset_path = dataset.base_path
    print(dataset_path)
    if 'sequences' in dataset_path:
        dataset_path_all = dataset_path.split('/')
        final_path = ''
        for x in dataset_path_all:
            if x != 'sequences':
                final_path = os.path.join(final_path, x)
        final_path = '/' + final_path
    else:
        final_path = dataset_path
    tracker.run_vot2020_LT(debug, visdom_info, final_path)
コード例 #2
0
ファイル: running.py プロジェクト: zhangzheng1993/d3s
def run_sequence(seq: Sequence, tracker: Tracker, debug=False):
    """Runs a tracker on a sequence."""

    base_results_path = '{}/{}'.format(tracker.results_dir, seq.name)
    results_path = '{}.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)

    if os.path.isfile(results_path) and not debug:
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name, tracker.parameter_name, tracker.run_id, seq.name))

    if debug:
        tracked_bb, exec_times = tracker.run(seq, debug=debug)
    else:
        try:
            tracked_bb, exec_times = tracker.run(seq, debug=debug)
        except Exception as e:
            print(e)
            return

    tracked_bb = np.array(tracked_bb).astype(float)
    exec_times = np.array(exec_times).astype(float)

    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
    if not debug:
        np.savetxt(results_path, tracked_bb, delimiter=',', fmt='%f')
        np.savetxt(times_path, exec_times, delimiter='\t', fmt='%f')
コード例 #3
0
    def __init__(self, rf_model_code, enable_rf=True):
        _tracker_name, _tracker_param, model_name = self._get_setting()
        model_name = model_name.format(rf_model_code)
        if not enable_rf:
            model_name = model_name.replace(RF_type.format(rf_model_code), '')
        super(Pytracking_RF, self).__init__(name=model_name)
        self.enable_rf = enable_rf
        # create tracker
        tracker_info = Tracker(_tracker_name, _tracker_param, None)
        params = tracker_info.get_parameters()
        params.visualization = False
        params.debug = False
        params.visdom_info = {
            'use_visdom': False,
            'server': '127.0.0.1',
            'port': 8097
        }
        self.tracker = tracker_info.tracker_class(params)

        # create Refinement module
        if self.enable_rf:
            self.RF_module = RefineModule(refine_path.format(rf_model_code),
                                          selector_path,
                                          search_factor=sr,
                                          input_sz=input_sz)
コード例 #4
0
def uav_test():
    # Run ATOM and ECO on the UAV dataset
    trackers = [Tracker('atom', 'default', i) for i in range(1)] + \
               [Tracker('eco', 'default', i) for i in range(1)]

    dataset = UAVDataset()
    return trackers, dataset
コード例 #5
0
ファイル: running.py プロジェクト: ngunnar/tracking_reg
def run_sequence(seq: Sequence,
                 tracker: Tracker,
                 debug=False,
                 visdom_info=None):
    """Runs a tracker on a sequence."""

    visdom_info = {} if visdom_info is None else visdom_info

    base_results_path = '{}/{}'.format(tracker.results_dir, seq.name)
    results_path = '{}.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)

    if os.path.isfile(results_path) and not debug:
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name,
                                                     tracker.parameter_name,
                                                     tracker.run_id, seq.name))

    if debug:
        output = tracker.run(seq, debug=debug, visdom_info=visdom_info)
    else:
        try:
            output = tracker.run(seq, debug=debug, visdom_info=visdom_info)
        except Exception as e:
            print(e)
            return

    tracked_bb = np.array(output['target_bbox']).astype(int)
    exec_times = np.array(output['time']).astype(float)

    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
    if not debug:
        np.savetxt(results_path, tracked_bb, delimiter='\t', fmt='%d')
        np.savetxt(times_path, exec_times, delimiter='\t', fmt='%f')
コード例 #6
0
 def __init__(self,
              tracker_name='dimp',
              para_name='dimp50_vot19',
              refine_model_name='ARcm_coco_seg',
              threshold=0.15):
     self.THRES = threshold
     '''create tracker'''
     '''DIMP'''
     tracker_info = Tracker(tracker_name, para_name, None)
     params = tracker_info.get_parameters()
     params.visualization = False
     params.debug = False
     params.visdom_info = {
         'use_visdom': False,
         'server': '127.0.0.1',
         'port': 8097
     }
     self.dimp = tracker_info.tracker_class(params)
     '''Alpha-Refine'''
     project_path = os.path.join(os.path.dirname(__file__), '..', '..')
     refine_root = os.path.join(project_path,
                                'ltr/checkpoints/ltr/ARcm_seg/')
     refine_path = os.path.join(refine_root, refine_model_name)
     '''2020.4.25 input size: 384x384'''
     self.alpha = ARcm_seg(refine_path, input_sz=384)
コード例 #7
0
def all():
    # Run ATOM and ECO on the MobiFace dataset
    trackers = [Tracker('atom', 'default', i) for i in range(1)] + \
               [Tracker('eco', 'default', i) for i in range(1)]

    dataset = MobifaceDatasetAll()
    return trackers, dataset
コード例 #8
0
ファイル: running.py プロジェクト: whjzsy/SPSTracker
def run_sequence(seq: Sequence, tracker: Tracker, debug=False):
    """Runs a tracker on a sequence."""
    base_results_path = '{}/baseline/{}'.format(tracker.results_dir, seq.name)
    results_path = '{}.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)

    if os.path.isfile(results_path) and not debug:
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name,
                                                     tracker.parameter_name,
                                                     tracker.run_id, seq.name))

    if debug:
        tracked_bb, exec_times = tracker.run(seq, debug=debug)
    else:
        try:
            tracked_bb, exec_times = tracker.run(seq, debug=debug)
        except Exception as e:
            print(e)
            return
    path = base_results_path.split('/')
    path = path[-1]

    if not isdir(base_results_path): makedirs(base_results_path)
    results_path = join(base_results_path, '{:s}_001.txt').format(path)
    #'{}.txt'.format(base_results_path)
    with open(results_path, "w") as fin:
        for x in tracked_bb:
            fin.write("{:d}\n".format(x)) if isinstance(x, int) else \
                    fin.write(','.join([vot_float2str("%.4f", i) for i in x]) + '\n')
    # tracked_bb = np.array(tracked_bb).astype(int)
    exec_times = np.array(exec_times).astype(float)

    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
コード例 #9
0
def run_tracker_pytracking(frame_path, sequence_path, tracking_results_path,
                           sequence_ID, overwrite):

    # frames_path = os.path.join(
    #     args.path, args.YT_ID + '_' + str(args.ID), "frames")

    frame_list = [
        frame for frame in os.listdir(frame_path) if frame.endswith(".png")
    ]
    frame_list.sort(key=lambda f: int(f[:-4]))
    frames_list = [os.path.join(frame_path, frame) for frame in frame_list]

    anno_path = os.path.join(sequence_path, "initial_BB.txt")
    ground_truth_rect = np.loadtxt(str(anno_path),
                                   delimiter=',',
                                   dtype=np.float64).reshape(-1, 4)
    my_yt_sequence = Sequence(sequence_ID, frames_list, ground_truth_rect)
    #Result folder
    os.makedirs(tracking_results_path, exist_ok=True)

    for my_trackers in tqdm(['atom', 'eco']):

        # for my_trackers in tqdm(['atom']):
        my_tracker = Tracker(f"{my_trackers}", "default")
        #Path of the Result folder
        my_tracker.results_dir = os.path.join(tracking_results_path,
                                              my_trackers)
        os.makedirs(my_tracker.results_dir, exist_ok=True)
        run_sequence(my_yt_sequence, my_tracker)
コード例 #10
0
def run_vot2020(tracker_name,
                tracker_param,
                run_id=None,
                debug=None,
                visdom_info=None):
    tracker = Tracker(tracker_name, tracker_param, run_id)
    tracker.run_vot2020(debug, visdom_info)
コード例 #11
0
def run_sequence(seq: Sequence,
                 tracker: Tracker,
                 debug=False,
                 visdom_info=None,
                 noise=False,
                 noise_mag=None):
    """Runs a tracker on a sequence."""
    def _results_exist():
        if seq.object_ids is None:
            bbox_file = '{}/{}.txt'.format(tracker.results_dir, seq.name)
            return os.path.isfile(bbox_file)
        else:
            bbox_files = [
                '{}/{}_{}.txt'.format(tracker.results_dir, seq.name, obj_id)
                for obj_id in seq.object_ids
            ]
            missing = [not os.path.isfile(f) for f in bbox_files]
            return sum(missing) == 0

    visdom_info = {} if visdom_info is None else visdom_info

    if _results_exist() and not debug:
        print('FPS: {}'.format(-1))
        return

    print('Tracker: {} {} {} ,  Sequence: {}, Using noise: {} with mag {}'.
          format(tracker.name, tracker.parameter_name, tracker.run_id,
                 seq.name, noise, noise_mag))

    if debug:
        output = tracker.run_sequence(seq,
                                      debug=debug,
                                      visdom_info=visdom_info,
                                      noise=noise,
                                      noise_mag=noise_mag)
    else:
        # try:
        output = tracker.run_sequence(seq,
                                      debug=debug,
                                      visdom_info=visdom_info,
                                      noise=noise,
                                      noise_mag=noise_mag)
        # except Exception as e:
        #     print(e)
        #     return

    sys.stdout.flush()

    if isinstance(output['time'][0], (dict, OrderedDict)):
        exec_time = sum([sum(times.values()) for times in output['time']])
        num_frames = len(output['time'])
    else:
        exec_time = sum(output['time'])
        num_frames = len(output['time'])

    print('FPS: {}'.format(num_frames / exec_time))

    if not debug:
        _save_tracker_output(seq, tracker, output)
コード例 #12
0
ファイル: pytracking_ar.py プロジェクト: Suke0/AlphaRefine
 def __init__(self, tracker_name='dimp', para_name='super_dimp', threshold=0.65):
     self.THRES = threshold
     '''create tracker'''
     tracker_info = Tracker(tracker_name, para_name, None)
     params = tracker_info.get_parameters()
     params.visualization = False
     params.debug = False
     params.visdom_info = {'use_visdom': False, 'server': '127.0.0.1', 'port': 8097}
     self.base_tracker = tracker_info.tracker_class(params)
コード例 #13
0
def run_webcam(tracker_name, tracker_param, debug=None):
    """Run the tracker on your webcam.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        debug: Debug level.
    """
    tracker = Tracker(tracker_name, tracker_param)
    tracker.run_webcam(debug)
コード例 #14
0
def run_video(tracker_name, tracker_param, videofile, optional_box=None, debug=None, save_results=False):
    """Run the tracker on your webcam.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        debug: Debug level.
    """
    tracker = Tracker(tracker_name, tracker_param)
    tracker.run_video(videofilepath=videofile, optional_box=optional_box, debug=debug, save_results=save_results)
コード例 #15
0
def run_sequence(seq: Sequence,
                 tracker: Tracker,
                 debug=False,
                 visdom_info=None):
    """Runs a tracker on a sequence."""
    def _results_exist():
        if not tracker.if_rt:
            bbox_file = '{}/{}.txt'.format(tracker.results_dir, seq.name)
        else:
            bbox_file = '{}/{}.pkl'.format(tracker.results_dir_rt, seq.name)
        return os.path.isfile(bbox_file)

    visdom_info = {} if visdom_info is None else visdom_info

    if _results_exist() and not debug:
        print('FPS: {}'.format(-1))
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name,
                                                     tracker.parameter_name,
                                                     tracker.run_id, seq.name))

    if debug:
        output = tracker.run_sequence(seq,
                                      debug=debug,
                                      visdom_info=visdom_info)
    else:
        try:
            output = tracker.run_sequence(seq,
                                          debug=debug,
                                          visdom_info=visdom_info)
        except Exception as e:
            print(e)
            return

    sys.stdout.flush()
    if not tracker.if_rt:
        if isinstance(output['time'][0], (dict, OrderedDict)):
            exec_time = sum([sum(times.values()) for times in output['time']])
            num_frames = len(output['time'])
        else:
            exec_time = sum(output['time'])
            num_frames = len(output['time'])
    else:
        if isinstance(output['runtime'][0], (dict, OrderedDict)):
            exec_time = sum(
                [sum(times.values()) for times in output['runtime']])
            num_frames = len(output['runtime'])
        else:
            exec_time = sum(output['runtime'])
            num_frames = len(output['runtime'])

    print('FPS: {}'.format(num_frames / exec_time))

    if not debug:
        _save_tracker_output(seq, tracker, output)
コード例 #16
0
ファイル: run_webcam.py プロジェクト: Suke0/AlphaRefine
def run_webcam(tracker_name, tracker_param, debug=None, visdom_info=None):
    """Run the tracker on your webcam.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        debug: Debug level.
        visdom_info: Dict optionally containing 'use_visdom', 'server' and 'port' for Visdom visualization.
    """
    visdom_info = {} if visdom_info is None else visdom_info
    tracker = Tracker(tracker_name, tracker_param)
    tracker.run_webcam(debug, visdom_info)
コード例 #17
0
ファイル: D3s_MU.py プロジェクト: zhangjf2018/LTMU
    def local_init(self, image, init_bbox):
        local_tracker = Tracker('segm', 'default_params')
        params = local_tracker.get_parameters()

        debug_ = getattr(params, 'debug', 0)
        params.debug = debug_

        params.tracker_name = local_tracker.name
        params.param_name = local_tracker.parameter_name

        self.local_Tracker = local_tracker.tracker_class(params)
        self.local_Tracker.initialize(image, init_bbox)
コード例 #18
0
    def local_init(self, image, init_bbox):
        local_tracker = Tracker('dimp', 'dimp50')
        params = local_tracker.get_parameters()

        debug_ = getattr(params, 'debug', 0)
        params.debug = debug_

        params.tracker_name = local_tracker.name
        params.param_name = local_tracker.parameter_name

        self.local_Tracker = local_tracker.tracker_class(params)
        init_box = dict()
        init_box['init_bbox'] = init_bbox
        self.local_Tracker.initialize(image, init_box)
コード例 #19
0
def run_tracker(tracker_name,
                tracker_param,
                run_id=None,
                dataset_name='otb',
                sequence=None,
                debug=0,
                threads=0,
                visdom_info=None):
    """Run tracker on sequence or dataset.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        run_id: The run id.
        dataset_name: Name of dataset (otb, nfs, uav, tpl, vot, tn, gott, gotv, lasot).
        sequence: Sequence number or name.
        debug: Debug level.
        threads: Number of threads.
        visdom_info: Dict optionally containing 'use_visdom', 'server' and 'port' for Visdom visualization.
    """

    visdom_info = {} if visdom_info is None else visdom_info

    dataset = get_dataset(dataset_name)

    if sequence is not None:
        dataset = [dataset[sequence]]

    trackers = [Tracker(tracker_name, tracker_param, run_id)]

    run_dataset(dataset, trackers, debug, threads, visdom_info=visdom_info)
コード例 #20
0
ファイル: run_vot.py プロジェクト: zzfpython/MetricNet
def run_vot(tracker_name,
            tracker_param,
            run_id=None,
            debug=0,
            visdom_info=None):
    # initSeed = 1
    # torch.manual_seed(initSeed)
    # torch.cuda.manual_seed(initSeed)
    # torch.cuda.manual_seed_all(initSeed)
    # np.random.seed(initSeed)
    # torch.backends.cudnn.benchmark = False
    # torch.backends.cudnn.deterministic = True
    # os.environ['PYTHONHASHSEED'] = str(initSeed)

    tracker = Tracker(tracker_name, tracker_param, run_id)
    tracker.run_vot(debug, visdom_info)
コード例 #21
0
def run_sequence_vot(seq: Sequence, tracker: Tracker, debug=False):
    """Runs a tracker on a sequence."""

    base_results_path = '{}/{}/{}/{}'.format(tracker.results_dir, 'baseline',
                                             seq.name, seq.name)
    results_path = '{}_001.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)

    if not os.path.exists('{}/{}'.format(tracker.results_dir, 'baseline')):
        os.mkdir('{}/{}'.format(tracker.results_dir, 'baseline'))

    if not os.path.exists('{}/{}/{}'.format(tracker.results_dir, 'baseline',
                                            seq.name)):
        os.mkdir('{}/{}/{}'.format(tracker.results_dir, 'baseline', seq.name))

    if os.path.isfile(results_path) and not debug:
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name,
                                                     tracker.parameter_name,
                                                     tracker.run_id, seq.name))

    if debug:
        tracked_bb, exec_times = tracker.run(seq, debug=debug)
    else:
        try:
            tracked_bb, exec_times = tracker.run(seq, debug=debug)
        except Exception as e:
            print(e)
            return

    #tracked_bb = np.array(tracked_bb).astype(int)
    exec_times = np.array(exec_times).astype(float)

    with open(results_path, "w") as fin:
        for x in tracked_bb:
            if isinstance(x, int):
                fin.write("{:d}\n".format(x))
            else:
                p_bbox = x.copy()
                fin.write(','.join([str(i) for i in x]) + '\n')

    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
    if not debug:
        #np.savetxt(results_path, tracked_bb, delimiter='\t', fmt='%d')
        np.savetxt(times_path, exec_times, delimiter='\t', fmt='%f')
コード例 #22
0
ファイル: run_tracker_demo.py プロジェクト: perfectZh/uinet
def run_tracker(tracker_name, tracker_param, run_id=None, dataset_name='otb', sequence=None, debug=0, threads=0):
    """Run tracker on sequence or dataset."""
    
    dataset = LaSOTDataset()
    if sequence is not None:
        dataset = [dataset[sequence]]

    trackers = [Tracker(tracker_name, tracker_param, run_id)]

    run_dataset(dataset, trackers, dataset_name,debug, threads)
コード例 #23
0
ファイル: running.py プロジェクト: momo-github-1984/DRNet
def run_sequence(seq: Sequence, tracker: Tracker, debug=False):
    """Runs a tracker on a sequence."""
    base_results_path = '{}/{}'.format(tracker.results_dir, 'baseline')
    if not os.path.isdir(base_results_path):
        os.makedirs(base_results_path)
    base_results_path = '{}/{}'.format(base_results_path, seq.name)
    results_path = '{}.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)

    if os.path.isfile(results_path) and not debug:
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name,
                                                     tracker.parameter_name,
                                                     tracker.run_id, seq.name))

    if debug:
        tracked_bb, exec_times = tracker.run(seq, debug=debug)
    else:
        try:
            tracked_bb, exec_times = tracker.run(seq, debug=debug)
        except Exception as e:
            print(e)
            return

    # tracked_bb = np.array(tracked_bb).astype(int)
    exec_times = np.array(exec_times).astype(float)

    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
    # if not debug:
    #     np.savetxt(results_path, tracked_bb, delimiter='\t', fmt='%d')
    #     np.savetxt(times_path, exec_times, delimiter='\t', fmt='%f')
    video_path = base_results_path
    if not os.path.isdir(video_path):
        os.makedirs(video_path)
    result_path = os.path.join(video_path, '{}_001.txt'.format(seq.name))
    with open(result_path, 'w') as f:
        for x in tracked_bb:
            if isinstance(x, int):
                f.write("{:d}\n".format(x))
            else:
                f.write(','.join([vot_float2str("%.4f", i) for i in x]) + '\n')
コード例 #24
0
def run_sequence(seq: Sequence, tracker: Tracker,dataset_name, debug=False):
    """Runs a tracker on a sequence."""
    print(dataset_name)
    if (dataset_name=="vot"):
        file_dir= os.path.join(tracker.results_dir,"baseline",seq.name)
        mkdir(file_dir)
    else:
        file_dir=tracker.results_dir
    base_results_path = '{}/{}'.format(file_dir, seq.name)
    results_path = '{}_001.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)
    print(results_path)
    print(os.path.isfile(results_path))
    if os.path.isfile(results_path) and not debug:
        return

    print('Tracker: {} {} {} ,  Sequence: {}'.format(tracker.name, tracker.parameter_name, tracker.run_id, seq.name))
    print(tracker)
    if debug:

        tracked_bb, exec_times = tracker.run(seq,debug=debug)
    else:
        try:
            tracked_bb, exec_times = tracker.run(seq,debug=debug)
        except Exception as e:
            print(e)
            return

    tracked_bb = np.array(tracked_bb).astype(int)
    exec_times = np.array(exec_times).astype(float)
    torch.cuda.empty_cache()
    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
    #input()
    
    if not debug:
        if (dataset_name=="vot"):
            np.savetxt(results_path, tracked_bb, delimiter=',', fmt='%d')
            np.savetxt(times_path, exec_times, delimiter=',', fmt='%f')
        else:
            np.savetxt(results_path, tracked_bb, delimiter='\t', fmt='%d')
            np.savetxt(times_path, exec_times, delimiter='\t', fmt='%f')
コード例 #25
0
def run_tracker(tracker_name,
                tracker_param,
                run_id=None,
                dataset_name='otb',
                sequence=None,
                debug=0,
                threads=0,
                visdom_info=None):
    """Run tracker on sequence or dataset.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        run_id: The run id.
        dataset_name: Name of dataset (otb, nfs, uav, tpl, vot, tn, gott, gotv, lasot).
        sequence: Sequence number or name.
        debug: Debug level.
        threads: Number of threads.
        visdom_info: Dict optionally containing 'use_visdom', 'server' and 'port' for Visdom visualization.
    """

    visdom_info = {} if visdom_info is None else visdom_info

    if dataset_name == 'otb':
        dataset = OTBDataset()
    elif dataset_name == 'nfs':
        dataset = NFSDataset()
    elif dataset_name == 'uav':
        dataset = UAVDataset()
    elif dataset_name == 'tpl':
        dataset = TPLDataset()
    elif dataset_name == 'tplnootb':
        dataset = TPLDatasetNoOtb()
    elif dataset_name == 'vot':
        dataset = VOTDataset()
    elif dataset_name == 'tn':
        dataset = TrackingNetDataset()
    elif dataset_name == 'gott':
        dataset = GOT10KDatasetTest()
    elif dataset_name == 'gotv':
        dataset = GOT10KDatasetVal()
    elif dataset_name == 'gotlv':
        dataset = GOT10KDatasetLTRVal()
    elif dataset_name == 'lasot':
        dataset = LaSOTDataset()
    else:
        raise ValueError('Unknown dataset name')

    if sequence is not None:
        dataset = [dataset[sequence]]

    trackers = [Tracker(tracker_name, tracker_param, run_id)]

    run_dataset(dataset, trackers, debug, threads, visdom_info=visdom_info)
コード例 #26
0
def run_tracker(tracker_name,
                tracker_param,
                run_id=None,
                dataset_name='otb',
                sequence=None,
                debug=0,
                threads=0):
    """Run tracker on sequence or dataset.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        run_id: The run id.
        dataset_name: Name of dataset (otb, nfs, uav, tpl, vot, tn, gott, gotv, lasot).
        sequence: Sequence number or name.
        debug: Debug level.
        threads: Number of threads.
    """
    if dataset_name == 'otb':
        dataset = OTBDataset()
    elif dataset_name == 'nfs':
        dataset = NFSDataset()
    elif dataset_name == 'uav':
        dataset = UAVDataset()
    elif dataset_name == 'tpl':
        dataset = TPLDataset()
    elif dataset_name == 'vot':
        dataset = VOTDataset()
    elif dataset_name == 'vot18':
        dataset = VOT18Dataset()
    elif dataset_name == 'otb_vot':
        dataset = OTB100Dataset()
    elif dataset_name == 'tn':
        dataset = TrackingNetDataset()
    elif dataset_name == 'gott':
        dataset = GOT10KDatasetTest()
    elif dataset_name == 'gotv':
        dataset = GOT10KDatasetVal()
    elif dataset_name == 'gotlv':
        dataset = GOT10KDatasetLTRVal()
    elif dataset_name == 'lasot':
        dataset = LaSOTDataset()
    else:
        raise ValueError('Unknown dataset name')

    if sequence is not None:
        dataset = [dataset[sequence]]

    trackers = [Tracker(tracker_name, tracker_param, run_id)]

    run_dataset(dataset, trackers, debug, threads)
コード例 #27
0
ファイル: run_surveillance.py プロジェクト: Ravenyad/d3s
def run_survey(tracker_name,
               tracker_param,
               run_id=None,
               vidpath=None,
               debug=0,
               threads=0):
    """Run tracker on sequence or dataset.
    args:
        tracker_name: Name of tracking method.
        tracker_param: Name of parameter file.
        run_id: The run id.
        dataset_name: Name of dataset (otb, nfs, uav, tpl, vot, tn, gott, gotv, lasot).
        sequence: Sequence number or name.
        debug: Debug level.
        threads: Number of threads.
    """

    trackers = [Tracker(tracker_name, tracker_param, run_id)]

    run_stream(vidpath, trackers, debug, threads)
コード例 #28
0
def run_all_videos(tracker_name,
                   tracker_param,
                   videofile,
                   detections,
                   output_dir,
                   optional_box=None,
                   debug=None,
                   save_results=False):
    csv = pd.read_csv(detections)
    tracker = Tracker(tracker_name, tracker_param)
    files = glob(os.path.join(videofile, "*.mp4"))
    for f in tqdm(files, total=len(files), desc="Processing video"):
        run_video(tracker,
                  tracker_param,
                  f,
                  csv,
                  output_dir,
                  optional_box=None,
                  debug=None,
                  save_results=False)
コード例 #29
0
def run_sequence(seq: Sequence, tracker: Tracker, debug=False):
    """Runs a tracker on a sequence."""
    def _results_exist():
        if seq.object_ids is None:
            bbox_file = '{}/{}.txt'.format(tracker.results_dir, seq.name)
            return os.path.isfile(bbox_file)
        else:
            bbox_files = [
                '{}/{}_{}.txt'.format(tracker.results_dir, seq.name, obj_id)
                for obj_id in seq.object_ids
            ]
            missing = [not os.path.isfile(f) for f in bbox_files]
            return sum(missing) == 0

    if _results_exist() and not debug:
        logging.warning("results exist in not debug mode")
        return

    logging.info('Sequence: {}'.format(seq.name))

    try:
        # focus 核心入口,此时的tracker只是一个 pytracking.evaluation.Tracker
        output = tracker.run_sequence(seq, debug=debug)
    except Exception as e:
        print(e)
        return

    sys.stdout.flush()

    # 计算用时
    if isinstance(output['time'][0], (dict, OrderedDict)):
        exec_time = sum([sum(times.values()) for times in output['time']])
        num_frames = len(output['time'])
    else:
        exec_time = sum(output['time'])
        num_frames = len(output['time'])

    logging.info('FPS: {}'.format(num_frames / exec_time))

    if not debug:
        _save_tracker_output(seq, tracker, output)
コード例 #30
0
def run_stream(path, tracker: Tracker, debug=False, threads=0):
    if threads == 0:
        mode = 'sequential'
    else:
        mode = 'parallel'

    base_results_path = '{}/{}'.format(tracker.results_dir, path)
    results_path = '{}.txt'.format(base_results_path)
    times_path = '{}_time.txt'.format(base_results_path)

    if os.path.isfile(results_path) and not debug:
        return

    # Run detection and tracking online / nonstop
    if mode == 'sequential':
        print('Tracker: {} {} {} , Source: {}'.format(tracker.name,
                                                      tracker.parameter_name,
                                                      tracker.run_id, path))

        try:
            bboxes, exec_times = tracker.run_vidseq(path, debug=debug)
        except Exception as e:
            print(e)
            return

    elif mode == 'parallel':
        param_list = [(seq, tracker_info, debug)
                      for seq, tracker_info in product(dataset, trackers)]
        with multiprocessing.Pool(processes=threads) as pool:
            pool.starmap(run_sequence, param_list)

    bboxes = np.array(bboxes).astype(float)
    exec_times = np.array(exec_times).astype(float)

    print('FPS: {}'.format(len(exec_times) / exec_times.sum()))
    if not debug:
        np.savetxt(results_path, bboxes, delimiter=',', fmt='%f')
        np.savetxt(times_path, exec_times, delimiter='\t', fmt='%f')

    print('Done')