Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Come iniziare a utilizzare Deep Network Designer

Questo esempio mostra come utilizzare Deep Network Designer per adattare una rete GoogLeNet preaddestrata alla classificazione di una nuova raccolta di immagini. Questo processo viene definito transfer learning ed è solitamente molto più veloce e semplice rispetto all’addestramento di una nuova rete, in quanto le feature apprese possono essere applicate a una nuova attività utilizzando un numero minore di immagini di addestramento. Per preparare una rete ad effettuare il transfer learning interattivamente, utilizza Deep Network Designer.

Estrazione dei dati per l’addestramento

Nel workspace, decomprimi i dati.

unzip('MerchData.zip');

Selezione di una rete preaddestrata

Apri Deep Network Designer.

deepNetworkDesigner

Carica una rete GoogLeNet preaddestrata selezionandola dalla pagina di avvio di Deep Network Designer. Per scaricare la rete, fai clic su Install per aprire Add-On Explorer.

Deep Network Designer visualizza una vista ridotta dell’intera rete. Scopri il grafico della rete. Per ingrandire l’immagine con il mouse, usa la combinazione Ctrl + rotellina di scorrimento.

Caricamento del set di dati

Per caricare i dati in Deep Network Designer, nella scheda Data (Dati), fai clic su Import Data > Import Image Classification Data (Importa dati > Importa dati di classificazione delle immagini).

Nell’elenco Data source (Sorgente dati), seleziona Folder (Cartella). Fai clic su Browse (Sfoglia) e seleziona la cartella MerchData estratta.

La finestra di dialogo consente anche di suddividere i dati di convalida dall’interno dell’app. Suddividi i dati in 70% per l’addestramento e 30% per la convalida.

Specifica le operazioni di aumento da eseguire sulle immagini di addestramento. Per questo esempio, applica un riflesso casuale sull’asse x, una rotazione casuale dall’intervallo [-90,90 gradi] e un ridimensionamento casuale dall’intervallo [1,2].

Fai clic su Import per importare i dati in Deep Network Designer.

Utilizzando Deep Network Designer è possibile ispezionare visivamente la distribuzione dei dati di addestramento e di convalida nella scheda Data (Dati). Si può osservare che in questo esempio sono presenti cinque categorie nel set di dati. Si possono anche visualizzare osservazioni casuali per ciascuna categoria.

Durante l’addestramento, Deep Network Designer ridimensiona le immagini per adattarle alle dimensioni di input della rete. Per visualizzare le dimensioni di input della rete, nella scheda Designer, fai clic su imageInputLayer. Le dimensioni di input di questa rete sono 224x224.

Modifica di una rete per il transfer learning

Per riaddestrare una rete preaddestrata alla classificazione di nuove immagini, adattare l'ultimo livello apprendibile e l'ultimo livello di classificazione finale al nuovo set di dati. In GoogLeNet, questi livelli hanno rispettivamente il nome 'loss3-classifier' e 'output'.

Nella scheda Designer, fare clic sul livello finale completamente connesso 'loss3-classifier'. Nella parte inferiore del pannello Properties (Proprietà), fare clic su Unlock Layer (Sblocca livello). Nella finestra di dialogo che mostra l'avviso, fare clic su Unlock Anyway (Sblocca comunque). Questo sblocca le proprietà del livello in modo da poterle adattare alla nuova attività.

Prima della release R2023b: Per modificare le proprietà del livello, è necessario sostituire i livelli invece di sbloccarli.

Impostare OutputSize sul numero di classi nei nuovi dati, in questo esempio 5.

Modifica le velocità di apprendimento per ottenere un apprendimento più rapido nei nuovi livelli rispetto ai livelli trasferiti. Imposta WeightLearnRateFactor e BiasLearnRateFactor su 10.

Selezionare il livello di classificazione 'output' e fare clic su Unlock Layer (Sblocca livello), quindi fare clic su Unlock Anyway (Sblocca comunque). Per il livello di output sbloccato, non è necessario impostare OutputSize. Al momento dell'addestramento, Deep Network Designer imposta automaticamente le classi di output del livello dai dati.

Verifica della rete

Verifica la rete facendo clic su Analyze (Analizzare). La rete è pronta all’addestramento se Deep Learning Network Analyzer riscontra zero errori.

Addestramento della rete

Per addestrare la rete con le impostazioni predefinite, nella scheda Training (Addestramento), fai clic su Train (Addestrare).

Per un maggiore controllo sull’addestramento, fai clic su Training Options (Opzioni di addestramento) e scegli le impostazioni con cui eseguire l’addestramento. Le opzioni di addestramento predefinite sono più adatte ai grandi set di dati. Per piccoli set di dati, utilizza valori minori per le dimensioni dei mini batch e per la frequenza di convalida. Per ulteriori informazioni sulla selezione delle opzioni di addestramento, vedere trainingOptions.

Per questo esempio, imposta InitialLearnRate su 0.0001, MaxEpochs su 8 e ValidationFrequency su 5. Dato che sono presenti 55 osservazioni, imposta MiniBatchSize su 11 per suddividere i dati di addestramento in modo uniforme e fare sì che l’intero set di dati sia utilizzato ad ogni epoca.

Per addestrare la rete con le opzioni di addestramento specificate, fai clic su OK e poi su Train (Addestra).

Deep Network Designer permette di visualizzare e monitorare i progressi dell’addestramento. È quindi possibile modificare le opzioni di addestramento e riaddestrare la rete, se necessario.

Esportazione dei risultati dell’addestramento

Per esportare i risultati dell’addestramento, nella scheda Training (Addestramento), seleziona Export > Export Trained Network and Results (Esportare > Esportare la rete addestrata e i risultati). Deep Network Designer esporta la rete addestrata come variabile trainedNetwork_1 e le informazioni relative all’addestramento come variabile trainInfoStruct_1.

È anche possibile generare un codice MATLAB che ricrea la rete e le opzioni di addestramento utilizzate. Nella scheda Training (Addestramento), seleziona Export > Generate Code for Training (Esportare > Generare codice per addestramento).

Test della rete addestrata

Seleziona una nuova immagine da classificare utilizzando la rete addestrata.

I = imread("MerchDataTest.jpg");

Ridimensiona l’immagine di test per adattarla alle dimensioni di input della rete.

I = imresize(I, [224 224]);

Classifica l’immagine di test utilizzando la rete addestrata.

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

Per ulteriori informazioni, anche su altre reti preaddestrate, vedere Deep Network Designer.

Vedi anche

Argomenti complementari