Replies: 7 comments 14 replies
-
@andravin there do appear to be some differences in behaviour from the official impl, as I've mentioned before after the official impl updated there weights at one point I found it hard to match them. It was part of a change they made for the longer training schedule on the larger models, but they also reposted better weights for the smaller ones but supposedly at the same epoch counts. The official models are trained on TPUs with a custom batch norm syncing, that differs a bit from PyTorch. I've also found that PyTorch sync-bn really messed up some of my training runs (seems somewhat weight init specific) so I don't use it anymore but that does decrease stability of training as model size increases. I realize I didn't train a pure D2 but I did train a 'Q2' fairly well which is similar but more params due to the QuadFPN. Certainly better than Q1 and Q0 runs and similarly D0 and D1. Again, I had to disable sync-bn. I also always train with pretrained backbone. The original training scheme uses pretrained backbones so I don't think your proposed hparams would be similar. I don't recall if it was a blog post or another paper where the non-pretrained backbones were used, but I'm pretty sure they upped the epochs to 450 and beyond... |
Beta Was this translation helpful? Give feedback.
-
Thanks, I will retry with the pre-trained backbone weights. I think you are saying that PyTorch's |
Beta Was this translation helpful? Give feedback.
-
Initializing the backbone with pre-trained weights made a big difference. The *_d1 |
Beta Was this translation helpful? Give feedback.
-
OK, this will be a review for you, but thought I would summarize what the different versions of the EfficientDet paper have to say about this. In the last version (v7, 27 Jul 2020) of the EfficientDet paper, Appendix 1.1 "Hyperparameters" seems to imply that the increase in accuracy of EfficientNet-D1 from 38.3 in v1 of the paper to 40.2 in in v7 is entirely due to more training epochs (300) and greater scale jittering, [0.1, 2.0]. The penultimate paper (v6, 14 June 2020) reported EfficientDet-D1 at 39.1 mAP and trained for 300 epochs. It does not report the scale jittering used; but 39.1 is exactly the accuracy plotted in Figure 8 of v7 for the same model at 300 epochs and a lesser amount of scale jittter, [0.5, 1.5]. So the clues seem to plot a path from v1 to v7 that increases accuracy by increasing epochs to 300 and scale jitter to [0.1, 2.0]. It appears that the augmentation in efficientdet-pytorch/effdet/data/transforms.py Lines 112 to 117 in c5b694a Nevertheless, I would expect that learning rate schedule or scale jittering would be a good place to look for any difference in behavior between |
Beta Was this translation helpful? Give feedback.
-
Here is the reported EfficientDet-D0 and D1 accuracy versus paper version on arxiv.org: EfficientDet-D0
EfficientDet-D1
Since we seem to be an impasse, I think I will ask the authors to explain these numbers. |
Beta Was this translation helpful? Give feedback.
-
Agreed. Still probably worth trying to 4x GPU train in Tensorflow impl.
Maybe just as challenging to reproduce there. If that's the case the
question for them is different.
Also understanding seed to seed variation is worthwhile. It's a week or two
to run these exp for me so I've never done it.
…On Thu, Nov 4, 2021, 6:41 PM Andrew Lavin ***@***.***> wrote:
Not sure why anybody would consider it acceptable to ignore valid
questions about the reproducibility of published results. I am not a
scientist if I don't ask the question.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#253 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABLQICH7YPO2TCUCYWPAONLUKM75LANCNFSM5HC4RBWA>
.
|
Beta Was this translation helpful? Give feedback.
-
@andravin where did your experiments end up? |
Beta Was this translation helpful? Give feedback.
-
Does
efficientdet-pytorch
reproduce the COCO dataset training results published in any version of the paper EfficientDet: Scalable and Efficient Object Detection?I get reasonable results for
efficientdet_d0
when training from scratch with--no-pretrained-backbone
, butefficientdet_d1
results are not very close to the published results, andefficientdet_d2
actually is worse than the smaller models.Edit: @rwightman points out that the EfficientDet paper initializes the model's backbone with ImageNet pretrained weights, so we shouldn't expect the same 300 epoch training schedule to reproduce the published results. Yet there may be other differences with the official implementation, which we pursue below.
Beta Was this translation helpful? Give feedback.
All reactions