<div id="top"></div>
<!--
*** Best-README-Template을 확인해 주셔서 감사합니다. 개선할 제안 사항이 있다면, 레포지토리를 포크(fork)하고 풀 리퀘스트(pull request)를 생성하거나 'enhancement' 태그가 붙은 이슈를 열어주세요.
*** 프로젝트에 별점(star)을 주는 것을 잊지 마세요!
*** 다시 한번 감사드립니다! 이제 놀라운 무언가를 만들어 보세요! :D
-->
<!-- PROJECT SHIELDS -->
<!--
*** 가독성을 위해 markdown "reference style" 링크를 사용합니다.
*** 참조 링크는 괄호() 대신 대괄호[] 안에 포함됩니다.
*** 기여자-url, forks-url 등 참조 변수 선언은 이 문서 하단에서 확인하세요. 이것은 선택적이고 간결한 구문입니다.
*** https://www.markdownguide.org/basic-syntax/#reference-style-links
-->
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
<!--
***[![MIT License][license-shield]][license-url]
-->
<!-- PROJECT LOGO -->
<br />
<div align="center">
<a href="https://github.com/microsoft/Semi-supervised-learning">
<img src="https://raw.githubusercontent.com/microsoft/Semi-supervised-learning/HEAD/figures/logo.png" alt="Logo" width="400">
</a>
<!-- <h3 align="center">USB</h3>-->
<p align="center">
<strong style="font-size: 1.2em;">USB</strong>: CV, NLP 및 오디오 분류를 위한 통합 준지도 학습(Semi-supervised learning) 벤치마크
<!-- <br />
<a href="https://github.com/microsoft/Semi-supervised-learning"><strong style="font-size: 1.2em;">문서 살펴보기 »</strong></a>
<br /> -->
<br />
<a href="https://arxiv.org/abs/2208.07204">논문</a>
·
<a href="https://github.com/microsoft/Semi-supervised-learning/tree/main/results">벤치마크</a>
·
<a href="https://colab.research.google.com/drive/1lFygK31jWyTH88ktao6Ow-5nny5-B7v5">데모</a>
·
<a href="https://usb.readthedocs.io/en/main/">문서(Docs)</a>
·
<a href="https://github.com/microsoft/Semi-supervised-learning/issues">이슈</a>
·
<a href="https://www.microsoft.com/en-us/research/lab/microsoft-research-asia/articles/pushing-the-limit-of-semi-supervised-learning-with-the-unified-semi-supervised-learning-benchmark/">블로그</a>
·
<a href="https://medium.com/p/849f42bbc32a">블로그 (Pytorch)</a>
·
<a href="https://zhuanlan.zhihu.com/p/566055279">블로그 (중국어)</a>
·
<a href="https://nips.cc/virtual/2022/poster/55710">영상</a>
·
<a href="https://www.bilibili.com/video/av474982872/">영상 (중국어)</a>
</p>
</div>
<!-- 목차 -->
<details>
<summary>목차(Table of Contents)</summary>
<ol>
<li><a href="#news-and-updates">뉴스 및 업데이트(News and Updates)</a></li>
<li><a href="#intro">소개(Introduction)</a></li>
<li>
<a href="#getting-started">시작하기(Getting Started)</a>
<ul>
<li><a href="#prerequisites">전제 조건(Prerequisites)</a></li>
<li><a href="#installation">설치(Installation)</a></li>
</ul>
</li>
<li><a href="#usage">사용법(Usage)</a></li>
<li><a href="#benchmark-results">벤치마크 결과(Benchmark Results)</a></li>
<li><a href="#model-zoo">모델 동물원(Model Zoo)</a></li>
<li><a href="#contributing">커뮤니티 기여(Community)</a></li>
<li><a href="#license">라이선스(License)</a></li>
<li><a href="#acknowledgments">감사의 글(Acknowledgments)</a></li>
</ol>
</details>
<!-- 뉴스 및 업데이트 -->
뉴스 및 업데이트
⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
-
[2022년 10월 6일] USB의 학습 로그 및 결과가 업데이트되었습니다! 사용 가능한 데이터셋은 곧 업로드될 예정입니다. [Logs] [Results]
-
[2022년 9월 17일] USB 논문이 NeurIPS 2022 데이터셋 및 벤치마크 트랙에 채택되었습니다! [Openreview]
-
[2022년 8월 21일] USB가 출시되었습니다!
<!-- Introduction -->
소개 (Introduction)
USB는 Semi-Supervised Learning (SSL)을 위한 Pytorch 기반 Python 패키지입니다. 사용하기 쉽고/확장성이 뛰어나며, 소규모 그룹에게 경제적이고 SSL 알고리즘 개발 및 평가에 포괄적입니다. USB는 Consistency Regularization 기반의 14개 SSL 알고리즘 구현과 CV, NLP, Audio 도메인에서 가져온 15개의 평가 태스크를 제공합니다.
Code Structure
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
<!-- GETTING STARTED -->
시작하기 (Getting Started)
이것은 USB를 로컬에 설정하는 예시입니다.
로컬 사본을 실행하려면 다음의 간단한 예시 단계를 따르세요.
전제 조건 (Prerequisites)
USB는 pytorch, torchvision, torchaudio, 그리고 transformers를 기반으로 구축되었습니다.
필요한 패키지를 설치하려면 conda 환경을 생성할 수 있습니다:
conda create --name usb python=3.8
그런 다음 pip를 사용하여 필요한 패키지를 설치합니다:
pip install -r requirements.txt
이제부터는 다음 명령어를 입력하여 USB 사용을 시작할 수 있습니다:
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yaml
설치 (Installation)
저희는 사용자가 지원되는 SSL 알고리즘을 자신의 데이터에서 빠르게 학습/테스트하고자 하는 경우를 위해 USB의 Python 패키지 semilearn을 제공합니다:
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
개발 (Development)
또한 USB를 클론하여 자신만의 SSL 알고리즘을 개발하고 평가할 수도 있습니다:
git clone https://github.com/microsoft/Semi-supervised-learning.git
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
데이터셋 준비 (Prepare Datasets)
다운로드 및 처리 방법에 대한 자세한 지침은 Dataset Download에서 확인할 수 있습니다. 알고리즘을 실행하거나 개발하기 전에 반드시 이 가이드를 따라 데이터셋을 다운로드해 주십시오.
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
<!-- USAGE EXAMPLES -->
사용법 (Usage)
USB는 사용하기 쉽고 확장성이 뛰어납니다. 아래 예제들을 통해 USB를 숙지하고, 자체 데이터셋에서 기존의 SSL 알고리즘을 평가하거나 새로운 SSL 알고리즘을 개발하는 데 도움이 될 것입니다.
USB 패키지를 이용한 빠른 시작 (Quick Start with USB package)
<!-- TODO: quick start example 및 참고 라이팅 노트북 추가 필요 -->
먼저 설치를 참조하여 USB를 설치해 주십시오. 다음을 위한 Colab 튜토리얼을 제공합니다:
Docker로 시작하기 (Start with Docker)
단계 1: 환경 확인 (Check your environment)
먼저 Docker와 nvidia 드라이버를 올바르게 설치해야 합니다. 컨테이너에서 GPU를 사용하려면 또한 nvidia-docker2(설치 가이드)를 설치해야 합니다.
그런 다음, nvidia-smi를 통해 CUDA 버전을 확인하십시오.
단계 2: 프로젝트 클론 (Clone the project)
git clone https://github.com/microsoft/Semi-supervised-learning.git
단계 3: Docker 이미지 빌드 (Build the Docker image)
이미지를 빌드하기 전에, 사용자의 CUDA 버전에 맞게 Dockerfile을 수정할 수 있습니다.
우리가 사용하는 CUDA 버전은 11.6입니다. 이 사이트를 참조하여 기본 이미지 태그(base image tag)를 변경할 수 있습니다.
또한, PyTorch의 올바른 버전을 설치하려면 --extra-index-url도 CUDA 버전에 맞게 변경해야 합니다.
URL은 PyTorch 웹사이트에서 확인할 수 있습니다.
다음 명령어를 사용하여 이미지를 빌드하십시오.
cd Semi-supervised-learning && docker build -t semilearn .
작업이 완료되었습니다. 방금 빌드한 이미지를 자체 프로젝트에 사용할 수 있습니다. 컨테이너에서 GPU를 사용하려면 --gpu 인수를 사용하는 것을 잊지 마세요.
학습 (Training)
CIFAR-100 데이터셋과 200개의 레이블을 사용하여 FixMatch를 학습하는 예시입니다. 다른 지원 알고리즘(다른 데이터셋 및 다른 레이블 설정에 대한)은 구성 파일로 지정할 수 있습니다:
python train.py --c config/usb_cv/fixmatch/fixmatch_cifar100_200_0.yaml
평가 (Evaluation)
학습 후, 학습 로그에서 평가 성능을 확인하거나 다음 평가 스크립트를 실행할 수 있습니다:
python eval.py --dataset cifar100 --num_classes 100 --load_path /PATH/TO/CHECKPOINT
개발 (Develop)
자체 SSL 알고리즘을 생성하는 방법에 대한 개발 문서를 확인하세요!
더 많은 예시는 Documentation을 참조하십시오
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
<!-- 벤치마크 결과 -->
벤치마크 결과 (Benchmark Results)
다양한 작업에 대한 벤치마크 결과는 Results를 참조하십시오.
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
<!-- 모델 동물원 -->
모델 동물원 (Model Zoo)
TODO: 사전 학습된 모델 추가 예정.
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
<!-- 로드맵 -->
TODO
제안된 기능(및 알려진 문제) 전체 목록은 open issues를 확인하십시오.
<p align="right">(<a href="#top">맨 위로 돌아가기</a>)</p>
<!-- 기여 -->
기여 (Contributing)
본 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 본인에게 사용 권한이 있으며 실제로 그 권한을 부여한다는 내용의 기여자 라이선스 계약(Contributor License Agreement, CLA)에 동의하는 것을 요구합니다. 자세한 내용은 https://cla.opensource.microsoft.com을 방문하십시오.
풀 리퀘스트(pull request)를 제출하면, CLA 봇이 자동으로 귀하가 CLA를 제공해야 하는지 판단하고 PR을 적절하게 꾸며줍니다 (예: 상태 확인, 댓글). 봇이 제공하는 지침만 따르면 됩니다. 저희 CLA를 사용하는 모든 저장소에서 이 작업을 단 한 번만 하시면 됩니다.
본 프로젝트는 Microsoft 오픈 소스 행동 강령(Code of Conduct)을 채택했습니다. 더 자세한 정보는 행동 강령 FAQ를 참조하거나, 추가 질문이나 의견이 있으시면 [email protected]으로 문의해 주십시오.
USB를 더 좋게 만들 수 있는 제안 사항이 있다면, 저장소를 포크(fork)하고 풀 리퀘스트를 생성해 주십시오. 또는