ifzhang / FairMOT

[IJCV-2021] FairMOT: On the Fairness of Detection and Re-Identification in Multi-Object Tracking
MIT License
4.03k stars 934 forks source link

Number of unique track ids in dataset zoo #539

Open youonlytrackonce opened 1 year ago

youonlytrackonce commented 1 year ago

Hello,

As the title states, I have been investigating the numbers of unique track ids in data_all dataset. Because there are more than one dataset and each may have more than one sequence, how can the network learn reid embeddings for each unique ids? There can be colliding track ids in the different datasets.

janthmueller commented 1 year ago

Regarding the subsets of a dataset, the track ids already exist in this format, or are created using the gen_label modules. Regarding multiple datasets, for example, within the JointDataset class these ids are processed one more time so that the maximum id of the preceding datasets is added to all ids of the following dataset.

sompt22 commented 1 year ago

Regarding the subsets of a dataset, the track ids already exist in this format, or are created using the gen_label modules. Regarding multiple datasets, for example, within the JointDataset class these ids are processed one more time so that the maximum id of the preceding datasets is added to all ids of the following dataset.

Could you please point the file and line of the code where maximum id of the preceding datasets is added to all ids of the following dataset? Is it on the fly process or applied on the disk?

janthmueller commented 1 year ago

Regarding the subsets of a dataset, the track ids already exist in this format, or are created using the gen_label modules. Regarding multiple datasets, for example, within the JointDataset class these ids are processed one more time so that the maximum id of the preceding datasets is added to all ids of the following dataset.

Could you please point the file and line of the code where maximum id of the preceding datasets is added to all ids of the following dataset? Is it on the fly process or applied on the disk?

It is applied on the fly. See the JointDataset class (in .\src\lib\datasets\dataset\jde.py) at the beginning of the __getitem__ method (line 426-428):

        for i, _ in enumerate(labels):
            if labels[i, 1] > -1:
                labels[i, 1] += self.tid_start_index[ds]

The self.tid_start_index attribute gets computed in the __init__ (line 524-527 with tid_num computed just before that).