Eseguire il training del modello con ML.NET
Nella fase precedente di questa esercitazione sono stati illustrati i prerequisiti per la creazione di un modello e un'app di Windows Machine Learning e un set di immagini da usare. In questa fase si apprenderà come usare il generatore di modelli ML.NET per trasformare il set di immagini in un modello di classificazione delle immagini.
Creare il progetto
- Aprire Visual Studio e scegliere "Crea un nuovo progetto".
- Nella barra di ricerca digitare .NET, selezionare C# come linguaggio e console come piattaforma e quindi scegliere il modello di progetto App console C# (.NET Core).
- Nella finestra di configurazione:
- Assegnare un nome al progetto. In questo caso, è stato chiamato MLNETTraining.
- Scegliere il percorso per il progetto.
- Verificare che
Place solution and project in the same directory
sia deselezionata. - Premere
create
per creare il progetto.
Configurare Model Builder
A questo momento, si aggiungerà Generatore modelli al progetto.
- Fare clic con il pulsante destro del mouse sul progetto MLNETTraining in Esplora soluzioni e scegliere
Add > Machine Learning
.
In questo modo, si apre ML.NET Model Builder in una nuova finestra degli strumenti ancorata in Visual Studio. Model Builder guiderà l'utente nel processo di creazione di un modello di Machine Learning.
Il primo passaggio consiste nel scegliere lo scenario pertinente. Non tutti gli scenari supportano il formato ONNX.
Se l'ambiente di training è cloud di Azure, i modelli generati sono in formato ONNX e possono essere usati facilmente dall'app Windows ML senza conversione. Tuttavia, se si decide di eseguire il training del modello di Machine Learning in locale nel computer, il modello generato sarà in formato ML.NET.
- Il training della CPU locale è supportato per tutti gli scenari, ad eccezione del rilevamento oggetti.
- Il training della GPU locale è supportato per la classificazione delle immagini.
- Il training di Azure è supportato per la classificazione delle immagini e il rilevamento degli oggetti.
In questa esercitazione si eseguirà il training del modello di classificazione delle immagini nell'ambiente di training di Azure. Il modello di output sarà in formato ONNX. Per completare il training, è necessario un account Azure.
Scegliere lo scenario di classificazione delle immagini.
Selezionare Configura area di lavoro per configurare l'ambiente di training di Azure.
Nell'angolo in alto a destra accedere all'account associato alla sottoscrizione di Azure. Nel menu seguente:
- Scegliere la sottoscrizione pertinente.
- Selezionare e creare una nuova area di lavoro di Machine Learning.
- Selezionare o creare una nuova risorsa di calcolo.
- Assegnare il nome all'area di lavoro: ImageClassificationMLNET.
Importante
Se non è possibile creare l'area di lavoro di Machine Learning da Model Builder, seguire questa procedura per creare manualmente un'area di lavoro dal portale di Azure. In caso contrario, è possibile passare al passaggio 4.
Nell'account Azure selezionare Crea una risorsa:
Nella barra di ricerca cercare un Machine Learning.
Premere Crea per creare una nuova area di lavoro di Machine Learning.
Per creare una nuova area di lavoro, è necessario specificare il nome della sottoscrizione, selezionare o creare un nuovo gruppo di risorse, assegnare un nome all'area di lavoro e definire tutti i parametri necessari, ad esempio area, account di archiviazione e così via.
Dopo aver stabilito l'area di lavoro e creato un nuovo ambiente di training in ML.NET, è possibile passare al passaggio successivo.
Attendere il completamento della distribuzione di Machine Learning Services.
Il passaggio successivo consiste nell'aggiungere i dati a Model Builder.
- Passare alla posizione del set di dati immagine e selezionare la cartella di training con le categorie di cibo pertinenti. In questa esercitazione si eseguirà il training del modello per riconoscere deserto, zuppa e frutta, quindi sono necessarie solo queste categorie nella cartella del set di dati.
Ora si è pronti per passare alla parte di training.
Eseguire il training del modello
Model Builder valuta molti modelli con algoritmi e impostazioni diversi per offrire il modello con prestazioni ottimali.
- Selezionare avanti e quindi Avvia training per avviare il processo di training. Il generatore di modelli ML.Net inizierà caricando i dati in Azure, preparando l'area di lavoro e quindi avviando il processo di training.
Al termine del training, verrà visualizzato un riepilogo dei risultati del training.
Accuratezza ottimale: mostra l'accuratezza del modello migliore trovato da Model Builder. Precisione maggiore indica il modello stimato più correttamente con i dati di test. In questo caso, il modello può stimare il risultato corretto con 95,42% di confidenza.
Valutare i risultati
Spostare il passaggio successivo per valutare i risultati del training.
Selezionare l'immagine nella cartella di valutazione del set di dati ed esplorare la stima.
Aggiungere il modello alla soluzione
ML.NET Generatore modelli può aggiungere automaticamente sia il modello di Machine Learning che i progetti per il training e l'utilizzo del modello alla soluzione.
- Passare alla parte di utilizzo del processo di training e vendere Aggiungi alla soluzione. Verrà aggiunto il modello generato alla cartella della soluzione.
Nella Esplora soluzioni dovrebbero essere visualizzati i file di codice generati da Model Builder, incluso il modello bestModel.onnx in formato ONNX.
Il modello sottoposto a training nell'ambiente cloud di Azure, quindi il modello generato è in formato ONNX.
Esplorare il modello
Fare clic con il pulsante destro del mouse su bestModel.onnx e scegliere Apri cartella contenitore.
Aprire il file del modello con il programma Netron.
Premere sul nodo input1 per aprire le proprietà del modello.
Come si può notare, il modello richiede un oggetto tensore float a 32 bit (matrice multidimensionale) come input e restituisce Tensor float come output. La modalità di compilazione del modello non restituisce il valore stringa di un'etichetta stimata, ma una matrice di tre numeri, ognuno rappresenta l'etichetta pertinente del tipo di cibo. È necessario estrarre questi valori per visualizzare la stima corretta con l'app Windows ML.
Etichetta 1 | Etichetta 2 | Etichetta 3 |
---|---|---|
0 | 1 | 2 |
Dessert | soup | Frutta vegetale |
Passaggi successivi
Dopo aver eseguito il training del modello di Machine Learning, è possibile distribuirlo in un'app UWP con Windows Machine Learning