Exemplo n.º 1
0
 def __init__(self, img_dir, tracker_type, dataset_config):
     self.img_dir = img_dir
     self.tracker_type = tracker_type
     self.frame_list = get_img_list(img_dir)
     self.frame_list.sort()
     dataname = img_dir.split('\\')[-2] # / in linux \\ in windows
     self.gts = get_ground_truthes(img_dir[:-4])
     if dataname in dataset_config.frames.keys():
         start_frame, end_frame = dataset_config.frames[dataname][0:2]
         if dataname != 'David':
             self.init_gt = self.gts[start_frame-1]
         else:
             self.init_gt = self.gts[0]
         self.frame_list = self.frame_list[start_frame-1:end_frame]
     else:
         self.init_gt = self.gts[0]
     if self.tracker_type == 'MOSSE':
         self.tracker = MOSSE()
     elif self.tracker_type == 'KCF_CN':
         self.tracker = KCF(features='cn', kernel='gaussian')
     elif self.tracker_type == 'KCF_GRAY':
         self.tracker = KCF(features='gray', kernel='gaussian')
     elif self.tracker_type == 'KCF_HOG':
         self.tracker = KCF(features='hog', kernel='gaussian')
     elif self.tracker_type == 'DCF_GRAY':
         self.tracker = KCF(features='gray', kernel='linear')
     elif self.tracker_type == 'DCF_HOG':
         self.tracker = KCF(features='hog', kernel='linear')
     elif self.tracker_type == 'VGG16':
         self.tracker = VGG16()
     elif self.tracker_type == 'YOLOV4':
         self.tracker = YOLOV4()
     else:
         raise NotImplementedError
Exemplo n.º 2
0
    def __init__(self,
                 img_dir,
                 tracker_type=None,
                 tracker_params=DEFAULT_PARAMS,
                 dataset_config=None,
                 max_frames=None,
                 IOUmin=0.33):
        self.img_dir = img_dir
        self.tracker_type = tracker_type
        self.frame_list = get_img_list(img_dir)
        self.frame_list.sort()
        if max_frames:
            self.frame_list = self.frame_list[:max_frames]
        dataname = img_dir.split('/')[-2]

        self.gts = get_ground_truthes(img_dir[:-4])
        frame_list_len = len(self.frame_list)
        gts_len = len(self.gts)
        if gts_len > frame_list_len:
            self.gts = self.gts[:frame_list_len]
        elif gts_len < frame_list_len:
            self.gts += [None] * (frame_list_len - gts_len)

        self.tracker = CSRDCF(config=tracker_params)
        self.init_gt = self.gts[0]

        self.IOUmin = IOUmin
Exemplo n.º 3
0
 def __init__(self, img_dir, tracker_type, dataset_config):
     self.img_dir = img_dir
     self.tracker_type = tracker_type
     self.frame_list = get_img_list(img_dir)
     self.frame_list.sort()
     dataname = img_dir.split('/')[-2]
     self.gts = get_ground_truthes(img_dir[:-4])
     if dataname in dataset_config.frames.keys():
         start_frame, end_frame = dataset_config.frames[dataname][0:2]
         if dataname != 'David':
             self.init_gt = self.gts[start_frame - 1]
         else:
             self.init_gt = self.gts[0]
         self.frame_list = self.frame_list[start_frame - 1:end_frame]
     else:
         self.init_gt = self.gts[0]
     if self.tracker_type == 'MOSSE':
         self.tracker = MOSSE()
     elif self.tracker_type == 'CSK':
         self.tracker = CSK()
     elif self.tracker_type == 'CN':
         self.tracker = CN()
     elif self.tracker_type == 'DSST':
         self.tracker = DSST()
     elif self.tracker_type == 'Staple':
         self.tracker = Staple(config=staple_config.StapleConfig())
     elif self.tracker_type == 'Staple-CA':
         self.tracker = Staple(config=staple_config.StapleCAConfig())
     elif self.tracker_type == 'KCF_CN':
         self.tracker = KCF(features='cn', kernel='gaussian')
     elif self.tracker_type == 'KCF_GRAY':
         self.tracker = KCF(features='gray', kernel='gaussian')
     elif self.tracker_type == 'KCF_HOG':
         self.tracker = KCF(features='hog', kernel='gaussian')
     elif self.tracker_type == 'DCF_GRAY':
         self.tracker = KCF(features='gray', kernel='linear')
     elif self.tracker_type == 'DCF_HOG':
         self.tracker = KCF(features='hog', kernel='linear')
     elif self.tracker_type == 'DAT':
         self.tracker = DAT()
     elif self.tracker_type == 'ECO-HC':
         self.tracker = ECO(config=otb_hc_config.OTBHCConfig())
     elif self.tracker_type == 'ECO':
         self.tracker = ECO(config=otb_deep_config.OTBDeepConfig())
     elif self.tracker_type == 'BACF':
         self.tracker = BACF()
     elif self.tracker_type == 'CSRDCF':
         self.tracker = CSRDCF()
     elif self.tracker_type == 'SAMF':
         self.tracker = SAMF()
     elif self.tracker_type == 'LDES':
         self.tracker = LDES(ldes_config.LDESDemoLinearConfig())
     elif self.tracker_type == 'DSST_LP':
         self.tracker = DSST_LP()
     else:
         raise NotImplementedError
Exemplo n.º 4
0
    #scale_params['number_of_interp_scales'] = 5 # default: 33
    #scale_params['scale_step_filter']  = 1.14  # 2^(1/5)

    #params['admm_iterations'] = 2 # default: 4
    #params['template_size'] = 64 # default: 200
    #params['top_channels'] = 7 # default: None; less is riskier

    #scale_params['number_of_scales_filter'] = 21 # default: 33
    #scale_params['number_of_interp_scales'] = 21 # default: 33
    #scale_params['scale_step_filter']  = 1.034  # 2^(1/21)

    #scale_params['nonuniform_scale_factors'] = True
    #scale_params['do_poly_interp'] = True

    # Don't uncomment!  No use.
    #scale_params['random_scale_factors'] = True # default: false

    params['scale_params'] = scale_params

    data_path = sys.argv[1]
    gts = get_ground_truthes(data_path)
    img_dir = os.path.join(data_path, 'img')
    tracker = PyTracker(img_dir,
                        tracker_params=params,
                        max_frames=None,
                        IOUmin=0.33)
    poses = tracker.tracking(verbose=True)
    #tracker.updating_histograms()
    #plot_success(gts,poses,os.path.join('../results/CF',data_name+'_success.jpg'))
    #plot_precision(gts,poses,os.path.join('../results/CF',data_name+'_precision.jpg'))
Exemplo n.º 5
0
def add_a_tracker(results_json_path, tracker_type, dst_json_path):
    data_dir = '../dataset/OTB100'
    data_names = os.listdir(data_dir)
    f = open(results_json_path, 'r')
    otb100_results = json.load(f)
    dataset_config = OTBDatasetConfig()
    for data_name in data_names:
        print('data name:', data_name)

        data_path = os.path.join(data_dir, data_name)
        img_dir = os.path.join(data_path, 'img')
        tracker = PyTracker(img_dir,
                            tracker_type=tracker_type,
                            dataset_config=dataset_config)

        gts = get_ground_truthes(data_path)
        if data_name in dataset_config.frames.keys():
            start_frame, end_frame = dataset_config.frames[data_name][:2]
            if data_name != 'David':
                gts = gts[start_frame - 1:end_frame]
        otb100_results[data_name]['gts'] = []
        for gt in gts:
            otb100_results[data_name]['gts'].append(list(gt.astype(np.int)))

        tracker_preds = tracker.tracking()
        otb100_results[data_name][tracker_type] = []
        for tracker_pred in tracker_preds:
            otb100_results[data_name][tracker_type].append(
                list(tracker_pred.astype(np.int)))

        threshes, precisions_tracker = get_thresh_precision_pair(
            gts, tracker_preds)
        idx20 = [i for i, x in enumerate(threshes) if x == 20][0]

        plt.plot(threshes,
                 precisions_tracker,
                 label=tracker_type + ' ' + str(precisions_tracker[idx20])[:5])
        plt.title(data_name + ' Precision')
        plt.xlabel('thresh')
        plt.ylabel('precision')
        plt.legend()
        if not os.path.exists('../results/tmp'):
            print('test')
            os.mkdir('../results/tmp/')
        plt.savefig('../results/tmp/' + data_name + '_precision.jpg')
        plt.clf()

        threshes, successes_tracker = get_thresh_success_pair(
            gts, tracker_preds)

        plt.plot(threshes,
                 successes_tracker,
                 label=tracker_type + ' ' + str(calAUC(successes_tracker))[:5])

        plt.title(data_name + ' Success')
        plt.xlabel('thresh')
        plt.ylabel('success')
        plt.legend()

        plt.savefig('../results/tmp/' + data_name + '_success.jpg')
        plt.clf()

    json_content = json.dumps(otb100_results, default=str)
    f = open(dst_json_path, 'w')
    f.write(json_content)
    f.close()
Exemplo n.º 6
0
    def __init__(self,img_dir,tracker_type,dataset_config):

        # img_directory is an attribute
        self.img_dir=img_dir

        # tracker type definition
        self.tracker_type=tracker_type

        # get_img_list function appends the name of all jpg files into a list.
        self.frame_list = get_img_list(img_dir)

        # Sorting the frame_list
        self.frame_list.sort()

        # name of the folder
        dataname=img_dir.split('/')[-2]

        # Getting the ground truth
        self.gts=get_ground_truthes(img_dir[:-4])


        if dataname in dataset_config.frames.keys():
            start_frame,end_frame=dataset_config.frames[dataname][0:2]
            if dataname!='David':
                self.init_gt=self.gts[start_frame-1]
            else:
                self.init_gt=self.gts[0]
            self.frame_list=self.frame_list[start_frame-1:end_frame]
        else:
            self.init_gt=self.gts[0]

        # Calling the appropriate tracker class as asked for.
        if self.tracker_type == 'MOSSE':
            self.tracker=MOSSE()
        elif self.tracker_type=='CSK':
            self.tracker=CSK()
        elif self.tracker_type=='CN':
            self.tracker=CN()
        elif self.tracker_type=='DSST':
            self.tracker=DSST(dsst_config.DSSTConfig())
        elif self.tracker_type=='Staple':
            self.tracker=Staple(config=staple_config.StapleConfig())
        elif self.tracker_type=='Staple-CA':
            self.tracker=Staple(config=staple_config.StapleCAConfig())
        elif self.tracker_type=='KCF_CN':
            self.tracker=KCF(features='cn',kernel='gaussian')
        elif self.tracker_type=='KCF_GRAY':
            self.tracker=KCF(features='gray',kernel='gaussian')
        elif self.tracker_type=='KCF_HOG':
            self.tracker=KCF(features='hog',kernel='gaussian')
        elif self.tracker_type=='DCF_GRAY':
            self.tracker=KCF(features='gray',kernel='linear')
        elif self.tracker_type=='DCF_HOG':
            self.tracker=KCF(features='hog',kernel='linear')
        elif self.tracker_type=='DAT':
            self.tracker=DAT()
        elif self.tracker_type=='ECO-HC':
            self.tracker=ECO(config=otb_hc_config.OTBHCConfig())
        elif self.tracker_type=='ECO':
            self.tracker=ECO(config=otb_deep_config.OTBDeepConfig())
        elif self.tracker_type=='BACF':
            self.tracker=BACF()
        elif self.tracker_type=='CSRDCF':
            self.tracker=CSRDCF(config=csrdcf_config.CSRDCFConfig())
        elif self.tracker_type=='CSRDCF-LP':
            self.tracker=CSRDCF(config=csrdcf_config.CSRDCFLPConfig())
        elif self.tracker_type=='SAMF':
            self.tracker=SAMF()
        elif self.tracker_type=='LDES':
            self.tracker=LDES(ldes_config.LDESDemoLinearConfig())
        elif self.tracker_type=='DSST-LP':
            self.tracker=DSST(dsst_config.DSSTLPConfig())
        elif self.tracker_type=='MKCFup':
            self.tracker=MKCFup(config=mkcf_up_config.MKCFupConfig())
        elif self.tracker_type=='MKCFup-LP':
            self.tracker=MKCFup(config=mkcf_up_config.MKCFupLPConfig())
        elif self.tracker_type=='STRCF':
            self.tracker=STRCF()
        elif self.tracker_type=='MCCTH-Staple':
            self.tracker=MCCTHStaple(config=mccth_staple_config.MCCTHOTBConfig())
        elif self.tracker_type=='MCCTH':
            self.tracker=MCCTH(config=mccth_config.MCCTHConfig())
        else:
            raise NotImplementedError
Exemplo n.º 7
0

if __name__ == '__main__':

    data_dir = 'C:/Users/17321/Desktop/OTB100/OTB100_test'
    img_dir = '/digger/'
    #model = 'KCF'
    models = ['TLD', 'BOOSTING', 'KCF']
    result_dir = 'C:/Users/17321/Desktop/pyCFTrackers-master/results/' + models[
        0] + '/'

    poses_list = []
    for model in models:
        gTracker = Tracker(tracker_type=model)
        img = cv2.imread(data_dir + img_dir + 'img/' + '0000.jpg')
        gts = get_ground_truthes(data_dir + img_dir)
        gTracker.initWorking(img, (gts[0][0], gts[0][1], gts[0][2], gts[0][3]))

        poses = []
        index = 1
        for img_path in sorted(os.listdir(data_dir + img_dir + '/img/')):
            if img_path != '0000.jpg':
                img = cv2.imread(data_dir + img_dir + '/img/' + img_path)
                bbox = gTracker.track(img)
                x, y, w, h = bbox

                x_t, y_t, w_t, h_t = gts[index]
                index += 1
                cv2.rectangle(img, (x_t, y_t), (x_t + w_t, y_t + h_t),
                              (0, 255, 0), 1)
                cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)