Classificação de imagem com o ML.NET e o Windows Machine Learning

Image classification flow

Este guia mostrará 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 implantá-lo em um aplicativo do Windows Machine Learning executado localmente em um dispositivo Windows. Não é necessária experiência anterior com machine learning, nós vamos orientar você passo a passo ao longo do processo.

Se quiser aprender a criar e treinar um modelo com o ML.NET Model Builder, prossiga para Treinar um modelo.

Se tiver um modelo e quiser aprender a criar um aplicativo do WinML do zero, navegue até o tutorial completo do Aplicativo do WinML.

Para obter a solução predefinida de um aplicativo do WinML, você pode clonar o arquivo de solução e testá-lo imediatamente.

Cenário

Neste tutorial, criaremos um aplicativo de classificação de alimentos com machine learning que é executado em dispositivos Windows. O modelo será treinado para reconhecer determinados tipos de padrões a fim de classificar uma imagem de alimento e, quando receber uma imagem, retornará uma marca de classificação e o valor de confiança percentual associado a essa classificação.

Pré-requisitos para treinamento de modelo

Para criar e treinar o modelo, você usará o ML.NET Model Buider no Visual Studio.

  • Você precisará do Visual Studio 2019 16.6.1 ou posterior para usar o ML.NET Model Builder. Você pode obter o Visual Studio aqui.
  • Você precisará ter uma conta do Azure para treinar um modelo com o ML.NET Model Builder no workspace do Azure ML. Se for novo no Azure, inscreva-se para obter uma conta gratuita do Azure.

Observação

Quer saber mais sobre as opções de inscrição e sobre as contas gratuitas do Azure? Confira Criar uma conta do Azure.

O ML.NET Model Builder é uma extensão gráfica intuitiva do Visual Studio usada para criar, treinar e implantar modelos de machine learning personalizados. Ele usa AutoML (machine learning automatizado) para explorar diferentes algoritmos e configurações de machine learning e ajudar você a encontrar aquele que se encaixa melhor em seu cenário.

O ML.NET Model Builder é fornecido com o Visual Studio versão 16.6.1 ou posterior quando você instala uma das cargas de trabalho do .NET. Verifique se o componente do ML.NET Model Builder está marcado no instalador ao baixar ou modificar o Visual Studio. Para verificar se o VS tem os componentes do ML.NET Model Builder, acesse Extensões e selecione Gerenciar Extensões. Digite Model Builder na barra de pesquisa para ver os resultados da extensão.

Model builder extension

No momento, o ML.NET Model Builder é uma versão prévia do recurso. Sendo assim, para usar a ferramenta, no Visual Studio você precisa acessar Ferramentas > Opções > Ambiente > Versão prévia do recurso e habilitar o ML.NET Model Builder:

Enable the model builder extension

Observação

Quer saber mais sobre o ML.NET Model Builder e os diferentes cenários compatíveis? Leia a documentação do Model Builder.

Pré-requisitos para a implantação do aplicativo do Windows ML

Para criar e implantar um aplicativo do Windows ML, você precisará do seguinte:

  • Windows 10 versão 1809 (build 17763) ou superior. Você pode verificar o número de versão do build executando winver por meio do comando Executar (Windows logo key + R).
  • SDK do Windows para o build 17763 ou posterior. Você pode obter o SDK aqui.
  • Visual Studio 2019 versão 16.6.1 ou posterior. Você pode obter o Visual Studio aqui.
  • Extensão do Visual Studio do Gerador de Código do Windows ML (mlgen). Baixe para o VS 2019.
  • Se decidir criar um aplicativo UWP, você precisará habilitar a carga de trabalho de desenvolvimento da Plataforma Universal do Windows no Visual Studio.
  • Você também precisará habilitar o Modo de Desenvolvedor em seu computador

Observação

As APIs do Windows ML são integradas às últimas versões do Windows 10 (1809 ou superior) e do Windows Server 2019. Se sua plataforma de destino for de versões mais antigas do Windows, você poderá portar seu aplicativo do WinML para o pacote NuGet redistribuível (Windows 8.1 ou superior).

Preparar os dados

Os modelos de machine learning precisam ser treinados com os dados existentes. Neste guia, você usará um conjunto de dados de imagens de alimentos da Kaggle Open Datasets. Ele é distribuído sob a licença de domínio público.

Importante

Para usá-lo, você precisa aderir ao termo de uso do site da Kaggle e aos termos de licença que acompanham o conjunto de dados Food-11. A Microsoft não faz nenhuma garantia nem declaração referente ao site nem ao conjunto de dados.

O conjunto de dados tem três divisões – avaliação, treinamento e validação – e contém 16.643 imagens de alimentos agrupadas em 11 categorias principais de alimentos. As imagens de cada categoria de alimentos no conjunto de dados são colocadas em uma pasta separada, o que torna o processo de treinamento do modelo mais conveniente.

Baixe o conjunto de dados aqui. Observe que ele tem cerca de 1 GB e que você poderá ser solicitado a criar uma conta no site da Kaggle para baixá-lo.

Food image dataset

Você é livre para usar qualquer outro conjunto de dados de imagens relevantes que preferir. É recomendável usar pelo menos 30 imagens por marca no conjunto de treinamento inicial. Também é conveniente coletar algumas imagens adicionais para testar o seu modelo após o treinamento.

Além disso, verifique se todas as suas imagens de treinamento atendam aos seguintes critérios:

  • formato .jpg, .png, .bmp ou .gif.
  • tamanho máximo de 6 MB (4 MB para imagens de previsão).
  • no mínimo 256 pixels na borda mais curta; qualquer imagem menor que isso será escalada verticalmente de maneira automática pelo Serviço de Visão Personalizada.

Próximas etapas

Agora que você entendeu os pré-requisitos e preparou seu conjunto de dados, você pode seguir para a criação do modelo do WinML. Na próxima parte, você usará o ML.NET Model Builder para criar e treinar seu modelo de classificação.