From: Francois Fleuret Date: Mon, 29 Jun 2020 21:23:25 +0000 (+0200) Subject: Added README.md X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=commitdiff_plain;h=HEAD;p=mtp.git Added README.md --- diff --git a/README.txt b/README.md similarity index 85% rename from README.txt rename to README.md index 18266af..b1ac38d 100644 --- a/README.txt +++ b/README.md @@ -1,17 +1,13 @@ - - 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 @@ -31,13 +27,15 @@ This software package provides two commands: 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. @@ -55,7 +53,7 @@ pdf from the latter with the dot command: dot < graph.dot -T pdf -o graph.pdf -* IMPLEMENTATION +# Implementation The two main classes are MTPGraph and MTPTracker. @@ -72,9 +70,9 @@ computation is iterative. 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) @@ -83,14 +81,14 @@ The MTPTracker takes as input - 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 @@ -116,6 +114,7 @@ running the tracking. 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 @@ -135,15 +134,14 @@ where L is the number of locations and T is the number of time steps: ... 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 +```