
TL;DR
- task : long-tail visual recognition
- PROBLEM : When the number of data per class is unbalanced on training and balanced on testing, the problem is that the long-tail.
- idea : The margin of the classifier is larger where there are more counts per class. Multiply beta by beta and add gamma to adjust the margin. We could just train on the full imbalance data and then retrain on just beta and gamma.
- architecture : ResNet32, ResNeXt50, ResNet152, ResNet50
- objective : cross entropy loss + loss re-weighting
- baseline : softmax, data re-sampling, loss function engineering, decision Boundary Adjustment …
- data : CIFAR-LT, ImageNet-LT, Places-LT, iNaturalist-LT
- result : SOTA!
- contribution : With a very simple implementation, SOTA!
- LIMITATION OR WHAT I DON’T UNDERSTAND: I don’t know if it performs better when test also has the same class distribution as train!
Details
Related Work
- data re-sampling Undersampling the head class and oversampling the tail class
- loss function engineering reweighting losses so that losses are more balanced across classes. or adjusting logit
- decision boundary adjustment Analytics show that learning from the original data distribution produces a good representation, but the classifier part is the bottleneck in performance. There are methodologies that leave the training as it is and tune the classifier, or use methods like Platt scaling.
Paper details
margin

margin can be expressed as

logit can be expressed as an expression for margin -> as n gets bigger, margin gets bigger, logit gets bigger

pseudo-code of the proposed methodology (MARC)

loss re-weighting was also applied

pseudo-code for the whole course

Result
