基于mm classification在imagenet上的分类复现
Backbone
VGG系列
ResNet系列
Effientnet系列
Loss
Datasets
CIFAR-10
CIFAR-100
Imagenet
Clothing
Strategy
上述4种策略为自己根据资料整理得到的衰减类型:指数衰减、固定步长的衰减、多步长衰、余弦退火衰减。
1、指数衰减
optimizer_ExpLR = torch.optim.SGD(net.parameters(), lr=0.1)
ExpLR = torch.optim.lr_scheduler.ExponentialLR(optimizer_ExpLR, gamma=0.98)
其中参数gamma表示衰减的底数,选择不同的gamma值可以获得幅度不同的衰减曲线,如下:
2、固定步长衰减
学习率每隔一定步数(或者epoch)就减少为原来的gamma分之一,使用固定步长衰减依旧先定义优化器,再给优化器绑定StepLR对象:
optimizer_StepLR = torch.optim.SGD(net.parameters(), lr=0.1)
StepLR = torch.optim.lr_scheduler.StepLR(optimizer_StepLR, step_size=step_size, gamma=0.65)
其中gamma参数表示衰减的程度,stepsize参数表示每隔多少个step进行一次学习率调整,下面对比了不同gamma值下的学习率变化情况:
**_3、多步长衰减
希望不同的区间采用不同的更新频率,或者是有的区间更新学习率,有的区间不更新学习率**
optimizer_MultiStepLR = torch.optim.SGD(net.parameters(), lr=0.1)
torch.optim.lr_scheduler.MultiStepLR(optimizer_MultiStepLR,
milestones=[200, 300, 320, 340, 200], gamma=0.8)
其中milestones参数为表示学习率更新的起止区间,在区间[0. 200]内学习率不更新,而在[200, 300]、[300, 320]…..[340, 400]的右侧值都进行一次更新;gamma参数表示学习率衰减为上次的gamma分之一。其图示如下:
4、余弦退火衰减
optimizer_CosineLR = torch.optim.SGD(net.parameters(), lr=0.1)
CosineLR = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer_CosineLR, T_max=150, eta_min=0)
参数T_max表示余弦函数周期;eta_min表示学习率的最小值,默认它是0表示学习率至少为正值。确定一个余弦函数需要知道最值和周期,其中周期就是T_max,最值是初试学习率。
Experiments
下面是自己跑出来的结果
CIFAR10 | |||||
---|---|---|---|---|---|
Model | Params(M) | Flops(M) | Input size | Top-1(%) | Top-5(%) |
vgg11 | 128.807 | 7.613 | 32x32 | 90.02 | |
vgg11_bn | 128.80 | 272.520 | 32x32 | 90.22 | |
ResNet-18 | 37.119 | 11.182 | 32x32 | 92.1 | |
ResNet-32 | 75.426 | 21.798 | 32x32 | 93.75 | |
ResNet-50 | 83.889 | 23.529 | 32x32 | 93.14 | |
ResNeXt29(32x4d) | 4.774 | 779.626 | 32x32 | 93.76 | |
ResNeXt29(2x64d) | 9.129 | 1417 | 32x32 | 93.83 | |
densenet121 | 7.979 | 2866 | 32x32 | 94.29 | |
mnasnet0_5 | 0.927 | 109.320 | 32x32 | 90.1 | |
shufflenet_v2_x0_5 | 0.344 | 0.817 | 32x32 | 91.0 | |
shufflenet_v2_x1_0 | 1.264 | 3.026 | 32x32 | 92.74 | |
shufflenet_v2_x1_5 | 2.489 | 300.281 | 32x32 | 92.83 | |
MobileNet_v2 | 6.398 | 2.237 | 32x32 | 93.28 | |
Efficientnet-b0 | 0.054 | 0.284 | 32x32 | 94.36 | |
Efficientnet-b1 | 0.073 | 0.387 | 32x32 | 94.68 | |
Efficientnet-b2 | 0.079 | 19.669 | 32x32 | 94.52 | |
Efficientnet-b3 | 0.102 | 26.065 |
CIFAR100 | |||||
---|---|---|---|---|---|
Model | Params(M) | Flops(M) | Input size | Top-1(%) | Top-5(%) |
ResNet-18 | 74.560 | 92.450 | |||
ResNet-34 | 74.910 | 92.730 | |||
ResNet-50 | 73.040 | 91.480 | |||
ResNet-101 | 78.230 | 93.900 | |||
densenet121 | 77.350 | 93.820 | |||
shufflenet_v2_x0_5 | 69.020 | 90.500 | |||
shufflenet_v2_x1_0 | 73.200 | 92.090 | |||
shufflenet_v2_x1_5 | 74.290 | 92.530 | |||
MobileNet_v2 | 74.720 | 92.600 | |||
MobileNet_v3 | 32x32 | 69.850 | 89.860 | ||
Efficientnet-b0 | 0.054 | 0.284 | 32x32 | 76.77 | |
Efficientnet-b1 | 0.073 | 0.387 | 32x32 | 76.420 | |
Efficientnet-b2 | 0.079 | 19.669 | 32x32 | 77.25 | |
Efficientnet-b3 | 0.102 | 26.065 | 32x32 | ||
Efficientnet-b7 | 32x32 | 77.640 | 93.260 |
ImageNet(阉割版,每类取300张) | |||||
---|---|---|---|---|---|
Model | Params(M) | Flops(M) | Input size | Top-1(%) | Top-5(%) |
ResNet-18 | 224x224 | ||||
ResNet-34 | 224x224 | ||||
ResNet-50 | 224x224 | ||||
ResNet-101 | 224x224 | ||||
densenet121 | 224x224 | 55.136 | |||
shufflenet_v2_x0_5 | 224x224 | ||||
MobileNet_v2 | 224x224 | 52.3 | |||
Efficientnet-b0 | 1.343 | 1.664 | 224x224 | 58.514 |
ImageNet | |||||
---|---|---|---|---|---|
Model | Params(M) | Flops(M) | Input size | Top-1(%) | Top-5(%) |
ResNet-18 | 224x224 | ||||
ResNet-34 | 224x224 | 68.992 | 87.604 | ||
ResNet-50 | 224x224 | 73.706 | 90.206 | ||
ResNet-101 | 224x224 | ||||
densenet121 | 224x224 | ||||
shufflenet_v2_x0_5 | 224x224 | ||||
MobileNet_v2 | 224x224 | ||||
MobileNet_v3 | 224x224 | 62.496 | 84.678 | ||
Efficientnet-b0 | 1.343 | 1.664 | 224x224 | 73.396 |