Skip to content

feat: Implement matching cascade for DeepSORTTracker #19

Open
@soumik12345

Description

@soumik12345

I was reading through the paper again and noticed an interesting section when they describe the matching cascade in section 2.3 and the pseudocode where they show the algorithm:
"
Therefore, we introduce a matching cascade that gives priority to more frequently seen objects to encode our notion of probability spread in the association likelihood. Listing 1 outlines our matching algorithm. As input we provide the set of track T and detection D indices as well as the maximum age $A_{max}$. In lines 1 and 2 we compute the association cost matrix and the matrix of admissible associations. We then iterate over track age n to solve a linear assignment problem for tracks of increasing age.
"

Which makes it sound like instead of just strictly sorting by lowest cost, the paper first sorts by time since last match (they call this track age) and then does matching for each set of track ages. So they would first calculate the cost matrix for tracks that were matched in the previous frame and do matching with the detections, then they would move onto the tracks that had been lost for one frame and calculate a new cost matrix with the leftover detections and do matching again and so on. I am not sure if we want to implement this, but I think that is what the paper says.
If we did implement it, I think the best way would be to change _get_associated_inds to loop over the different groups of tracks that have the same time_since_update and do the distance calculation and matching for each group. In each group of tracks, the tracks that don't get matched are marked lost, and the detections that don't get matched get sent onto the next older group of tracks to be matched.

Originally posted by @rolson24 in #17 (review)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions