The key idea of Repvgg is that by using re-parameterization, the model architecture could be trained in multi-branch but validated in single branch. Figure 1 shows the basic model architecture of Repvgg. By utilizing different values for a and b, we could get various repvgg models. Repvgg could achieve better model performance with smaller model parameters on ImageNet-1K dataset compared with previous methods.[1]
Figure 1. Architecture of Repvgg [1]
Our reproduced model performance on ImageNet-1K is reported as follows.
performance tested on ascend 910*(8p) with graph mode
Model | Top-1 (%) | Top-5 (%) | ms/step | Params (M) | Batch Size | Recipe | Download |
---|---|---|---|---|---|---|---|
repvgg_a0 | 72.29 | 90.78 | 25.14 | 9.13 | 32 | yaml | weights |
repvgg_a1 | 73.68 | 91.51 | 31.78 | 14.12 | 32 | yaml | weights |
performance tested on ascend 910(8p) with graph mode
Model | Top-1 (%) | Top-5 (%) | Params (M) | Batch Size | Recipe | Download |
---|---|---|---|---|---|---|
repvgg_a0 | 72.19 | 90.75 | 9.13 | 32 | yaml | weights |
repvgg_a1 | 74.19 | 91.89 | 14.12 | 32 | yaml | weights |
- Top-1 and Top-5: Accuracy reported on the validation set of ImageNet-1K.
Please refer to the installation instruction in MindCV.
Please download the ImageNet-1K dataset for model training and validation.
- Distributed Training
It is easy to reproduce the reported results with the pre-defined training recipe. For distributed training on multiple Ascend 910 devices, please run
# distributed training on multiple GPU/Ascend devices
msrun --bind_core=True --worker_num 8 python train.py --config configs/repvgg/repvgg_a1_ascend.yaml --data_dir /path/to/imagenet
Similarly, you can train the model on multiple GPU devices with the above msrun
command.
For detailed illustration of all hyper-parameters, please refer to config.py.
Note: As the global batch size (batch_size x num_devices) is an important hyper-parameter, it is recommended to keep the global batch size unchanged for reproduction or adjust the learning rate linearly to a new global batch size.
- Standalone Training
If you want to train or finetune the model on a smaller dataset without distributed training, please run:
# standalone training on a CPU/GPU/Ascend device
python train.py --config configs/repvgg/repvgg_a1_ascend.yaml --data_dir /path/to/dataset --distribute False
To validate the accuracy of the trained model, you can use validate.py
and parse the checkpoint path
with --ckpt_path
.
python validate.py -c configs/repvgg/repvgg_a1_ascend.yaml --data_dir /path/to/imagenet --ckpt_path /path/to/ckpt
Please refer to the deployment tutorial in MindCV.
[1] Ding X, Zhang X, Ma N, et al. Repvgg: Making vgg-style convnets great again[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 13733-13742.