hongsukchoi / 3DCrowdNet_RELEASE

Official Pytorch implementation of "Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes", CVPR 2022
MIT License
155 stars 15 forks source link

Question about reproducing Table 8 #15

Closed mimiliaogo closed 1 year ago

mimiliaogo commented 2 years ago

Hi, Thank you for your fantastic work! However, I tried to reproduce table8. using the command python train.py --amp --continue --gpu 0 --cfg ../assets/yaml/3dpw.yml and got the result below:

* train for 10 epoch
    MPJPE from mesh: 93.76 mm
    PA MPJPE from mesh: 56.54 mm
    MPVPE from mesh: 110.48 mm
* train for 5 epoch
    MPJPE from mesh: 85.21 mm
    PA MPJPE from mesh: 52.53 mm
    MPVPE from mesh: 101.27 mm
* train for 4 epoch
        MPJPE from mesh: 85.65 mm
        PA MPJPE from mesh: 51.91 mm
        MPVPE from mesh: 101.10 mm
* train for 2 epoch
    MPJPE from mesh: 84.16 mm
    PA MPJPE from mesh: 52.13 mm
    MPVPE from mesh: 99.90 mm
* train for 1 epoch
    MPJPE from mesh: 83.17 mm
    PA MPJPE from mesh: 52.34 mm
    MPVPE from mesh: 99.32 mm

* train for 0 epoch(pretrained)
    MPJPE from mesh: 712.35 mm
    PA MPJPE from mesh: 98.89 mm
    MPVPE from mesh: 734.46 mm

Is it normal to get to the best point only after 1 epoch? (BTW, I used the pre-trained ResNet-50 weights of xiao2018simple) Also is it normal for the results to be worse as the epoch increasing?

Thank you!

hongsukchoi commented 2 years ago

Hi, the result can vary depending on the mini batch size. You are using only 1 gpu which is a quarter of my setting. I recommend to adjust the learning rate proportionally.

TL;DR Yes. It can be close to the best accuracy.

But the upper bound of the accuracy is actually higher than the Table 8. 40epoches training with learning rate decay at 30epoch give better accuracy. You can try

mimiliaogo commented 2 years ago

Hi, thank you for your response. I used mini-batch size 64 and num_threads 16, which is totally the same as you. I only used one RTX3090 but it doesn't have any memory issues using your configuration. However, my reproduction results are worse than yours on both table 5 and table 8 as below:

Evaluate on 3DPW-CROWD (table 5)

Evaluate on 3DPW-test (table 8)

I wonder if I use the exact same batch size and num workers with you, do I still need to adjust the learning rate? Do you have any suggestions about the training config for me using only one RTX3090 which has the same batch size with you to reproduce your work? Thank you so much!

hongsukchoi commented 2 years ago

My setting's batch size is 256 since I used 4 gpus:)

mimiliaogo commented 2 years ago

So if I used only one gpu, should I divide my learning rate by 4?

hongsukchoi commented 2 years ago

Yes!