mmpretrain/configs/mocov3
Ma Zerun dbf3df21a3
[Refactor] Use `out_type` to specify ViT-like backbone output. (#1408)
* [Refactor] Use  to specify ViT-like backbone output.

* Fix ClsBatchNormNeck

* Update mmpretrain/models/necks/mae_neck.py

---------

Co-authored-by: Yixiao Fang <36138628+fangyixiao18@users.noreply.github.com>
2023-03-09 11:02:58 +08:00
..
benchmarks [Refactor] Add selfsup algorithms. (#1389) 2023-03-06 16:53:15 +08:00
README.md [Docs] Update generate_readme.py and readme files. (#1388) 2023-03-02 13:29:07 +08:00
metafile.yml [Refactor] Refactor configs and metafile (#1369) 2023-02-23 11:17:16 +08:00
mocov3_resnet50_8xb512-amp-coslr-100e_in1k.py [Refactor] Use `out_type` to specify ViT-like backbone output. (#1408) 2023-03-09 11:02:58 +08:00
mocov3_resnet50_8xb512-amp-coslr-300e_in1k.py [Refactor] Use `out_type` to specify ViT-like backbone output. (#1408) 2023-03-09 11:02:58 +08:00
mocov3_resnet50_8xb512-amp-coslr-800e_in1k.py [Refactor] Use `out_type` to specify ViT-like backbone output. (#1408) 2023-03-09 11:02:58 +08:00
mocov3_vit-base-p16_16xb256-amp-coslr-300e_in1k.py [Refactor] Use `out_type` to specify ViT-like backbone output. (#1408) 2023-03-09 11:02:58 +08:00
mocov3_vit-large-p16_64xb64-amp-coslr-300e_in1k.py [Refactor] Use `out_type` to specify ViT-like backbone output. (#1408) 2023-03-09 11:02:58 +08:00
mocov3_vit-small-p16_16xb256-amp-coslr-300e_in1k.py [Refactor] Use `out_type` to specify ViT-like backbone output. (#1408) 2023-03-09 11:02:58 +08:00

README.md

MoCoV3

An Empirical Study of Training Self-Supervised Vision Transformers

Abstract

This paper does not describe a novel method. Instead, it studies a straightforward, incremental, yet must-know baseline given the recent progress in computer vision: self-supervised learning for Vision Transformers (ViT). While the training recipes for standard convolutional networks have been highly mature and robust, the recipes for ViT are yet to be built, especially in the self-supervised scenarios where training becomes more challenging. In this work, we go back to basics and investigate the effects of several fundamental components for training self-supervised ViT. We observe that instability is a major issue that degrades accuracy, and it can be hidden by apparently good results. We reveal that these results are indeed partial failure, and they can be improved when training is made more stable. We benchmark ViT results in MoCo v3 and several other self-supervised frameworks, with ablations in various aspects. We discuss the currently positive evidence as well as challenges and open questions. We hope that this work will provide useful data points and experience for future research.

How to use it?

Predict image

from mmpretrain import inference_model

predict = inference_model('resnet50_mocov3-100e-pre_8xb128-linear-coslr-90e_in1k', 'demo/bird.JPEG')
print(predict['pred_class'])
print(predict['pred_score'])

Use the model

import torch
from mmpretrain import get_model

model = get_model('mocov3_resnet50_8xb512-amp-coslr-100e_in1k', pretrained=True)
inputs = torch.rand(1, 3, 224, 224)
out = model(inputs)
print(type(out))
# To extract features.
feats = model.extract_feat(inputs)
print(type(feats))

Train/Test Command

Prepare your dataset according to the docs.

Train:

python tools/train.py configs/mocov3/mocov3_resnet50_8xb512-amp-coslr-100e_in1k.py

Test:

python tools/test.py configs/mocov3/benchmarks/resnet50_8xb128-linear-coslr-90e_in1k.py https://download.openmmlab.com/mmselfsup/1.x/mocov3/mocov3_resnet50_8xb512-amp-coslr-100e_in1k/resnet50_linear-8xb128-coslr-90e_in1k/resnet50_linear-8xb128-coslr-90e_in1k_20220927-8f7d937e.pth

Models and results

Pretrained models

Model Params (M) Flops (G) Config Download
mocov3_resnet50_8xb512-amp-coslr-100e_in1k N/A N/A config model | log
mocov3_resnet50_8xb512-amp-coslr-300e_in1k N/A N/A config model | log
mocov3_resnet50_8xb512-amp-coslr-800e_in1k N/A N/A config model | log
mocov3_vit-small-p16_16xb256-amp-coslr-300e_in1k N/A N/A config model | log
mocov3_vit-base-p16_16xb256-amp-coslr-300e_in1k N/A N/A config model | log
mocov3_vit-large-p16_64xb64-amp-coslr-300e_in1k N/A N/A config model | log

Image Classification on ImageNet-1k

Model Pretrain Params (M) Flops (G) Top-1 (%) Config Download
resnet50_mocov3-100e-pre_8xb128-linear-coslr-90e_in1k MOCOV3 100-Epochs N/A N/A 69.60 config model | log
resnet50_mocov3-300e-pre_8xb128-linear-coslr-90e_in1k MOCOV3 300-Epochs N/A N/A 72.80 config model | log
resnet50_mocov3-800e-pre_8xb128-linear-coslr-90e_in1k MOCOV3 800-Epochs N/A N/A 74.40 config model | log
vit-small-p16_mocov3-pre_8xb128-linear-coslr-90e_in1k MOCOV3 N/A N/A 73.60 config model | log
vit-base-p16_mocov3-pre_8xb128-linear-coslr-90e_in1k MOCOV3 N/A N/A 76.90 config model | log
vit-base-p16_mocov3-pre_8xb64-coslr-150e_in1k MOCOV3 N/A N/A 83.00 config model | log
vit-large-p16_mocov3-pre_8xb64-coslr-100e_in1k MOCOV3 N/A N/A 83.70 config model | log

Citation

@InProceedings{Chen_2021_ICCV,
    title     = {An Empirical Study of Training Self-Supervised Vision Transformers},
    author    = {Chen, Xinlei and Xie, Saining and He, Kaiming},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    year      = {2021}
}