Train CNNs for image classification from scratch.
I post several pretrained weights below.
pytorch 1.4.0+torchvisiontensorboard 1.14+numpypyyamltqdmpillow
CIFAR-10CIFAR-100ImageNet 2012
- Add configuration file under
configsfolder as follows-
cuda: "all" # if not specified, use cpu. or specified as "0", "0,1" model: arch: resnet depth: 50 data: dataset: imagenet train_dir: /PATH/TO/ILSVRC/train val_dir: /PATH/TO/ILSVRC/val workers: 16 training: runid: xxxx # recommended specified during validation and testing epochs: 100 batch_size: 256 loss: name: 'label_smooth' smoothing: 0.1 optimizer: name: 'sgd' lr: 0.1 weight_decay: 0.0001 momentum: 0.9 lr_schedule: name: 'multi_step' milestones: [30,60,90] gamma: 0.1 save_interval: 1 resume: save_model.pkl best_model: best_model.pkl
-
- run
train.py,validate.pyortest.pyas follows-
python train.py --config configs/aaaa.yml
-
| Architecture | Top-1 error | Params | FLOPs | Pretrained weights |
|---|---|---|---|---|
| ResNet18 (My Imp.) |
29.72 | 11.69M | 1.82G | Google Drive Baidu Netdisk |
| ResNet18 (paper) |
30.43 | - | - | - |
| ResNet50 (My Imp.) |
23.30 | 25.56M | 4.11G | Google Drive Baidu Netdisk |
| ResNet50 (paper) |
24.7 | - | - | - |
| ResNet101 (My Imp.) |
22.18 | 44.55M | 7.84G | Google Drive |
| ResNet101 (paper) |
22.44 | - | - | - |
| ResNeXt50 (My Imp.) |
22.35 | 25.03M | 4.26G | Google Drive Baidu Netdisk |
| ResNeXt50 (paper) |
22.2 | - | - | - |
| SE ResNet50 (My Imp.) |
22.64 | 28.09M | 4.12G | Google Drive Baidu Netdisk |
| SE ResNet50 (paper) |
23.29 | - | - | - |
| CBAM ResNet50 (My Imp.) |
22.40 | 28.07M | 4.13G | Google Drive |
| CBAM ResNet50 (paper) |
22.66 | - | - | - |
| SKNet50 (My Imp.) |
21.26 | 27.49M | 4.50G | Google Drive Baidu Netdisk |
| SKNet50 (paper) |
20.79 | - | - | - |
| MobileNet V2 0.5x (My Imp.) |
35.62 | 1.97M | 138.46M | Google Drive |
| MobileNet V2 0.5x (paper) |
35.6 | - | - | - |
| MobileNet V2 1x (My Imp.) |
28.09 | 3.50M | 315.41M | Google Drive Baidu Netdisk |
| MobileNet V2 1x (paper) |
28.0 | - | - | - |
| MobileNet V3 large (My Imp.) |
26.79 | 5.48M | 230.05M | Google Drive |
| MobileNet V3 large (paper) |
24.8 | - | - | - |
The hyperparameters and settings during my training for ResNet, ResNeXt, SENet, SKNet are the same as the paper, except I use label smooth loss.
And for MobileNet V2 and MobileNet V3, I follow the setup in this project, and use label smooth loss too.
- place the downloaded pretrained model in
runs/aaaa/xxxxfolder under this project, whereaaaais the name of configuration file andxxxxis runid in configuration file. - run
validate.pyortest.pyas above.