Code Monkey home page Code Monkey logo

tctrack's Introduction

TCTrack: Temporal Contexts for Aerial Tracking (CVPR2022) & TCTrack++:Towards Real-World Visual Tracking with Temporal Contexts (TPAMI)

Ziang Cao and Ziyuan Huang and Liang Pan and Shiwei Zhang and Ziwei Liu and Changhong Fu

In CVPR, 2022.

[paper] [paper_journal]

Abstract

Temporal contexts among consecutive frames are far from being fully utilized in existing visual trackers. In this work, we present TCTrack, a comprehensive framework to fully exploit temporal contexts for aerial tracking. The temporal contexts are incorporated at two levels: the extraction of features and the refinement of similarity maps. Specifically, for feature extraction, an online temporally adaptive convolution is proposed to enhance the spatial features using temporal information, which is achieved by dynamically calibrating the convolution weights according to the previous frames. For similarity map refinement, we propose an adaptive temporal transformer, which first effectively encodes temporal knowledge in a memory-efficient way, before the temporal knowledge is decoded for accurate adjustment of the similarity map. TCTrack is effective and efficient: evaluation on four aerial tracking benchmarks shows its impressive performance; real-world UAV tests show its high speed of over 27 FPS on NVIDIA Jetson AGX Xavier.

Workflow of our tracker

The implementation of our online temporally adaptive convolution is based on TadaConv (ICLR2022).

1. Environment setup

This code has been tested on Ubuntu 18.04, Python 3.8.3, Pytorch 0.7.0/1.6.0, CUDA 10.2. Please install related libraries before running this code:

pip install -r requirements.txt

2. Test

(a) TCTrack

Download pretrained model by Baidu (code: 2u1l) or Googledrive and put it into tools/snapshot directory.

Download testing datasets and put them into test_dataset directory.

python ./tools/test.py                                
	--dataset OTB100                  
    --tracker_name TCTrack
	--snapshot snapshot/general_model.pth # pre-train model path

The testing result will be saved in the results/dataset_name/tracker_name directory.

Note: The results of TCTrack can be downloaded (code:kh3e).

(b) TCTrack++

Download pretrained model by baidu (code:dj2u) Googledrive and put it into tools/snapshot directory.

Download testing datasets and put them into test_dataset directory.

python ./tools/test.py     # offline evaluation                       
	--dataset OTB100                  
    --tracker_name TCTrack++
	--snapshot snapshot/general_model.pth # pre-train model path
python ./tools/test_rt.py     # online evaluation                       
	--dataset OTB100                  
    --tracker_name TCTrack++
	--snapshot snapshot/general_model.pth # pre-train model path

The testing result will be saved in the results/dataset_name/tracker_name directory.

Note: The results of TCTrack++ can be downloaded or downloaded (code: 3vyx).

3. Train

(a) TCTrack

Prepare training datasets

Download the datasets:

Note: train_dataset/dataset_name/readme.md has listed detailed operations about how to generate training datasets.

Train a model

To train the TCTrack and TCTrack++ model, run train.py with the desired configs:

cd tools
python train_tctrack.py

(b) TCTrack++

Prepare training datasets

Download the datasets:

Note: train_dataset/dataset_name/readme.md has listed detailed operations about how to generate training datasets.

Train a model

To train the TCTrack and TCTrack++ model, run train.py with the desired configs:

cd tools
python train_tctrackpp.py

4. Offline Evaluation

If you want to evaluate the results of our tracker, please put those results into results directory.

python eval.py 	                          \
	--tracker_path ./results          \ # result path
	--dataset OTB100                  \ # dataset_name
	--tracker_prefix 'general_model'   # tracker_name

5. Online Evaluation

If you want to evaluate the results of our tracker, please put the pkl files into results_rt_raw directory.

#first step

python rt_eva.py 	                          \
	--raw_root ./tools/results_rt_raw/OTB100          \ # pkl path
	--tar_root ./tools/results_rt/OTB100                  \ # output txt files for evaluation
	--gtroot ./test_dataset/OTB100   # groundtruth of dataset
# second step
python eval.py 	                          \
	--tracker_path ./results_rt          \ # result path
	--dataset OTB100                  \ # dataset_name
	--trackers TCTrack++   # tracker_name

Note: The code is implemented based on pysot-toolkit. We would like to express our sincere thanks to the contributors.

Demo video

TCTrack

References

@inproceedings{cao2022tctrack,
	title={{TCTrack: Temporal Contexts for Aerial Tracking}},
	author={Cao, Ziang and Huang, Ziyuan and Pan, Liang and Zhang, Shiwei and Liu, Ziwei and Fu, Changhong},
	booktitle={CVPR},
	pages={14798--14808},
	year={2022}
}

@article{cao2023towards,
  title={Towards Real-World Visual Tracking with Temporal Contexts},
  author={Cao, Ziang and Huang, Ziyuan and Pan, Liang and Zhang, Shiwei and Liu, Ziwei and Fu, Changhong},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2023},
  publisher={IEEE}
}

Acknowledgement

The code is implemented based on pysot. We would like to express our sincere thanks to the contributors.

tctrack's People

Contributors

ziangcao0312 avatar al1can avatar

Watchers

 avatar

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.