Integrar um modelo ao seu aplicativo com o Windows ML

Neste guia, abordaremos como usar as APIs do Windows ML para integrar um modelo ao seu aplicativo do Windows. Como alternativa, se você quiser usar o gerador de código automático do Windows ML, confira mlgen.

APIs importantes: Windows.AI.MachineLearning

Abordaremos os blocos de construção básicos do Windows ML, que são:

  • Modelos
  • Sessões
  • Dispositivos
  • Associações

Você os usará para carregar, associar e avaliar seus modelos com o Windows ML.

Também recomendamos dar uma olhada em nossos aplicativos de exemplo no GitHub para ver os exemplos de código do Windows ML de ponta a ponta.

O vídeo a seguir mostra essas APIs em ação em uma demonstração breve.


Usando APIs do WinML em C++

Embora as APIs do WinML em C++ estejam disponíveis em C++/CX e C++/WinRT, é recomendável usar a versão C++/WinRT, pois ela permite uma codificação de C++ mais natural e é nela que a maioria dos esforços de desenvolvimento se concentrará no futuro. Você pode seguir as instruções abaixo, que pertencem à sua situação específica para usar as APIs em C++/WinRT:

  • Se você estiver visando o Windows 1803 ou anterior, consulte Tutorial: portar um aplicativo WinML existente para o pacote NuGet.
  • Se você estiver criando um novo aplicativo C++, consulte Tutorial: Criar um aplicativo da área de trabalho do Windows Machine Learning (C++) e siga as etapas até Carregar o modelo.
  • Se você tiver um aplicativo C++ existente (que ainda não está configurado para C++/WinRT), siga estas etapas para configurar seu aplicativo para C++/WinRT:
    1. Verifique se você tem a versão mais recente do Visual Studio 2019 instalada (qualquer edição).
    2. Verifique se você tem o SDK para Windows 10, versão 1803 ou posterior.
    3. Baixe e instale a VSIX (Extensão do Visual Studio) para C++/WinRT do Visual Studio Marketplace.
    4. Adicione a propriedade <CppWinRTEnabled>true</CppWinRTEnabled> ao arquivo .vcxproj do projeto:
      <Project ...>
          <PropertyGroup Label="Globals">
              <CppWinRTEnabled>true</CppWinRTEnabled>
      ...
      
    5. O C++/WinRT usa recursos do padrão C++17, então defina C/C++ > Linguagem > Padrão da Linguagem C++ > Padrão ISO C++17 (/std:c++17) nas propriedades do projeto.
    6. Defina Modo de conformidade: Sim (/permissive-) nas propriedades do projeto.
    7. Outra propriedade de projeto a ser considerada é C/C++ > Geral > Tratar Avisos como Erros. Defina-a como Sim (/WX) ou Não (/WX-) para fazer um teste. Às vezes, os arquivos de origem gerados pela ferramenta cppwinrt.exe geram avisos até você adicionar a implementação a eles.
    8. O VSIX também oferece visualização de depuração nativa do Visual Studio (natvis) dos tipos projetados do C++/WinRT; fornecendo uma experiência semelhante à depuração de C#. Natvis é automático para builds de depuração. Você pode os escolher builds de versão do Natvis definindo o símbolo WINRT_NATVIS.
    9. Agora, seu projeto deve estar configurado para C++/WinRT. Consulte C++/WinRT para obter mais informações.

Observação

Use os recursos a seguir para obter ajuda com o Windows ML:

  • Para fazer perguntas ou responder a perguntas técnicas sobre o Windows ML, use a marca windows-machine-learning no Stack Overflow.
  • Para relatar um bug, registre um problema no nosso GitHub.