
USB : Um benchmark de aprendizado semi-supervisionado unificado para CV, PNL e classificação de áudio
Artigo · Benchmark · Demo · Docos · Edição · Blog · Blog (Pytorch) · Blog (Chinês) · Vídeo · Vídeo (Chinês)
[16/03/2024] Adicione EPASS, Sequencematch e RefixMatch. Corrigido alguns erros de digitação.
[07/07/2023] Adicione DeFixMatch. Corrigido alguns erros. Libere semilearn = 0.3.1/
[06/06/2023] USB ingressou oficialmente no ecossistema Pytorch! [Pytorch Blog]
[30/01/2023] Atualizar semilearn == 0.3.0. Adicione FreeMatch e SoftMatch. Adicione algoritmos desequilibrados. Atualize os resultados e adicione suporte do WandB. Consulte Change_log para obter detalhes. [Resultados] [logs] [wandb]. Os logs clássicos mais antigos podem ser encontrados aqui: [TorchSSL Log].
[16/10/2022] Download do conjunto de dados e instruções de processo lançadas! [Conjuntos de dados]
[13/10/2022] Terminamos a versão pronta da câmera com [resultados] atualizados. [OpenReview]
[10/06/2022] Os registros de treinamento e os resultados do USB foram atualizados! O conjunto de dados disponível será enviado em breve. [Logs] [Resultados]
[17/09/2022] O artigo USB foi aceito pelo conjunto de dados Neurips 2022 e faixa de referência! [OpenReview]
[21/08/2022] USB foi lançado!
USB é um pacote Python baseado em Pytorch para aprendizado semi-supervisionado (SSL). É fácil de usar/estender, acessível a pequenos grupos e abrangente para desenvolver e avaliar os algoritmos SSL. O USB fornece a implementação de 14 algoritmos SSL com base na regularização da consistência e 15 tarefas para avaliação do domínio CV, PNL e áudio.

(de volta ao topo)
Este é um exemplo de como configurar USB localmente. Para obter uma cópia local, executando, siga estas etapas de exemplo simples.
O USB é construído em Pytorch, com Torchvision, Torchaudio e Transformers.
Para instalar os pacotes necessários, você pode criar um ambiente do CONDA:
conda create --name usb python=3.8Em seguida, use o PIP para instalar os pacotes necessários:
pip install -r requirements.txtA partir de agora, você pode começar a usar USB digitando
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlFornecemos um pacote Python semilearn do USB para usuários que desejam começar a treinar/testar os algoritmos SSL suportados em seus dados rapidamente:
pip install semilearn(de volta ao topo)
Você também pode desenvolver seu próprio algoritmo SSL e avaliá -lo clonando USB:
git clone https://github.com/microsoft/Semi-supervised-learning.git(de volta ao topo)
As instruções detalhadas para download e processamento são mostradas no download do conjunto de dados. Siga -o para baixar conjuntos de dados antes de executar ou desenvolver algoritmos.
(de volta ao topo)
USB é fácil de usar e estender. Passar pelos exemplos de berros o ajudará a familiarizar -se com USB para uso rápido, avaliar um algoritmo SSL existente no seu próprio conjunto de dados ou desenvolver novos algoritmos SSL.
Consulte a instalação para instalar o USB primeiro. Fornecemos tutoriais do COLAB para:
Etapa 1: Verifique seu ambiente
Você precisa instalar corretamente o Docker e o NVIDIA Driver primeiro. Para usar a GPU em um contêiner do docker, você também precisa instalar o NVIDIA-Docker2 (Guia de Instalação). Em seguida, verifique sua versão CUDA via nvidia-smi
Etapa2: clonar o projeto
git clone https://github.com/microsoft/Semi-supervised-learning.gitEtapa 3: Construa a imagem do Docker
Antes de construir a imagem, você pode modificar o Dockerfile de acordo com sua versão CUDA. A versão CUDA que usamos é 11.6. Você pode alterar a tag de imagem base de acordo com este site. Você também precisa alterar o --extra-index-url de acordo com sua versão CUDA para instalar a versão correta do Pytorch. Você pode verificar o site da URL através do Pytorch.
Use este comando para construir a imagem
cd Semi-supervised-learning && docker build -t semilearn . Trabalho feito. Você pode usar a imagem que você acabou de criar para seu próprio projeto. Não se esqueça de usar o argumento --gpu quando quiser usar a GPU em um contêiner.
Aqui está um exemplo para treinar o FixMatch no CIFAR-100 com 200 rótulos. Treinamento Outros algoritmos suportados (em outros conjuntos de dados com diferentes configurações de etiqueta) podem ser especificados por um arquivo de configuração:
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlApós o treinamento, você pode verificar o desempenho da avaliação nos registros de treinamento ou em execução de script de avaliação:
python eval.py --dataset cifar100 --num_classes 100 --load_path /PATH/TO/CHECKPOINT
Verifique a documentação em desenvolvimento para criar seu próprio algoritmo SSL!
Para mais exemplos, consulte a documentação
(de volta ao topo)
Consulte os resultados para obter resultados de referência em diferentes tarefas.
(de volta ao topo)
TODO: Adicione modelos pré-treinados.
(de volta ao topo)
Veja os problemas abertos para obter uma lista completa dos recursos propostos (e problemas conhecidos).
(de volta ao topo)
Este projeto recebe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito e, na verdade, concede -nos os direitos de usar sua contribuição. Para detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação de tração, um BOT do CLA determina automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, verificação de status, comentar). Simplesmente siga as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta Open Microsoft. Para obter mais informações, consulte o Código de Conduta Perguntas frequentes ou entre em contato com [email protected] com quaisquer perguntas ou comentários adicionais.
Se você tiver uma sugestão que tornaria o USB melhor, bire o repositório e crie uma solicitação de tração. Você também pode simplesmente abrir um problema com a tag "aprimoramento". Não se esqueça de dar uma estrela ao projeto! Obrigado novamente!
git checkout -b your_name/your_branch )git commit -m 'Add some features' )git push origin your_name/your_branch )(de volta ao topo)
Este projeto pode conter marcas comerciais ou logotipos para projetos, produtos ou serviços. O uso autorizado de marcas comerciais ou logotipos da Microsoft está sujeito e deve seguir as diretrizes de marca registrada e marca da Microsoft. O uso de marcas comerciais da Microsoft ou logotipos em versões modificadas deste projeto não deve causar confusão ou implicar o patrocínio da Microsoft. Qualquer uso de marcas comerciais ou logotipos de terceiros estão sujeitas às políticas de terceiros.
Distribuído sob a licença do MIT. Consulte LICENSE.txt para obter mais informações.
(de volta ao topo)
A comunidade USB é mantida por:
(de volta ao topo)
Cite -nos se você multar este projeto útil para o seu projeto/papel:
@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}
}
@article{wang2023freematch,
title={FreeMatch: Self-adaptive Thresholding for Semi-supervised Learning},
author={Wang, Yidong and Chen, Hao and Heng, Qiang and Hou, Wenxin and Fan, Yue and and Wu, Zhen and Wang, Jindong and Savvides, Marios and Shinozaki, Takahiro and Raj, Bhiksha and Schiele, Bernt and Xie, Xing},
booktitle={International Conference on Learning Representations (ICLR)},
year={2023}
}
@article{chen2023softmatch,
title={SoftMatch: Addressing the Quantity-Quality Trade-off in Semi-supervised Learning},
author={Chen, Hao and Tao, Ran and Fan, Yue and Wang, Yidong and Wang, Jindong and Schiele, Bernt and Xie, Xing and Raj, Bhiksha and Savvides, Marios},
booktitle={International Conference on Learning Representations (ICLR)},
year={2023}
}
@article{zhang2021flexmatch,
title={FlexMatch: Boosting Semi-supervised Learning with Curriculum Pseudo Labeling},
author={Zhang, Bowen and Wang, Yidong and Hou, Wenxin and Wu, Hao and Wang, Jindong and Okumura, Manabu and Shinozaki, Takahiro},
booktitle={Neural Information Processing Systems (NeurIPS)},
year={2021}
}
Agradecemos aos seguintes projetos pela referência de criação de USB:
(de volta ao topo)