irfanICMLL / structure_knowledge_distillation

The official code for the paper 'Structured Knowledge Distillation for Semantic Segmentation'. (CVPR 2019 ORAL) and extension to other tasks.
BSD 2-Clause "Simplified" License
695 stars 104 forks source link

about parameter scale and feat_ind in utils/criterion.py #9

Closed Hackerlil closed 4 years ago

Hackerlil commented 4 years ago

in pair-wise loss: CriterionPairWiseforWholeFeatAfterPool(nn.Module): def init(self, scale, feat_ind): what the meaning of this two parameter or how to set this two parameter for feature map distillation? thanks!

irfanICMLL commented 4 years ago

We return a list from the segmentation net, like [x, x_dsn, x_feat_after_psp, x4, x3, x2, x1] Choose the location you want to add this loss by fea_ind, and scale is a parameter to resize the feature map by pooling.

lifengcai commented 4 years ago

@irfanICMLL

I have some other question about the pair-wise distillation.

1) i can't understand why use resize the feature map by pooling, in train_options.py, i found the default value for pool-scale is 0.5, it means that the feature map will be resized to 2 x 2, it is so strange, origin size maybe has 64 x 64 or larger.

2) where is options setting for \alpha or \beta for pair-wise simimarity distillation loss in paper?

Thanks for sharing.

irfanICMLL commented 4 years ago

https://arxiv.org/abs/1903.04197 You can refer to the new paper for the \alpha and \beta.

pengcheng93 commented 4 years ago

https://arxiv.org/abs/1903.04197 You can refer to the new paper for the \alpha and \beta.

Hello, I am also confused about the settings of \alpha and \beta in your code. And AvgPool is used to aggregate β × C features in one node to be 1 × C in the paper, but I only find MaxPool in CriterionPairWiseforWholeFeatAfterPool.

Thanks for sharing.

irfanICMLL commented 4 years ago

In the default code pool_scale is 0.5, which means the \bate is 3232 and \alpha is 6464/32*32=4.

This is a final version of the released code. and we do not directly use parameters \beta and \alpha in the code, we use these two symbols to clarify the statement in the paper.