We use the popular timm library for experiments on the ImageNet dataset with MLP backbones. For MLPs, we select backbones from Mixer and gMLP families.
Results for MLP backbones with NOAH trained on ImageNet.
Backbones | Name | Params | Top-1 Acc(%) | Google Drive | ||
---|---|---|---|---|---|---|
Mixer-Base | mixer_b16_224 | 59.88M | - | - | 77.14 | model |
+ NOAH | noah_mixer_b16_224 | 59.88M | 4 | 1/2 | 77.49 | model |
Mixer-Small (×1.0) | mixer_s16_224 | 18.53M | - | - | 74.18 | model |
+ NOAH | noah_mixer_s16_224 | 18.54M | 4 | 1/2 | 75.09 | model |
Mixer-Small (×0.75) | mixer_s16_075_224 | 10.75M | - | - | 71.13 | model |
+ NOAH | noah_mixer_s16_075_224 | 10.76M | 4 | 1/2 | 72.32 | model |
Mixer-Small (×0.5) | mixer_s16_050_224 | 5.07M | - | - | 65.22 | model |
+ NOAH | noah_mixer_s16_050_224 | 5.08M | 4 | 1/2 | 66.81 | model |
Backbones | Name | Params | Top-1 Acc(%) | Google Drive | ||
---|---|---|---|---|---|---|
gMLP-Small | gmlp_s16_224 | 19.42M | - | - | 79.65 | model |
+ NOAH | noah_gmlp_s16_224 | 19.42M | 4 | 1/2 | 79.95 | model |
gMLP-Tiny (×1.0) | gmlp_ti16_224 | 5.87M | - | - | 72.05 | model |
+ NOAH | noah_gmlp_ti16_224 | 5.87M | 4 | 1/2 | 73.39 | model |
gMLP-Tiny (×0.75) | gmlp_ti16_075_224 | 3.91M | - | - | 65.95 | model |
+ NOAH | noah_gmlp_ti16_075_224 | 3,91M | 4 | 1/2 | 67.71 | model |
gMLP-Tiny (×0.5) | gmlp_ti16_050_224 | 2.41M | - | - | 54.99 | model |
+ NOAH | noah_gmlp_ti16_050_224 | 2.41M | 4 | 1/2 | 56.89 | model |
Please follow pytorch-image-models on how to prepare the environment. Then attach our codes to the origin project.
To train a MLP-based network:
bash distributed_train.sh {ngpus} {path to dataset} --config configs/default_noah.yaml --model {model name}
For example, you can use following command to train gMLP-Tiny
bash distributed_train.sh 8 ./datasets/ILSVRC2012 --config configs/default_noah.yaml --model noah_gmlp_ti16_224
You can add --amp to enable Automatic Mixed Precision to reduce memory usage and speed up training.
To evaluate a pre-trained model:
python validate.py ./datasets/ILSVRC2012 --model {model name} --checkpoint {path to pre-trained model} --crop-pct 0.9