What's the definition of num_transfer, num_ascend, num_migrate?
See original GitHub issueFirst of all, thank you for the amazing work! Very useful.
I have some confusions about the definition of num_transfer, num_ascend, num_migrate. From previous issues, I found these:
I define two extra matching states: TRANSFER and ASCEND. A TRANSFER means a hypothesis ID is assigned from an old target to a new target (the SWITCH means a target is assigned from an old hypothesis ID to a new hypothesis ID). An ASCEND means a new ID is assigned to a target (this is a sub-state for SWITCH). For instance, a->b, b->a is TRANSFER also SWITCH(not ASCEND), a->b(new) is TRANSFER but not SWITCH, c(new)->a is SWITCH also ASCEND, but not TRANSFER. In the origin metrics, there exists mistake cases cannot be modeled by SWITCH, but can be figured out by TRANSFER. The purpose is to make more detailed analysis.
Based on this, I kind of understand the meaning of TRANSFER, but not so sure about ASCEND and MIGRATE.
And also, I found this information, making me more confused:
# assert ((summary['num_transfer'] - summary['num_migrate']) == (summary['num_switches'] - summary['num_ascend'])).all() # False assertion
Could you kindly explain this with some examples? Thank you!
Issue Analytics
- State:
- Created 3 years ago
- Comments:6 (1 by maintainers)
Top GitHub Comments
I believe these events are most clearly defined in the docstring of
MOTAccumulator
. Compare the definitions of MATCH, SWITCH, TRANSFER, ASCEND, MIGRATE.https://github.com/cheind/py-motmetrics/blob/bdc417d92e4c2e15ba2a6e22579f78c2e78c3334/motmetrics/mot.py#L43-L50
The MOT16 paper defined “identity switches” (
num_switches
) to be the number of times that the predicted identity of a ground-truth track changed. However, the converse is not counted, i.e. the number of times that the ground-truth identity of a predicted track changes.Consider the following example. Track 1 is following object A until it leaves the scene. At the same time, object B enters the scene and track 1 jumps (“transfers”) from object A to object B. This would not count as a “SWITCH” event and would not affect
num_switches
, since the predicted identities of object A and object B did not change.If I understand correctly, then the “TRANSFER” event and the
num_transfer
statistic were created to count these types of errors.