# OpenSelfSup **News** OpenSelfSup now supports [BYOL](https://arxiv.org/pdf/2006.07733.pdf)! ## 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** * For comprehensive comparison in all benchmarks, refer to [MODEL_ZOO.md](docs/MODEL_ZOO.md).
MethodVOC07 SVM (best layer)ImageNet (best layer)
ImageNet87.1776.17
Random30.2213.70
Relative-Loc
Rotation-Pred67.3854.99
DeepCluster74.26
NPID74.5056.61
ODC78.4257.6
MoCo79.1860.60
MoCo v284.0566.72
SimCLR78.95
BYOL
- **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](docs/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](http://openaccess.thecvf.com/content_ICCV_2019/papers/Goyal_Scaling_and_Benchmarking_Self-Supervised_Visual_Representation_Learning_ICCV_2019_paper.pdf) | Evaluate different layers. | | ImageNet Linear Classification (Last) | [MoCo](http://openaccess.thecvf.com/content_CVPR_2020/papers/He_Momentum_Contrast_for_Unsupervised_Visual_Representation_Learning_CVPR_2020_paper.pdf) | Evaluate the last layer after global pooling. | | Places205 Linear Classification | [goyal2019scaling](http://openaccess.thecvf.com/content_ICCV_2019/papers/Goyal_Scaling_and_Benchmarking_Self-Supervised_Visual_Representation_Learning_ICCV_2019_paper.pdf) | Evaluate different layers. | | ImageNet Semi-Sup Classification | | PASCAL VOC07 SVM | [goyal2019scaling](http://openaccess.thecvf.com/content_ICCV_2019/papers/Goyal_Scaling_and_Benchmarking_Self-Supervised_Visual_Representation_Learning_ICCV_2019_paper.pdf) | Costs="1.0,10.0,100.0" to save evaluation time w/o change of results. | | PASCAL VOC07 Low-shot SVM | [goyal2019scaling](http://openaccess.thecvf.com/content_ICCV_2019/papers/Goyal_Scaling_and_Benchmarking_Self-Supervised_Visual_Representation_Learning_ICCV_2019_paper.pdf) | Costs="1.0,10.0,100.0" to save evaluation time w/o change of results. | | PASCAL VOC07+12 Object Detection | [MoCo](http://openaccess.thecvf.com/content_CVPR_2020/papers/He_Momentum_Contrast_for_Unsupervised_Visual_Representation_Learning_CVPR_2020_paper.pdf) | | | COCO17 Object Detection | [MoCo](http://openaccess.thecvf.com/content_CVPR_2020/papers/He_Momentum_Contrast_for_Unsupervised_Visual_Representation_Learning_CVPR_2020_paper.pdf) | | ## Change Log Please refer to [CHANGELOG.md](docs/CHANGELOG.md) for details and release history. [2020-06-16] `OpenSelfSup` v0.1.0 is released. ## Installation Please refer to [INSTALL.md](docs/INSTALL.md) for installation and dataset preparation. ## Get Started Please see [GETTING_STARTED.md](docs/GETTING_STARTED.md) for the basic usage of OpenSelfSup. ## Benchmark and Model Zoo Please refer to [MODEL_ZOO.md](docs/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](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](https://github.com/open-mmlab/mmdetection). - The implementation of MoCo and the detection benchmark borrow the code from [moco](https://github.com/facebookresearch/moco). - The SVM benchmark borrows the code from [ fair_self_supervision_benchmark](https://github.com/facebookresearch/fair_self_supervision_benchmark). - `openselfsup/third_party/clustering.py` is borrowed from [deepcluster](https://github.com/facebookresearch/deepcluster/blob/master/clustering.py). ## Contact This repo is currently maintained by Xiaohang Zhan ([@XiaohangZhan](http://github.com/XiaohangZhan)).