O Windows Machine Learning é uma API de inferência de aprendizado de máquina de alto desempenho que é alimentada pelo ONNX Runtime e DirectML.
A API do Windows ML é um componente de tempo de execução do Windows e é adequado para aplicativos de alto desempenho e baixa latência, como estruturas, jogos e outros aplicativos em tempo real, bem como aplicativos criados com idiomas de alto nível.
Este repositório contém amostras e ferramentas de aprendizado de máquina do Windows que demonstram como criar cenários alimentados com aprendizado de máquina para aplicativos do Windows.
Para obter informações adicionais sobre o Windows ML, incluindo tutoriais passo a passo e guias de instruções, visite a documentação do Windows ML.
| Amostra/ferramenta | Status |
|---|---|
| Todas as amostras | |
| Winmlrunner | |
| Painel WinML |
Pré -requisitos
O Windows ML oferece inferências de aprendizado de máquina por meio do SDK do Windows de entrada, bem como de um pacote Nuget redistribuível. A tabela abaixo destaca os aspectos de disponibilidade, distribuição, suporte ao idioma, manutenção e compatibilidade de encaminhamento do pacote IN-Box e Nuget para o Windows ML.
| In-box | NUGET | |
|---|---|---|
| Disponibilidade | Windows 10 - Construa 17763 (RS5) ou mais recente Para obter informações mais detalhadas sobre o suporte à versão, consulte nossos documentos. | Windows 8.1 ou mais recente Nota : Algumas APIs (ou seja: VideoFrame) não estão disponíveis nos sistemas operacionais mais antigos. |
| Windows SDK | Windows SDK - Build 17763 (RS5) ou mais recente | Windows SDK - Build 17763 (RS5) ou mais recente |
| Distribuição | Incorporados nas janelas | Embalar e distribuir como parte do seu aplicativo |
| Manutenção | Microsoft orientado (os clientes se beneficiam automaticamente) | Impulsionado pelo desenvolvedor |
| Avançar | A compatibilidade rola automaticamente com novos recursos | O desenvolvedor precisa atualizar o pacote manualmente |
Saiba mais aqui.
Nesta seção, você encontrará várias amostras de modelo para uma variedade de cenários nas diferentes ofertas da API do Windows ML.
Classificação da imagem
Um subdomínio de visão computacional na qual um algoritmo analisa uma imagem e atribui uma tag de uma coleção de tags ou categorias predefinidas em que ela foi treinada.
| Tipo de aplicativo do Windows Distribuição | Uwp In-box | Uwp NUGET | Desktop In-box | Desktop NUGET |
|---|---|---|---|---|
| Alexnet | ✔️C# .NET5 - Galeria de amostras | |||
| Cafenet | ✔️C# .NET5 - Galeria de amostras | |||
| Densenet | ✔️C# .NET5 - Galeria de amostras | |||
| EficienteNET | ✔️C# .NET5 - Galeria de amostras | |||
| Googlenet | ✔️C# .NET5 - Galeria de amostras | |||
| EMCCONTROV1 | ✔️C# .NET5 - Galeria de amostras | |||
| EMCCONTROV2 | ✔️C# .NET5 - Galeria de amostras | |||
| Mnist | ✔️c ++/cx ✔️C# | |||
| MobileNetv2 | ✔️C# .NET5 - Galeria de amostras | |||
| Rcnn | ✔️C# .NET5 - Galeria de amostras | |||
| Resnet50 | ✔️C# .NET5 - Galeria de amostras | |||
| Shufflenetv1 | ✔️C# .NET5 - Galeria de amostras | |||
| Shufflenetv2 | ✔️C# .NET5 - Galeria de amostras | |||
| Squeezenet | ✔️C# ✔️JavaScript | ✔️c ++/winrt ✔️C# .NET5 ✔️C# .NET Core 2 | ✔️c ++/winrt ✔️C# .NET5 - Galeria de amostras ✔️Rust | |
| VGG19 | ✔️C# .NET5 - Galeria de amostras | |||
| VGG19bn | ✔️C# .NET5 - Galeria de amostras | |||
| ZFNET512 | ✔️C# .NET5 - Galeria de amostras |
Transferência de estilo
Uma técnica de visão computacional que nos permite recompor o conteúdo de uma imagem no estilo de outra.
| Tipo de aplicativo do Windows Distribuição | Uwp In-box | Uwp NUGET | Desktop In-box | Desktop NUGET |
|---|---|---|---|---|
| Fnscandy | ✔️C# - transferência de estilo FNS ✔️C# - Transferência de estilo em tempo real |
Essas amostras avançadas mostram como usar vários recursos de ligação e avaliação no Windows ML:
Tensorização personalizada : um aplicativo de console do Windows (c ++/winrt) que mostra como fazer tensorização personalizada.
Operador personalizado (CPU) : um aplicativo de desktop que define vários operadores de CPU personalizados. Um deles é um operador de depuração que convidamos você a integrar em seu próprio fluxo de trabalho.
Seleção do adaptador : um aplicativo de desktop que demonstra como escolher um adaptador de dispositivo específico para executar seu modelo.
Identificador de avião : um aplicativo UWP e um aplicativo WPF embalado com a ponte da área de trabalho, compartilhando o mesmo modelo treinado usando o serviço de visão personalizado do Azure. Para obter instruções passo a passo para esta amostra, consulte a postagem do blog Atualize seu aplicativo WinML para os bits mais recentes.
Visão e Windows personalizados ML : O tutorial mostra como treinar um modelo de rede neural para classificar imagens de alimentos usando o serviço de visão personalizada do Azure, exportar o modelo para o formato ONNX e implantar o modelo em um aplicativo de aprendizado de máquina do Windows em execução localmente no dispositivo Windows.
ML.NET e Windows ML : Este tutorial mostra como treinar um modelo de rede neural para classificar imagens de alimentos usando o ML.NET Model Builder, exportar o modelo para o formato ONNX e implantar o modelo em um aplicativo de aprendizado de máquina do Windows em execução localmente em um dispositivo Windows.
Análise de dados Pytorch : O tutorial mostra como resolver uma tarefa de classificação com uma rede neural usando a biblioteca Pytorch, exportar o modelo para o formato ONNX e implantar o modelo com o aplicativo de aprendizado de máquina do Windows que pode ser executado em qualquer dispositivo Windows.
Classificação de imagem Pytorch : O tutorial mostra como treinar um modelo de rede neural de classificação de imagem usando Pytorch, exportar o modelo para o formato ONNX e implantá -lo em um aplicativo de aprendizado de máquina do Windows em execução localmente no seu dispositivo Windows.
Detecção de objeto Yolov4 : Este tutorial mostra como criar um aplicativo UWP C# que usa o modelo YOLOV4 para detectar objetos em fluxos de vídeo.
Conversão de modelos
O Windows ML fornece recursos de inferência alimentados pelo mecanismo de tempo de execução ONNX. Como tal, todos os modelos executados no Windows ML devem ser convertidos no formato do modelo ONNX. Os modelos construídos e treinados em estruturas de origem como TensorFlow ou Pytorch devem ser convertidos em ONNX. Confira a documentação de como converter para um modelo ONNX:
Otimização do modelo
Os modelos podem precisar de otimizações adicionais aplicadas pós -conversão para suportar recursos avançados, como lote e quantização. Confira as seguintes ferramentas para otimizar seu modelo:
Painel WinML (visualização) : Uma ferramenta baseada na GUI para visualizar, editar, converter e validar modelos de aprendizado de máquina para o Windows ML Inference Engine. Essa ferramenta pode ser usada para ativar as dimensões livres em modelos construídos com dimensões fixas. Baixe a versão de visualização
Otimizações de gráficos: otimizações de gráficos são essencialmente transformações no nível do gráfico, variando de pequenas simplificações de gráficos e eliminações de nós a fusões de nó mais complexas e otimizações de layout.
Quantização de gráficos : quantização no tempo de execução ONNX refere -se a quantização linear de 8 bits de um modelo ONNX.
Validação do modelo
WinMlRunner : Uma ferramenta de linha de comando que pode executar modelos .onnx ou .pb onde as variáveis de entrada e saída são tensores ou imagens. É uma ferramenta muito útil para validar rapidamente um modelo ONNX. Ele tentará carregar, vincular e avaliar um modelo e imprimir mensagens úteis. Também captura medições de desempenho.
Baixe x64 exe
Integração do modelo
Gerador de código WinML (MLGEN) : Uma extensão do Visual Studio para ajudar você a começar a usar APIs WINML nos aplicativos UWP, gerando um código de modelo ao adicionar um arquivo onNX treinado no projeto UWP. A partir do código do modelo, você pode carregar um modelo, criar uma sessão, vincular entradas e avaliar com códigos de wrapper. Consulte os documentos para obter mais informações.
Download para vs 2017, vs 2019
Galeria de amostras WinML: Explore uma variedade de cenários e modelos de integração de ML.
Confira as amostras de modelo e amostras de cenário avançado para aprender a usar o Windows ML em seu aplicativo.
Estamos sempre procurando sua ajuda para corrigir bugs e melhorar as amostras. Crie uma solicitação de tração e ficaremos felizes em dar uma olhada.
Este projeto adotou o Código de Conduta Open Microsoft. Para obter mais informações, consulte o Código de Conduta Perguntas frequentes ou entre em contato com [email protected] com quaisquer perguntas ou comentários adicionais.