Giter Site home page Giter Site logo

bismex / rlt-dimp Goto Github PK

View Code? Open in Web Editor NEW
40.0 4.0 13.0 23.9 MB

[ECCVW2020] Robust Long-Term Object Tracking via Improved Discriminative Model Prediction (RLT-DiMP)

License: GNU General Public License v3.0

Shell 0.66% Python 98.66% MATLAB 0.09% Jupyter Notebook 0.58%

rlt-dimp's Introduction

Feel free to visit my homepage

Robust Long-Term Object Tracking via Improved Discriminative Model Prediction (RLT-DIMP) [ECCVW2020 paper]


Presentation video

1-minute version (ENG)

Video Label

12-minute version (ENG)

Video Label


Summary

Abstract

We propose an improved discriminative model prediction method for robust long-term tracking based on a pre-trained short-term tracker. The baseline pre-trained short-term tracker is SuperDiMP which combines the bounding-box regressor of PrDiMP with the standard DiMP classifier. Our tracker RLT-DiMP improves SuperDiMP in the following three aspects: (1) Uncertainty reduction using random erasing: To make our model robust, we exploit an agreement from multiple images after erasing random small rectangular areas as a certainty. And then, we correct the tracking state of our model accordingly. (2) Random search with spatio-temporal constraints: we propose a robust random search method with a score penalty applied to prevent the problem of sudden detection at a distance. (3) Background augmentation for more discriminative feature learning: We augment various backgrounds that are not included in the search area to train a more robust model in the background clutter. In experiments on the VOT-LT2020 benchmark dataset, the proposed method achieves comparable performance to the state-of-the-art long-term trackers.


Framework


Baseline

  • We adopt the pre-trained short-term tracker which combines the bounding box regressor of PrDiMP with the standard DiMP classifier
  • This tracker's name is SuperDiMP and it can be downloaded on the DiMP-family's github page [link]

Contribution1: Uncertainty reduction using random erasing


Contribution2: Random search with spatio-temporal constraints


Contribution3: Background augmentation for more discriminative learning


Prerequisites

  • Ubuntu 18.04 / Python 3.6 / CUDA 10.0 / gcc 7.5.0
  • Need anaconda
  • Need GPU (more than 2GB, Sometimes it is a little more necessary depending on the situation.)
  • Unfortunately, "Precise RoI Pooling" included in the Dimp tracker only supports GPU (cuda) implementations.
  • Need root permission
  • All libraries in “install.sh” file (please check “how to install”)

How to install

  • Unzip files in $(tracker-path)
  • cd $(tracker-path)
  • bash install.sh $(anaconda-path) $(env-name) (Automatically create conda environment, If you don’t want to make more conda environments, run “bash install_in_conda.sh” after conda activation)
  • check pretrained model "super_dimp.pth.tar" in $(tracker-path)$/pytracking/networks/ (It should be downloaded by install.sh)
  • conda activate $(env-name)
  • make VOTLT2020 workspace (vot workspace votlt2020 --workspace $(workspace-path))
  • move trackers.ini to $(workspace-path)
  • move(or download) votlt2020 dataset to $(workspace-path)/sequences
  • set the VOT dataset directory ($(tracker-path)/pytracking/evaluation/local.py), vot_path should include ‘sequence’ word (e.g., $(vot-dataset-path)/sequences/), vot_path must be the absolute path (not relative path)
  • modify paths in the trackers.ini file, paths should include ‘pytracking’ word (e.g., $(tracker-path)/pytracking), paths must be absolute path (not relative path)
  • cd $(workspace-path)
  • vot evaluate RLT_DiMP --workspace $(workspace-path)
  • It will fail once because the “precise rol pooling” file has to be compiled through the ninja. Please check the handling error parts.
  • vot analysis --workspace $(workspace-path) RLT_DiMP --output json

Handling errors

  • “Process did not finish yet” or “Error during tracker execution: Exception when waiting for response: Unknown”-> re-try or “sudo rm -rf /tmp/torch_extensions/_prroi_pooling/
  • About “groundtruth.txt” -> check vot_path in the $(tracker-path)/pytracking/evaluation/local.py file
  • About “pytracking/evaluation/local.py” -> check and run install.sh
  • About “permission denied : “/tmp/torch_extensions/_prroi_pooling/” -> sudo chmod -R 777 /tmp/torch_extensions/_prroi_pooling/
  • About “No module named 'ltr.external.PreciseRoiPooling’” or “can not complie Precise RoI Pooling library error” -> cd $(tracker-path) -> rm -rf /ltr/external/PreciseRoiPooling -> git clone https://github.com/vacancy/PreciseRoIPooling.git ltr/external/PreciseRoIPooling
  • If nothing happens since the code just stopped -> sudo rm -rf /tmp/torch_extensions/_prroi_pooling/

Contact

If you have any questions, please feel free to contact [email protected]


Acknowledgments

  • The code is based on the PyTorch implementation of the DiMP-family.
  • This work was done while the first author was a visiting researcher at CMU.
  • This work was supported in part through NSF grant IIS-1650994, the financial assistance award 60NANB17D156 from U.S. Department of Commerce, National Institute of Standards and Technology (NIST) and by the Intelligence Advanced Research Projects Activity (IARPA) via Department of Interior/Interior Business Center (DOI/IBC) contract number D17PC0034. The U.S. Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copy-right annotation/herein. Disclaimer: The views and conclusions contained herein are those of the authors and should not be interpreted as representing the official policies or endorsements, either expressed or implied, of NIST, IARPA, NSF, DOI/IBC, or the U.S. Government.

Citation

@InProceedings{Choi2020,
  author = {Choi, Seokeon and Lee, Junhyun and Lee, Yunsung and Hauptmann, Alexander},
  title = {Robust Long-Term Object Tracking via Improved Discriminative Model Prediction},
  booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
  pages={0--0},
  year={2020}
}

Reference

  • [PrDiMP] Danelljan, Martin, Luc Van Gool, and Radu Timofte. "Probabilistic Regression for Visual Tracking." arXiv preprint arXiv:2003.12565 (2020).
  • [DiMP] Bhat, Goutam, et al. "Learning discriminative model prediction for tracking." Proceedings of the IEEE International Conference on Computer Vision. 2019.
  • [ATOM] Danelljan, Martin, et al. "Atom: Accurate tracking by overlap maximization." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.

rlt-dimp's People

Contributors

bismex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rlt-dimp's Issues

raw results

Hi! Could you please provide the evalution raw results of lasot?

ModuleNotFoundError: No module named 'run_vot'

My machine:
Ubuntu 20.04
RTX 3090 GPU
CUDA 11
pytorch 1.7.1

I installed your tracker using the install.sh just changing the pytorch line to the following, since my gpu does only support cuda 11:

conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch

There were no errors during the installation. Now, running the vot test RLT_DiMP command, im facing the error:

Checking for new version
Scanning registry /home/linx123-rtx/vot-workspace/trackers.ini
Found 12 trackers
Generating dummy sequence
Obtaining runtime for tracker RLT_DiMP
Initializing tracker (1/3)
Running process: /home/linx123-rtx/anaconda3/envs/RLT_DiMP/bin/python -c "import sys;sys.path.insert(0, '/home/linx123-rtx/vot-workspace/RLT_DiMP/atom/pytracking # you should change directory'); import run_vot; run_vot.run_vot2020_LT('RLT_dimp', 'new', None, 0) # 0 means gpu_id"
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'run_vot'
Error during tracker execution: Unable to connect to tracker

I tried python 3.6,3.7 and 3.8. I also tried other gcc versions (e.g. the 7.5 which was suggested by you) but nothing worked. Could you please help me with this?

Kind regards

Error during tracker execution: Server terminated the session

Hi,
when I run vot test DiMP, I faced with this error:
`

"@@TRAX:frame "file:///tmp/vot_dummy_50_640_480/color/00000002.jpg"

/tmp/vot_dummy_50_640_480/color/00000001.jpg

Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "/home/user/RLT-DIMP-master/pytracking/run_vot.py", line 48, in run_vot2020_LT

    tracker.run_vot2020_LT(debug, visdom_info, final_path)

  File "/home/user/RLT-DIMP-master/pytracking/evaluation/tracker.py", line 738, in run_vot2020_LT

    out = tracker.initialize(image, {'init_mask': vot_anno_mask, 'init_bbox': bbox})

  File "/home/user/RLT-DIMP-master/pytracking/tracker/dimp/dimp.py", line 98, in initialize

    init_backbone_feat = self.generate_init_samples(im) # augmented samples

  File "/home/user/RLT-DIMP-master/pytracking/tracker/dimp/dimp.py", line 805, in generate_init_samples

    im_patches = sample_patch_transformed(im, self.init_sample_pos, self.init_sample_scale, aug_expansion_sz, self.transforms)

  File "/home/user/RLT-DIMP-master/pytracking/features/preprocessing.py", line 25, in sample_patch_transformed

    im_patch, _ = sample_patch(im, pos, scale*image_sz, image_sz, is_mask=is_mask) # 1 patch

  File "/home/user/RLT-DIMP-master/pytracking/features/preprocessing.py", line 129, in sample_patch

    im_patch = F.pad(im2, (-tl[1].item(), br[1].item() - im2.shape[3], -tl[0].item(), br[0].item() - im2.shape[2]), pad_mode)

  File "/home/user/pytracking_env/lib/python3.6/site-packages/torch/nn/functional.py", line 3572, in _pad

    return torch._C._nn.replication_pad2d(input, pad)

TypeError: replication_pad2d(): argument 'padding' must be tuple of ints, but found element of type float at pos 1

@@TRAX:quit

Error during tracker execution: Server terminated the session

"

`
and when I run evaluate it, this error was occured:

@@TRAX:hello "[trax.name](http://trax.name/)=" "trax.family=" "trax.image=path;" "trax.region=rectangle;" "trax.description=" "trax.version=3" "vot=python" "trax.channels=color;" 

@@TRAX:initialize "file:///home/theydari/VOT/VOT2020lt/sequences/ballet/color/00000001.jpg" "360.9900,325.1100,25.7140,111.7600" 

@@TRAX:state "360.9900,325.1100,25.7140,111.7600" 

@@TRAX:frame "file:///home/theydari/VOT/VOT2020lt/sequences/ballet/color/00000002.jpg" 

/home/user/VOT/VOT2020lt/sequences/ballet/color/00000001.jpg

Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "/home/user/RLT-DIMP-master/pytracking/run_vot.py", line 48, in run_vot2020_LT

    tracker.run_vot2020_LT(debug, visdom_info, final_path)

  File "/home/user/RLT-DIMP-master/pytracking/evaluation/tracker.py", line 738, in run_vot2020_LT

    out = tracker.initialize(image, {'init_mask': vot_anno_mask, 'init_bbox': bbox})

  File "/home/user/RLT-DIMP-master/pytracking/tracker/dimp/dimp.py", line 98, in initialize

    init_backbone_feat = self.generate_init_samples(im) # augmented samples

  File "/home/user/RLT-DIMP-master/pytracking/tracker/dimp/dimp.py", line 805, in generate_init_samples

    im_patches = sample_patch_transformed(im, self.init_sample_pos, self.init_sample_scale, aug_expansion_sz, self.transforms)

  File "/home/user/RLT-DIMP-master/pytracking/features/preprocessing.py", line 25, in sample_patch_transformed

    im_patch, _ = sample_patch(im, pos, scale*image_sz, image_sz, is_mask=is_mask) # 1 patch

  File "/home/user/RLT-DIMP-master/pytracking/features/preprocessing.py", line 129, in sample_patch

    im_patch = F.pad(im2, (-tl[1].item(), br[1].item() - im2.shape[3], -tl[0].item(), br[0].item() - im2.shape[2]), pad_mode)

  File "/home/user/pytracking_env/lib/python3.6/site-packages/torch/nn/functional.py", line 3572, in _pad

    return torch._C._nn.replication_pad2d(input, pad)

TypeError: replication_pad2d(): argument 'padding' must be tuple of ints, but found element of type float at pos 1

@@TRAX:quit 

Process exited with code (1)

How can I resolve them?

Question about score penalty

How does this new score penalty works ?

  1. Why "This temporal constraint allows objects to be detected at relatively far locations." ?
  2. Why multiply by the previous score penalty, Snew ?

rlt-dimp_score_penalty

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.