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))