-
Notifications
You must be signed in to change notification settings - Fork 770
Description
Describe the bug
Poiting out a few things:
- A) it looks like the val split in the current yaml config of efficientad is cheating : )
- B) in its lightning module, the validation phase does the whole job in the start then behaves like a test phase
- C) the set of images used for the penalty in
$L_{\text{ST}}$ is a small sample of imagenet
A) normalization params should depend on a split from the train set
The default YAML config is using a random split from the test set
which is usual for models that only do evaluation on the val set, but in efficientad
(from http://arxiv.org/abs/2303.14535, Section 3.4, page 6, left column)
☝️ the validation set is like a 2nd-phase (or 3rd counting the distillation) of the training, where
It should be possible to split the train set and use it there.
B) validation start/step design is weird
I think lightning's design is made essentially to avoid loops on the batches.
By implementing validation_step(batch) you define what the model should do with that data -- which, for EfficientAD, is to find the
function map_norm_quantiles()
which is re-doing this loop-over-batches structure, while validation_step()
is just predicting (which would happen in the test_step() or predict_step()):
Side note: is it a good idea to have
tqdm
inside the model?
C) small imagenet
The data used in the penalty term of the student's loss function should be the same as the one from the teacher distillation (imagenet in the paper).
The code is currently downloading a reduced version with 10 classes.
The user should be able to use a custom folder (with imagenet already setup).
Code of Conduct
- I agree to follow this project's Code of Conduct