
USB : un punto de referencia de aprendizaje semi-supervisado unificado para CV, PNL y clasificación de audio
Paper · Benchmark · Demo · Docs · Problema · Blog · Blog (Pytorch) · Blog (chino) · Video · Video (chino)
[16/03/2024] Agregue Epass, Sequencematch y RefixMatch. Se corrigieron algunos errores tipográficos.
[07/07/2023] Agregar DefixMatch. Se corrigió algunos errores. Liberar semilearn = 0.3.1/
[06/01/2023] ¡USB se ha unido oficialmente al ecosistema de Pytorch! [Blog de Pytorch]
[30/01/2023] Actualización de semilearn == 0.3.0. Agregue Freematch y SoftMatch. Agregue algoritmos desequilibrados. Actualice los resultados y agregue soporte Wandb. Consulte Change_Log para obtener más detalles. [Resultados] [registros] [wandb]. Los registros clásicos más antiguos se pueden encontrar aquí: [registro de torcssl].
[16/16/2022] ¡Enlace de descarga del conjunto de datos e instrucciones de proceso lanzadas! [Conjuntos de datos]
[13/13/2022] Hemos terminado la versión de cámara lista con [resultados] actualizado. [OpenReview]
[10/06/2022] ¡Se han actualizado los registros de capacitación y los resultados de USB! El conjunto de datos disponible se cargará pronto. [Registros] [Resultados]
[17/09/2022] ¡El documento USB ha sido aceptado por Neurips 2022 DataSet y Benchmark Track! [OpenReview]
[21/08/2022] ¡Se ha lanzado USB!
USB es un paquete Python basado en Pytorch para el aprendizaje semi-supervisado (SSL). Es fácil de usar/extender, asequible para grupos pequeños, e integral para desarrollar y evaluar los algoritmos SSL. USB proporciona la implementación de 14 algoritmos SSL basados en la regularización de la consistencia y 15 tareas para la evaluación de CV, NLP y dominio de audio.

(De vuelta a la cima)
Este es un ejemplo de cómo configurar USB localmente. Para obtener una copia local, en ejecución siga estos simples pasos de ejemplo.
USB se basa en Pytorch, con Vision, Torchaudio y Transformadores.
Para instalar los paquetes requeridos, puede crear un entorno de condena:
conda create --name usb python=3.8Luego use PIP para instalar los paquetes requeridos:
pip install -r requirements.txtDe ahora en adelante, puede comenzar a usar USB escribiendo
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlProporcionamos un paquete de python semilearn de USB para los usuarios que desean comenzar a capacitar/probar los algoritmos SSL compatibles en sus datos rápidamente:
pip install semilearn(De vuelta a la cima)
También puede desarrollar su propio algoritmo SSL y evaluarlo clonando USB:
git clone https://github.com/microsoft/Semi-supervised-learning.git(De vuelta a la cima)
Las instrucciones detalladas para la descarga y el procesamiento se muestran en la descarga del conjunto de datos. Siga para descargar conjuntos de datos antes de ejecutar o desarrollar algoritmos.
(De vuelta a la cima)
USB es fácil de usar y extender. Pasar por los ejemplos a continuación lo ayudará a familiarizarse con USB para su uso rápido, evaluar un algoritmo SSL existente en su propio conjunto de datos o desarrollar nuevos algoritmos SSL.
Consulte la instalación para instalar USB primero. Proporcionamos tutoriales de Colab para:
Paso 1: Verifique su entorno
Primero debe instalar correctamente el controlador Docker y Nvidia. Para usar GPU en un contenedor Docker, también debe instalar NVIDIA-Docker2 (Guía de instalación). Luego, consulte su versión CUDA a través de nvidia-smi
Paso 2: Clon el proyecto
git clone https://github.com/microsoft/Semi-supervised-learning.gitPaso 3: Construya la imagen de Docker
Antes de construir la imagen, puede modificar el DockerFile de acuerdo con su versión CUDA. La versión CUDA que usamos es 11.6. Puede cambiar la etiqueta de imagen base de acuerdo con este sitio. También debe cambiar el --extra-index-url de acuerdo con su versión CUDA para instalar la versión correcta de Pytorch. Puede consultar la URL a través del sitio web de Pytorch.
Use este comando para construir la imagen
cd Semi-supervised-learning && docker build -t semilearn . Trabajo hecho. Puede usar la imagen que acaba de construir para su propio proyecto. No olvide usar el argumento --gpu cuando desee usar GPU en un contenedor.
Aquí hay un ejemplo para entrenar FixMatch en CIFAR-100 con 200 etiquetas. Capacitación Otros algoritmos compatibles (en otros conjuntos de datos con diferentes configuraciones de etiquetas) se pueden especificar mediante un archivo de configuración:
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yamlDespués de la capacitación, puede verificar el rendimiento de la evaluación en los registros de capacitación o ejecutar el script de evaluación:
python eval.py --dataset cifar100 --num_classes 100 --load_path /PATH/TO/CHECKPOINT
¡Consulte la documentación de desarrollo para crear su propio algoritmo SSL!
Para más ejemplos, consulte la documentación
(De vuelta a la cima)
Consulte los resultados para obtener resultados de referencia en diferentes tareas.
(De vuelta a la cima)
TODO: Agregue modelos previamente capacitados.
(De vuelta a la cima)
Consulte los problemas abiertos para una lista completa de características propuestas (y problemas conocidos).
(De vuelta a la cima)
Este proyecto da la bienvenida a las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Acuerdo de Licencia de Contributor (CLA) que declare que tiene derecho y realmente hacernos los derechos para utilizar su contribución. Para más detalles, visite https://cla.opensource.microsoft.com.
Cuando envíe una solicitud de extracción, un BOT CLA determinará automáticamente si necesita proporcionar un CLA y decorar el PR adecuadamente (por ejemplo, verificación de estado, comentario). Simplemente siga las instrucciones proporcionadas por el bot. Solo necesitará hacer esto una vez en todos los reposos usando nuestro CLA.
Este proyecto ha adoptado el Código de Conducta Open Open Microsoft. Para obtener más información, consulte el Código de Conducta Preguntas frecuentes o comuníquese con [email protected] con cualquier pregunta o comentario adicional.
Si tiene una sugerencia que mejore USB, desembolse el repositorio y cree una solicitud de extracción. También puede simplemente abrir un problema con la etiqueta "Mejora". ¡No olvides darle una estrella al proyecto! ¡Gracias de nuevo!
git checkout -b your_name/your_branch )git commit -m 'Add some features' )git push origin your_name/your_branch )(De vuelta a la cima)
Este proyecto puede contener marcas comerciales o logotipos para proyectos, productos o servicios. El uso autorizado de marcas o logotipos de Microsoft está sujeto y debe seguir las pautas de marca y marca de Microsoft. El uso de marcas registradas de Microsoft o logotipos en versiones modificadas de este proyecto no debe causar confusión o implicar el patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esas partes de terceros.
Distribuido bajo la licencia MIT. Consulte LICENSE.txt para obtener más información.
(De vuelta a la cima)
La comunidad USB se mantiene por:
(De vuelta a la cima)
Por favor cíquanos si está bien útil este proyecto para su proyecto/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 a los siguientes proyectos como referencia a la creación de USB:
(De vuelta a la cima)