Exemple #1
0
 def run_tracker(self):
     """
     Run self.pipeline on VOT
     """
     num_gpu = self._hyper_params["device_num"]
     all_devs = [torch.device("cuda:%d" % i) for i in range(num_gpu)]
     logger.info('runing test on devices {}'.format(all_devs))
     vot_root = self._hyper_params["data_root"][self.dataset_name]
     logger.info('Using dataset %s at: %s' % (self.dataset_name, vot_root))
     # setup dataset
     dataset = vot_benchmark.load_dataset(vot_root, self.dataset_name)
     self.dataset = dataset
     keys = list(dataset.keys())
     keys.sort()
     if self._hyper_params["video_name_list"]:
         keys = self._hyper_params["video_name_list"]
     nr_records = len(keys)
     pbar = tqdm(total=nr_records)
     mean_speed = -1
     total_lost = 0
     speed_list = []
     result_queue = mp.Queue(500)
     speed_queue = mp.Queue(500)
     # set worker
     if num_gpu == 1:
         self.worker(keys, all_devs[0], result_queue, speed_queue)
         for i in range(nr_records):
             t = result_queue.get()
             s = speed_queue.get()
             total_lost += t
             speed_list.append(s)
             pbar.update(1)
     else:
         nr_video = math.ceil(nr_records / num_gpu)
         procs = []
         for i in range(num_gpu):
             start = i * nr_video
             end = min(start + nr_video, nr_records)
             split_records = keys[start:end]
             proc = mp.Process(target=self.worker,
                               args=(split_records, all_devs[i],
                                     result_queue, speed_queue))
             print('process:%d, start:%d, end:%d' % (i, start, end))
             proc.start()
             procs.append(proc)
         for i in range(nr_records):
             t = result_queue.get()
             s = speed_queue.get()
             total_lost += t
             speed_list.append(s)
             pbar.update(1)
         for p in procs:
             p.join()
     # print result
     mean_speed = float(np.mean(speed_list))
     logger.info('Total Lost: {:d}'.format(total_lost))
     logger.info('Mean Speed: {:.2f} FPS'.format(mean_speed))
     self._state['speed'] = mean_speed
# from .paths import ROOT_PATH  # isort:skip

import os.path as osp
import sys  # isort:skip

# module_name = "debug"
# p = __file__
# while osp.basename(p) != module_name:
#     p = osp.dirname(p)
p = osp.dirname(osp.realpath(__file__))
p = osp.dirname(p)
p = osp.join(p, "third_party", "video_analyst")

ROOT_PATH = p
# ROOT_CFG = osp.join(ROOT_PATH, 'config.yaml')
sys.path.insert(0, ROOT_PATH)  # isort:skip

# ============== path ============== #

import cv2

from videoanalyst.evaluation import vot_benchmark

DATASET_DIR = osp.join(ROOT_PATH, "datasets/VOT/vot2018")
# dataset = vot_benchmark.load_dataset("/home/lan/Documents/xuyinda/Projects/video_analyst/datasets/VOT/vot2018", "VOT2018")
dataset = vot_benchmark.load_dataset(DATASET_DIR, "VOT2018")

if __name__ == "__main__":
    from IPython import embed
    embed()