Megvii-BaseDetection / DenseTeacher

DenseTeacher: Dense Pseudo-Label for Semi-supervised Object Detection
Apache License 2.0
120 stars 12 forks source link

Need for Pascal VOC config file #10

Open Yuxin-Du-Lab opened 2 years ago

Yuxin-Du-Lab commented 2 years ago

The released code just include coco config. I wonder if you can give the VOC related code, or just the configuration file is also OK.

I tried to use the configuration about VOC given in the paper,setting VOC 2007 train as labeled data & VOC 2012 train as unlabeled data.But I got an unstable training process.

Set trainer as follow:

│ TRAINER │ {'DISTILL': {'GAMMA': 2.0,
│ │ 'RATIO': 0.01,
│ │ 'SUPPRESS': 'linear',
│ │ 'SUP_WEIGHT': 1,
│ │ 'UNSUP_WEIGHT': 1,
│ │ 'WEIGHTS': {'DELTAS': 1.0, 'LOGITS': 2.0, 'QUALITY': 1.0}}, │ │ 'EMA': {'DECAY_FACTOR': 0.9996, 'START_STEPS': 3000, 'UPDATE_STEPS': 1},
│ │ 'NAME': 'SemiRunner',
│ │ 'SSL': {'BURN_IN_STEPS': 5000}}

Is that right?

Could you help me, please

ZRandomize commented 2 years ago

Yes, the weight is right, but we used EMA at 10000 step and BURN_IN_STEP=20000 since VOC is a full dataset. An early burn-in stage can cause unstable training due to the low-quality pseudo-labels

Yuxin-Du-Lab commented 2 years ago

Thank you very much! I'll try it again with new hyper-para.

Yuxin-Du-Lab commented 2 years ago

I still got some problem in training using the new super-para. Part of tensorboard info: total loss AP50 The min value point in total loss figure is about 20000 steps, namely getting a divergence training process after 'BURN_IN'. The detailed log file is following: voc_log.txt

What else is wrong? I need your help, please.

ZRandomize commented 2 years ago

seems you are using voc2007 val as eval set, but we use trainval for training and voc2007 test as evaluation set. beside, the best performance is obtained at 60K iter since the voc set is small. Our training curve is like this (AP50): image

Yuxin-Du-Lab commented 2 years ago

Thanks for your detailed reply! I just tried the new division of dataset and got a better score: 76.01(AP50). ap50

But you know, it's still lower than the score presented in paper(79.89). I wonder if there any config that I ignored.

config.py file detailed log header file voc dataset class replacement file

Thanks for your help, again!

ZRandomize commented 2 years ago

ah, seems there's only one more step, we used Scale Jittering as in Unbiased Teacher like here You can also choose Large Scale Jittering as in Soft Teacher like in here for a better performance. However, note that these aug would also improve supervised baseline