Gaussian Mixture Probability Hypothesis Density Filter

A Gaussian Mixture Probability Hypothesis Density (GM-PHD) Filter handles multi-object tracking in a low signal-to-noise environment by recursively propagating an unnormalized Gaussian Mixture Model, which when integrated over a volume corresponds with the expected number of objects in that volume.

GaussianFilters.GaussianMixtureType
GaussianMixture(N::Int64, w::Vector{Number}, μ::Vector{AbstractVector},
    Σ::Vector{AbstractMatrix})
GaussianMixture(w::Vector{Number}, μ::Vector{AbstractVector},
    Σ::Vector{AbstractMatrix})

Arguments:
N: Number of models
w: Weights
μ: Means of the model
Σ: Covariances of the model
source

Building a GM-PHD Filter

Building a GM-PHD Filter requires defining a birth intensity model of type GaussianMixture for where objects can be globally born, a spawn intensity model of type Spawn for how new objects can spawn off old objects, a Vector of possible linear dynamics models of type Dynamics, a linear measurement model of type Measurement, a survival probability, a detection probability, and a clutter modeling function.

GaussianFilters.SpawnType
Spawn(β::GaussianMixture, dyn::Vector{Dynamics})

Arguments:
β: Gaussian Mixture model determining the
spawning intesity of the target
dyn: Dynamics
source
GaussianFilters.DynamicsType
Dynamics(A::AbstractMatrix, Q::AbstractMatrix, d::AbstractVector)
Dynamics(A::AbstractMatrix, Q::AbstractMatrix)

Construct linear dynamics model with; transition matrix A, process noise matrix Q and offset vector d

source
GaussianFilters.MeasurementType
Measurement(C::AbstractMatrix, R::AbstractMatrix)

Construct measurement model with observation matrix C and sensor noise matrix R

source

Once all of these are defined, a GM-PHD filter can be constructed with PHDFilter.

GaussianFilters.PHDFilterType
PHDFilter(γ::GaussianMixture, spawn::Spawn, dyn::Vector{Dynamics},
    meas::Measurement, Ps::Float64, Pd::Float64, κ::Function)
PHDFilter(γ::GaussianMixture, spawn::Spawn, dyn::Dynamics,
    meas::Measurement, Ps::Float64, Pd::Float64, κ::Function)

Sets up a PHD Filter

Arguments:
γ: Birth intensity
spawn: Spawning intensity
dyn: Vector of possible Dynamics models
meas: Measurements
Ps: Survival probability
Pd: Detection probability
source

Running a GM-PHD Filter

Currently, the GM-PHD Filter must be run step-by-step. Similar to the Kalman-Class filters, this can be done with a single call to update, which wraps functions to predict the next state, perform a measurement update with measure, and prune the resulting mixture model of low-probability and sufficiently close mixtures.

GaussianFilters.updateMethod
update(phd::PHDFilter, b0::GaussianMixture, Z::Vector{AbstractVector},
	T::Real, U::Real, J_max::Integer)

Perform an update step using a GMPHD Filter.

Arguments:

  • phd::PHDFilter PHD filter to step through. [PHD Filter]
  • b0::GaussianMixture Prior state distribution. [Gaussian Mixture]
  • Z::Matrix Matrix of measurements. [Measurements]
  • T::Real Truncation threshold. Drop distributions with weight less than T
  • U::Real Merging threshold. Merge if (μ1-μ2)^T * Σ^-1 * (μ1-μ2) < U
  • J_max::Integer Maximum number of features

Returns:

  • bn::GaussianMixture Describe first return value. [Gaussian Mixture]

References:

  1. Vo, B. N., & Ma, W. K. (2006). The Gaussian mixture probability hypothesis

density filter. IEEE Transactions on signal processing, 54(11), 4091-4104.

source
GaussianFilters.predictMethod
predict(phd::PHDFilter, b0::GaussianMixture)

Make a prediction on next state based on PHD dynamics

Arguments:

  • phd::PHDFilter PHD filter to step through. [PHD Filter]
  • b0::GaussianMixture Prior state distribution. [Gaussian Mixture]

Returns:

  • bp::GaussianMixture Predicted next state distribution. [Gaussian Mixture]

References:

  1. Vo, B. N., & Ma, W. K. (2006). The Gaussian mixture probability hypothesis

density filter. IEEE Transactions on signal processing, 54(11), 4091-4104.

source
GaussianFilters.measureMethod
measure(phd::PHDFilter, bp::GaussianMixture, Z::Vector{AbstractVector})

Perform a measurement update on a predicted PHD next state.

Arguments:

  • phd::PHDFilter PHD filter to step through. [PHD Filter]
  • bp::GaussianMixture Prior state distribution. [Gaussian Mixture]
  • Z::Vector{AbstractVector} Array of measurements. [Measurements]

Returns:

  • bm::GaussianMixture Describe first return value. [Gaussian Mixture]

References:

  1. Vo, B. N., & Ma, W. K. (2006). The Gaussian mixture probability hypothesis

density filter. IEEE Transactions on signal processing, 54(11), 4091-4104.

source
GaussianFilters.pruneFunction
prune(b::GaussianMixture, T::Real, U::Real, J_max::Integer)

Prune the posterior Gaussian-Mixture next PHD state

Arguments:

  • b::GaussianMixture Posterior state distribution. [Gaussian Mixture]
  • T::Real Truncation threshold. Drop distributions with weight less than T
  • U::Real Merging threshold. Merge if (μ1-μ2)^T * Σ^-1 * (μ1-μ2) < U
  • J_max::Integer Maximum number of features
source

The GM-PHD update internally evaluates a multivariate normal density:

GaussianFilters.MvNormalPDFFunction
MvNormalPDF(x::AbstractVector, μ::AbstractVector, Σ::AbstractMatrix)

Evaluate a multivariate normal pdf function parameterized by μ and Σ at x

Arguments:

  • x::AbstractVector Point to evaluate pdf
  • μ::AbstractVector Mean of Multivariate Normal Gaussian
  • Σ::AbstractMatrix Covariance Multivariate Normal Gaussian

Returns:

  • xp::AbstractVector evaluation of multivariate normal pdf
source

Target locations can be extracted from a GaussianMixture state using multiple_target_state_extraction.

GaussianFilters.multiple_target_state_extractionFunction
multiple_target_state_extraction(b::GaussianMixture, th::Real)

Extracts targets whose weights (x.w) are above threshold.

Arguments: b::GaussianMixture: Set of Gaussian Mixtures th::Real: Threshold on weights. Above this threshold, state estimate is extracted

Returns: X: Multi-Target State Estimate

source

Examples

Full implementation examples can be found in the examples/ directory of the repo: