Unfied Semi-Supervised Learning Benchmark
Project description
USB: A Unified Semi-supervised learning Benchmark for CV, NLP, and Audio Classification
Paper
·
Benchmark
·
Demo
·
Docs
·
Issue
·
Blog
·
Blog (Chinese)
Table of Contents
News and Updates
-
[10/16/2022] Dataset download link and process instructions released! [Datasets]
-
[10/13/2022] We have finished the camera ready version with updated [Results]. [Openreview]
-
[10/06/2022] Training logs and results of USB has been updated! Available dataset will be uploaded soon. [Logs] [Results]
-
[09/17/2022] The USB paper has been accepted by NeurIPS 2022 Dataset and Benchmark Track! [Openreview]
-
[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 to small groups, 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.
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 semilearn of USB for users who want to start training/testing the supported SSL algorithms on their data quickly:
pip install semilearn
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
Prepare Datasets
The detailed instructions for downloading and processing are shown in Beginning example. Please follow it to download datasets before running or developing algorithms.
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:
Start with Docker
Step1: Check your environment
You need to properly install Docker and nvidia driver first. To use GPU in a docker container
You also need to install nvidia-docker2 (Installation Guide).
Then, Please check your CUDA version via nvidia-smi
Step2: Clone the project
git clone https://github.com/microsoft/Semi-supervised-learning.git
Step3: Build the Docker image
Before building the image, you may modify the Dockerfile according to your CUDA version.
The CUDA version we use is 11.6. You can change the base image tag according to this site.
You also need to change the --extra-index-url
according to your CUDA version in order to install the correct version of Pytorch.
You can check the url through Pytorch website.
Use this command to build the image
cd Semi-supervised-learning && docker build -t semilearn .
Job done. You can use the image you just built for your own project. Don't forget to use the argument --gpu
when you want
to use GPU in a container.
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
Benchmark Results
Please refer to Results for benchmark results on different tasks.
Model Zoo
TODO: add pre-trained models.
TODO
- Finish Readme
- 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).
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!
- Fork the project
- Create your branch (
git checkout -b your_name/your_branch
) - Commit your changes (
git commit -m 'Add some features'
) - Push to the branch (
git push origin your_name/your_branch
) - Open a Pull Request
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.
Community and Contact
The USB comunity is maintained by:
- Yidong Wang (yidongwang37@gmail.com), Tokyo Institute of Technology
- Hao Chen (haoc3@andrew.cmu.edu), Carnegie Mellon University
- Yue Fan (yfan@mpi-inf.mpg.de), Max Planck Institute for Informatics
- Wenxin Hou (wenxinhou@microsoft.com), Microsoft STCA
- Ran Tao (rant@andrew.cmu.edu), Carnegie Mellon University
- Jindong Wang (jindwang@microsoft.com), Microsoft Research Asia
Citing USB
Please cite us if you fine USB helpful for your project/paper:
@inproceedings{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},
title = {USB: A Unified Semi-supervised Learning Benchmark for Classification},
booktitle = {Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track}
year = {2022}
}
Acknowledgments
We thanks the following projects for reference of creating USB:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file semilearn-0.2.4.tar.gz
.
File metadata
- Download URL: semilearn-0.2.4.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5964a8d98c6599d0664c1077debadeaf07487170d9b17bcd14dcf708d8d0966a |
|
MD5 | 6b3e5b04dc35fffe3763f027f77a0479 |
|
BLAKE2b-256 | 7c13eb5b161bb4c9c636894818b88ed05bd2dc21e69ccdd35d095e4532fdb48c |
File details
Details for the file semilearn-0.2.4-py3-none-any.whl
.
File metadata
- Download URL: semilearn-0.2.4-py3-none-any.whl
- Upload date:
- Size: 132.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7c43c1b3cedc486dd27cfabb454b334184df6d9d62353c7ef8f73cb56d6f2ee |
|
MD5 | 7095306312d4ee5a79a1f963a213ca91 |
|
BLAKE2b-256 | e86d5217033ba2a3bd4fbb305b4b1f1007c7acac7887475cc53f29d7abb54fb8 |