From 3069e43f77fcc6310f0d53e0a6d82b3fc4e516d2 Mon Sep 17 00:00:00 2001
From: Yixiao Fang <36138628+fangyixiao18@users.noreply.github.com>
Date: Thu, 6 Apr 2023 17:17:56 +0800
Subject: [PATCH] [Docs] Update readme (#1449)
* update readme
* update
* refine
* refine
* update cn version
* update installation
* update modelzoo table
* fix lint
* update
* update
* update
* update
* fix lint
* update
* update
* update changelog
* remove gif
* fix typo
* update announcement
* update
* fixtypo
* update
---
README.md | 238 +++++++++++++---------
README_zh-CN.md | 242 ++++++++++++++---------
docs/en/index.rst | 2 +-
docs/zh_CN/index.rst | 2 +-
resources/xiaozhushou_weixin_qrcode.jpeg | Bin 0 -> 42538 bytes
resources/zhihu_qrcode.jpg | Bin 0 -> 397245 bytes
6 files changed, 291 insertions(+), 193 deletions(-)
create mode 100644 resources/xiaozhushou_weixin_qrcode.jpeg
create mode 100644 resources/zhihu_qrcode.jpg
diff --git a/README.md b/README.md
index b38a3e6e..2b8481cd 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@
-[](https://pypi.org/project/mmcls)
+[](https://pypi.org/project/mmpretrain)
[](https://mmclassification.readthedocs.io/en/1.x/)
[](https://github.com/open-mmlab/mmclassification/actions)
[](https://codecov.io/gh/open-mmlab/mmclassification)
@@ -33,6 +33,10 @@
[🆕 Update News](https://mmclassification.readthedocs.io/en/1.x/notes/changelog.html) |
[🤔 Reporting Issues](https://github.com/open-mmlab/mmclassification/issues/new/choose)
+
+
+English | [简体中文](/README_zh-CN.md)
+
@@ -59,55 +63,43 @@
## Introduction
-English | [简体中文](/README_zh-CN.md)
+MMPreTrain is an open source pre-training toolbox based on PyTorch. It is a part of the [OpenMMLab](https://openmmlab.com/) project.
-MMClassification is an open source image classification toolbox based on PyTorch. It is
-a part of the [OpenMMLab](https://openmmlab.com/) project.
-
-The `1.x` branch works with **PyTorch 1.6+**.
-
-
-

-
+The `main` branch works with **PyTorch 1.8+**.
### Major features
- Various backbones and pretrained models
+- Rich training strategies(supervised learning, self-supervised learning, etc.)
- Bag of training tricks
- Large-scale training configs
- High efficiency and extensibility
-- Powerful toolkits
+- Powerful toolkits for model analysis and experiments
## What's new
-v1.0.0rc5 was released in 30/12/2022
+🌟 v1.0.0rc6 was released in 06/04/2023
-- Support **EVA**, **RevViT**, **EfficientnetV2**, **CLIP**, **TinyViT** and **MixMIM** backbones.
+- Integrated Self-supervised leanrning algorithms from **MMSelfSup**, such as `MAE`, `BEiT`, `MILAN`, etc.
+- Add t-SNE visualization.
+- Refactor dataset pipeline visualization.
+
+Previous version update
+
+- Support **LeViT**, **XCiT**, **ViG**, **ConvNeXt-V2**, **EVA**, **RevViT**, **EfficientnetV2**, **CLIP**, **TinyViT** and **MixMIM** backbones.
- Reproduce the training accuracy of **ConvNeXt** and **RepVGG**.
-- Support **multi-task** training and testing. See [#1229](https://github.com/open-mmlab/mmclassification/pull/1229) for more details.
-- Support Test-time Augmentation. See [#1161](https://github.com/open-mmlab/mmclassification/pull/1161) for
- more details.
-
-v1.0.0rc4 was released in 06/12/2022.
-
-- Upgrade API to get pre-defined models of MMClassification. See [#1236](https://github.com/open-mmlab/mmclassification/pull/1236) for more details.
-- Refactor BEiT backbone and support v1/v2 inference. See [#1144](https://github.com/open-mmlab/mmclassification/pull/1144).
-
-v1.0.0rc3 was released in 21/11/2022.
-
-- Add **Switch Recipe** Hook, Now we can modify training pipeline, mixup and loss settings during training, see [#1101](https://github.com/open-mmlab/mmclassification/pull/1101).
-- Add **TIMM and HuggingFace** wrappers. Now you can train/use models in TIMM/HuggingFace directly, see [#1102](https://github.com/open-mmlab/mmclassification/pull/1102).
-- Support **retrieval tasks**, see [#1055](https://github.com/open-mmlab/mmclassification/pull/1055).
-- Reproduce **mobileone** training accuracy. See [#1191](https://github.com/open-mmlab/mmclassification/pull/1191)
+- Support confusion matrix calculation and plot.
+- Support **multi-task** training and testing.
+- Support Test-time Augmentation.
+- Upgrade API to get pre-defined models of MMClassification.
+- Refactor BEiT backbone and support v1/v2 inference.
This release introduced a brand new and flexible training & test engine, but it's still in progress. Welcome
to try according to [the documentation](https://mmclassification.readthedocs.io/en/1.x/).
And there are some BC-breaking changes. Please check [the migration tutorial](https://mmclassification.readthedocs.io/en/1.x/migration.html).
-The release candidate will last until the end of 2022, and during the release candidate, we will develop on the `1.x` branch. And we will still maintain 0.x version still at least the end of 2023.
-
-Please refer to [changelog.md](https://mmclassification.readthedocs.io/en/1.x/notes/changelog.html) for more details and other release history.
+Please refer to [changelog](https://mmclassification.readthedocs.io/en/1.x/notes/changelog.html) for more details and other release history.
## Installation
@@ -117,87 +109,145 @@ Below are quick steps for installation:
conda create -n open-mmlab python=3.8 pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -y
conda activate open-mmlab
pip install openmim
-git clone -b 1.x https://github.com/open-mmlab/mmclassification.git
-cd mmclassification
+git clone https://github.com/open-mmlab/mmpretrain.git
+cd mmpretrain
mim install -e .
```
-Please refer to [install.md](https://mmclassification.readthedocs.io/en/1.x/get_started.html) for more detailed installation and dataset preparation.
+Please refer to [installation documentation](https://mmclassification.readthedocs.io/en/1.x/get_started.html) for more detailed installation and dataset preparation.
## User Guides
-We provided a series of tutorials about the basic usage of MMClassification for new users:
+We provided a series of tutorials about the basic usage of MMPreTrain for new users:
-- [Inference with existing models](https://mmclassification.readthedocs.io/en/1.x/user_guides/inference.html)
-- [Prepare Dataset](https://mmclassification.readthedocs.io/en/1.x/user_guides/dataset_prepare.html)
-- [Training and Test](https://mmclassification.readthedocs.io/en/1.x/user_guides/train_test.html)
- [Learn about Configs](https://mmclassification.readthedocs.io/en/1.x/user_guides/config.html)
-- [Fine-tune Models](https://mmclassification.readthedocs.io/en/1.x/user_guides/finetune.html)
-- [Analysis Tools](https://mmclassification.readthedocs.io/en/1.x/user_guides/analysis.html)
-- [Visualization Tools](https://mmclassification.readthedocs.io/en/1.x/user_guides/visualization.html)
-- [Other Useful Tools](https://mmclassification.readthedocs.io/en/1.x/user_guides/useful_tools.html)
+- [Prepare Dataset](https://mmclassification.readthedocs.io/en/1.x/user_guides/dataset_prepare.html)
+- [Inference with existing models](https://mmclassification.readthedocs.io/en/1.x/user_guides/inference.html)
+- [Train](https://mmclassification.readthedocs.io/en/pretrain/user_guides/train.html)
+- [Test](https://mmclassification.readthedocs.io/en/pretrain/user_guides/test.html)
+- [Downstream tasks](https://mmclassification.readthedocs.io/en/pretrain/user_guides/downstream.html)
+
+For more information, please refer to [our documentation](https://mmclassification.readthedocs.io/en/pretrain/).
## Model zoo
Results and models are available in the [model zoo](https://mmclassification.readthedocs.io/en/1.x/modelzoo_statistics.html).
-
-Supported backbones
-
-- [x] [VGG](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/vgg)
-- [x] [ResNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/resnet)
-- [x] [ResNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/resnext)
-- [x] [SE-ResNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/seresnet)
-- [x] [SE-ResNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/seresnet)
-- [x] [RegNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/regnet)
-- [x] [ShuffleNetV1](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/shufflenet_v1)
-- [x] [ShuffleNetV2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/shufflenet_v2)
-- [x] [MobileNetV2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobilenet_v2)
-- [x] [MobileNetV3](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobilenet_v3)
-- [x] [Swin-Transformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/swin_transformer)
-- [x] [Swin-Transformer V2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/swin_transformer_v2)
-- [x] [RepVGG](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/repvgg)
-- [x] [Vision-Transformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/vision_transformer)
-- [x] [Transformer-in-Transformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/tnt)
-- [x] [Res2Net](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/res2net)
-- [x] [MLP-Mixer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mlp_mixer)
-- [x] [DeiT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/deit)
-- [x] [DeiT-3](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/deit3)
-- [x] [Conformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/conformer)
-- [x] [T2T-ViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/t2t_vit)
-- [x] [Twins](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/twins)
-- [x] [EfficientNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/efficientnet)
-- [x] [EdgeNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/edgenext)
-- [x] [ConvNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/convnext)
-- [x] [HRNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/hrnet)
-- [x] [VAN](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/van)
-- [x] [ConvMixer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/convmixer)
-- [x] [CSPNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/cspnet)
-- [x] [PoolFormer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/poolformer)
-- [x] [Inception V3](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/inception_v3)
-- [x] [MobileOne](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobileone)
-- [x] [EfficientFormer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/efficientformer)
-- [x] [MViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mvit)
-- [x] [HorNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/hornet)
-- [x] [MobileViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobilevit)
-- [x] [DaViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/davit)
-- [x] [RepLKNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/replknet)
-- [x] [BEiT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/beit) / [BEiT v2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/beitv2)
-- [x] [EVA](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/eva)
-- [x] [MixMIM](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mixmim)
-- [x] [EfficientNetV2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/efficientnet_v2)
-
-
+
+ Overview
+
+
+
+
+
+ Supported Backbones
+ |
+
+ Self-supervised Learning
+ |
+
+ Others
+ |
+
+
+
+
+ |
+
+
+ |
+
+ Image Retrieval Task:
+
+ Training&Test Tips:
+
+ |
+
+
## Contributing
-We appreciate all contributions to improve MMClassification.
-Please refer to [CONTRUBUTING.md](https://mmclassification.readthedocs.io/en/1.x/notes/contribution_guide.html) for the contributing guideline.
+We appreciate all contributions to improve MMPreTrain.
+Please refer to [CONTRUBUTING](https://mmclassification.readthedocs.io/en/1.x/notes/contribution_guide.html) for the contributing guideline.
## Acknowledgement
-MMClassification is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks.
-We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new classifiers.
+MMPreTrain is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks.
+We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and supporting their own academic research.
## Citation
@@ -222,7 +272,7 @@ This project is released under the [Apache 2.0 license](LICENSE).
- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision.
- [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages.
- [MMEval](https://github.com/open-mmlab/mmeval): A unified evaluation library for multiple machine learning libraries.
-- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark.
+- [MMPreTrain](https://github.com/open-mmlab/mmpretrain): OpenMMLab pre-training toolbox and benchmark.
- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark.
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection.
- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark.
diff --git a/README_zh-CN.md b/README_zh-CN.md
index f6ab7d17..e20eb09f 100644
--- a/README_zh-CN.md
+++ b/README_zh-CN.md
@@ -19,7 +19,7 @@
-[](https://pypi.org/project/mmcls)
+[](https://pypi.org/project/mmpretrain)
[](https://mmclassification.readthedocs.io/zh_CN/1.x/)
[](https://github.com/open-mmlab/mmclassification/actions)
[](https://codecov.io/gh/open-mmlab/mmclassification)
@@ -30,9 +30,13 @@
[📘 中文文档](https://mmclassification.readthedocs.io/zh_CN/1.x/) |
[🛠️ 安装教程](https://mmclassification.readthedocs.io/zh_CN/1.x/get_started.html) |
[👀 模型库](https://mmclassification.readthedocs.io/zh_CN/1.x/modelzoo_statistics.html) |
-[🆕 更新日志](https://mmclassification.readthedocs.io/en/1.x/notes/changelog.html) |
+[🆕 更新日志](https://mmclassification.readthedocs.io/zh_CN/1.x/notes/changelog.html) |
[🤔 报告问题](https://github.com/open-mmlab/mmclassification/issues/new/choose)
+
+
+[English](/README.md) | 简体中文
+
@@ -57,55 +61,42 @@
## Introduction
-[English](/README.md) | 简体中文
+MMPreTrain 是一款基于 PyTorch 的开源深度学习预训练工具箱,是 [OpenMMLab](https://openmmlab.com/) 项目的成员之一
-MMClassification 是一款基于 PyTorch 的开源图像分类工具箱,是 [OpenMMLab](https://openmmlab.com/) 项目的成员之一
-
-主分支代码目前支持 PyTorch 1.5 以上的版本。
-
-
-

-
+`主分支`代码目前支持 PyTorch 1.8 以上的版本。
### 主要特性
- 支持多样的主干网络与预训练模型
-- 支持配置多种训练技巧
+- 支持多种训练策略(有监督学习,无监督学习等)
+- 提供多种训练技巧
- 大量的训练配置文件
- 高效率和高可扩展性
-- 功能强大的工具箱
+- 功能强大的工具箱,有助于模型分析和实验
## 更新日志
-2022/12/30 发布了 v1.0.0rc5 版本
+🌟 2023/4/6 发布了 v1.0.0rc6 版本
-- 支持了**EVA**, **RevViT**, **EfficientnetV2**, **CLIP**, **TinyViT** 和 **MixMIM** 等骨干网络结构
+- 整和来自 MMSelfSup 的自监督学习算法,例如 `MAE`, `BEiT`, `MILAN` 等
+- 支持 t-SNE 可视化
+- 重构数据管道可视化
+
+之前版本更新内容
+
+- 支持了 **LeViT**, **XCiT**, **ViG**, **ConvNeXt-V2**, **EVA**, **RevViT**, **EfficientnetV2**, **CLIP**, **TinyViT** 和 **MixMIM** 等骨干网络结构
- 复现了 ConvNeXt 和 RepVGG 的训练精度。
-- 支持了 **多任务** 训练和测试,详见 [#1229](https://github.com/open-mmlab/mmclassification/pull/1229)
-- 支持了测试时增强(TTA),详见 [#1161](https://github.com/open-mmlab/mmclassification/pull/1161)
-
-2022/12/06 发布了 v1.0.0rc4 版本
-
-- 更新了主要 API 接口,用以方便地获取 MMClassification 中预定义的模型。详见 [#1236](https://github.com/open-mmlab/mmclassification/pull/1236)。
+- 支持混淆矩阵计算和画图。
+- 支持了 **多任务** 训练和测试。
+- 支持了测试时增强(TTA)。
+- 更新了主要 API 接口,用以方便地获取 MMClassification 中预定义的模型。
- 重构 BEiT 主干网络结构,并支持 v1 和 v2 模型的推理。
-2022/11/21 发布了 v1.0.0rc3 版本
+这个版本引入一个全新的,可扩展性强的训练和测试引擎,但目前仍在开发中。欢迎根据 [文档](https://mmclassification.readthedocs.io/zh_CN/1.x/) 进行试用。
-- 添加了 **Switch Recipe Hook**,现在我们可以在训练过程中修改数据增强、Mixup设置、loss设置等
-- 添加了 **TIMM 和 HuggingFace** 包装器,现在我们可以直接训练、使用 TIMM 和 HuggingFace 中的模型
-- 支持了检索任务
-- 复现了 **MobileOne** 训练精度
+同时,新版本中存在一些与旧版本不兼容的修改。请查看 [迁移文档](https://mmclassification.readthedocs.io/zh_CN/1.x/migration.html) 来详细了解这些变动。
-2022/8/31 发布了 v1.0.0rc0 版本
-
-这个版本引入一个全新的,可扩展性强的训练和测试引擎,但目前仍在开发中。欢迎根据[文档](https://mmclassification.readthedocs.io/zh_CN/1.x/)进行试用。
-
-同时,新版本中存在一些与旧版本不兼容的修改。请查看[迁移文档](https://mmclassification.readthedocs.io/zh_CN/1.x/migration.html)来详细了解这些变动。
-
-新版本的公测将持续到 2022 年末,在此期间,我们将基于 `1.x` 分支进行更新,不会合入到 `master` 分支。另外,至少
-到 2023 年末,我们会保持对 0.x 版本的维护。
-
-发布历史和更新细节请参考 [更新日志](https://mmclassification.readthedocs.io/zh_CN/1.x/notes/changelog.html)
+发布历史和更新细节请参考 [更新日志](https://mmclassification.readthedocs.io/zh_CN/1.x/notes/changelog.html)。
## 安装
@@ -115,8 +106,8 @@ MMClassification 是一款基于 PyTorch 的开源图像分类工具箱,是 [O
conda create -n open-mmlab python=3.8 pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -y
conda activate open-mmlab
pip3 install openmim
-git clone -b 1.x https://github.com/open-mmlab/mmclassification.git
-cd mmclassification
+git clone https://github.com/open-mmlab/mmpretrain.git
+cd mmpretrain
mim install -e .
```
@@ -126,79 +117,136 @@ mim install -e .
我们为新用户提供了一系列基础教程:
-- [使用现有模型推理](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/inference.html)
-- [准备数据集](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/dataset_prepare.html)
-- [训练与测试](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/train_test.html)
- [学习配置文件](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/config.html)
-- [如何微调模型](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/finetune.html)
-- [分析工具](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/analysis.html)
-- [可视化工具](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/visualization.html)
-- [其他工具](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/useful_tools.html)
+- [准备数据集](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/dataset_prepare.html)
+- [使用现有模型推理](https://mmclassification.readthedocs.io/zh_CN/1.x/user_guides/inference.html)
+- [训练](https://mmclassification.readthedocs.io/zh_CN/pretrain/user_guides/train.html)
+- [测试](https://mmclassification.readthedocs.io/zh_CN/pretrain/user_guides/test.html)
+- [下游任务](https://mmclassification.readthedocs.io/zh_CN/pretrain/user_guides/downstream.html)
+
+关于更多的信息,请查阅我们的 [相关文档](https://mmclassification.readthedocs.io/zh_CN/pretrain/)。
## 模型库
-相关结果和模型可在 [model zoo](https://mmclassification.readthedocs.io/zh_CN/1.x/modelzoo_statistics.html) 中获得
+相关结果和模型可在 [模型库](https://mmclassification.readthedocs.io/zh_CN/1.x/modelzoo_statistics.html) 中获得。
-
-支持的主干网络
-
-- [x] [VGG](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/vgg)
-- [x] [ResNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/resnet)
-- [x] [ResNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/resnext)
-- [x] [SE-ResNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/seresnet)
-- [x] [SE-ResNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/seresnet)
-- [x] [RegNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/regnet)
-- [x] [ShuffleNetV1](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/shufflenet_v1)
-- [x] [ShuffleNetV2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/shufflenet_v2)
-- [x] [MobileNetV2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobilenet_v2)
-- [x] [MobileNetV3](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobilenet_v3)
-- [x] [Swin-Transformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/swin_transformer)
-- [x] [Swin-Transformer V2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/swin_transformer_v2)
-- [x] [RepVGG](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/repvgg)
-- [x] [Vision-Transformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/vision_transformer)
-- [x] [Transformer-in-Transformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/tnt)
-- [x] [Res2Net](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/res2net)
-- [x] [MLP-Mixer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mlp_mixer)
-- [x] [DeiT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/deit)
-- [x] [DeiT-3](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/deit3)
-- [x] [Conformer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/conformer)
-- [x] [T2T-ViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/t2t_vit)
-- [x] [Twins](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/twins)
-- [x] [EfficientNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/efficientnet)
-- [x] [EdgeNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/edgenext)
-- [x] [ConvNeXt](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/convnext)
-- [x] [HRNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/hrnet)
-- [x] [VAN](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/van)
-- [x] [ConvMixer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/convmixer)
-- [x] [CSPNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/cspnet)
-- [x] [PoolFormer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/poolformer)
-- [x] [Inception V3](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/inception_v3)
-- [x] [MobileOne](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobileone)
-- [x] [EfficientFormer](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/efficientformer)
-- [x] [MViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mvit)
-- [x] [HorNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/hornet)
-- [x] [MobileViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mobilevit)
-- [x] [DaViT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/davit)
-- [x] [RepLKNet](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/replknet)
-- [x] [BEiT](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/beit) / [BEiT v2](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/beitv2)
-- [x] [EVA](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/eva)
-- [x] [MixMIM](https://github.com/open-mmlab/mmclassification/tree/1.x/configs/mixmim)
-
-
+
+ 概览
+
+
+
+
+
+ 支持的主干网络
+ |
+
+ 自监督学习
+ |
+
+ 其它
+ |
+
+
+
+
+ |
+
+
+ |
+
+ 图像检索任务:
+
+ 训练和测试 Tips:
+
+ |
+
+
## 参与贡献
-我们非常欢迎任何有助于提升 MMClassification 的贡献,请参考 [贡献指南](https://mmclassification.readthedocs.io/zh_CN/1.x/notes/contribution_guide.html) 来了解如何参与贡献。
+我们非常欢迎任何有助于提升 MMPreTrain 的贡献,请参考 [贡献指南](https://mmclassification.readthedocs.io/zh_CN/1.x/notes/contribution_guide.html) 来了解如何参与贡献。
## 致谢
-MMClassification 是一款由不同学校和公司共同贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。
-
+MMPreTrain 是一款由不同学校和公司共同贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。
我们希望该工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现现有算法并开发自己的新模型,从而不断为开源社区提供贡献。
## 引用
-如果你在研究中使用了本项目的代码或者性能基准,请参考如下 bibtex 引用 MMClassification。
+如果你在研究中使用了本项目的代码或者性能基准,请参考如下 bibtex 引用 MMPreTrain。
```BibTeX
@misc{2020mmclassification,
@@ -219,7 +267,7 @@ MMClassification 是一款由不同学校和公司共同贡献的开源项目。
- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库
- [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口
- [MMEval](https://github.com/open-mmlab/mmeval): 统一开放的跨框架算法评测库
-- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱
+- [MMPreTrain](https://github.com/open-mmlab/mmpretrain): OpenMMLab 深度学习预训练工具箱
- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台
- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准
@@ -243,7 +291,7 @@ MMClassification 是一款由不同学校和公司共同贡献的开源项目。
扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的 [官方交流 QQ 群](https://jq.qq.com/?_wv=1027&k=aCvMxdr3) 或联络 OpenMMLab 官方微信小助手
我们会在 OpenMMLab 社区为大家
diff --git a/docs/en/index.rst b/docs/en/index.rst
index 75092f08..b8a00932 100644
--- a/docs/en/index.rst
+++ b/docs/en/index.rst
@@ -1,7 +1,7 @@
Welcome to MMPretrain's documentation!
============================================
-MMPretrain is a newly upgraded open-source framework for visual pre-training.
+MMPretrain is a newly upgraded open-source framework for pre-training.
It has set out to provide multiple powerful pre-trained backbones and
support different pre-training strategies. MMPretrain originated from the
famous open-source projects
diff --git a/docs/zh_CN/index.rst b/docs/zh_CN/index.rst
index bdbb486d..7f23c013 100644
--- a/docs/zh_CN/index.rst
+++ b/docs/zh_CN/index.rst
@@ -5,7 +5,7 @@ MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各
并支持了不同的预训练策略。MMPretrain 源自著名的开源项目
`MMClassification
`_
和 `MMSelfSup `_,并开发了许多令人兴奋的新功能。
-目前,预训练阶段对于视觉识别至关重要,凭借丰富而强大的预训练模型,我们嫩能够改进各种下游视觉任务。
+目前,预训练阶段对于视觉识别至关重要,凭借丰富而强大的预训练模型,我们能够改进各种下游视觉任务。
我们的代码库旨在成为一个易于使用和用户友好的代码库库,并简化学术研究活动和工程任务。
我们在以下不同部分中详细介绍了 MMPretrain 的特性和设计。
diff --git a/resources/xiaozhushou_weixin_qrcode.jpeg b/resources/xiaozhushou_weixin_qrcode.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..873a0ba40a5af1baec49c11b16f86edd79714eab
GIT binary patch
literal 42538
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