-
- Multi-Tracked Paths (MTP)
- -------------------------
-
-* INTRODUCTION
+# Introduction
This is a very simple implementation of a variant of the k-shortest
paths algorithm (KSP) applied to multi-target tracking, as described
in
- J. Berclaz, E. Turetken, F. Fleuret, and P. Fua. Multiple Object
- Tracking using K-Shortest Paths Optimization. IEEE Transactions on
- Pattern Analysis and Machine Intelligence (TPAMI), 33(9):1806-1819,
- 2011.
+ > J. Berclaz, E. Turetken, F. Fleuret, and P. Fua. Multiple Object
+ > Tracking using K-Shortest Paths Optimization. IEEE Transactions on
+ > Pattern Analysis and Machine Intelligence (TPAMI),
+ > 33(9):1806--1819, 2011.
This implementation is not the reference implementation used for the
experiments presented in this article. It does not require any
for the mtp command. If you pass it the "stress" argument, it
generates a larger and noisier problem.
-* INSTALLATION
+# Installation
This software should compile with any C++ compiler. Under a unix-like
environment, just execute
- make
- ./mtp_example
+```
+make
+./mtp_example
+```
It will create a synthetic dummy example, save its description in
tracker.dat, and print the optimal detected trajectories.
dot < graph.dot -T pdf -o graph.pdf
-* IMPLEMENTATION
+# Implementation
The two main classes are MTPGraph and MTPTracker.
The MTPTracker takes as input
- (1) a number of locations and a number of time steps
+1. a number of locations and a number of time steps
- (2) a spatial topology composed of
+2. a spatial topology composed of
- the allowed motions between locations (a Boolean flag for each
pair of locations from/to)
- the exits (a Boolean flag for each location and time step)
- (3) a detection score for every location and time, which stands for
+3. a detection score for every location and time, which stands for
log( P(Y(l,t) = 1 | X) / P(Y(l,t) = 0 | X) )
- where Y is the occupancy of location l at time t and X is the
- available observation. In particular, this score is negative on
- locations where the probability that the location is occupied is
- close to 0, and positive when it is close to 1.
+ where Y is the occupancy of location l at time t and X is the
+ available observation. In particular, this score is negative on
+ locations where the probability that the location is occupied is
+ close to 0, and positive when it is close to 1.
From this parameters, the MTPTracker can compute the best set of
disjoint trajectories consistent with the defined topology, which
The tracker data file for MTPTracker::read has the following format,
where L is the number of locations and T is the number of time steps:
+```
---------------------------- snip snip -------------------------------
int:L int:T
...
float:detection_score_T_1 ... float:detection_score_T_L
---------------------------- snip snip -------------------------------
+```
The method MTPTracker::write_trajectories writes first the number of
trajectories, followed by one line per trajectory with the following
structure
+```
---------------------------- snip snip -------------------------------
int:traj_number int:entrance_time int:duration float:score int:location_1 ... int:location_duration
---------------------------- snip snip -------------------------------
-
---
-François Fleuret
-April 2013
+```