From 88e5ba28db6e4422d11b94459e7412d1679837e9 Mon Sep 17 00:00:00 2001 From: Ezra-Yu <18586273+Ezra-Yu@users.noreply.github.com> Date: Fri, 30 Dec 2022 15:49:56 +0800 Subject: [PATCH] [Reproduce] Reproduce RepVGG Training Accuracy. (#1264) * repr repvgg * add VisionRRC * uodate repvgg configs * add BCD seriers cfgs * add cv backend config * add vision configs * add L2se configs * add ra configs * add num-works configs * add num-works configs * configs * update README * rm extra config * reset un-needed changes * update * reset pbn * update readme * update code * update code * refine doc --- configs/repvgg/README.md | 217 +++++++++++++----- .../repvgg-A0_deploy_4xb64-coslr-120e_in1k.py | 3 - .../repvgg-A1_deploy_4xb64-coslr-120e_in1k.py | 3 - .../repvgg-A2_deploy_4xb64-coslr-120e_in1k.py | 3 - .../repvgg-B0_deploy_4xb64-coslr-120e_in1k.py | 3 - .../repvgg-B1_deploy_4xb64-coslr-120e_in1k.py | 3 - ...epvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py | 3 - ...epvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py | 3 - .../repvgg-B2_deploy_4xb64-coslr-120e_in1k.py | 3 - ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - configs/repvgg/metafile.yml | 191 +++++++-------- .../repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py | 12 - configs/repvgg/repvgg-A0_8xb32_in1k.py | 33 +++ configs/repvgg/repvgg-A0_deploy_in1k.py | 3 + .../repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py | 3 - configs/repvgg/repvgg-A1_8xb32_in1k.py | 3 + ...r-120e_in1k.py => repvgg-A2_8xb32_in1k.py} | 2 +- ...r-120e_in1k.py => repvgg-B0_8xb32_in1k.py} | 2 +- ...r-120e_in1k.py => repvgg-B1_8xb32_in1k.py} | 2 +- ...120e_in1k.py => repvgg-B1g2_8xb32_in1k.py} | 2 +- ...120e_in1k.py => repvgg-B1g4_8xb32_in1k.py} | 2 +- ...r-120e_in1k.py => repvgg-B2_8xb32_in1k.py} | 2 +- ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - configs/repvgg/repvgg-B2g4_8xb32_in1k.py | 3 + ...r-200e_in1k.py => repvgg-B3_8xb32_in1k.py} | 36 ++- ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - configs/repvgg/repvgg-B3g4_8xb32_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 - configs/repvgg/repvgg-D2se_8xb32_in1k.py | 28 +++ 32 files changed, 352 insertions(+), 237 deletions(-) delete mode 100644 configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py delete mode 100644 configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py delete mode 100644 configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py create mode 100644 configs/repvgg/repvgg-A0_8xb32_in1k.py create mode 100644 configs/repvgg/repvgg-A0_deploy_in1k.py delete mode 100644 configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py create mode 100644 configs/repvgg/repvgg-A1_8xb32_in1k.py rename configs/repvgg/{repvgg-A2_4xb64-coslr-120e_in1k.py => repvgg-A2_8xb32_in1k.py} (58%) rename configs/repvgg/{repvgg-B0_4xb64-coslr-120e_in1k.py => repvgg-B0_8xb32_in1k.py} (58%) rename configs/repvgg/{repvgg-B1_4xb64-coslr-120e_in1k.py => repvgg-B1_8xb32_in1k.py} (58%) rename configs/repvgg/{repvgg-B1g2_4xb64-coslr-120e_in1k.py => repvgg-B1g2_8xb32_in1k.py} (59%) rename configs/repvgg/{repvgg-B1g4_4xb64-coslr-120e_in1k.py => repvgg-B1g4_8xb32_in1k.py} (59%) rename configs/repvgg/{repvgg-B2_4xb64-coslr-120e_in1k.py => repvgg-B2_8xb32_in1k.py} (58%) delete mode 100644 configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 configs/repvgg/repvgg-B2g4_8xb32_in1k.py rename configs/repvgg/{repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py => repvgg-B3_8xb32_in1k.py} (54%) delete mode 100644 configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 configs/repvgg/repvgg-B3g4_8xb32_in1k.py delete mode 100644 configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 configs/repvgg/repvgg-D2se_8xb32_in1k.py diff --git a/configs/repvgg/README.md b/configs/repvgg/README.md index a1bded13eb0..a6cf6c98d13 100644 --- a/configs/repvgg/README.md +++ b/configs/repvgg/README.md @@ -1,43 +1,134 @@ # RepVGG -> [Repvgg: Making vgg-style convnets great again](https://arxiv.org/abs/2101.03697) +> [RepVGG: Making VGG-style ConvNets Great Again](https://arxiv.org/abs/2101.03697) -## Abstract +## Introduction -We present a simple but powerful architecture of convolutional neural network, which has a VGG-like inference-time body composed of nothing but a stack of 3x3 convolution and ReLU, while the training-time model has a multi-branch topology. Such decoupling of the training-time and inference-time architecture is realized by a structural re-parameterization technique so that the model is named RepVGG. On ImageNet, RepVGG reaches over 80% top-1 accuracy, which is the first time for a plain model, to the best of our knowledge. On NVIDIA 1080Ti GPU, RepVGG models run 83% faster than ResNet-50 or 101% faster than ResNet-101 with higher accuracy and show favorable accuracy-speed trade-off compared to the state-of-the-art models like EfficientNet and RegNet. +RepVGG is a VGG-style convolutional architecture. It has the following advantages: + +1. The model has a VGG-like plain (a.k.a. feed-forward) topology 1 without any branches. I.e., every layer takes the output of its only preceding layer as input and feeds the output into its only following layer. +2. The model’s body uses only 3 × 3 conv and ReLU. +3. The concrete architecture (including the specific depth and layer widths) is instantiated with no automatic search, manual refinement, compound scaling, nor other heavy designs.
-## Results and models +## Abstract -### ImageNet-1k +
-| Model | Epochs | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -| :-----------: | :----: | :-------------------------------: | :-----------------------------: | :-------: | :-------: | :----------------------------------------------: | :-------------------------------------------------: | -| RepVGG-A0\* | 120 | 9.11(train) \| 8.31 (deploy) | 1.52 (train) \| 1.36 (deploy) | 72.41 | 90.50 | [config (train)](./repvgg-A0_4xb64-coslr-120e_in1k.py) \| [config (deploy)](./deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_3rdparty_4xb64-coslr-120e_in1k_20210909-883ab98c.pth) | -| RepVGG-A1\* | 120 | 14.09 (train) \| 12.79 (deploy) | 2.64 (train) \| 2.37 (deploy) | 74.47 | 91.85 | [config (train)](./repvgg-A1_4xb64-coslr-120e_in1k.py) \| [config (deploy)](./deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_3rdparty_4xb64-coslr-120e_in1k_20210909-24003a24.pth) | -| RepVGG-A2\* | 120 | 28.21 (train) \| 25.5 (deploy) | 5.7 (train) \| 5.12 (deploy) | 76.48 | 93.01 | [config (train)](./repvgg-A2_4xb64-coslr-120e_in1k.py) \|[config (deploy)](./deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_3rdparty_4xb64-coslr-120e_in1k_20210909-97d7695a.pth) | -| RepVGG-B0\* | 120 | 15.82 (train) \| 14.34 (deploy) | 3.42 (train) \| 3.06 (deploy) | 75.14 | 92.42 | [config (train)](./repvgg-B0_4xb64-coslr-120e_in1k.py) \|[config (deploy)](./deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_3rdparty_4xb64-coslr-120e_in1k_20210909-446375f4.pth) | -| RepVGG-B1\* | 120 | 57.42 (train) \| 51.83 (deploy) | 13.16 (train) \| 11.82 (deploy) | 78.37 | 94.11 | [config (train)](./repvgg-B1_4xb64-coslr-120e_in1k.py) \|[config (deploy)](./deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_3rdparty_4xb64-coslr-120e_in1k_20210909-750cdf67.pth) | -| RepVGG-B1g2\* | 120 | 45.78 (train) \| 41.36 (deploy) | 9.82 (train) \| 8.82 (deploy) | 77.79 | 93.88 | [config (train)](./repvgg-B1g2_4xb64-coslr-120e_in1k.py) \|[config (deploy)](./deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k_20210909-344f6422.pth) | -| RepVGG-B1g4\* | 120 | 39.97 (train) \| 36.13 (deploy) | 8.15 (train) \| 7.32 (deploy) | 77.58 | 93.84 | [config (train)](./repvgg-B1g4_4xb64-coslr-120e_in1k.py) \|[config (deploy)](./deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k_20210909-d4c1a642.pth) | -| RepVGG-B2\* | 120 | 89.02 (train) \| 80.32 (deploy) | 20.46 (train) \| 18.39 (deploy) | 78.78 | 94.42 | [config (train)](./repvgg-B2_4xb64-coslr-120e_in1k.py) \|[config (deploy)](./deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_3rdparty_4xb64-coslr-120e_in1k_20210909-bd6b937c.pth) | -| RepVGG-B2g4\* | 200 | 61.76 (train) \| 55.78 (deploy) | 12.63 (train) \| 11.34 (deploy) | 79.38 | 94.68 | [config (train)](./repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](./deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-7b7955f0.pth) | -| RepVGG-B3\* | 200 | 123.09 (train) \| 110.96 (deploy) | 29.17 (train) \| 26.22 (deploy) | 80.52 | 95.26 | [config (train)](./repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](./deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-dda968bf.pth) | -| RepVGG-B3g4\* | 200 | 83.83 (train) \| 75.63 (deploy) | 17.9 (train) \| 16.08 (deploy) | 80.22 | 95.10 | [config (train)](./repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](./deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-4e54846a.pth) | -| RepVGG-D2se\* | 200 | 133.33 (train) \| 120.39 (deploy) | 36.56 (train) \| 32.85 (deploy) | 81.81 | 95.94 | [config (train)](./repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](./deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-cf3139b7.pth) | - -*Models with * are converted from the [official repo](https://github.com/DingXiaoH/RepVGG). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* +Show the paper's abstract + +
+We present a simple but powerful architecture of convolutional neural network, which has a VGG-like inference-time body composed of nothing but a stack of 3x3 convolution and ReLU, while the training-time model has a multi-branch topology. Such decoupling of the training-time and inference-time architecture is realized by a structural re-parameterization technique so that the model is named RepVGG. On ImageNet, RepVGG reaches over 80% top-1 accuracy, which is the first time for a plain model, to the best of our knowledge. On NVIDIA 1080Ti GPU, RepVGG models run 83% faster than ResNet-50 or 101% faster than ResNet-101 with higher accuracy and show favorable accuracy-speed trade-off compared to the state-of-the-art models like EfficientNet and RegNet. +
+ +
## How to use -The checkpoints provided are all `training-time` models. Use the reparameterize tool to switch them to more efficient `inference-time` architecture, which not only has fewer parameters but also less calculations. +The checkpoints provided are all `training-time` models. Use the reparameterize tool or `switch_to_deploy` interface to switch them to more efficient `inference-time` architecture, which not only has fewer parameters but also less calculations. + + + +**Predict image** + +Use `classifier.backbone.switch_to_deploy()` interface to switch the RepVGG models into inference mode. + +```python +>>> import torch +>>> from mmcls.apis import init_model, inference_model +>>> +>>> model = init_model('configs/repvgg/repvgg-A0_8xb32_in1k.py', 'https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth') +>>> results = inference_model(model, 'demo/demo.JPEG') +>>> print( (results['pred_class'], results['pred_score']) ) +('sea snake' 0.8338906168937683) +>>> +>>> # switch to deploy mode +>>> model.backbone.switch_to_deploy() +>>> results = inference_model(model, 'demo/demo.JPEG') +>>> print( (results['pred_class'], results['pred_score']) ) +('sea snake', 0.7883061170578003) +``` + +**Use the model** + +```python +>>> import torch +>>> from mmcls.apis import get_model +>>> +>>> model = get_model("repvgg-a0_8xb32_in1k", pretrained=True) +>>> model.eval() +>>> inputs = torch.rand(1, 3, 224, 224).to(model.data_preprocessor.device) +>>> # To get classification scores. +>>> out = model(inputs) +>>> print(out.shape) +torch.Size([1, 1000]) +>>> # To extract features. +>>> outs = model.extract_feat(inputs) +>>> print(outs[0].shape) +torch.Size([1, 1280]) +>>> +>>> # switch to deploy mode +>>> model.backbone.switch_to_deploy() +>>> out_deploy = model(inputs) +>>> print(out.shape) +torch.Size([1, 1000]) +>>> assert torch.allclose(out, out_deploy, rtol=1e-4, atol=1e-5) # pass without error +``` + +**Train/Test Command** + +Place the ImageNet dataset to the `data/imagenet/` directory, or prepare datasets according to the [docs](https://mmclassification.readthedocs.io/en/1.x/user_guides/dataset_prepare.html#prepare-dataset). + +Train: + +```shell +python tools/train.py configs/repvgg/repvgg-a0_8xb32_in1k.py +``` + +Download Checkpoint: + +```shell +wget https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth +``` + +Test use unfused model: + +```shell +python tools/test.py configs/repvgg/repvgg-a0_8xb32_in1k.py repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth +``` -### Use tool +Reparameterize checkpoint: + +```shell +python ./tools/convert_models/reparameterize_model.py configs/repvgg/repvgg-a0_8xb32_in1k.py repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth repvgg_A0_deploy.pth +``` + +Test use fused model: + +```shell +python tools/test.py configs/repvgg/repvgg-A0_8xb32_in1k.py repvgg_A0_deploy.pth --cfg-options model.backbone.deploy=True +``` + +or + +```shell +python tools/test.py configs/repvgg/repvgg-A0_deploy_in1k.py repvgg_A0_deploy.pth +``` + + + +For more configurable parameters, please refer to the [API](https://mmclassification.readthedocs.io/en/1.x/api/generated/mmcls.models.backbones.RepVGG.html#mmcls.models.backbones.RepVGG). + +
+ +How to use the reparameterisation tool(click to show) + +
Use provided tool to reparameterize the given model and save the checkpoint: @@ -45,52 +136,68 @@ Use provided tool to reparameterize the given model and save the checkpoint: python tools/convert_models/reparameterize_model.py ${CFG_PATH} ${SRC_CKPT_PATH} ${TARGET_CKPT_PATH} ``` -`${CFG_PATH}` is the config file, `${SRC_CKPT_PATH}` is the source chenpoint file, `${TARGET_CKPT_PATH}` is the target deploy weight file path. +`${CFG_PATH}` is the config file path, `${SRC_CKPT_PATH}` is the source chenpoint file path, `${TARGET_CKPT_PATH}` is the target deploy weight file path. -To use reparameterized weights, the config file must switch to the deploy config files. +For example: -```bash -python tools/test.py ${Deploy_CFG} ${Deploy_Checkpoint} --metrics accuracy +```shell +# download the weight +wget https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth +# reparameterize unfused weight to fused weight +python ./tools/convert_models/reparameterize_model.py configs/repvgg/repvgg-a0_8xb32_in1k.py repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth repvgg-A0_deploy.pth ``` -### In the code +To use reparameterized weights, the config file must switch to **the deploy config files** as [the deploy_A0 example](./repvgg-A0_deploy_in1k.py) or add `--cfg-options model.backbone.deploy=True` in command. -Use `backbone.switch_to_deploy()` or `classificer.backbone.switch_to_deploy()` to switch to the deploy mode. For example: +For example of using the reparameterized weights above: -```python -from mmcls.models import build_backbone +```shell +python ./tools/test.py ./configs/repvgg/repvgg-A0_deploy_in1k.py repvgg-A0_deploy.pth +``` + +You can get other deploy configs by modifying the [A0_deploy example](./repvgg-A0_deploy_in1k.py): + +```text +# in repvgg-A0_deploy_in1k.py +_base_ = '../repvgg-A0_8xb32_in1k.py' # basic A0 config -backbone_cfg=dict(type='RepVGG',arch='A0'), -backbone = build_backbone(backbone_cfg) -backbone.switch_to_deploy() +model = dict(backbone=dict(deploy=True)) # switch model into deploy mode ``` -or +or add `--cfg-options model.backbone.deploy=True` in command as following: -```python -from mmcls.models import build_classifier - -cfg = dict( - type='ImageClassifier', - backbone=dict( - type='RepVGG', - arch='A0'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=1280, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) - -classifier = build_classifier(cfg) -classifier.backbone.switch_to_deploy() +```shell +python tools/test.py configs/repvgg/repvgg-A0_8xb32_in1k.py repvgg_A0_deploy.pth --cfg-options model.backbone.deploy=True ``` +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Pretrain |

Params(M)
(train\|deploy)

|

Flops(G)
(train\|deploy)

| Top-1 (%) | Top-5 (%) | Config | Download | +| :-------------------------: | :----------: | :-------------------------------------: | :--------------------------------------: | :-------: | :-------: | :-----------------------------: | :-------------------------------: | +| repvgg-A0_8xb32_in1k | From scratch | 9.11 \| 8.31 | 1.53 \| 1.36 | 72.37 | 90.56 | [config](./repvgg-A0_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_8xb32_in1k_20221213-60ae8e23.log) | +| repvgg-A1_8xb32_in1k | From scratch | 14.09 \| 12.79 | 2.65 \| 2.37 | 74.47 | 91.85 | [config](./repvgg-A1_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_8xb32_in1k_20221213-f81bf3df.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_8xb32_in1k_20221213-f81bf3df.log) | +| repvgg-A2_8xb32_in1k | From scratch | 28.21 \| 25.5 | 5.72 \| 5.12 | 76.49 | 93.09 | [config](./repvgg-A2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_8xb32_in1k_20221213-a8767caf.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_8xb32_in1k_20221213-a8767caf.log) | +| repvgg-B0_8xb32_in1k | From scratch | 15.82 \| 14.34 | 3.43 \| 3.06 | 75.27 | 92.21 | [config](./repvgg-B0_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_8xb32_in1k_20221213-5091ecc7.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_8xb32_in1k_20221213-5091ecc7.log) | +| repvgg-B1_8xb32_in1k | From scratch | 57.42 \| 51.83 | 13.20 \| 11.81 | 78.19 | 94.04 | [config](./repvgg-B1_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_8xb32_in1k_20221213-d17c45e7.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_8xb32_in1k_20221213-d17c45e7.log) | +| repvgg-B1g2_8xb32_in1k | From scratch | 45.78 \| 41.36 | 9.86 \| 8.80 | 77.87 | 93.99 | [config](./repvgg-B1g2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_8xb32_in1k_20221213-ae6428fd.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_8xb32_in1k_20221213-ae6428fd.log) | +| repvgg-B1g4_8xb32_in1k | From scratch | 39.97 \| 36.13 | 8.19 \| 7.30 | 77.81 | 93.77 | [config](./repvgg-B1g4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_8xb32_in1k_20221213-a7a4aaea.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_8xb32_in1k_20221213-a7a4aaea.log) | +| repvgg-B2_8xb32_in1k | From scratch | 89.02 \| 80.32 | 20.5 \| 18.4 | 78.58 | 94.23 | [config](./repvgg-B2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_8xb32_in1k_20221213-d8b420ef.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_8xb32_in1k_20221213-d8b420ef.log) | +| repvgg-B2g4_8xb32_in1k | From scratch | 61.76 \| 55.78 | 12.7 \| 11.3 | 79.44 | 94.72 | [config](./repvgg-B2g4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_8xb32_in1k_20221213-0c1990eb.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_8xb32_in1k_20221213-0c1990eb.log) | +| repvgg-B3_8xb32_in1k | From scratch | 123.09 \| 110.96 | 29.2 \| 26.2 | 80.58 | 95.33 | [config](./repvgg-B3_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_8xb32_in1k_20221213-927a329a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_8xb32_in1k_20221213-927a329a.log) | +| repvgg-B3g4_8xb32_in1k | From scratch | 83.83 \| 75.63 | 18.0 \| 16.1 | 80.26 | 95.15 | [config](./repvgg-B3g4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_8xb32_in1k_20221213-e01cb280.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_8xb32_in1k_20221213-e01cb280.log) | +| repvgg-D2se_3rdparty_in1k\* | From scratch | 133.33 \| 120.39 | 36.6 \| 32.8 | 81.81 | 95.94 | [config](./repvgg-D2se_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-cf3139b7.pth) | + +*Models with * are converted from the [official repo](https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L250). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + ## Citation -``` +```bibtex @inproceedings{ding2021repvgg, title={Repvgg: Making vgg-style convnets great again}, author={Ding, Xiaohan and Zhang, Xiangyu and Ma, Ningning and Han, Jungong and Ding, Guiguang and Sun, Jian}, diff --git a/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 20787f286da..00000000000 --- a/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-A0_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index eea0da9c58c..00000000000 --- a/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-A1_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 7b0cea7b7d5..00000000000 --- a/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-A2_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 23a2898ac56..00000000000 --- a/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B0_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 24355edac7f..00000000000 --- a/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B1_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 579fcc47b9c..00000000000 --- a/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B1g2_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index eab5d440374..00000000000 --- a/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B1g4_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py b/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 0681f14dc36..00000000000 --- a/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B2_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index 8f1840145f7..00000000000 --- a/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index e60b0678a9e..00000000000 --- a/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index 46f187789a3..00000000000 --- a/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index 66dff3b6d44..00000000000 --- a/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = '../repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/metafile.yml b/configs/repvgg/metafile.yml index 84fee5911c1..8c550729aea 100644 --- a/configs/repvgg/metafile.yml +++ b/configs/repvgg/metafile.yml @@ -14,57 +14,48 @@ Collections: Version: v0.16.0 Models: - - Name: repvgg-A0_3rdparty_4xb64-coslr-120e_in1k + - Name: repvgg-A0_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-A0_8xb32_in1k.py Metadata: - FLOPs: 1520000000 - Parameters: 9110000 + FLOPs: 1360233728 + Parameters: 8309384 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 72.41 - Top 5 Accuracy: 90.50 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_3rdparty_4xb64-coslr-120e_in1k_20210909-883ab98c.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L196 - - Name: repvgg-A1_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 72.37 + Top 5 Accuracy: 90.56 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_8xb32_in1k_20221213-60ae8e23.pth + - Name: repvgg-A1_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-A1_8xb32_in1k.py Metadata: - FLOPs: 2640000000 - Parameters: 14090000 + FLOPs: 2362750208 + Parameters: 12789864 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 74.47 - Top 5 Accuracy: 91.85 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_3rdparty_4xb64-coslr-120e_in1k_20210909-24003a24.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L200 - - Name: repvgg-A2_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 74.23 + Top 5 Accuracy: 91.80 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_8xb32_in1k_20221213-f81bf3df.pth + - Name: repvgg-A2_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-A2_8xb32_in1k.py Metadata: - FLOPs: 28210000000 - Parameters: 5700000 + FLOPs: 5115612544 + Parameters: 25499944 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 76.48 - Top 5 Accuracy: 93.01 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_3rdparty_4xb64-coslr-120e_in1k_20210909-97d7695a.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L204 - - Name: repvgg-B0_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 76.49 + Top 5 Accuracy: 93.09 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_8xb32_in1k_20221213-a8767caf.pth + - Name: repvgg-B0_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-B0_8xb32_in1k.py Metadata: FLOPs: 15820000000 Parameters: 3420000 @@ -72,130 +63,106 @@ Models: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 75.14 - Top 5 Accuracy: 92.42 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_3rdparty_4xb64-coslr-120e_in1k_20210909-446375f4.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L208 - - Name: repvgg-B1_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 75.27 + Top 5 Accuracy: 92.21 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_8xb32_in1k_20221213-5091ecc7.pth + - Name: repvgg-B1_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-B1_8xb32_in1k.py Metadata: - FLOPs: 57420000000 - Parameters: 13160000 + FLOPs: 11813537792 + Parameters: 51829480 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 78.37 - Top 5 Accuracy: 94.11 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_3rdparty_4xb64-coslr-120e_in1k_20210909-750cdf67.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L212 - - Name: repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 78.19 + Top 5 Accuracy: 94.04 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_8xb32_in1k_20221213-d17c45e7.pth + - Name: repvgg-B1g2_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-B1g2_8xb32_in1k.py Metadata: - FLOPs: 45780000000 - Parameters: 9820000 + FLOPs: 8807794688 + Parameters: 41360104 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 77.79 - Top 5 Accuracy: 93.88 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k_20210909-344f6422.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L216 - - Name: repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 77.87 + Top 5 Accuracy: 93.99 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_8xb32_in1k_20221213-ae6428fd.pth + - Name: repvgg-B1g4_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-B1g4_8xb32_in1k.py Metadata: - FLOPs: 39970000000 - Parameters: 8150000 + FLOPs: 7304923136 + Parameters: 36125416 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 77.58 - Top 5 Accuracy: 93.84 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k_20210909-d4c1a642.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L220 - - Name: repvgg-B2_3rdparty_4xb64-coslr-120e_in1k + Top 1 Accuracy: 77.81 + Top 5 Accuracy: 93.77 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_8xb32_in1k_20221213-a7a4aaea.pth + - Name: repvgg-B2_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py + Config: configs/repvgg/repvgg-B2_8xb32_in1k.py Metadata: - FLOPs: 89020000000 - Parameters: 20420000 + FLOPs: 18374175232 + Parameters: 80315112 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 78.78 - Top 5 Accuracy: 94.42 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_3rdparty_4xb64-coslr-120e_in1k_20210909-bd6b937c.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L225 - - Name: repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + Top 1 Accuracy: 78.58 + Top 5 Accuracy: 94.23 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_8xb32_in1k_20221213-d8b420ef.pth + - Name: repvgg-B2g4_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Config: configs/repvgg/repvgg-B2g4_8xb32_in1k.py Metadata: - FLOPs: 61760000000 - Parameters: 12630000 + FLOPs: 11329464832 + Parameters: 55777512 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 79.38 - Top 5 Accuracy: 94.68 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-7b7955f0.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L229 - - Name: repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + Top 1 Accuracy: 79.44 + Top 5 Accuracy: 94.72 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_8xb32_in1k_20221213-0c1990eb.pth + - Name: repvgg-B3_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Config: configs/repvgg/repvgg-B3_8xb32_in1k.py Metadata: - FLOPs: 123090000000 - Parameters: 29170000 + FLOPs: 26206448128 + Parameters: 110960872 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 80.52 - Top 5 Accuracy: 95.26 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-dda968bf.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L238 - - Name: repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + Top 1 Accuracy: 80.58 + Top 5 Accuracy: 95.33 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_8xb32_in1k_20221213-927a329a.pth + - Name: repvgg-B3g4_8xb32_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Config: configs/repvgg/repvgg-B3g4_8xb32_in1k.py Metadata: - FLOPs: 83830000000 - Parameters: 17900000 + FLOPs: 16062065152 + Parameters: 75626728 Results: - Dataset: ImageNet-1k Task: Image Classification Metrics: - Top 1 Accuracy: 80.22 - Top 5 Accuracy: 95.10 - Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-4e54846a.pth - Converted From: - Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq - Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L238 - - Name: repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + Top 1 Accuracy: 80.26 + Top 5 Accuracy: 95.15 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_8xb32_in1k_20221213-e01cb280.pth + - Name: repvgg-D2se_3rdparty_in1k In Collection: RepVGG - Config: configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Config: configs/repvgg/repvgg-D2se_8xb32_in1k.py Metadata: - FLOPs: 133330000000 - Parameters: 36560000 + FLOPs: 32838581760 + Parameters: 120387572 Results: - Dataset: ImageNet-1k Task: Image Classification diff --git a/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 8a93ed0a08c..00000000000 --- a/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,12 +0,0 @@ -_base_ = [ - '../_base_/models/repvgg-A0_in1k.py', - '../_base_/datasets/imagenet_bs64_pil_resize.py', - '../_base_/schedules/imagenet_bs256_coslr.py', - '../_base_/default_runtime.py' -] - -# schedule settings -param_scheduler = dict( - type='CosineAnnealingLR', T_max=120, by_epoch=True, begin=0, end=120) - -train_cfg = dict(by_epoch=True, max_epochs=120) diff --git a/configs/repvgg/repvgg-A0_8xb32_in1k.py b/configs/repvgg/repvgg-A0_8xb32_in1k.py new file mode 100644 index 00000000000..b767ae2a3e4 --- /dev/null +++ b/configs/repvgg/repvgg-A0_8xb32_in1k.py @@ -0,0 +1,33 @@ +_base_ = [ + '../_base_/models/repvgg-A0_in1k.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] + +val_dataloader = dict(batch_size=256) +test_dataloader = dict(batch_size=256) + +# schedule settings +optim_wrapper = dict( + paramwise_cfg=dict( + bias_decay_mult=0.0, + custom_keys={ + 'branch_3x3.norm': dict(decay_mult=0.0), + 'branch_1x1.norm': dict(decay_mult=0.0), + 'branch_norm.bias': dict(decay_mult=0.0), + })) + +# schedule settings +param_scheduler = dict( + type='CosineAnnealingLR', + T_max=120, + by_epoch=True, + begin=0, + end=120, + convert_to_iter_based=True) + +train_cfg = dict(by_epoch=True, max_epochs=120) + +default_hooks = dict( + checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=3)) diff --git a/configs/repvgg/repvgg-A0_deploy_in1k.py b/configs/repvgg/repvgg-A0_deploy_in1k.py new file mode 100644 index 00000000000..16f0bbfcc7c --- /dev/null +++ b/configs/repvgg/repvgg-A0_deploy_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-A0_8xb32_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py deleted file mode 100644 index 649020f2c6f..00000000000 --- a/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' - -model = dict(backbone=dict(arch='A1')) diff --git a/configs/repvgg/repvgg-A1_8xb32_in1k.py b/configs/repvgg/repvgg-A1_8xb32_in1k.py new file mode 100644 index 00000000000..fab5e586359 --- /dev/null +++ b/configs/repvgg/repvgg-A1_8xb32_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_8xb32_in1k.py' + +model = dict(backbone=dict(arch='A1')) diff --git a/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-A2_8xb32_in1k.py similarity index 58% rename from configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py rename to configs/repvgg/repvgg-A2_8xb32_in1k.py index eedaf2d29b7..f6196f02fbf 100644 --- a/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py +++ b/configs/repvgg/repvgg-A2_8xb32_in1k.py @@ -1,3 +1,3 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' +_base_ = './repvgg-A0_8xb32_in1k.py' model = dict(backbone=dict(arch='A2'), head=dict(in_channels=1408)) diff --git a/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-B0_8xb32_in1k.py similarity index 58% rename from configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py rename to configs/repvgg/repvgg-B0_8xb32_in1k.py index b3ce7ea27d2..9bbc4ab2259 100644 --- a/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py +++ b/configs/repvgg/repvgg-B0_8xb32_in1k.py @@ -1,3 +1,3 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' +_base_ = './repvgg-A0_8xb32_in1k.py' model = dict(backbone=dict(arch='B0'), head=dict(in_channels=1280)) diff --git a/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-B1_8xb32_in1k.py similarity index 58% rename from configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py rename to configs/repvgg/repvgg-B1_8xb32_in1k.py index 30adea3dc8e..e08db3c4b81 100644 --- a/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py +++ b/configs/repvgg/repvgg-B1_8xb32_in1k.py @@ -1,3 +1,3 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' +_base_ = './repvgg-A0_8xb32_in1k.py' model = dict(backbone=dict(arch='B1'), head=dict(in_channels=2048)) diff --git a/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-B1g2_8xb32_in1k.py similarity index 59% rename from configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py rename to configs/repvgg/repvgg-B1g2_8xb32_in1k.py index 2749db8d955..a1c53fded4e 100644 --- a/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py +++ b/configs/repvgg/repvgg-B1g2_8xb32_in1k.py @@ -1,3 +1,3 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' +_base_ = './repvgg-A0_8xb32_in1k.py' model = dict(backbone=dict(arch='B1g2'), head=dict(in_channels=2048)) diff --git a/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-B1g4_8xb32_in1k.py similarity index 59% rename from configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py rename to configs/repvgg/repvgg-B1g4_8xb32_in1k.py index 2647690975d..0757b1e580e 100644 --- a/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py +++ b/configs/repvgg/repvgg-B1g4_8xb32_in1k.py @@ -1,3 +1,3 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' +_base_ = './repvgg-A0_8xb32_in1k.py' model = dict(backbone=dict(arch='B1g4'), head=dict(in_channels=2048)) diff --git a/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py b/configs/repvgg/repvgg-B2_8xb32_in1k.py similarity index 58% rename from configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py rename to configs/repvgg/repvgg-B2_8xb32_in1k.py index 4d215567f4d..b9a7d4ca557 100644 --- a/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py +++ b/configs/repvgg/repvgg-B2_8xb32_in1k.py @@ -1,3 +1,3 @@ -_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' +_base_ = './repvgg-A0_8xb32_in1k.py' model = dict(backbone=dict(arch='B2'), head=dict(in_channels=2560)) diff --git a/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index 11331cf02f2..00000000000 --- a/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = './repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(arch='B2g4')) diff --git a/configs/repvgg/repvgg-B2g4_8xb32_in1k.py b/configs/repvgg/repvgg-B2g4_8xb32_in1k.py new file mode 100644 index 00000000000..8b3397881d7 --- /dev/null +++ b/configs/repvgg/repvgg-B2g4_8xb32_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-B3_8xb32_in1k.py' + +model = dict(backbone=dict(arch='B2g4'), head=dict(in_channels=2560)) diff --git a/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/repvgg-B3_8xb32_in1k.py similarity index 54% rename from configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py rename to configs/repvgg/repvgg-B3_8xb32_in1k.py index 98bcad22da0..2d5d6e1358a 100644 --- a/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ b/configs/repvgg/repvgg-B3_8xb32_in1k.py @@ -1,10 +1,20 @@ _base_ = [ '../_base_/models/repvgg-B3_lbs-mixup_in1k.py', - '../_base_/datasets/imagenet_bs64_pil_resize.py', - '../_base_/schedules/imagenet_bs256_200e_coslr_warmup.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', '../_base_/default_runtime.py' ] +# schedule settings +optim_wrapper = dict( + paramwise_cfg=dict( + bias_decay_mult=0.0, + custom_keys={ + 'branch_3x3.norm': dict(decay_mult=0.0), + 'branch_1x1.norm': dict(decay_mult=0.0), + 'branch_norm.bias': dict(decay_mult=0.0), + })) + data_preprocessor = dict( # RGB format normalization parameters mean=[123.675, 116.28, 103.53], @@ -21,8 +31,12 @@ dict(type='RandomResizedCrop', scale=224, backend='pillow'), dict(type='RandomFlip', prob=0.5, direction='horizontal'), dict( - type='AutoAugment', - policies='imagenet', + type='RandAugment', + policies='timm_increasing', + num_policies=2, + total_level=10, + magnitude_level=7, + magnitude_std=0.5, hparams=dict(pad_val=[round(x) for x in bgr_mean])), dict(type='PackClsInputs'), ] @@ -37,3 +51,17 @@ train_dataloader = dict(dataset=dict(pipeline=train_pipeline)) val_dataloader = dict(dataset=dict(pipeline=test_pipeline)) test_dataloader = dict(dataset=dict(pipeline=test_pipeline)) + +# schedule settings +param_scheduler = dict( + type='CosineAnnealingLR', + T_max=200, + by_epoch=True, + begin=0, + end=200, + convert_to_iter_based=True) + +train_cfg = dict(by_epoch=True, max_epochs=200) + +default_hooks = dict( + checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=3)) diff --git a/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index 67e3688c5ae..00000000000 --- a/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = './repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(arch='B3g4')) diff --git a/configs/repvgg/repvgg-B3g4_8xb32_in1k.py b/configs/repvgg/repvgg-B3g4_8xb32_in1k.py new file mode 100644 index 00000000000..b0c5c00af84 --- /dev/null +++ b/configs/repvgg/repvgg-B3g4_8xb32_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-B3_8xb32_in1k.py' + +model = dict(backbone=dict(arch='B3g4')) diff --git a/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py deleted file mode 100644 index d235610f07d..00000000000 --- a/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +++ /dev/null @@ -1,3 +0,0 @@ -_base_ = './repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' - -model = dict(backbone=dict(arch='D2se')) diff --git a/configs/repvgg/repvgg-D2se_8xb32_in1k.py b/configs/repvgg/repvgg-D2se_8xb32_in1k.py new file mode 100644 index 00000000000..f532dcd7968 --- /dev/null +++ b/configs/repvgg/repvgg-D2se_8xb32_in1k.py @@ -0,0 +1,28 @@ +_base_ = './repvgg-B3_8xb32_in1k.py' + +model = dict(backbone=dict(arch='D2se'), head=dict(in_channels=2560)) + +param_scheduler = [ + # warm up learning rate scheduler + dict( + type='LinearLR', + start_factor=0.0001, + by_epoch=True, + begin=0, + end=5, + # update by iter + convert_to_iter_based=True), + # main learning rate scheduler + dict( + type='CosineAnnealingLR', + T_max=295, + eta_min=1.0e-6, + by_epoch=True, + begin=5, + end=300) +] + +train_cfg = dict(by_epoch=True, max_epochs=300) + +default_hooks = dict( + checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=3))