xl-sr / thor Goto Github PK
View Code? Open in Web Editor NEW[BMVC'19] Tracking Holistic Object Representations
License: MIT License
[BMVC'19] Tracking Holistic Object Representations
License: MIT License
what is command to takevideo input from sjcam mounted on my drone to run siamMask teracking
do as the describe as title, or you will get error while executing the eval.py.
I've noticed that in THOR/benchmark/vot.py, Line 28, you pass frame number into the initilaization function as follows:
state = tracker.setup(im, target_pos, target_sz, f)
Then in THOR/trackers/THOR_modules/wrapper.py, Line 56-63, you use the information whether f is 0 ("not f" in code), which indicates if the given frame is the first frame of a video(f=0) or the reinitialization frame after drift(f!=0), to determine whether the long term module(as well as its list of LT templates) should be cleaned&reinitialized or just updated(with the template information before drift).
if not f or self._cfg.vanilla:
self.lt_module = LT_Module(K=self._cfg.K_lt, template_keys=self.template_keys,
lb=self._cfg.lb, lb_type=self._cfg.lb_type,
verbose=self._cfg.verbose, viz=self._cfg.viz)
self.lt_module.fill(temp)
else:
# reinitialize long term only at the beginning of the episode
self.lt_module.update(temp, div_scale=0)
In my opinion, the latter would generate a data leak since trackers should not have the such information (f=0 or not) during (re)initialization phase according to VOT protocol.
Wish to hear your explanation. Thanks in advance.
Thanks for publishing the source code for the paper.
After reading the paper I know that I can put your work on top of any siamse network such as MASK or RPN++ ...
As the title implies I have two issues the first is how to initialize the object to be tracked.
I edited the file webcam_demo.py to run on video an existing video. I added an argument parser the video link and added to the function show web_cam the video passed and edited the line to
parser.add_argument('--video_name', type=str, required=True,help='Name of The video to be processed')
def show_webcam(tracker, args, mirror=False, viz=False):
global initialize
## get path of video from user
video_path = args.video_name
#vs = cv2.VideoCapture(0)
vs = cv2.VideoCapture(video_path)
when I run the script the video open and starts without the ability to lock down the tracker on an object and the video plated without responding to the mouse too. any hints?
Moreover Iam trying to track a custom object. on the siamse rpn++ network. if I train the siamse network is their any additional step to add your work on top of siamse rpn++
As mentioned in the paper your work can be applied on top of any tracker. In other words we can transform any offline tracker to online learning.
can you please provide some details on adding new tracker to the project, such as SIAMESE RPN++ or Trackers not based on SIAMESE.
Regards.
i am trying to implement this tracker on the jetson nano and NX for a project im working on, usual opencv trackers dont work on GPU and i found this tracker to work on GPU, but when im trying to build the environment i have a lot of missing dependencies and im wondering if im even able to make this tracker work on jetson and if yes, how to do i deal with missing dependencies.
i am missing these dependencies(even though i've checked and i do have a few of them it just doesn't detect them for some reason):
Solving environment: failed
ResolvePackageNotFound:
any help would be greatly appreciated
I want to reinitialize the tracker which completely scan the image for the same object. If object is lost then tracker stays at the position where it lost, but if enters from some another side then tracker doesn't identify it.
Is there any solution for that?
Hello,
Quick questions:
The Oxuva package in the file: environment.yml is supposed to be the long term tracking benchmark? Or is there another package with the same name?
Also when executing the cmd pip install oxuva==0.0.1, I get an ERROR indicating that there is no matching distribution for oxuva. Do you have any clues on how to install the package and is the package mandatory for THOR?
Thank you for your time and consideration!
hi, @xl-sr thanks for your clean codes!
I have reviewd the codes, and find when lower bound type is dynamic
, the implement is a little different with formula in paper:
THOR/trackers/THOR_modules/modules.py
Lines 185 to 188 in 0a36b56
Well, it is fc*f1>l*G11 - gamma
(sorry for no latex support in github) in paper, however, as above views, it is fc*f1>(l - gamma)*G11
?
And another question is about idea. How do you come up with the fomula gamma in paper3.2 to represent diversity of STM templates?
Thank you!Regards!
Thank you for your implementation.
Can this tracking track multiple object?
Thank you
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.
According to the torch doc it is needed to provide a map_location
when a gpu saved model is loaded on a cpu.
Changing line 76 in trackers/tracker.py solves the problem :
model.load_state_dict(torch.load(model_path, map_location=('cpu'
if str(self.device) == 'cpu' else None)))
Hi, is it possible to integrate THOR with other trackers like the improved SiamRPN++ and SiamMask_E?
The former issue has been created here: (#6) and has been closed by the repo collaborator.
The original code, which uses the frame number (f) that is not provided to tracker's init function according to VOT official toolkit, is pasted as follows
# initialize the long term module
if not f or self._cfg.vanilla:
self.lt_module = LT_Module(K=self._cfg.K_lt, template_keys=self.template_keys,
lb=self._cfg.lb, lb_type=self._cfg.lb_type,
verbose=self._cfg.verbose, viz=self._cfg.viz)
self.lt_module.fill(temp)
else:
# reinitialize long term only at the beginning of the episode
self.lt_module.update(temp, div_scale=0)
With this version of code, I successfully reproduced the reported result(EAO=0.416).
{'acc': 0.5818219747855319, 'robustness': 0.2341262408690766, 'eao': 0.4160014947564685, 'mean_fps': 94.913035446227}
However, as I commented the conditional branch which uses f:
# initialize the long term module
# if not f or self._cfg.vanilla:
self.lt_module = LT_Module(K=self._cfg.K_lt, template_keys=self.template_keys,
lb=self._cfg.lb, lb_type=self._cfg.lb_type,
verbose=self._cfg.verbose, viz=self._cfg.viz)
self.lt_module.fill(temp)
# else:
# reinitialize long term only at the beginning of the episode
# self.lt_module.update(temp, div_scale=0)
, I got this result:
{'acc': 0.5797615533198762, 'robustness': 0.28563401386027343, 'eao': 0.368673347545505, 'mean_fps': 102.34960671562767}
Honestly, with an EAO of 0.369, the method did bring improvement w.r.t. to SiamRPN baseline(EAO=0.322), but not as much as reported while being removed the conditional branch that uses the frame number information. The latter indicates if an initialization is due to the beginning of new test video or a reinitialization after a drift. This information should not been provided to trackers according to VOT official toolkit.
I wish that a reasonable justification can be provided w.r.t. to this question before this issue is closed. Thanks.
https://github.com/xl-sr/THOR/blob/master/README.md#get-the-datasets
$ cd data
-bash: cd: data: No such file or directory
get_test_data.sh is not found.
How can I train a new dataset?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.