Classificazione delle immagini con ML.NET e Windows Machine Learning

Image classification flow

Questa guida illustra come eseguire il training di un modello di rete neurale per classificare le immagini degli alimenti usando ML.NET Model Builder, esportare il modello in formato ONNX e distribuire il modello in un'applicazione di Windows Machine Learning in esecuzione localmente in un dispositivo Windows. Non sono necessarie competenze precedenti nell'apprendimento automatico e verranno fornite istruzioni dettagliate per eseguire il processo.

Per informazioni su come compilare ed eseguire il training di un modello con ML.NET Model Builder, è possibile passare a Eseguire il training di un modello.

Se si ha un modello e si vuole imparare a creare un'app WinML da zero, passare all'esercitazione completa sull'app WinML.

Se vuoi ottenere la soluzione predefinita per un'app WinML, puoi clonare il file della soluzione e testarlo subito.

Scenario

In questa esercitazione si creerà un'applicazione di classificazione degli alimenti di Machine Learning eseguita nei dispositivi Windows. Verrà eseguito il training del modello per riconoscere determinati tipi di modelli per classificare un'immagine di cibo e, quando viene fornita un'immagine, restituirà un tag di classificazione e il valore di confidenza percentuale associato di tale classificazione.

Prerequisiti per il training del modello

Per compilare ed eseguire il training del modello, usare la ML.NET Model Buider in Visual Studio.

  • Per usare un generatore di modelli di ML.NET è necessario Visual Studio 2019 16.6.1 o versione successiva. È possibile ottenere Visual Studio qui.
  • È necessario un account Azure per eseguire il training di un modello con ML.NET Model Builder nell'area di lavoro di Azure ML. Se non si ha familiarità con Azure, è possibile iscriversi per ottenere un account Azure gratuito.

Nota

Sono disponibili altre informazioni sulle opzioni di iscrizione di Azure e sugli account gratuiti di Azure? Vedere Creare un account Azure.

ML.NET Model Builder è un'estensione grafica intuitiva di Visual Studio, usata per compilare, eseguire il training e distribuire modelli di Machine Learning personalizzati. Usa Machine Learning automatizzato (AutoML) per esplorare diversi algoritmi e impostazioni di Machine Learning per trovare quello più adatto allo scenario.

ML.NET Model Builder viene fornito con Visual Studio versione 16.6.1 o successiva, quando si installa uno dei carichi di lavoro .NET. Assicurarsi che il componente ML.NET Model Builder sia archiviato nel programma di installazione quando si scarica o si modifica Visual Studio. Per verificare se vs ha i componenti di Generatore modelli ML.NET, passare a Estensioni e selezionare Gestisci estensioni. Digitare Model Builder nella barra di ricerca per esaminare i risultati dell'estensione.

Model builder extension

ML.NET Generatore modelli è attualmente una funzionalità di anteprima. Quindi, per usare lo strumento, in Visual Studio è necessario passare a Strumenti > Opzioni Ambiente > Funzionalità > di anteprima e abilitare ML.NET Generatore modelli:

Enable the model builder extension

Nota

Per altre informazioni su ML.NET Model Builder e su diversi scenari supportati, Vedere la documentazione di Model Builder.

Prerequisiti per la distribuzione di app di Windows ML

Per creare e distribuire un'app Widows ML, sono necessari gli elementi seguenti:

  • Windows 10 versione 1809 (build 17763) o versione successiva. È possibile controllare il numero di versione della build eseguendo winver tramite il comando (Windows logo key + R)Esegui .
  • Windows SDK per la build 17763 o successiva. È possibile ottenere l'SDK qui.
  • Visual Studio 2019 versione 16.6.1 o successiva. È possibile ottenere Visual Studio qui.
  • Estensione Windows ML Code Generator (mlgen) di Visual Studio. Download per VS 2019.
  • Se decidi di creare un'app UWP, dovrai abilitare il carico di lavoro di sviluppo piattaforma UWP (Universal Windows Platform) in Visual Studio.
  • Dovrai anche abilitare la modalità sviluppatore nel PC

Nota

Le API di Windows ML sono integrate nelle versioni più recenti di Windows 10 (1809 o versioni successive) e Windows Server 2019. Se la piattaforma di destinazione è versioni precedenti di Windows, puoi convertire l'app WinML nel pacchetto NuGet ridistribuibile (Windows 8.1 o versione successiva).

Preparare i dati

I modelli di apprendimento automatico devono essere sottoposti a training con i dati esistenti. In questa guida si userà un set di dati di immagini food di Kaggle Open Datasets. Questo set di dati viene distribuito con la licenza di dominio pubblico.

Importante

Per usare questo set di dati, è necessario rispettare il termine dell'uso del sito Kaggle e dei termini liscence che accompagnano il set di dati Food-11 stesso. Microsoft non garantisce alcuna garanzia o rappresentazione relativa al sito o al set di dati.

Il set di dati ha tre divisioni, ovvero valutazione, training e convalida, e contiene 16643 immagini alimentari raggruppate in 11 principali categorie alimentari. Le immagini nel set di dati di ogni categoria di alimenti vengono inserite in una cartella separata, che rende più conveniente il processo di training del modello.

Scaricare il set di dati qui. Si noti che il set di dati è di circa 1 GB e potrebbe essere richiesto di creare un account nel sito Web Kaggle per scaricare i dati.

Food image dataset

Se si vuole, è possibile usare qualsiasi altro set di dati di immagini pertinenti. Come minimo, è consigliabile usare almeno 30 immagini per ogni tag nel set di training iniziale. È anche opportuno raccogliere alcune immagini aggiuntive per testare il modello dopo che ne è stato eseguito il training.

Assicurarsi inoltre che tutte le immagini di training soddisfino i criteri seguenti:

  • Formato .jpg, .png, .bmp o .gif.
  • dimensioni non superiori a 6 MB (4 MB per le immagini di stima).
  • non inferiore a 256 pixel sul bordo più corto; qualsiasi immagine più breve di questa verrà automaticamente ridimensionata dal servizio Visione personalizzata.

Passaggi successivi

Dopo aver ottenuto i prerequisiti ordinati e aver preparato il set di dati, è possibile procedere alla creazione del modello WinML. Nella parte successiva si userà il generatore di modelli ML.NET per creare ed eseguire il training del modello di classificazione.