English | 简体中文
Using weights for different classes in loss is an effective method to solve class imbalance problem.
The CrossEntropyLoss and DiceLoss in PaddleSeg support adding weight
config.
For example, if the foreground and background are labeled as 0 and 1, we set the weight of foreground and background as 0.2 and 0.8, respectively.
loss:
types:
- type: CrossEntropyLoss
weight: [0.2, 0.8]
coef: [1]
Since many segmentation models load the pretrained weights for backbone, the learning rate of the backbone can be lower than that of other modules.
We only need to set backbone_lr_mult
to the optimizer
in config file as follows.
Then, the learning rate of backbone and other modules are learning_rate * backbone_lr_mult
and learning_rate
, respectively.
optimizer:
type: sgd
momentum: 0.9
weight_decay: 4.0e-5
backbone_lr_mult: 0.1
lr_scheduler:
type: PolynomialDecay
learning_rate: 0.01
end_lr: 0
power: 0.9
The linear warmup learning scheduler gradually increases the lerning rate for from a small value to the initial value before adjusting the learning rate normally.
Setting warmup_iters
and warmup_start_lr
in lr_scheduler
config to enable linear warmup learning scheduler.
warmup_iters
denotes the iters for warmup, warmup_start_lr
denotes the small value mentioned above. For more information, please refer to doc
lr_scheduler:
type: PolynomialDecay
learning_rate: 0.01
end_lr: 0
power: 0.9
warmup_iters: 1500
warmup_start_lr: 1.0e-6