yanglei18 / Mix-Teaching

This is the official implementation of our manuscript "Mix-Teaching: A Simple, Unified and Effective Semi-supervised Learning Framework for Monocular 3D Object Detection".
https://arxiv.org/abs/2207.04448v1
Apache License 2.0
41 stars 1 forks source link

Reproducing your results #5

Open johannes-tum opened 1 year ago

johannes-tum commented 1 year ago

First of all, thank you very much for your great paper. You found a very good approach for monocular semi-supervised learning!

I am currently trying to build on your work. At the moment I cannot reproduce your results. For example I have done extensive experiments for the supervised case with 50% of the training data. I started multiple training runs. Here the results. I did probably at least 5-10 more runs that aren't even shown below (but in all these additional runs, I did not exceed the bold line in terms of 3D score).

R11-3D Car 0.7:

R40-BEV Car 0.7:

R40-3D Car 0.7:

In your paper you mention for R40 Car 0.7:

That is why I am wondering have you accidently reported R11 results? At least for the 3D case?

Also, the results show that Monoflex is a highly volatile model. They mention on their github page: "Note: we observe an obvious variation of the performance for different runs and we are still investigating possible solutions to stablize the results, though it may inevitably due to the utilized uncertainties." (https://github.com/zhangyp15/MonoFlex). How would deal with that in a follow-up paper? E.g. do you think it may be better to report mean and standard deviation instead of just reporting a single number in a table like your Table 1?

And thank you very much again for your paper.

yanglei18 commented 1 year ago

For the sake of reproducing the performance with 50% of the training data. I guess if it is how to select 50% from 3712 samples matters, You can try different random splits.

yanglei18 commented 1 year ago

We follow the same pattern as most related papers that just reporting a single number.

yanglei18 commented 1 year ago

It is more significant to reproduce the results using 100% training data.

johannes-tum commented 1 year ago

So from what I am seeing there is no randomness involved when deciding on the subset of data: https://github.com/yanglei18/Mix-Teaching/blob/main/MonoFlex/data/datasets/aug_dataset.py#L58

johannes-tum commented 1 year ago

Can you share the kitti_infos_train.pkl that you have used?

Update: I just checked my kitti_infos_train.pkl. The images are not randomly distributed, but fully ordered. 000000, 000003, 000007, .... This suggests to me that there is no randomness involved.

yanglei18 commented 1 year ago

Sorry for failing to access the old kitti_infos_train.pkl. Besides, random.choice is necessary.

johannes-tum commented 1 year ago

I compared the current code of Monoflex with your Monoflex code. I've got a few questions from that:

johannes-tum commented 1 year ago

Two more questions:

destinyls commented 1 year ago
  • Que: You have increased the number of epochs from 100 to 300. From my training runs I don't see a lot of value from that in the first supervised training phase. So, why are you doing that? Is it because in later training stages it is necessary to properly make use of all the pseudo labels? If so, could we also increase it in stages to save training time?
  • Rep: Exactly, 300 epoches is only necessary in semi-supervised training stages, which is also required for the GUPNet model.
destinyls commented 1 year ago
  • Que 1: As far as I understood you always take the best model weights of the previous run and reinitialize in the next phase with those weights. In case that you train on trainval and submit to the test server, how do you know which of the 5 models to use?

  • Rep 1: During the evaluation of test set, we choose the best model on val set, which may be not a good strategy.

  • Que 2: Do you use the 3D IoU during training?

  • Rep 2: Yes, we use the 3D IoU in geometry uncertainty.

  • Que 3: If you used a single GPU only, then I wonder why you have integrated SyncBatchNorm. They haven't been there in the original implementation

  • Rep 3: We use a single GPU only, which is enough for small-scale KITTI dataset.

johannes-tum commented 1 year ago

Sorry for failing to access the old kitti_infos_train.pkl. Besides, random.choice is necessary. Where and how should this random.choice be integrated?

yanglei18 commented 1 year ago

Firstly, load the kitti_infos_train.pkl and get the list containing 3712 samples, then select 1856 samples with random.choice from the above-loaded list.

johannes-tum commented 1 year ago

@yanglei18 Did you apply the random.choice here? https://github.com/yanglei18/Mix-Teaching/blob/main/MonoFlex/data/datasets/aug_dataset.py#L58

johannes-tum commented 1 year ago

Three more questions came up. It would be great if you could help me with them: