def __init__(self, args): super(PatchTrainer, self).__init__() # Setup device self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') torch.backends.cudnn.benchmark = True # Setup tracker cfg cfg = load_config(args) p = TrackerConfig() p.renew() self.p = p # Setup tracker siammask = Tracker(p=p, anchors=cfg['anchors']) if args.resume: assert isfile(args.resume), 'Please download {} first.'.format(args.resume) siammask = load_pretrain(siammask, args.resume) siammask.eval().to(self.device) self.model = siammask
def main(): # args.base_path = base_path args.resume = "../SiamMask/experiments/siammask_sharp/SiamMask_DAVIS.pth" args.config = "../SiamMask/experiments/siammask_sharp/config_davis.json" print(join(args.base_path, 'groundtruth_rect.txt')) # Setup device device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') torch.backends.cudnn.benchmark = True # Setup Model cfg = load_config(args) p = TrackerConfig() p.renew() siammask = Tracker(p=p, anchors=cfg['anchors']) if args.resume: assert isfile(args.resume), 'Please download {} first.'.format(args.resume) siammask = load_pretrain(siammask, args.resume) siammask.eval().to(device) # Parse Image file img_files = sorted(glob.glob(join(join(args.base_path, 'imgs'), '*.jp*'))) ims = [cv2.imread(imf) for imf in img_files] # Select ROI cv2.namedWindow("SiamMask", cv2.WND_PROP_FULLSCREEN) try: init_rect = cv2.selectROI('SiamMask', ims[0], False, False) gts = None x, y, w, h = init_rect except: exit() file1 = open(join(args.base_path, 'groundtruth_rect.txt'), 'w') file1.write('{0:d},{1:d},{2:d},{3:d}\n'.format(x, y, w, h)) toc = 0 for f, im in enumerate(ims): tic = cv2.getTickCount() if f == 0: # init target_pos = np.array([x + w / 2, y + h / 2]) target_sz = np.array([w, h]) state = tracker_init(im, target_pos, target_sz, siammask, device=device) # init tracker state['gts'] = gts state['device'] = device elif f > 0: # tracking state = tracker_track(state, im, siammask, device=device) # track target_pos, target_sz =state['target_pos'], state['target_sz'] x, y = (target_pos - target_sz/2).astype(int) x2, y2 = (target_pos + target_sz/2).astype(int) cv2.rectangle(im, (x, y), (x2, y2), (0, 255, 0), 4) cv2.imshow('SiamMask', im) key = cv2.waitKey(1) if key == ord('q'): break file1.write('{0:d},{1:d},{2:d},{3:d}\n'.format(x, y, x2-x, y2-y)) toc += cv2.getTickCount() - tic file1.close() toc /= cv2.getTickFrequency() fps = f / toc print('SiamMask Time: {:02.1f}s Speed: {:3.1f}fps (with visulization!)'.format(toc, fps))
cv2.namedWindow("SiamMask", cv2.WND_PROP_FULLSCREEN) # Setup device device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') torch.backends.cudnn.benchmark = True # Setup Model cfg = load_config(args) p = TrackerConfig() p.renew() siammask = Tracker(p=p, anchors=cfg['anchors']) if args.resume: assert isfile(args.resume), 'Please download {} first.'.format( args.resume) siammask = load_pretrain(siammask, args.resume) siammask.eval().to(device) model = siammask # Setup Dataset dataloader = DataLoader(AttackDataset(root_dir='data/Phone1', step=1, test=True), batch_size=100) # Load Patch pert_sz_ratio = (0.5, 0.5) patch = cv2.imread('patch_sm.png') patch = kornia.image_to_tensor(patch).to(torch.float) # (3, H, W) patch = patch.clone().detach().requires_grad_(False) # (3, H, W) # For save tracking result as img file