← Open Source
davheld

GOTURN

Source code for paper: Learning to Track at 100 FPS with Deep Regression Networks, Held, et al. ECCV 2016.

Model DevelopmentArchitectureC++
Open on GitHub
Momentum
+0stars in 24 hours0.0%
898
Stars
312
Forks
+0
This week
4
Contributors
Created 2016-07-08 · Updated 2026-08-04 · #12803 today
Top developers
brunobowdencharliememorynrupatunga

davheld/GOTURN is ranked 12,803 with 898 stars.

Same-category comparison

davheld/GOTURN is ranked 12,803 among these 8 peers; megvii-research/mdistiller is ranked 12,798.

Same-category comparison
NameRankMetrics
microsoft/farmvibes-ai12,789
Language:
Jupyter Notebook
Stars:
901
Forks:
184
Description:
FarmVibes.AI: Multi-Modal GeoSpatial ML Models for Agriculture and Sustainability.
PRBonn/semantic-kitti-api12,795
Language:
Python
Stars:
899
Forks:
193
Description:
SemanticKITTI API for visualizing dataset, processing data, and evaluating results.
bytedance/fedlearner12,796
Language:
Python
Stars:
899
Forks:
174
Description:
A multi-party collaborative machine learning framework.
megvii-research/mdistiller12,798
Language:
Python
Stars:
899
Forks:
130
Description:
The official implementation of [CVPR2022] Decoupled Knowledge Distillation https://arxiv.org/abs/2203.08679 and [ICCV2023] DOT: A Distillation-Oriented Trainer https://openaccess.thecvf.com/content/ICCV2023/papers/Zhao_DOT_A_Distillation-Oriented_Trainer_ICCV_2023_paper.pdf.
HuguesTHOMAS/KPConv-PyTorch12,809
Language:
Python
Stars:
897
Forks:
176
Description:
Kernel Point Convolution implemented in PyTorch.
txie-93/cgcnn12,828
Language:
Python
Stars:
896
Forks:
356
Description:
Crystal graph convolutional neural networks for predicting material properties.
Visual-Attention-Network/SegNeXt12,830
Language:
Python
Stars:
895
Forks:
91
Description:
Official Pytorch implementations for "SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation" (NeurIPS 2022).
facebookresearch/ShapeR12,840
Language:
Python
Stars:
894
Forks:
66
Description:
Code for the ShapeR research paper.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguageC++
CategoryModel Development
SubcategoryArchitecture
Stars898
Forks312
Contributors4
Created date2016-07-08
Updated date2026-08-04
Stars in 1 day0
Stars in 7 days0
Rank12,803
Previous rank12,701
Rank change-102
7-day stars rank13,612
Previous 7-day stars rank13,626
7-day stars rank change14
Total stars rank12,108
Previous total stars rank12,080
Total stars rank change-28
CountryUSA
README summary

GOTURN This is the C++ code for our tracker, GOTURN: Generic Object Tracking Using Regression Networks. A _python_ implementation of our tracker can be found in @nrupatunga's repository GOTURN appeared in this paper: **Learning to Track at 100 FPS with Deep Regression Networks**, David Held, Sebastian Thrun, Silvio Savarese, European Conference on Computer Vision (ECCV), 2016 (In press) GOTURN addresses the problem of **single target tracking**: given a bounding box label of an object in the first frame of the

video, we track that object through the rest of the video. Note that our current method does not handle occlusions; however, it is fairly robust to viewpoint changes, lighting changes, and deformations. Here is a brief overview of how our system works: Using a collection of videos and images with bounding box labels (but no class information), we train a neural network to track generic objects. At test time, the network is able to track novel objects without any fine

-tuning. By avoiding fine-tuning, our network is able to track at 100 fps. If you find this code useful in your research, please cite: Contents: Installation Downloading a pretrained model Visualize the tracking performance Evaluate the tracker Train the tracker Visualizing datasets Installation Install dependencies: Install CMake: Install Caffe and compile using the CMake build instructions: Install OpenCV Install TinyXML (needed to load Imagenet annotations): CPU_ONLY mode (optional and not recommended) GPUs are strongly suggested as the code

runs ~30X slower in CPU_ONLY mode. It is listed as an option only if your system doesn’t have GPU support. To configure this, uncomment the line in as shown below: Compile From the main directory, type: Pretrained model You can download a pretrained tracker model (434 MB) by running the following script from the main directory: Visualize the tracking performance To visualize the performance of the tracker, first downloaded a pretrained tracker model (above). Visualizing test set performance

To visualize the performance on the test set, first download (and unzip) the VOT 2014 dataset. Then you can run the tracker on the test set and visualize the output by running the following script: where vot_folder is the path to the unzipped VOT files. Save videos of test set performance To save videos of the tracker running on the test set, run the script: Visualizing validation set performance To visualize the performance on the validation set, first download

the ALOV dataset (as described below) Then you can run the tracker on the validation set and visualize the output by running the following script: where alov_videos_folder is the path to the ALOV videos folder and alov_annotations_folder is the path to the ALOV annotations folder. Note that, for the pre-trained model downloaded above, after choosing hyperparameters, the model was trained on the training+validation sets (not the test set! ) so we would expect the validation

performance here to be very good (much better than test set performance). Evaluate the tracker Evaluate test set performance To

Frequently asked questions

How many stars and forks are recorded?

davheld/GOTURN has 898 stars and 312 forks.

What is the repository rank?

davheld/GOTURN is ranked 12,803.

What language and category are recorded?

davheld/GOTURN has 898 stars, uses C++ and belongs to Model Development.

Which repository is closest in rank?

davheld/GOTURN is compared with megvii-research/mdistiller, ranked 12,798 with 899 stars.

README

GOTURN

This is the C++ code for our tracker, GOTURN: Generic Object Tracking Using Regression Networks.

A python implementation of our tracker can be found in @nrupatunga's repository

GOTURN appeared in this paper:

Learning to Track at 100 FPS with Deep Regression Networks,

David Held, Sebastian Thrun, Silvio Savarese,

European Conference on Computer Vision (ECCV), 2016 (In press)

GOTURN addresses the problem of single target tracking: given a bounding box label of an object in the first frame of the video, we track that object through the rest of the video.

Note that our current method does not handle occlusions; however, it is fairly robust to viewpoint changes, lighting changes, and deformations. Here is a brief overview of how our system works:

Using a collection of videos and images with bounding box labels (but no class information), we train a neural network to track generic objects. At test time, the network is able to track novel objects without any fine-tuning. By avoiding fine-tuning, our network is able to track at 100 fps.

If you find this code useful in your research, please cite:

@inproceedings{held2016learning,
  title={Learning to Track at 100 FPS with Deep Regression Networks},
  author={Held, David and Thrun, Sebastian and Savarese, Silvio},
  booktitle = {European Conference Computer Vision (ECCV)},
  year      = {2016}
}

Contents:

Installation

Install dependencies:

  • Install CMake:
sudo apt-get install cmake
sudo apt-get install libopencv-dev
  • Install TinyXML (needed to load Imagenet annotations):
sudo apt-get install libtinyxml-dev 
  • CPU_ONLY mode (optional and not recommended)

GPUs are strongly suggested as the code runs ~30X slower in CPU_ONLY mode. It is listed as an option only if your system doesn’t have GPU support. To configure this, uncomment the CPU_ONLY line in CMakeLists.txt as shown below:

# Uncomment for CPU only:
set(Caffe_DEFINITIONS -DCPU_ONLY)

Compile

From the main directory, type:

mkdir build
cd build
cmake ..
make

Pretrained model

You can download a pretrained tracker model (434 MB) by running the following script from the main directory:

bash scripts/download_trained_model.sh

Visualize the tracking performance

To visualize the performance of the tracker, first downloaded a pretrained tracker model (above).

Visualizing test set performance

To visualize the performance on the test set, first download (and unzip) the VOT 2014 dataset.

Then you can run the tracker on the test set and visualize the output by running the following script:

bash scripts/show_tracker_test.sh vot_folder

where vot_folder is the path to the unzipped VOT files.

Save videos of test set performance

To save videos of the tracker running on the test set, run the script:

bash scripts/save_videos_test.sh vot_folder

Visualizing validation set performance

To visualize the performance on the validation set, first download the ALOV dataset (as described below)

Then you can run the tracker on the validation set and visualize the output by running the following script:

bash scripts/show_tracker_val.sh alov_image_folder alov_annotation_folder

where alov_videos_folder is the path to the ALOV videos folder and alov_annotations_folder is the path to the ALOV annotations folder.

Note that, for the pre-trained model downloaded above, after choosing hyperparameters, the model was trained on the training+validation sets (not the test set!) so we would expect the validation performance here to be very good (much better than test set performance).

Evaluate the tracker

Evaluate test set performance

To evaluate test set performance, follow the instructions on the VOT website. The file test/test_tracker_vot.cpp is designed to integrate into the VOT testing framework.

The results from running our tracker on the VOT 2014 dataset can be found here, and the report containing our results compared to the VOT 2014 baselines can be found [here] (http://davheld.github.io/GOTURN/report_vot2014_alov441_challenge.zip). Our method, in the report, is referred to as "alov441" since ALOV is the dataset that we used for validation of our model.

To reproduce these results, follow the instructions from the VOT website (linked above). In run_analysis.m, make sure to use the following:

context = create_report_context('report_vot2014_tracker_challenge');
report_challenge(context, experiments, trackers, sequences, 'methodology', 'vot2014'); % Use this report for official challenge report

Evaluate validation set performance

To evaluate the trained tracker model on the validation set, run:

bash scripts/evaluate_val.sh alov_image_folder alov_annotation_folder 

Note that, for the pre-trained model downloaded above, after choosing hyperparameters, the model was trained on the training+validation sets (not the test set!) so we would expect the validation performance here to be very good (much better than test set performance).

Train the tracker

To train the tracker, you need to download the training sets:

ALOV dataset

The ALOV video dataset can be downloaded here: http://alov300pp.joomlafree.it/

Click "Download Category" and "Download Ground Truth" to download the dataset (21 GB).

You need to make sure that the training set is distinct from your test set. If you intend to evaluate the tracker on VOT 2014, then you should remove the following videos from your ALOV training set:

  • 01-Light_video00016
  • 01-Light_video00022
  • 01-Light_video00023
  • 02-SurfaceCover_video00012
  • 03-Specularity_video00003
  • 03-Specularity_video00012
  • 10-LowContrast_video00013

Imagenet dataset

To download the ImageNet images, first register here: http://www.image-net.org/download-images

After registration, follow the links to download the ILSVRC2014 image data, and then download the DET dataset training images (47 GB) and the DET dataset training bounding box annotations (15MB).

Unzip both of these files. The image folder contains a collection of more tar files which must be unzipped. To do so, call:

bash scripts/unzip_imagenet.sh imagenet_folder output_folder

where imagenet_folder is the name of the file that was downloaded and unzipped, and target_folder is the destination folder for all of the unzipped images.

Training

If you are evaluating multiple models for development, then you need to have a validation set that is separate from your training set that you can use to choose among your different models. To separate the validation set, make sure that, in loader/loader_alov.cpp, the variable val_ratio is set to 0.2. This will specify that you want to train on only 80% of the videos, with 20% of the videos being saved for validation. After your final model and hyperparameters have been selected, you can set val_ratio to 0 to train the final model on the entire training + validation sets (not the test set!).

To train the tracker, you first need to download a set of weights that will initialize the convolutional layers from ImageNet. To do so, call

bash scripts/download_model_init.sh

Next, run:

bash scripts/train.sh imagenet_folder imagenet_annotations_folder alov_videos_folder alov_annotations_folder

to train the tracker, where: imagenet_folder is the directory of ImageNet images imagenet_annotations_folder is the directory of Imagenet image annotations alov_videos_folder is the directory of ALOV videos alov_annotations_folder is the directory of ALOV video annotations.

The tracker will be saved every 50,000 iterations in the folder: nets/solverstate We recommend to use the model after it has been trained for at least 200,000 iterations. In our experiments, we trained our models for 450,000 iterations (which was probably overkill). Still, you should be able to see some progress after just 50,000 iterations.

The detailed output of the training progress will be saved to a file in nets/results that you can inspect if you wish.

Visualizing datasets

Visualizing the ALOV dataset

After downloading the ALOV video dataset that we use for training (see above), you can visualize this dataset by calling:

build/show_alov alov_videos_folder alov_annotations_folder

where alov_videos_folder is the path to the ALOV videos folder and alov_annotations_folder is the path to the ALOV annotations folder.

Visualizing the ImageNet dataset

After downloading the ImageNet image dataset that we use for training (see above), you can visualize this dataset by calling:

build/show_imagenet imagenet_folder imagenet_annotations_folder

where imagenet_folder is the path to the ImageNet image folder and imagenet_annotations_folder is the path to the ImageNet annotations folder.

Nearby in the ranking
Similar items