
USB : une référence d'apprentissage semi-supervisée unifiée pour CV, NLP et classification audio
Papier · Benchmark · Demo · Docs · Issue · Blog · Blog (Pytorch) · Blog (chinois) · VIDEO · VIDEO (chinois)
[03/16/2024] Ajoutez Epass, SequenceMatch et RefixMatch. Correction de quelques fautes de frappe.
[07/07/2023] Ajouter DefixMatch. Correction de certains bogues. Libérez semilaire = 0,3.1 /
[06/01/2023] L'USB a officiellement rejoint l'écosystème Pytorch! [Blog Pytorch]
[30/01/2023] Mettez à jour Semilearn == 0.3.0. Ajouter Freematch et Softmatch. Ajouter des algorithmes déséquilibrés. Mettez à jour les résultats et ajoutez la prise en charge de WANDB. Reportez-vous à Change_log pour plus de détails. [RÉSULTATS] [LOGS] [WANDB]. Des journaux classiques plus anciens peuvent être trouvés ici: [TORCHSSL LOG].
[16/10/2022] Lien de téléchargement de données et instructions de processus publiées! [Ensembles de données]
[13/10/2022] Nous avons terminé la version Prêt de l'appareil photo avec des [résultats] mis à jour. [OpenReview]
[10/06/2022] Les journaux de formation et les résultats de l'USB ont été mis à jour! L'ensemble de données disponible sera bientôt téléchargé. [Logs] [Résultats]
[09/17/2022] Le papier USB a été accepté par l'ensemble de données et la piste de référence des Neirips 2022! [OpenReview]
[21/08/2022] USB a été publié!
USB est un package Python basé sur Pytorch pour l'apprentissage semi-supervisé (SSL). Il est facile à utiliser / prolonger, abordable aux petits groupes et complet pour développer et évaluer les algorithmes SSL. L'USB fournit la mise en œuvre de 14 algorithmes SSL basés sur la régularisation de cohérence, et 15 tâches pour l'évaluation de CV, NLP et du domaine audio.

(retour en haut)
Ceci est un exemple de la façon de configurer USB localement. Pour obtenir une copie locale, en cours d'exécution, suivez ces étapes d'exemples simples.
L'USB est construit sur Pytorch, avec Torchvision, Torchaudio et Transformers.
Pour installer les packages requis, vous pouvez créer un environnement conda:
conda create --name usb python=3.8Ensuite, utilisez PIP pour installer les packages requis:
pip install -r requirements.txtÀ partir de maintenant, vous pouvez commencer à utiliser USB en tapant
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlNous fournissons un package Python semi-garou d'USB pour les utilisateurs qui souhaitent commencer à former / tester les algorithmes SSL pris en charge sur leurs données:
pip install semilearn(retour en haut)
Vous pouvez également développer votre propre algorithme SSL et l'évaluer en clonage USB:
git clone https://github.com/microsoft/Semi-supervised-learning.git(retour en haut)
Les instructions détaillées pour le téléchargement et le traitement sont affichées dans le téléchargement de l'ensemble de données. Veuillez le suivre pour télécharger des ensembles de données avant d'exécuter ou de développer des algorithmes.
(retour en haut)
L'USB est facile à utiliser et à étendre. Le fait de passer par les exemples de beuglement vous aidera à vous familiariser avec USB pour une utilisation rapide, à évaluer un algorithme SSL existant sur votre propre ensemble de données ou à développer de nouveaux algorithmes SSL.
Veuillez consulter l'installation pour installer USB en premier. Nous fournissons des tutoriels Colab pour:
Étape 1: Vérifiez votre environnement
Vous devez d'abord installer correctement Docker et Nvidia Driver. Pour utiliser GPU dans un conteneur Docker, vous devez également installer Nvidia-Docker2 (Guide d'installation). Ensuite, veuillez vérifier votre version CUDA via nvidia-smi
Étape2: cloner le projet
git clone https://github.com/microsoft/Semi-supervised-learning.gitÉtape 3: Construisez l'image docker
Avant de construire l'image, vous pouvez modifier le dockerfile selon votre version CUDA. La version CUDA que nous utilisons est 11.6. Vous pouvez modifier la balise d'image de base en fonction de ce site. Vous devez également modifier le --extra-index-url selon votre version CUDA afin d'installer la version correcte de Pytorch. Vous pouvez consulter l'URL via le site Web de Pytorch.
Utilisez cette commande pour construire l'image
cd Semi-supervised-learning && docker build -t semilearn . Travail fait. Vous pouvez utiliser l'image que vous venez de construire pour votre propre projet. N'oubliez pas d'utiliser l'argument --gpu lorsque vous souhaitez utiliser GPU dans un conteneur.
Voici un exemple pour former FixMatch sur CIFAR-100 avec 200 étiquettes. Formation d'autres algorithmes pris en charge (sur d'autres ensembles de données avec différents paramètres d'étiquette) peuvent être spécifiés par un fichier de configuration:
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlAprès la formation, vous pouvez consulter les performances d'évaluation sur les journaux de formation ou exécuter le script d'évaluation:
python eval.py --dataset cifar100 --num_classes 100 --load_path /PATH/TO/CHECKPOINT
Consultez la documentation en développement pour la création de votre propre algorithme SSL!
Pour plus d'exemples, veuillez vous référer à la documentation
(retour en haut)
Veuillez vous référer aux résultats des résultats de référence sur différentes tâches.
(retour en haut)
TODO: Ajouter des modèles pré-formés.
(retour en haut)
Voir les problèmes ouverts pour une liste complète des fonctionnalités proposées (et des problèmes connus).
(retour en haut)
Ce projet accueille les contributions et les suggestions. La plupart des contributions vous obligent à accepter un accord de licence de contributeur (CLA) déclarant que vous avez le droit de faire et en fait, accordez-nous les droits d'utilisation de votre contribution. Pour plus de détails, visitez https://cla.opensource.microsoft.com.
Lorsque vous soumettez une demande de traction, un bot CLA déterminera automatiquement si vous devez fournir un CLA et décorer le RP de manière appropriée (par exemple, vérification d'état, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez besoin de le faire qu'une seule fois sur tous les dépositions en utilisant notre CLA.
Ce projet a adopté le code de conduite open source Microsoft. Pour plus d'informations, consultez le code de conduite FAQ ou contactez [email protected] avec toute question ou commentaire supplémentaire.
Si vous avez une suggestion qui améliorerait USB, veuillez débarquer le dépôt et créer une demande de traction. Vous pouvez également ouvrir simplement un problème avec la balise "amélioration". N'oubliez pas de donner une étoile au projet! Merci encore!
git checkout -b your_name/your_branch )git commit -m 'Add some features' )git push origin your_name/your_branch )(retour en haut)
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée de marques ou de logos Microsoft est soumise et doit suivre les directives de marque et de marque de Microsoft. L'utilisation de marques ou de logos de Microsoft dans des versions modifiées de ce projet ne doit pas provoquer de confusion ou impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumis aux politiques de ces tiers.
Distribué sous la licence du MIT. Voir LICENSE.txt pour plus d'informations.
(retour en haut)
La communauté USB est maintenue par:
(retour en haut)
Veuillez nous citer si vous avez du mal à ce projet utile pour votre projet / document:
@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}
}
Nous remercions les projets suivants pour référence à la création de l'USB:
(retour en haut)