
USB : Ein einheitlicher halbüberwachter Lernbenchmark für CV-, NLP- und Audioklassifizierung
Papier · Benchmark · Demo · Dokumente · Ausgabe · Blog · Blog (Pytorch) · Blog (Chinesisch) · Video · Video (Chinesisch)
[16.03.2024] Fügen Sie Epass, Sequencematch und RefixMatch hinzu. Einige Tippfehler behoben.
[07/07/2023] Fügen Sie DefixMatch hinzu. Einige Fehler behoben. Semilearn = 0.3.1//
[06/01/2023] USB hat sich offiziell dem Pytorch -Ökosystem angeschlossen! [Pytorch Blog]
[01/30/2023] Aktualisieren Sie Semilearn == 0.3.0. Fügen Sie FreeMatch und SoftMatch hinzu. Fügen Sie unausgeglichene Algorithmen hinzu. Aktualisieren Sie die Ergebnisse und fügen Sie den Stoffb -Support hinzu. Weitere Informationen finden Sie in Change_log. [Ergebnisse] [logs] [Wandb]. Ältere klassische Protokolle finden Sie hier: [Torchssl -Log].
[16.10.2022] Datensatz -Download -Link- und Prozessanweisungen veröffentlicht! [Datensätze]
[13.10.2022] Wir haben die Kamera -Ready -Version mit aktualisierten [Ergebnissen] abgeschlossen. [OpenReview]
[10/06/2022] Trainingsprotokolle und Ergebnisse von USB wurden aktualisiert! Der verfügbare Datensatz wird in Kürze hochgeladen. [Logs] [Ergebnisse]
[09.09.2022] Das USB -Papier wurde von den Neurips 2022 -Datensatz- und Benchmark -Track akzeptiert! [OpenReview]
[21.08.2022] USB wurde veröffentlicht!
USB ist ein Python-Paket auf Pytorch-basiertem Python für das halbübergreifende Lernen (SSL). Es ist benutzerfreundlich/erweitert, für kleine Gruppen erschwinglich und umfassend für die Entwicklung und Bewertung von SSL-Algorithmen. USB bietet die Implementierung von 14 SSL -Algorithmen basierend auf der Regularisierung von Konsistenz und 15 Aufgaben zur Bewertung von CV, NLP und Audio -Domäne.

(zurück nach oben)
Dies ist ein Beispiel dafür, wie USB lokal eingerichtet wird. Um eine lokale Kopie zu erhalten, befolgen Sie diese einfachen Beispielschritte.
USB basiert auf Pytorch mit Torchvision, Torchaudio und Transformers.
Um die erforderlichen Pakete zu installieren, können Sie eine Conda -Umgebung erstellen:
conda create --name usb python=3.8Verwenden Sie dann PIP, um die erforderlichen Pakete zu installieren:
pip install -r requirements.txtVon nun an können Sie USB durch Eingabe verwenden
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlWir bieten Benutzern ein Python -Paket -Semilearn von USB, die die unterstützten SSL -Algorithmen schnell mit dem Training/Testen mit dem Training/Testen anfangen möchten:
pip install semilearn(zurück nach oben)
Sie können auch Ihren eigenen SSL -Algorithmus entwickeln und bewerten, indem Sie USB klonen:
git clone https://github.com/microsoft/Semi-supervised-learning.git(zurück nach oben)
Die detaillierten Anweisungen zum Herunterladen und Verarbeitung werden im Datensatz -Download angezeigt. Bitte folgen Sie es, um Datensätze herunterzuladen, bevor Sie Algorithmen ausführen oder entwickeln.
(zurück nach oben)
USB ist einfach zu bedienen und zu erweitern. Wenn Sie die brüllenden Beispiele durchlaufen, können Sie mit USB für den schnellen Gebrauch vertraut machen, einen vorhandenen SSL -Algorithmus auf Ihrem eigenen Datensatz bewerten oder neue SSL -Algorithmen entwickeln.
Bitte beachten Sie die Installation, um USB zuerst zu installieren. Wir bieten Colab -Tutorials für:
Schritt 1: Überprüfen Sie Ihre Umgebung
Sie müssen zuerst den Docker- und Nvidia -Treiber ordnungsgemäß installieren. Um GPU in einem Docker-Container zu verwenden, müssen Sie auch NVIDIA-Docker2 (Installationshandbuch) installieren. Dann überprüfen Sie bitte Ihre CUDA-Version über nvidia-smi
STEP2: Klonen Sie das Projekt
git clone https://github.com/microsoft/Semi-supervised-learning.gitSchritt 3: Erstellen Sie das Docker -Bild
Vor dem Erstellen des Bildes können Sie die Dockerfile gemäß Ihrer CUDA -Version ändern. Die von uns verwendete CUDA -Version ist 11,6. Sie können das Basisbild -Tag gemäß dieser Website ändern. Sie müssen auch die --extra-index-url gemäß Ihrer CUDA-Version ändern, um die richtige Version von Pytorch zu installieren. Sie können die URL über die Pytorch -Website überprüfen.
Verwenden Sie diesen Befehl, um das Bild zu erstellen
cd Semi-supervised-learning && docker build -t semilearn . Arbeit erledigt. Sie können das Bild verwenden, das Sie gerade für Ihr eigenes Projekt erstellt haben. Vergessen Sie nicht, das Argument zu verwenden --gpu , wenn Sie GPU in einem Container verwenden möchten.
Hier ist ein Beispiel, um FixMatch auf CIFAR-100 mit 200 Etiketten zu trainieren. Training Andere unterstützte Algorithmen (auf anderen Datensätzen mit unterschiedlichen Beschriftungseinstellungen) können durch eine Konfigurationsdatei angegeben werden:
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlNach dem Training können Sie die Evaluierungsleistung bei Trainingsprotokollen überprüfen oder das Bewertungsskript ausführen:
python eval.py --dataset cifar100 --num_classes 100 --load_path /PATH/TO/CHECKPOINT
Überprüfen Sie die Entwicklungsdokumentation zum Erstellen Ihres eigenen SSL -Algorithmus!
Weitere Beispiele finden Sie in der Dokumentation
(zurück nach oben)
Die Ergebnisse für Benchmark -Ergebnisse zu verschiedenen Aufgaben finden Sie in den Ergebnissen.
(zurück nach oben)
TODO: Fügen Sie vorgebreitete Modelle hinzu.
(zurück nach oben)
In den offenen Problemen finden Sie eine vollständige Liste der vorgeschlagenen Merkmale (und bekannten Probleme).
(zurück nach oben)
Dieses Projekt begrüßt Beiträge und Vorschläge. In den meisten Beiträgen müssen Sie einer Mitarbeiters Lizenzvereinbarung (CLA) zustimmen, in der Sie erklären, dass Sie das Recht haben und uns tatsächlich tun, um uns die Rechte zu gewähren, Ihren Beitrag zu verwenden. Weitere Informationen finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie eine Pull -Anfrage einreichen, bestimmt ein CLA -Bot automatisch, ob Sie einen CLA angeben und die PR angemessen dekorieren müssen (z. B. Statusprüfung, Kommentar). Befolgen Sie einfach die vom Bot bereitgestellten Anweisungen. Sie müssen dies nur einmal über alle Repos mit unserem CLA tun.
Dieses Projekt hat den Microsoft Open Source -Verhaltenscode übernommen. Weitere Informationen finden Sie im FAQ oder wenden Sie sich an [email protected] mit zusätzlichen Fragen oder Kommentaren.
Wenn Sie einen Vorschlag haben, der USB besser machen würde, geben Sie bitte das Repo und erstellen Sie eine Pull -Anfrage. Sie können auch einfach ein Problem mit dem Tag "Verbesserung" eröffnen. Vergessen Sie nicht, dem Projekt einen Stern zu geben! Danke noch einmal!
git checkout -b your_name/your_branch )git commit -m 'Add some features' )git push origin your_name/your_branch(zurück nach oben)
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Verwendung von Microsoft -Marken oder Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss folgen. Die Verwendung von Microsoft -Marken oder Logos in geänderten Versionen dieses Projekts darf keine Verwirrung verursachen oder Microsoft -Sponsoring implizieren. Jede Verwendung von Marken oder Logos von Drittanbietern unterliegt den Richtlinien dieses Drittanbieters.
Unter der MIT -Lizenz verteilt. Weitere Informationen finden Sie LICENSE.txt .
(zurück nach oben)
Die USB -Community wird beibehalten von:
(zurück nach oben)
Bitte zitieren Sie uns, wenn Sie dieses Projekt für Ihr Projekt/Ihre Arbeit hilfreich sind:
@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}
}
Wir danken den folgenden Projekten als Referenz für das Erstellen von USB:
(zurück nach oben)