Windows Machine Learning es una API de inferencia de aprendizaje automático de alto rendimiento que funciona con ONNX Runtime y DirectML.
La API de Windows ML es un componente de tiempo de ejecución de Windows y es adecuado para aplicaciones de alto rendimiento y baja latencia, como marcos, juegos y otras aplicaciones en tiempo real, así como aplicaciones construidas con idiomas de alto nivel.
Este repositorio contiene muestras y herramientas de aprendizaje automático de Windows que demuestran cómo construir escenarios alimentados por el aprendizaje automático en las aplicaciones de Windows.
Para obtener información adicional sobre Windows ML, incluidos tutoriales paso a paso y guías de cómo hacer, visite la documentación de Windows ML.
| Muestra/herramienta | Estado |
|---|---|
| Todas las muestras | |
| Winmlrunner | |
| Panel de control de Winml |
Requisitos previos
Windows ML ofrece inferencias de aprendizaje automático a través de la bandeja de entrada de Windows SDK, así como un paquete NUGET redistribuible. La siguiente tabla resalta la disponibilidad, distribución, soporte del idioma, servicio y aspectos de compatibilidad de reenvío del paquete In-Box y Nuget para Windows ML.
| Bandeja de entrada | Nuget | |
|---|---|---|
| Disponibilidad | Windows 10 - Build 17763 (RS5) o más nuevo Para obtener información más detallada sobre el soporte de versión, consulte nuestros documentos. | Windows 8.1 o más nuevo Nota : Algunas API (es decir: Videocrame) no están disponibles en OSE más antiguos. |
| SDK de Windows | Windows SDK - Build 17763 (RS5) o más nuevo | Windows SDK - Build 17763 (RS5) o más nuevo |
| Distribución | Integrado en Windows | Paquete y distribuye como parte de su aplicación |
| Servicio | Dirigido por Microsoft (los clientes se benefician automáticamente) | Impulsado por el desarrollador |
| Adelante | La compatibilidad avanza automáticamente con nuevas características | El desarrollador necesita actualizar el paquete manualmente |
Obtenga más información aquí.
En esta sección encontrará varias muestras de modelo para una variedad de escenarios en las diferentes ofertas de API de Windows ML.
Clasificación de imágenes
Un subdominio de visión por computadora en la que un algoritmo mira una imagen y le asigna una etiqueta de una colección de etiquetas o categorías predefinidas en las que ha sido entrenado.
| Tipo de aplicación de Windows Distribución | UWP Bandeja de entrada | UWP Nuget | De oficina Bandeja de entrada | De oficina Nuget |
|---|---|---|---|---|
| Alexnet | ✔️C# .net5 - Galería de muestras | |||
| Caffenet | ✔️C# .net5 - Galería de muestras | |||
| Densenet | ✔️C# .net5 - Galería de muestras | |||
| EficeTnet | ✔️C# .net5 - Galería de muestras | |||
| Googlenet | ✔️C# .net5 - Galería de muestras | |||
| Inceptionv1 | ✔️C# .net5 - Galería de muestras | |||
| Inceptionv2 | ✔️C# .net5 - Galería de muestras | |||
| Mnista | ✔️C ++/CX ✔️C# | |||
| Mobilenetv2 | ✔️C# .net5 - Galería de muestras | |||
| Rcnn | ✔️C# .net5 - Galería de muestras | |||
| Resnet50 | ✔️C# .net5 - Galería de muestras | |||
| Shufflenetv1 | ✔️C# .net5 - Galería de muestras | |||
| Shufflenetv2 | ✔️C# .net5 - Galería de muestras | |||
| Squeezenet | ✔️C# ✔️ JavaScript | ✔️C ++/Winrt ✔️C# .net5 ✔️C# .NET Core 2 | ✔️C ++/Winrt ✔️C# .net5 - Galería de muestras ✔️Rust | |
| VGG19 | ✔️C# .net5 - Galería de muestras | |||
| Vgg19bn | ✔️C# .net5 - Galería de muestras | |||
| ZFNET512 | ✔️C# .net5 - Galería de muestras |
Transferencia de estilo
Una técnica de visión por computadora que nos permite volver a componer el contenido de una imagen al estilo de otra.
| Tipo de aplicación de Windows Distribución | UWP Bandeja de entrada | UWP Nuget | De oficina Bandeja de entrada | De oficina Nuget |
|---|---|---|---|---|
| Fnscandy | ✔️C# - Transferencia de estilo FNS ✔️C# - Transferencia de estilo en tiempo real |
Estas muestras avanzadas muestran cómo usar varias funciones de enlace y evaluación en Windows ML:
Tensorización personalizada : una aplicación de consola de Windows (C ++/WinRT) que muestra cómo hacer tensorización personalizada.
Operador personalizado (CPU) : una aplicación de escritorio que define múltiples operadores de CPU personalizados. Uno de estos es un operador de depuración que le invitamos a integrar en su propio flujo de trabajo.
Selección del adaptador : una aplicación de escritorio que demuestra cómo elegir un adaptador de dispositivo específico para ejecutar su modelo.
Identificador de avión : una aplicación UWP y una aplicación WPF empaquetada con el puente de escritorio, compartiendo el mismo modelo capacitado utilizando el servicio de visión personalizada Azure. Para obtener instrucciones paso a paso para esta muestra, consulte la publicación de blog Actualice su aplicación WinML a los últimos bits.
Visión personalizada y Windows ML : El tutorial muestra cómo capacitar a un modelo de red neuronal para clasificar las imágenes de alimentos utilizando el servicio de visión personalizada Azure, exportar el modelo a formato ONNX e implementar el modelo en una aplicación de aprendizaje automático de Windows que se ejecuta localmente en el dispositivo Windows.
ML.NET y Windows ML : este tutorial le muestra cómo capacitar a un modelo de red neuronal para clasificar las imágenes de alimentos usando el generador de modelos ML.NET, exportar el modelo a formato ONNX e implementar el modelo en una aplicación de aprendizaje automático de Windows que se ejecuta localmente en un dispositivo Windows.
Análisis de datos de Pytorch : el tutorial muestra cómo resolver una tarea de clasificación con una red neuronal que usa la biblioteca Pytorch, exporta el modelo a formato ONNX e implementa el modelo con la aplicación de aprendizaje automático de Windows que puede ejecutarse en cualquier dispositivo de Windows.
Clasificación de imagen de Pytorch : el tutorial muestra cómo entrenar un modelo de red de clasificación de imágenes con la red neuronal con Pytorch, exportar el modelo al formato ONNX e implementarlo en una aplicación de aprendizaje automático de Windows que se ejecute localmente en su dispositivo Windows.
Detección de objetos Yolov4 : este tutorial muestra cómo construir una aplicación UWP C# que usa el modelo Yolov4 para detectar objetos en las transmisiones de video.
Conversión de modelo
Windows ML proporciona capacidades de inferencia alimentadas por el motor de ejecución de ONNX. Como tal, todos los modelos ejecutados en Windows ML deben convertirse en el formato de modelo ONNX. Los modelos construidos y entrenados en marcos de origen como TensorFlow o Pytorch deben convertirse en ONNX. Consulte la documentación sobre cómo convertir a un modelo ONNX:
Optimización del modelo
Los modelos pueden necesitar más optimizaciones aplicadas después de la conversión para admitir características avanzadas como lotes y cuantización. Consulte las siguientes herramientas para optimizar su modelo:
WinML Dashboard (vista previa) : una herramienta basada en GUI para ver, editar, convertir y validar modelos de aprendizaje automático para Windows ML Inference Engine. Esta herramienta se puede utilizar para habilitar dimensiones gratuitas en modelos construidos con dimensiones fijas. Descargar la versión de vista previa
Optimizaciones de gráficos: las optimizaciones de gráficos son esencialmente transformaciones a nivel gráfico, que van desde pequeñas simplificaciones de gráficos y eliminaciones de nodos hasta fusiones de nodos y optimizaciones de diseño más complejas.
Cuantización gráfica : la cuantización en el tiempo de ejecución de ONNX se refiere a la cuantización lineal de 8 bits de un modelo ONNX.
Validación del modelo
Winmlrunner : una herramienta de línea de comandos que puede ejecutar modelos .onnx o .pb donde las variables de entrada y salida son tensores o imágenes. Es una herramienta muy útil para validar rápidamente un modelo ONNX. Intentará cargar, unir y evaluar un modelo e imprimir mensajes útiles. También captura las mediciones de rendimiento.
Descargar x64 exe
Integración de modelos
Generador de código WINML (MLGEN) : una extensión de Visual Studio para ayudarlo a comenzar a usar las API WinML en las aplicaciones UWP generando un código de plantilla cuando agrega un archivo ONNX capacitado al proyecto UWP. Desde el código de plantilla, puede cargar un modelo, crear una sesión, vincular entradas y evaluar con códigos de envoltura. Vea los documentos para más información.
Descargar para VS 2017, VS 2019
Galería de muestras de WinML: explore una variedad de escenarios y modelos de integración ML.
Consulte las muestras del modelo y las muestras de escenarios avanzados para aprender a usar Windows ML en su aplicación.
Siempre estamos buscando su ayuda para solucionar errores y mejorar las muestras. Cree una solicitud de extracción y estaremos encantados de echar un vistazo.
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.