Skip to main content

Unfied Semi-Supervised Learning Benchmark

Project description

Contributors Forks Stargazers Issues


Logo

USB

A Unified Semi-supervised Learning Benchmark for CV, NLP, Audio
Paper · Benchmark · Demo · Docs · Issue

Table of Contents
  1. News and Updates
  2. Introduction
  3. Getting Started
  4. Usage
  5. Benchmark Results
  6. Model Zoo
  7. Community
  8. License
  9. Acknowledgments

News and Updates

  • [08/21/2022] USB has been released!

Introduction

USB is a Pytorch-based Python package for Semi-Supervised Learning (SSL). It is easy-to-use/extend, affordable, and comprehensive for developing and evaluating SSL algorithms. USB provides the implementation of 14 SSL algorithms based on Consistency Regularization, and 15 tasks for evaluation from CV, NLP, and Audio domain.

(back to top)

Getting Started

This is an example of how to set up USB locally. To get a local copy up, running follow these simple example steps.

Prerequisites

USB is built on pytorch, with torchvision, torchaudio, and transformers.

To install the required packages, you can create a conda environment:

conda create --name usb python=3.8

then use pip to install required packages:

pip install -r requirements.txt

Installation

We provide a Python package of USB for users who want to start training/testing the supported SSL algorithms on their data quickly:

pip install usb

(back to top)

Development

You can also develop your own SSL algorithm and evaluate it by cloning USB:

git clone https://github.com/microsoft/Semi-supervised-learning.git

(back to top)

Usage

USB is easy to use and extend. Going through the belowing examples will help you faimiliar with USB for quick use, evaluate an exsiting SSL algorithm on your own dataset, or developing new SSL algorithms.

Quick Start with USB package

Please see Installation to install USB first. We provide colab tutorials for:

Training

Here is an example to train FixMatch on CIFAR-100 with 200 labels. Trianing other supported algorithms (on other datasets with different label settings) can be specified by a config file:

python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yaml

Evaluation

After trianing, you can check the evaluation performance on training logs, or running evaluation script:

python eval.py --dataset cifar100 --num_classes 100 --load_path /PATH/TO/CHECKPOINT

Develop

Check the developing documentation for creating your own SSL algorithm!

For more examples, please refer to the Documentation

(back to top)

Benchmark Results

Please refer to Results for benchmark results on different tasks.

(back to top)

Model Zoo

TODO: add pre-trained models.

(back to top)

TODO

  • Add docker
  • Finish Readme
  • Compile docs and add usage example in docs
  • Check Notebooks Create Colab Notebooks
  • Updating SUPPORT.MD with content about this project's support experience
  • Multi-language Support
    • Chinese

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

If you have a suggestion that would make USB better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the project
  2. Create your branch (git checkout -b your_name/your_branch)
  3. Commit your changes (git commit -m 'Add some features')
  4. Push to the branch (git push origin your_name/your_branch)
  5. Open a Pull Request

(back to top)

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Community and Contact

The USB comunity is maintained by:

  • Yidong Wang (),
  • Hao Chen (haoc3@andrew.cmu.edu), Carnegie Mellon University
  • Yue Fan (),
  • Wenxin Hou (),
  • Ran Tao (),
  • Jindong Wang (),

(back to top)

Citing USB

Please cite us if you fine USB helpful for your project/paper:

@misc{usb2022,
  doi = {10.48550/ARXIV.2208.07204},
  url = {https://arxiv.org/abs/2208.07204},
  author = {Wang, Yidong and Chen, Hao and Fan, Yue and Sun, Wang and Tao, Ran and Hou, Wenxin and Wang, Renjie and Yang, Linyi and Zhou, Zhi and Guo, Lan-Zhe and Qi, Heli and Wu, Zhen and Li, Yu-Feng and Nakamura, Satoshi and Ye, Wei and Savvides, Marios and Raj, Bhiksha and Shinozaki, Takahiro and Schiele, Bernt and Wang, Jindong and Xie, Xing and Zhang, Yue},
  keywords = {Machine Learning (cs.LG), Artificial Intelligence (cs.AI), Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences},
  title = {USB: A Unified Semi-supervised Learning Benchmark},
  publisher = {arXiv},
  year = {2022},
  copyright = {Creative Commons Attribution 4.0 International}
}

Acknowledgments

We thanks the following projects for reference of creating USB:

(back to top)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

semilearn-0.1.2b7.tar.gz (81.3 kB view details)

Uploaded Source

Built Distribution

semilearn-0.1.2b7-py3-none-any.whl (116.1 kB view details)

Uploaded Python 3

File details

Details for the file semilearn-0.1.2b7.tar.gz.

File metadata

  • Download URL: semilearn-0.1.2b7.tar.gz
  • Upload date:
  • Size: 81.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.5

File hashes

Hashes for semilearn-0.1.2b7.tar.gz
Algorithm Hash digest
SHA256 3030416ed30bdc40b7433d56ef04fc393053074644cc61f0ebc972437bb0b41c
MD5 f247031f70632b8cf9f2dd8649eb53ef
BLAKE2b-256 ba82d11d34b51c06d50330b31cb219b1eb920febe9cc9a1b3e67fc4b4f7f2bb3

See more details on using hashes here.

File details

Details for the file semilearn-0.1.2b7-py3-none-any.whl.

File metadata

  • Download URL: semilearn-0.1.2b7-py3-none-any.whl
  • Upload date:
  • Size: 116.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.5

File hashes

Hashes for semilearn-0.1.2b7-py3-none-any.whl
Algorithm Hash digest
SHA256 6207469945c7da0d5bf4d35c05a87dbe545cf0b9dcbbcf91f30c5f6d34c4351e
MD5 53a44c479fb258b240c91cfa3edda5eb
BLAKE2b-256 2f517e5673fc8c54f15ebe9e5b876f2215711a62896783ec62392aea5c6e2c67

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page