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, sostituisci l’ultimo livello apprendibile e l’ultimo livello di classificazione finale con nuovi livelli adattati al nuovo set di dati. In GoogLeNet, questi livelli hanno rispettivamente il nome 'loss3-classifier'
e 'output'
.
Nella scheda Designer, trascina un nuovo fullyConnectedLayer
dalla Layer Library (Libreria livelli) sull’area di disegno. Imposta OutputSize
sul numero di categorie nel nuovo set di 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
. Elimina l’ultimo livello completamente collegato e collega al suo posto il nuovo livello.
Sostituisci il livello di output. Scorri fino in fondo alla Layer Library e trascina un nuovo classificationLayer
sull’area di disegno. Elimina il livello output
originale e collega al suo posto il nuovo livello.
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.