-
Notifications
You must be signed in to change notification settings - Fork 30
/
README.txt
78 lines (56 loc) · 2.91 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
======================================
gmphd
GM-PHD filter implementation in python
by Dan Stowell
======================================
This is a Python implementation of the Gaussian mixture PHD filter
(probability hypothesis density filter) described in:
B. N. Vo and W. K. Ma. The gaussian mixture probability hypothesis density filter.
IEEE Transactions on Signal Processing, 54(11):4091--4104, 2006.
DOI: 10.1109/TSP.2006.881190
It requires Numpy, and the demo scripts require matplotlib.
Tested with Python 2.7.
This implementation was developed as part of the following research:
D. Stowell and M. D. Plumbley, Multi-target pitch tracking of vibrato sources in
noise using the GM-PHD filter. In: Proceedings of Proceedings of the 5th
International Workshop on Machine Learning and Music (MML12), July 2012.
http://c4dm.eecs.qmul.ac.uk/papers/2012/StowellPlumbley2012mml.pdf
The figures in that paper were produced by running the following commands:
* Fig 1: `python syntheticexample.py`
* Fig 2: `python syntheticroc.py`
DIFFERENCES FROM VO & MA
========================
There are some differences from the GM-PHD algorithm described in Vo & Ma's paper:
* I have not implemented "spawning" of new targets from old ones, since I don't
need it. It would be straightforward to add it - see the original paper.
* Weights are adjusted at the end of pruning, so that pruning doesn't affect
the total weight allocation.
* I provide an alternative approach to state-extraction (an alternative to
Table 3 in the original paper) which makes use of the integral to decide how
many states to extract.
USAGE
=====
The file "syntheticexample.py" is a python script which runs the filter over a
synthetic randomly-generated scene, in which objects have 3D state and generate
chirp-like observations. I suggest you start by looking at that script. But
for a quick look at the API here's a very simple bit of python:
from gmphd import *
g = Gmphd([GmphdComponent(1, [100], [[10]])], 0.9, 0.9, [[1]], [[1]], [[1]], [[1]], 0.000002)
g.update([[30], [67.5]])
g.gmmplot1d()
g.prune()
g.gmmplot1d()
LICENCE
=======
(c) 2012 Dan Stowell and Queen Mary University of London.
All rights reserved.
gmphd is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
gmphd is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with gmphd. If not, see <http://www.gnu.org/licenses/>.