djape24394 / gmphd_filter

The Gaussian Mixture Probability Hypothesis Density filter, GMPHD python implementation
MIT License
25 stars 8 forks source link
gmphd-filter gmphd-filter-implemetation monte-carlo-simulations multi-object-tracking ospa-metric performance-evaulation python simulation statistical-signal-processing target-tracking

The Gaussian Mixture Probability Hypothesis Density filter. Python implementation

It's based on "The Gaussian mixture probability hypothesis density filter" by Vo and Ma. For performance evaulation, OSPA metric is provided.

For the ones who want to have better understanding of the algorithm, I highly recommend the paper "Derivation of the PHD and CPHD Filters Based on Direct Kullback–Leibler Divergence Minimization" by García-Fernández and Vo.

The file examples.py contains two simulation examples.

Example 1

The first is actually a replica of the example in "Bayesian Multiple Target Filtering Using Random Finite Sets" by Vo, Vo, Clark used for performance evaulation of GMPHD filter. Targets lifes are based on Matlab code provided by Vo in http://ba-tuong.vo-au.com/codes.html and example doesn't contain target spawning.

Example 2

The second example is based on the simulation example in "The Gaussian mixture probability hypothesis density filter" by Vo and Ma. Also, this example demonstrates the spawning situation.

Simulation process and usage

The simulation steps are the following:

The data is list of collections of observations in each time step. For real filtering process, this will be the input from our sensors.

Monte Carlo simulations

To measure the performance of the GMPHD filter, the averaged OSPA metric is used from "A consistent metric for performance evaluation of multi-object filters", by D. Schuhmacher, B.-T. Vo, and B.-N. Vo.

in monte_carlo_simulations_and_plots_of_results.py you can run Monte Corle simulations, which is implemented in MC_run() function. These simulations can last quite long, and that is why the result is saved in .pkl file. I have provided one such file with averaged 1000 MC simulations in MC2ospatnum1000.pkl file, and you can plot it's result also in this file.

You can toggle between simulation and plotting the results just with commenting out the appropriate section.