OpenSelfSup
Introduction
The master branch works with PyTorch 1.1 or higher.
OpenSelfSup
is an open source unsupervised representation learning toolbox based on PyTorch.
What does this repo do?
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
.
Major features
- 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 | Remarks |
---|---|---|
ImageNet Linear Classification (Multi) | goyal2019scaling | Evaluate different layers. |
ImageNet Linear Classification (Last) | MoCo | Evaluate the last layer after global pooling. |
Places205 Linear Classification | goyal2019scaling | Evaluate different layers. |
ImageNet Semi-Sup Classification | ||
PASCAL VOC07 SVM | goyal2019scaling | Costs="1.0,10.0,100.0" to save evaluation time w/o change of results. |
PASCAL VOC07 Low-shot SVM | goyal2019scaling | Costs="1.0,10.0,100.0" to save evaluation time w/o change of results. |
PASCAL VOC07+12 Object Detection | MoCo | |
COCO17 Object Detection | MoCo |
Change Log
Please refer to CHANGELOG.md for details and release history.
[2020-06-16] OpenSelfSup
v0.1.0 is released.
Installation
Please refer to INSTALL.md for installation and dataset preparation.
Get Started
Please see GETTING_STARTED.md for the basic usage of OpenSelfSup.
Benchmark and Model Zoo
Please refer to MODEL_ZOO.md for for a comprehensive set of pre-trained models and benchmarks.
License
This project is released under the Apache 2.0 license.
Citation
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}
}
Acknowledgement
- 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.
Contact
This repo is currently maintained by Xiaohang Zhan (@XiaohangZhan).