X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.txt;h=685211d8d4a95d744508d11acb5618bd889c7027;hb=f691873b3bfb2c9eff7e249f8a360dd1e636fe70;hp=a20e23d50b30aec77c682079bcc7f39472fff5d7;hpb=7f847d18f82e92c8af842f50e0ea16fa66bf9584;p=mtp.git diff --git a/README.txt b/README.txt index a20e23d..685211d 100644 --- a/README.txt +++ b/README.txt @@ -1,6 +1,6 @@ - Multi-Tracked Paths (MTP) - ------------------------- + Multi-Tracked Paths (MTP) + ------------------------- * INTRODUCTION @@ -17,6 +17,22 @@ This implementation is not the reference implementation used for the experiments presented in this article. It uses a Dijkstra with a Binary Heap for the min-queue, and not the optimal Fibonacci heap. +This software package includes three commands: + + - mtp is the generic command to use in practice. It takes tracking + parameters as input, and prints the tracked trajectories as + output. The format for these parameters is given at the bottom of + this documentation. + + - mtp_example creates a tracking toy example, and runs the tracking + algorithm on it. It gives an example of how to use MTPTracker on a + configuration produced dynamically, and produce a test input file + for the mtp command. + + - mtp_stress_test creates a larger problem with a lot of noise and + multiple trajectories, to check the behavior of the code under + slightly more complex situations. + * INSTALLATION This software should compile with any C++ compiler. Under a unix-like @@ -30,7 +46,7 @@ tracker.dat, and print the optimal detected trajectories. If you now execute - ./mtp tracker.dat + ./mtp --verbose --trajectory-file result.trj --graph-file graph.dot tracker.dat It will load the file tracker.dat saved by the previous command, run the detection, save the detected trajectories in result.trj, and the @@ -56,7 +72,7 @@ that the procedure is similar to that of KSP, in the sense that the family it computes eventually is globally optimal, even if the computation is iterative. -The MTPTracker is defined by +The MTPTracker takes as input (1) a spatial topology composed of @@ -76,24 +92,26 @@ The MTPTracker is defined by 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. + available observation. Hence, 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 setting, MTPTracker has methods to compute the best set of +From this parameters, an MTPTracker can compute the best set of disjoint trajectories consistent with the defined topology, which maximizes the overall detection score (i.e. the sum of the detection -scores of the nodes visited by the trajectories). If no trajectory of -total positive detection score exists, this optimal set of -trajectories will be empty. - -The MTPTracker is a wrapper around the MTPGraph class. From the -defined spatial topology and number of time steps, it builds a graph -with one source, one sink, and two nodes per location and time. The -edges from the source or to the sink, or between these pairs of nodes, -are of length zero, and the edges between the two nodes of such a pair -have negative lengths, equal to the opposite of the corresponding -detection scores. This structure also ensures that the trajectories -computed by the MTPTracker will be node-disjoint, since the -trajectories computed by the MTPGraph are edge-disjoint. +scores of the nodes visited by the trajectories). In particular, if no +trajectory of total positive detection score exists, this optimal set +of trajectories is empty. + +An MTPTracker is a wrapper around an MTPGraph. From the defined +spatial topology and number of time steps, it builds a graph with one +source, one sink, and two nodes per location and time. The edges from +the source or to the sink, or between these pairs of nodes, are of +length zero, and the edges between the two nodes of such a pair have +negative lengths, equal to the opposite of the corresponding detection +scores. This structure ensures that the trajectories computed by the +MTPTracker will be node-disjoint, since the trajectories computed by +the MTPGraph are edge-disjoint. The file mtp_example.cc gives a very simple usage example of the MTPTracker class by setting the tracker parameters dynamically, and