Proposal Selection Tracker (PST)

This code implements a method for single-camera, single-target, short-term, causal, model-free tracking, described in our ICCV 2015 paper.

Copyright (c) 2017 Yang Hua, Henrique Morimitsu, Karteek Alahari, Cordelia Schmid, Inria Grenoble Rhône-Alpes, France.

Contact: Yang Hua (yanghuacv[at], Henrique Morimitsu (henriquem87[at]



The code was tested on a machine with Linux Xubuntu 16.04 and Matlab R2014b/R2016a.


Quick start

Detailed explanation

Before starting, you may need to install some third-party libraries. We have included all the necessary libraries in this package except Eigen3 and openssl. Should you prefer, you can download and configure each library yourself. Instructions for doing this are available in the file

You can change certain parameters and configurations in the file src/tracker/Config.m. This is not mandatory, and the tracker can be tested without changing the configuration, i.e., by downloading and extracting sequences from the datasets (e.g., VOT, OTB) to the sequences folder. We provide a few sample results computed for the OTB video "Crossing" in the results folder.

The binary MEX files are compiled in Xubuntu 16.04. If you need to recompile them, run the script src/compile_mex.m for tracker MEX files, and also follow the instructions provided in src/3rdparty.

If you run into issues when executing src/pst_demo.m, you may need to add in your system environment (i.e., LD_PRELOAD). For Xubuntu 16.04, you can set LD_PRELOAD="/usr/lib/x86_64-linux-gnu/".

Optical flow

The tracker uses optical flow [1] for computing geometry proposals and motion edgeness score. To reduce the computational cost, we provide the option of using pre-computed flows from binary files, in addition to computing them on the fly. Pre-computed optical flows, if available, must be placed in the folder defined by "opticalFlowPath" in the config file.

We can provide pre-computed flows for videos in the OTB, VOT2014 and VOT2015. This is available upon request by email.

Testing with other sequences

Place the additional video sequences in the folder defined by "datasetPath" in the config file. The easiest way to do this is by adapting your sequences to either the VOT or the OTB standards and then setting the "datasetFormatFlag" in the file src/tracker/Config.m to either 'vot' or 'otb' (with quotes) accordingly.


We use the BSD 3-clause license. Check the file license.txt for more details.



[1] Thomas Brox, and Jitendra Malik. Large Displacement Optical Flow: Descriptor Matching in Variational Motion Estimation. IEEE Transactions on Pattern Analysis and Machine Intelligence, 33(3):500-513, 2011.

[2] Deqing Sun, Stefan Roth, and Michael J. Black. Secrets of Optical Flow Estimation and Their Principles. In CVPR, 2010.

[3] Piotr Dollar. Piotr's Computer Vision Matlab Toolbox (PMT).

[4] C. Lawrence Zitnick, and Piotr Dollar. Edge Boxes: Locating Object Proposals from Edges. In ECCV, 2014.

[5] Philippe Weinzaepfel, Jerome Revaud, Zaid Harchaoui and Cordelia Schmid. Learning to Detect Motion Boundaries. In CVPR, 2015.