Windows Machine Learning은 Onnx 런타임 및 DirectML로 구동되는 고성능 머신 러닝 추론 API입니다.
Windows ML API는 Windows 런타임 구성 요소이며 프레임 워크, 게임 및 기타 실시간 애플리케이션과 같은 고성능 저성 애플리케이션 및 고급 언어로 구축 된 응용 프로그램에 적합합니다.
이 repo에는 Windows Machine Learning Samples 및 도구가 포함되어있어 기계 학습 전원 시나리오를 Windows 애플리케이션으로 구축하는 방법을 보여줍니다.
단계별 자습서 및 사용 방법 가이드를 포함한 Windows ML에 대한 추가 정보는 Windows ML 문서를 방문하십시오.
| 샘플/도구 | 상태 |
|---|---|
| 모든 샘플 | |
| Winmlrunner | |
| Winml 대시 보드 |
전제 조건
Windows ML은받은 편지함 Windows SDK 및 재배포 가능한 Nuget 패키지를 통한 머신 러닝 추론을 제공합니다. 아래 표는 Windows ML 용 인스 박스 및 Nuget 패키지의 가용성, 배포, 언어 지원, 서비스 및 전진 호환성 측면을 강조합니다.
| 상자 내 | 너겟 | |
|---|---|---|
| 유효성 | Windows 10- 빌드 17763 (RS5) 또는 최신 버전 지원에 대한 자세한 정보는 문서를 확인하십시오. | Windows 8.1 이상 참고 : 일부 API (예 : Videoframe)는 이전 OS에서 사용할 수 없습니다. |
| Windows SDK | Windows SDK- 빌드 17763 (RS5) 또는 최신 | Windows SDK- 빌드 17763 (RS5) 또는 최신 |
| 분포 | Windows에 내장 | 응용 프로그램의 일부로 패키지 및 배포하십시오 |
| 서비스 | Microsoft 중심 (고객은 자동으로 혜택을받습니다) | 개발자 중심 |
| 앞으로 | 호환성은 자동으로 새로운 기능으로 전진합니다 | 개발자는 패키지를 수동으로 업데이트해야합니다 |
여기에서 자세히 알아보십시오.
이 섹션에서는 다른 Windows ML API 제품에 걸쳐 다양한 시나리오에 대한 다양한 모델 샘플을 찾을 수 있습니다.
이미지 분류
알고리즘이 이미지를보고 미리 정의 된 태그 또는 카테고리 모음에서 태그를 할당하는 컴퓨터 비전의 하위 도메인.
| Windows 앱 유형 분포 | UWP 상자 내 | UWP 너겟 | 데스크탑 상자 내 | 데스크탑 너겟 |
|---|---|---|---|---|
| Alexnet | ✔️C# .NET5- 샘플 갤러리 | |||
| 카페네 | ✔️C# .NET5- 샘플 갤러리 | |||
| Densenet | ✔️C# .NET5- 샘플 갤러리 | |||
| 효율적인 넷 | ✔️C# .NET5- 샘플 갤러리 | |||
| googlenet | ✔️C# .NET5- 샘플 갤러리 | |||
| inceptionv1 | ✔️C# .NET5- 샘플 갤러리 | |||
| inceptionv2 | ✔️C# .NET5- 샘플 갤러리 | |||
| mnist | ✔️C ++/CX ✔️C# | |||
| Mobilenetv2 | ✔️C# .NET5- 샘플 갤러리 | |||
| RCNN | ✔️C# .NET5- 샘플 갤러리 | |||
| RESNET50 | ✔️C# .NET5- 샘플 갤러리 | |||
| Shufflenetv1 | ✔️C# .NET5- 샘플 갤러리 | |||
| Shufflenetv2 | ✔️C# .NET5- 샘플 갤러리 | |||
| 스퀴 제넷 | ✔️C# ✔️ JavaScript | ✔️c ++/winrt ✔️C# .NET5 ✔️C# .NET Core 2 | ✔️c ++/winrt ✔️C# .NET5- 샘플 갤러리 ✔️ rust | |
| vgg19 | ✔️C# .NET5- 샘플 갤러리 | |||
| vgg19bn | ✔️C# .NET5- 샘플 갤러리 | |||
| ZFNET512 | ✔️C# .NET5- 샘플 갤러리 |
스타일 전송
다른 스타일로 이미지의 내용을 권장 할 수있는 컴퓨터 비전 기술.
| Windows 앱 유형 분포 | UWP 상자 내 | UWP 너겟 | 데스크탑 상자 내 | 데스크탑 너겟 |
|---|---|---|---|---|
| fnscandy | ✔️C# -FNS 스타일 전송 ✔️C# - 실시간 스타일 전송 |
이 고급 샘플은 Windows ML에서 다양한 바인딩 및 평가 기능을 사용하는 방법을 보여줍니다.
맞춤형 긴장 : 맞춤형 긴장을 수행하는 방법을 보여주는 Windows 콘솔 응용 프로그램 (C ++/WinRT).
CPU (Custom Operator) : 여러 사용자 정의 CPU 연산자를 정의하는 데스크탑 앱. 이 중 하나는 디버그 연산자로 자신의 워크 플로에 통합하도록 초대합니다.
어댑터 선택 : 모델 실행을위한 특정 장치 어댑터를 선택하는 방법을 보여주는 데스크탑 앱.
평면 식별자 : UWP 앱 및 데스크탑 브리지와 함께 포장 된 WPF 앱으로 Azure Custom Vision Service를 사용하여 훈련 된 동일한 모델을 공유합니다. 이 샘플에 대한 단계별 지침은 Blog 게시물 업그레이드 업그레이드 응용 프로그램을 최신 비트로 업그레이드하십시오.
Custom Vision and Windows ML : 자습서는 신경망 모델을 훈련하여 Azure Custom Vision Service를 사용하여 식품 이미지를 분류하고 Onnx 형식으로 모델을 내보내고 Windows 장치에서 로컬로 실행되는 Windows 머신 러닝 응용 프로그램에 모델을 배포하는 방법을 보여줍니다.
ML.NET 및 Windows ML :이 튜토리얼은 ML.NET 모델 빌더를 사용하여 식품 이미지를 분류하고 ONNX 형식으로 모델을 내보내고 로컬로 실행중인 Windows 머신 러닝 애플리케이션에 모델을 배포하기 위해 신경망 모델을 교육하는 방법을 보여줍니다. Windows 장치.
Pytorch Data Analysis : 자습서는 Pytorch 라이브러리를 사용하여 신경망으로 분류 작업을 해결하는 방법을 보여주고 모델을 Onnx 형식으로 내보내고 Windows 장치에서 실행될 수있는 Windows 머신 러닝 응용 프로그램으로 모델을 배포하는 방법을 보여줍니다.
Pytorch Image Classification : 자습서는 Pytorch를 사용하여 이미지 분류 신경망 모델을 훈련하는 방법을 보여주고, 모델을 Onnx 형식으로 내보내고 Windows 장치에서 로컬로 실행하는 Windows 머신 러닝 응용 프로그램에 배포하는 방법을 보여줍니다.
YOLOV4 객체 감지 :이 튜토리얼은 YOLOV4 모델을 사용하여 비디오 스트림의 객체를 감지하는 UWP C# 앱을 구축하는 방법을 보여줍니다.
모델 변환
Windows ML은 ONNX 런타임 엔진으로 구동되는 추론 기능을 제공합니다. 따라서 Windows ML에서 실행되는 모든 모델은 ONNX 모델 형식으로 변환해야합니다. Tensorflow 또는 Pytorch와 같은 소스 프레임 워크에서 구축 및 교육을받은 모델은 ONNX로 변환해야합니다. ONNX 모델로 변환하는 방법에 대한 설명서를 확인하십시오.
모델 최적화
모델은 배치 및 양자화와 같은 고급 기능을 지원하기 위해 추가 최적화 포스트 전환이 필요할 수 있습니다. 모델을 최적화하려면 다음 도구를 확인하십시오.
Winml Dashboard (Preview) : Windows ML 추론 엔진을위한 머신 러닝 모델을보고, 편집, 변환 및 검증하기위한 GUI 기반 도구. 이 도구는 고정 치수로 구축 된 모델에서 자유 치수를 가능하게하는 데 사용될 수 있습니다. 미리보기 버전을 다운로드하십시오
그래프 최적화 : 그래프 최적화는 기본적으로 작은 그래프 단순화 및 노드 제거에서보다 복잡한 노드 퓨전 및 레이아웃 최적화에 이르기까지 그래프 수준 변환입니다.
그래프 양자화 : ONNX 런타임의 양자화는 ONNX 모델의 8 비트 선형 양자화를 나타냅니다.
모델 검증
WinMlRunner : 입력 및 출력 변수가 텐서 또는 이미지 인 .onnx 또는 .pb 모델을 실행할 수있는 명령 줄 도구. ONNX 모델을 신속하게 검증하는 매우 편리한 도구입니다. 모델을로드, 바인드 및 평가하려고 시도하고 유용한 메시지를 인쇄합니다. 또한 성능 측정을 캡처합니다.
x64 exe를 다운로드하십시오
모델 통합
Winml Code Generator (MLGEN) : UWP 프로젝트에 교육 된 ONNX 파일을 추가 할 때 템플릿 코드를 생성하여 UWP 앱에서 WinML API를 사용하기 시작하는 데 도움이되는 Visual Studio Extension. 템플릿 코드에서 모델을로드하고 세션을 생성하고 입력을 바인딩하며 래퍼 코드로 평가할 수 있습니다. 자세한 내용은 문서를 참조하십시오.
VS 2017, vs 2019에 대한 다운로드
WinML 샘플 갤러리 : 다양한 ML 통합 시나리오 및 모델을 탐색하십시오.
응용 프로그램에서 Windows ML을 사용하는 방법을 배우려면 모델 샘플 및 고급 시나리오 샘플을 확인하십시오.
우리는 항상 버그를 수정하고 샘플을 개선하는 데 도움을 찾고 있습니다. 풀 요청을 만들면 기꺼이 살펴볼 것입니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 추가 질문이나 의견이 있으면 행동 강령 FAQ 또는 [email protected]에 문의하십시오.