bcmi / CaGNet-Zero-Shot-Semantic-Segmentation

Code for our ACMMM2020 paper "Context-aware Feature Generation for Zero-shot Semantic Segmentation".
233 stars 14 forks source link

Should there be one or two steps in self-training #13

Closed cplusx closed 3 years ago

cplusx commented 3 years ago

Hi, I'm currently trying to run self-training to see its improvement on performance. Since the self-training configuration is not given here, I suppose all I need to change is changing "--schedule step1(mixed)" to "--schedule st(st_transfer)". And I should change "lr_transfer" to "lr_st_transfer". (Please correct me if I'm wrong and there are more configurations need to be modified). Could you please give the proper learning rate for self-training and corresponding max iterations (ITER_MAX_ST_TRANSFER in the config file)?

In train.py I saw there are choice for self-training and self-training transfer. I don't think it is meaningful to do self-training on seen categories only. Shall I just go for step "st_transfer" after getting model from "mixed" schedule (i.e. step1 -> mixed -> st_mixed). Or do I need add self-training before st_mixed (i.e. step1 -> mixed -> st -> st_mixed).

One more possibility is adding "st" before "mixed" (i.e. step1 -> st -> mixed -> st_mixed) but it seems to be meaningless to have self-training after step 1.

Thank you!

Siyuan-Zhou commented 3 years ago

@cplusx Self-training is performed on only training samples. It aims to find the potential unseen pixels in the training images and gives them predicted labels. The proper training strategy is 'step1 -> mixed -> st -> st_mixed'. The configuration file (including the learning rate and the max iterations you need) for self-training and the secondary finetuning after self-training can now be found in the ./configs directory