Creazione di una rete di classificazione di immagini semplice
Questo esempio mostra come creare e addestrare una rete neurale convoluzionale semplice per la classificazione tramite Deep Learning. Le reti neurali convoluzionali sono strumenti essenziali per il Deep Learning e sono particolarmente adatte per il riconoscimento di immagini.
L’esempio mostra come:
Caricare i dati delle immagini.
Definire l’architettura di rete.
Specificare le opzioni di addestramento.
Addestrare la rete.
Predire le etichette per i nuovi dati e calcolare la precisione della classificazione.
Per un esempio su come creare e addestrare in modo interattivo una rete di classificazione semplice di immagini, vedere Creazione di una rete di classificazione di immagini semplice con Deep Network Designer.
Caricamento dei dati
Carica i dati campione come datastore di immagini. La funzione imageDatastore
etichetta automaticamente le immagini in base ai nomi delle cartelle.
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
Suddividi i dati in set di dati di addestramento e di convalida, cosicché ogni categoria del set di addestramento contenga 750 immagini e il set di convalida contenga il resto delle immagini di ogni etichetta. splitEachLabel
suddivide il datastore di immagini in due nuovi datastore, uno per l’addestramento e uno per la convalida.
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomized');
Definizione dell’architettura di rete
Definisci l’architettura della rete neurale convoluzionale. Specifica le dimensioni delle immagini nel livello di input della rete e il numero di categorie nel livello pienamente collegato prima del livello di classificazione. Ogni immagine ha un formato di 28x28x1 pixel e ci sono 10 categorie.
inputSize = [28 28 1]; numClasses = 10; layers = [ imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
Per ulteriori informazioni sui livelli di Deep Learning, vedere List of Deep Learning Layers.
Addestramento della rete
Specifica le opzioni di addestramento e addestra la rete.
Per impostazione predefinita, trainNetwork
utilizza una GPU solo se disponibile, altrimenti utilizza una CPU. L’addestramento su GPU richiede Parallel Computing Toolbox™ e un dispositivo GPU supportato. Per informazioni sui dispositivi supportati, vedere GPU Computing Requirements (Parallel Computing Toolbox). Inoltre, si può specificare l’ambiente di esecuzione tramite l’argomento nome-valore dell’'ExecutionEnvironment'
delle trainingOptions
.
options = trainingOptions('sgdm', ... 'MaxEpochs',4, ... 'ValidationData',imdsValidation, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options);
Per ulteriori informazioni sulle opzioni di addestramento, vedere Set Up Parameters and Train Convolutional Neural Network.
Test della rete
Classifica i dati di convalida e calcola la precisione della classificazione.
YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = mean(YPred == YValidation)
accuracy = 0.9888
Per le fasi successive del Deep Learning si può provare a utilizzare la rete preaddestrata per altre attività. Risolvi nuovi problemi di classificazione sui dati di immagini con il transfer learning o l’estrazione di feature. Per gli esempi, vedere Avvio rapido del Deep Learning utilizzando il transfer learning e Addestramento dei classificatori utilizzando le feature estratte dalle reti preaddestrate. Per saperne di più sulle reti preaddestrate, vedere Reti neurali profonde preaddestrate.
Vedi anche
trainNetwork
| trainingOptions
Argomenti complementari
- Avvio rapido del Deep Learning utilizzando il transfer learning
- Creazione di una rete di classificazione di immagini semplice con Deep Network Designer
- Prova il Deep Learning in 10 righe di codice MATLAB
- Classificazione di immagini con una rete preaddestrata
- Come iniziare a utilizzare il transfer learning
- Transfer Learning con Deep Network Designer
- Creazione di una rete di classificazione di sequenze semplice con Deep Network Designer