VISION-SJTU / USOT

[ICCV2021] Learning to Track Objects from Unlabeled Videos
63 stars 7 forks source link

I found difficult to reproduce #6

Closed chenrxi closed 2 years ago

chenrxi commented 2 years ago

my environment is pytorch1.8.1, cuda11.1, python3.8.0, batch size is 12 I can not reproduce the result using full data(VID, GOT10k, LASOT, YTVOS)

image

where A R EAO I reproduce is 0.574 0.393 0.300. can it be reproduced using pytorch1.7?

zhengjilai commented 2 years ago

We follow TracKit and sequentially test all checkpoints from epoch 10 to epoch 30, and then select the one with the best result on VOT2018. The best result does not always show up in the last epochs. You may use the script "onekey.py" to test all available checkpoints. Besides, VOT2018 is not a stable benchmark actually. In Table 7, we have mentioned that VOT2018 is very parameter sensitive, and minor revision on hyper-parameters will affect the result moderately. Results on other benchmarks such as LaSOT and TrackingNet are often more stable.

Nevertheless, EAO = 0.300 is still too low. From my experience, obtaining a checkpoint with EAO around 0.330 on VOT2018 without tuning hyper-parameters for testing (memory queue, online weight, etc.) is not difficult. You may need to check if there are some problems on your experiment settings.

zhengjilai commented 2 years ago

I think the most possible reason is that you do not test all checkpoints from epoch 10 to epoch 30. The following screenshot is the last experiment I conduct before I release the code. Although VOT2018 is not stable, reproducing the EAO result around 0.33 even without tuning hyper-parameters for testing (as Table 7) is definitely possible. Carefully tuning hyper-parameters may further boost the performance.

1651543565(1)

One phenomenon we notice is that, the results of all checkpoints on VOT2018 have a large variance. This can be attributed to two major reasons: 1. VOT2018 is not stable enough 2. USOT is not stable enough. The latter is what we are currently working hard on for USOT+, namely making the framework more stable and well-performing.

By the way, my recommendation is "don't be obsessed with VOT2018". The best results we obtain on OTB2015 and LaSOT are around 60.0 and 37.0 (AUC), but those checkpoints perform worse on VOT2018, w(゚Д゚)w. So do not waste time on 1-2 points in certain benchmarks. Better training pipeline and preprocessing methodology play a much more important role in unsupervised tracking. There is still a lot of room for improvement.

chenrxi commented 2 years ago

thanks for your perfect answer, I am new to unsupervised SOT and not familiar with SOT setting. (I was doing MOT before)I only tested the last epoch's checkpoint and it may be the biggest problem. When test on LASOT dataset, the model is also trained on all the dataset?

chenrxi commented 2 years ago

another question: when inference, should I carefully fine-tune hyper-parameters?

zhengjilai commented 2 years ago

Q1: When testing on LASOT dataset, Is the model also trained on all the dataset? Yes. The model used for reporting results is consistent for all benchmarks, with the same model weights and hyper-parameters. That's the reason why I do not report the better results mentioned above on LaSOT and OTB2015, as I have to make sure the inference model and settings are exactly the same for all benchmarks

Q2: Should I carefully fine-tune hyper-parameters? The original TracKit framework uses a tool called "ray" to automatically tune hyper-parameters for testing. I think this design is not elegant, so the tuning phase is omitted during my experiments. The only tuning operation I performed was in Table 7, where I did search for the best hyper-parameters (N_q and w) for that certain checkpoint on VOT2018. However, that is actually one of the reason why the performance is not stable enough. I do not recommend you tune the hyper-parameters, since it's a waste of time (working hard for only 1-2 points). A checkpoint with acc around 0.577 and EAO around 0.330 is good enough, already significantly outperforming all previous unsupervised trackers.