The master branch works with PyTorch 1.1 or higher.
OpenSelfSup
is an open source unsupervised representation learning toolbox based on PyTorch.
Below is the relations among Unsupervised Learning, Self-Supervised Learning and Representation Learning. This repo focuses on the shadow area, i.e., Unsupervised Representation Learning. Self-Supervised Representation Learning is the major branch of it. Since in many cases we do not distingush between Self-Supervised Representation Learning and Unsupervised Representation Learning strictly, we still name this repo as OpenSelfSup
.
- All methods in one repository
Support | |
---|---|
ImageNet | ✓ |
Relative-Loc | progress |
Rotation-Pred | ✓ |
DeepCluster | ✓ |
ODC | ✓ |
NPID | ✓ |
MoCo | ✓ |
MoCo v2 | ✓ |
SimCLR | ✓ |
PIRL | progress |
- Flexibility & Extensibility
OpenSelfSup
follows a similar code architecture of MMDetection while is even more flexible than MMDetection, since OpenSelfSup integrates various self-supervised tasks including classification, joint clustering and feature learning, contrastive learning, tasks with a memory bank, etc.
For existing methods in this repo, you only need to modify config files to adjust hyper-parameters. It is also simple to design your own methods, please refer to GETTING_STARTED.md.
-
Efficiency
All methods support multi-machine multi-gpu distributed training.
-
Standardized Benchmarks
We standardize the benchmarks including logistic regression, SVM / Low-shot SVM from linearly probed features, semi-supervised classification, and object detection. Below are the setting of these benchmarks.
Benchmarks | Setting | Difference |
---|---|---|
ImageNet Linear Classification | goyal2019scaling | Total 90 epochs, decay at [30, 60]. |
Places205 Linear Classification | goyal2019scaling | Total 90 epochs, decay at [30, 60]. |
ImageNet Semi-Sup Classification | ||
PASCAL VOC07 SVM | goyal2019scaling | Costs="1.0,10.0,100.0" to save evaluation time. |
PASCAL VOC07 Low-shot SVM | goyal2019scaling | Costs="1.0,10.0,100.0" to save evaluation time. |
PASCAL VOC07+12 Object Detection | MoCo | |
COCO17 Object Detection | MoCo |
Please refer to CHANGELOG.md for details and release history.
[2020-06-16] OpenSelfSup
v0.1.0 is released.
Please refer to INSTALL.md for installation and dataset preparation.
Please see GETTING_STARTED.md for the basic usage of OpenSelfSup.
Please refer to MODEL_ZOO.md for for a comprehensive set of pre-trained models and benchmarks.
This project is released under the Apache 2.0 license.
If you use this toolbox or benchmark in your research, please cite this project.
@article{openselfsup,
title = {{OpenSelfSup}: Open MMLab Self-Supervised Learning Toolbox and Benchmark},
author = {Xiaohang Zhan, Jiahao Xie, Ziwei Liu, Dahua Lin, Chen Change Loy},
howpublished = {\url{https://github.com/open-mmlab/openselfsup}},
year = {2020}
}
- This repo borrows the architecture design and part of the code from MMDetection.
- The implementation of MoCo and the detection benchmark borrow the code from moco.
- The SVM benchmark borrows the code from fair_self_supervision_benchmark.
openselfsup/third_party/clustering.py
is borrowed from deepcluster.
This repo is currently maintained by Xiaohang Zhan (@XiaohangZhan).