Windows Machine Learning เป็น API การเรียนรู้การเรียนรู้ของเครื่องที่มีประสิทธิภาพสูงซึ่งขับเคลื่อนโดย ONNX Runtime และ DirectML
Windows ML API เป็นส่วนประกอบของ Windows Runtime และเหมาะสำหรับแอพพลิเคชั่นที่มีประสิทธิภาพสูงและมีความถี่ต่ำเช่นเฟรมเวิร์กเกมและแอพพลิเคชั่นเรียลไทม์อื่น ๆ รวมถึงแอปพลิเคชันที่สร้างด้วยภาษาระดับสูง
repo นี้มีตัวอย่างและเครื่องมือการเรียนรู้ของ Windows Machine ที่สาธิตวิธีการสร้างสถานการณ์การเรียนรู้ของเครื่องจักรในแอพพลิเคชั่น Windows
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Windows ML รวมถึงแบบฝึกหัดทีละขั้นตอนและคำแนะนำวิธีการใช้งานโปรดไปที่เอกสาร Windows ML
| ตัวอย่าง/เครื่องมือ | สถานะ |
|---|---|
| ตัวอย่างทั้งหมด | |
| Winmlrunner | |
| แดชบอร์ด Winml |
ข้อกำหนดเบื้องต้น
Windows ML เสนอการอนุมานการเรียนรู้ของเครื่องผ่านกล่องจดหมาย Windows SDK รวมถึงแพ็คเกจ NuGet ที่แจกจ่ายซ้ำ ตารางด้านล่างเน้นความพร้อมใช้งานการกระจายการสนับสนุนภาษาการให้บริการและด้านความเข้ากันได้ของการส่งต่อของแพ็คเกจในกล่องและ NUGET สำหรับ Windows ML
| ในกล่อง | นูเกต | |
|---|---|---|
| ความพร้อม | Windows 10 - สร้าง 17763 (RS5) หรือใหม่กว่า สำหรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับการสนับสนุนเวอร์ชันให้ชำระเงินเอกสารของเรา | Windows 8.1 หรือใหม่กว่า หมายเหตุ : API บางตัว (เช่น: videoframe) ไม่สามารถใช้ได้ใน OSE ที่เก่ากว่า |
| Windows SDK | Windows SDK - สร้าง 17763 (RS5) หรือใหม่กว่า | Windows SDK - สร้าง 17763 (RS5) หรือใหม่กว่า |
| การกระจาย | สร้างขึ้นใน Windows | แพ็คเกจและแจกจ่ายเป็นส่วนหนึ่งของแอปพลิเคชันของคุณ |
| การให้บริการ | Microsoft-Driven (ลูกค้าได้รับประโยชน์โดยอัตโนมัติ) | นักพัฒนาขับเคลื่อน |
| ซึ่งไปข้างหน้า | ความเข้ากันได้โดยอัตโนมัติจะหมุนไปข้างหน้าด้วยคุณสมบัติใหม่ | นักพัฒนาจำเป็นต้องอัปเดตแพ็คเกจด้วยตนเอง |
เรียนรู้เพิ่มเติมที่นี่
ในส่วนนี้คุณจะพบตัวอย่างรุ่นต่าง ๆ สำหรับสถานการณ์ที่หลากหลายในข้อเสนอ Windows ML API ที่แตกต่างกัน
การจำแนกรูปภาพ
โดเมนย่อยของการมองเห็นคอมพิวเตอร์ที่อัลกอริทึมดูที่ภาพและกำหนดแท็กจากคอลเลกชันของแท็กหรือหมวดหมู่ที่กำหนดไว้ล่วงหน้าที่ได้รับการฝึกฝน
| ประเภทแอพ Windows การกระจาย | UWP ในกล่อง | UWP นูเกต | เดสก์ท็อป ในกล่อง | เดสก์ท็อป นูเกต |
|---|---|---|---|---|
| Alexnet | ✔c# .net5 - ตัวอย่างแกลเลอรี่ | |||
| Caffenet | ✔c# .net5 - ตัวอย่างแกลเลอรี่ | |||
| เดนเซเนต | ✔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 - ตัวอย่างแกลเลอรี่ ✔ | |
| VGG19 | ✔c# .net5 - ตัวอย่างแกลเลอรี่ | |||
| vgg19bn | ✔c# .net5 - ตัวอย่างแกลเลอรี่ | |||
| zfnet512 | ✔c# .net5 - ตัวอย่างแกลเลอรี่ |
การถ่ายโอนสไตล์
เทคนิคการมองเห็นคอมพิวเตอร์ที่ช่วยให้เราสามารถนำเสนอเนื้อหาของภาพในรูปแบบของอีกรูปแบบหนึ่ง
| ประเภทแอพ Windows การกระจาย | UWP ในกล่อง | UWP นูเกต | เดสก์ท็อป ในกล่อง | เดสก์ท็อป นูเกต |
|---|---|---|---|---|
| fnscandy | ✔c# - การถ่ายโอนสไตล์ FNS ✔c# - การโอนสไตล์เรียลไทม์ |
ตัวอย่างขั้นสูงเหล่านี้แสดงวิธีการใช้คุณสมบัติการเชื่อมโยงและการประเมินผลต่างๆใน Windows ML:
Tensorization ที่กำหนดเอง : แอปพลิเคชันคอนโซล Windows (C ++/WinRT) ที่แสดงวิธีการทำเทนเซอร์ที่กำหนดเอง
Custom Operator (CPU) : แอพเดสก์ท็อปที่กำหนดตัวดำเนินการ CPU แบบกำหนดเองหลายตัว หนึ่งในนั้นคือผู้ดำเนินการดีบักที่เราขอเชิญชวนให้คุณรวมเข้ากับเวิร์กโฟลว์ของคุณเอง
การเลือกอะแดปเตอร์ : แอพเดสก์ท็อปที่สาธิตวิธีการเลือกอะแดปเตอร์อุปกรณ์เฉพาะสำหรับการใช้งานโมเดลของคุณ
ตัวระบุเครื่องบิน : แอพ UWP และแอพ WPF ที่บรรจุด้วยสะพานเดสก์ท็อปแบ่งปันรุ่นเดียวกันกับที่ได้รับการฝึกฝนโดยใช้บริการ Azure Custom Vision สำหรับคำแนะนำทีละขั้นตอนสำหรับตัวอย่างนี้โปรดดูโพสต์บล็อกอัพเกรดแอปพลิเคชัน WinML ของคุณเป็นบิตล่าสุด
Custom Vision และ Windows ML : บทช่วยสอนแสดงวิธีการฝึกอบรมโมเดลเครือข่ายประสาทเพื่อจำแนกรูปภาพของอาหารโดยใช้บริการวิสัยทัศน์ Azure Custom Vision ส่งออกโมเดลไปยังรูปแบบ ONNX และปรับใช้โมเดลในแอปพลิเคชันการเรียนรู้ของเครื่อง Windows ที่ทำงานอยู่ในอุปกรณ์ Windows
ML.NET และ Windows ML : บทช่วยสอนนี้แสดงวิธีการฝึกอบรมโมเดลเครือข่ายประสาทเพื่อจำแนกภาพอาหารโดยใช้ตัวสร้างโมเดล ML.NET ส่งออกโมเดลไปยังรูปแบบ ONNX และปรับใช้โมเดลในแอปพลิเคชันการเรียนรู้ของเครื่อง Windows อุปกรณ์ Windows
การวิเคราะห์ข้อมูล Pytorch : บทช่วยสอนแสดงวิธีแก้ปัญหาการจำแนกประเภทด้วยเครือข่ายประสาทโดยใช้ไลบรารี Pytorch ส่งออกโมเดลไปยังรูปแบบ ONNX และปรับใช้โมเดลด้วยแอปพลิเคชัน Windows Machine Learning ที่สามารถทำงานบนอุปกรณ์ Windows ใด ๆ
การจำแนกภาพ Pytorch : บทช่วยสอนแสดงวิธีการฝึกอบรมรูปแบบเครือข่ายประสาทการจำแนกภาพโดยใช้ pytorch ส่งออกโมเดลไปยังรูปแบบ ONNX และปรับใช้ในแอปพลิเคชันการเรียนรู้ของเครื่อง Windows ที่ทำงานอยู่ในอุปกรณ์ Windows ของคุณ
การตรวจจับวัตถุ YOLOV4 : บทช่วยสอนนี้แสดงวิธีการสร้างแอป UWP C# ที่ใช้โมเดล YOLOV4 เพื่อตรวจจับวัตถุในสตรีมวิดีโอ
การแปลงแบบจำลอง
Windows ML ให้ความสามารถในการอนุมานที่ขับเคลื่อนด้วยเครื่องยนต์รันไทม์ ONNX ดังนั้นทุกรุ่นที่ทำงานใน Windows ML จะต้องถูกแปลงเป็นรูปแบบโมเดล ONNX แบบจำลองที่สร้างและฝึกอบรมในกรอบต้นฉบับเช่น TensorFlow หรือ Pytorch จะต้องแปลงเป็น ONNX ตรวจสอบเอกสารสำหรับวิธีการแปลงเป็นรุ่น ONNX:
การเพิ่มประสิทธิภาพแบบจำลอง
แบบจำลองอาจต้องใช้การปรับแต่งการปรับแต่งโพสต์เพิ่มเติมเพื่อรองรับคุณสมบัติขั้นสูงเช่นการแบทช์และการหาปริมาณ ตรวจสอบเครื่องมือต่อไปนี้เพื่อเพิ่มประสิทธิภาพโมเดลของคุณ:
WinML Dashboard (ตัวอย่าง) : เครื่องมือที่ใช้ GUI สำหรับการดูการแก้ไขการแปลงและการตรวจสอบความถูกต้องของรุ่นการเรียนรู้ของเครื่องสำหรับเอ็นจิ้นการอนุมาน Windows ML เครื่องมือนี้สามารถใช้เพื่อเปิดใช้งานมิติฟรีในรุ่นที่สร้างขึ้นด้วยมิติคงที่ ดาวน์โหลดเวอร์ชันดูตัวอย่าง
การเพิ่มประสิทธิภาพกราฟ: การเพิ่มประสิทธิภาพกราฟเป็นการแปลงระดับกราฟเป็นหลักตั้งแต่การทำให้ง่ายขึ้นของกราฟขนาดเล็กและการกำจัดโหนดไปจนถึงการหลอมรวมของโหนดที่ซับซ้อนมากขึ้นและการเพิ่มประสิทธิภาพเค้าโครง
การหาปริมาณกราฟ : ปริมาณในรันไทม์ ONNX หมายถึงปริมาณเชิงเส้น 8 บิตของแบบจำลอง ONNX
การตรวจสอบแบบจำลอง
Winmlrunner : เครื่องมือบรรทัดคำสั่งที่สามารถเรียกใช้โมเดล. onnx หรือ. pb ที่ตัวแปรอินพุตและเอาต์พุตเป็นเทนเซอร์หรือรูปภาพ มันเป็นเครื่องมือที่มีประโยชน์มากในการตรวจสอบรุ่น ONNX อย่างรวดเร็ว มันจะพยายามโหลดผูกและประเมินโมเดลและพิมพ์ข้อความที่เป็นประโยชน์ นอกจากนี้ยังจับการวัดประสิทธิภาพ
ดาวน์โหลด x64 exe
การรวมโมเดล
WinML Code Generator (MLGEN) : ส่วนขยาย Visual Studio เพื่อช่วยให้คุณเริ่มต้นใช้ WinML APIs บนแอพ UWP โดยการสร้างรหัสเทมเพลตเมื่อคุณเพิ่มไฟล์ ONNX ที่ผ่านการฝึกอบรมลงในโครงการ UWP จากรหัสเทมเพลตคุณสามารถโหลดโมเดลสร้างเซสชันผูกอินพุตและประเมินด้วยรหัส wrapper ดูเอกสารสำหรับข้อมูลเพิ่มเติม
ดาวน์โหลดสำหรับ VS 2017, VS 2019
แกลเลอรี่ตัวอย่าง WinML: สำรวจสถานการณ์การรวม ML ที่หลากหลายและรุ่น
ตรวจสอบตัวอย่างรุ่นและตัวอย่างสถานการณ์ขั้นสูงเพื่อเรียนรู้วิธีใช้ Windows ML ในแอปพลิเคชันของคุณ
เรามักจะมองหาความช่วยเหลือของคุณในการแก้ไขข้อบกพร่องและปรับปรุงตัวอย่าง สร้างคำขอดึงและเรายินดีที่จะดู
โครงการนี้ได้นำรหัสการดำเนินงานของ Microsoft โอเพ่นซอร์สมาใช้ สำหรับข้อมูลเพิ่มเติมโปรดดูจรรยาบรรณคำถามที่พบบ่อยหรือติดต่อ [email protected] พร้อมคำถามหรือความคิดเห็นเพิ่มเติมใด ๆ