Main Content

Importazione di dati in Deep Network Designer

Nota

Non è consigliato utilizzare Deep Network Designer per importare i dati e addestrare una rete.

Per importare e visualizzare i dati di addestramento e convalida in Deep Network Designer, utilizzare la sintassi legacy deepNetworkDesigner("-v1").

Importazione dei dati

In Deep Network Designer è possibile importare i dati di classificazione dell'immagine da un datastore di immagini o da una cartella contenente sottocartelle di immagini di ciascuna classe. Selezionare un metodo di importazione in base al tipo di datastore utilizzato.

Importazione dell'oggetto ImageDatastoreImportazione di qualsiasi altro oggetto del datastore (non consigliato per ImageDatastore)

Selezionare Import Data > Import Image Classification Data.

Import Image Classification Data dialog. Using this dialog, you can select the source of image classification data, specify augmentation options, and split validation data.

Selezionare Import Data > Import Custom Data.

Import Custom Data dialog. Using this dialog, you can import training and validation data sets.

Importazione dei dati per l'attività

AttivitàTipo di datiMetodo di importazione dei dati
Classificazione dell’immagine

Cartella con sottocartelle contenenti immagini per ogni classe. Le etichette delle classi provengono dai nomi delle sottocartelle.

Selezionare Import Data > Import Image Classification Data.

ImageDatastore

Ad esempio, creare un datastore di immagini contenente dati di cifre.

dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 
'nndatasets','DigitDataset');

imds = imageDatastore(dataFolder, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

AugmentedImageDatastore

Ad esempio, creare un datastore di immagini aumentate contenente dati di cifre.

dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 
'nndatasets','DigitDataset');

imds = imageDatastore(dataFolder, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

imageAugmenter = imageDataAugmenter( ...
    'RandRotation',[1,2]);
augimds = augmentedImageDatastore([28 28],imds, ...
'DataAugmentation',imageAugmenter);

augimds = shuffle(augimds);

Selezionare Import Data > Import Custom Data.

Segmentazione semantica

CombinedDatastore

Ad esempio, combinare un ImageDatastore e un PixelLabelDatastore (Computer Vision Toolbox).

dataFolder  = fullfile(toolboxdir('vision'), ...
'visiondata','triangleImages');

imageDir = fullfile(dataFolder,'trainingImages');
labelDir = fullfile(dataFolder,'trainingLabels');

imds = imageDatastore(imageDir);
classNames = ["triangle","background"];
labelIDs   = [255 0];

pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);
cds = combine(imds,pxds);

Selezionare Import Data > Import Custom Data.

Regressione da immagine a immagine

CombinedDatastore

Ad esempio, combinare immagini di input rumorose e immagini di output inalterate per creare dati adatti alla regressione da immagine a immagine.

dataFolder = fullfile(toolboxdir('nnet'),'nndemos', ... 
'nndatasets','DigitDataset');

imds = imageDatastore(dataFolder, ...
    'IncludeSubfolders',true, ....
    'LabelSource','foldernames');

imds = transform(imds,@(x) rescale(x));
imdsNoise = transform(imds,@(x) {imnoise(x,'Gaussian',0.2)});

cds = combine(imdsNoise,imds);
cds = shuffle(cds);

Selezionare Import Data > Import Custom Data.

Regressione

CombinedDatastore

Creare dati adatti all'addestramento di reti di regressione combinando gli oggetti del datastore degli array.

[XTrain,~,YTrain] = digitTrain4DArrayData;

ads = arrayDatastore(XTrain,'IterationDimension',4, ...
 'OutputType','cell');
adsAngles = arrayDatastore(YTrain,'OutputType','cell');

cds = combine(ads,adsAngles);

Selezionare Import Data > Import Custom Data.

Sequenze e serie temporali

CombinedDatastore

Per immettere i dati sequenziali dal datastore dei predittori a una rete di Deep Learning, i mini-batch delle sequenze devono avere la stessa lunghezza. È possibile utilizzare la funzione padsequences per riempire o troncare le sequenze in modo che abbiano una lunghezza specifica.

Ad esempio, riempire le sequenze in modo che abbiano tutte la stessa lunghezza della sequenza più lunga.

[XTrain,YTrain] = japaneseVowelsTrainData;

XTrain = padsequences(XTrain,2);

adsXTrain = arrayDatastore(XTrain,'IterationDimension',3);
adsYTrain = arrayDatastore(YTrain);

cdsTrain = combine(adsXTrain,adsYTrain);

Per ridurre la quantità dei riempimenti, è possibile utilizzare un datastore di trasformazione e una funzione di aiuto. Ad esempio, riempire le sequenze in modo che tutte le sequenze di un mini-batch abbiano la stessa lunghezza della sequenza più lunga del mini-batch. È necessario utilizzare la stessa dimensione del mini-batch anche nelle opzioni di addestramento.

[XTrain,TTrain] = japaneseVowelsTrainData; 

miniBatchSize = 27;
adsXTrain = arrayDatastore(XTrain,'OutputType',"same",'ReadSize',miniBatchSize);
adsTTrain = arrayDatastore(TTrain,'ReadSize',miniBatchSize);

tdsXTrain = transform(adsXTrain,@padToLongest);
cdsTrain = combine(tdsXTrain,adsTTrain);
function data = padToLongest(data)
sequence = padsequences(data,2,Direction="left");
for n = 1:numel(data)
    data{n} = sequence(:,:,n);
end
end

È inoltre possibile ridurre la quantità dei riempimenti ordinando i dati dal più corto al più lungo e ridurre l'impatto del riempimento specificando la direzione dello stesso. Per ulteriori informazioni sul riempimento dei dati sequenziali, vedere Sequence Padding and Truncation.

È inoltre possibile importare i dati sequenziali utilizzando un oggetto datastore personalizzato. Per un esempio che mostra come creare un datastore sequenziale personalizzato, vedere Train Network Using Custom Mini-Batch Datastore for Sequence Data.

Selezionare Import Data > Import Custom Data.

Altri workflow estesi (come l’input delle feature numeriche, dati fuori memoria, elaborazione di immagini ed elaborazione di audio e parlato)

Datastore

Per altri workflow estesi, utilizzare un oggetto datastore adatto. Ad esempio, datastore personalizzato, randomPatchExtractionDatastore (Image Processing Toolbox), denoisingImageDatastore (Image Processing Toolbox) o audioDatastore (Audio Toolbox). Per ulteriori informazioni, vedere Datastores for Deep Learning.

Ad esempio, creare un oggetto denoisingImageDatastore utilizzando Image Processing Toolbox™.

dataFolder = fullfile(toolboxdir('images'),'imdata');

imds = imageDatastore(dataFolder,'FileExtensions',{'.jpg'});

dnds = denoisingImageDatastore(imds,...
    'PatchesPerImage',512,...
    'PatchSize',50,...
    'GaussianNoiseLevel',[0.01 0.1]);

Per i dati degli array di tabelle, è necessario convertire i dati in un datastore adatto all'addestramento tramite Deep Network Designer. Ad esempio, iniziare convertendo la tabella in array contenenti i predittori e le risposte. Quindi, convertire gli array in oggetti arrayDatastore. Infine, combinare i datastore degli array dei predittori e delle risposte in un oggetto CombinedDatastore. È quindi possibile utilizzare il datastore combinato per l'addestramento in Deep Network Designer. Per ulteriori informazioni sui datastore adatti, vedere Datastores for Deep Learning.

Selezionare Import Data > Import Custom Data.

Aumento dell’immagine

Per i problemi di classificazione delle immagini, Deep Network Designer offre semplici opzioni di incremento da applicare ai dati di addestramento. Aprire la finestra di dialogo Import Image Classification Data (Importa dati di classificazione delle immagini) selezionando Import Data > Import Image Classification Data. È possibile selezionare le opzioni per applicare una combinazione casuale di operazioni di riflessione, rotazione, ridimensionamento e traslazione ai dati di addestramento.

Import Image Classification Data dialog. Using this dialog, you can select the source of image classification data, specify augmentation options, and split validation data.

Per eseguire operazioni di pre-elaborazione delle immagini più generali e complesse di quelle offerte da Deep Network Designer, utilizzare gli oggetti TransformedDatastore e CombinedDatastore. Per importare gli oggetti CombinedDatastore e TransformedDatastore, selezionare Import Data > Import Custom Data.

Import Custom Data dialog. Using this dialog, you can import training and validation data sets.

Per ulteriori informazioni sull'aumento delle immagini, vedere Preprocess Images for Deep Learning.

Dati di convalida

In Deep Network Designer è possibile importare dati di convalida da utilizzare durante l'addestramento. È possibile monitorare le metriche di convalida, come la perdita e la precisione, per valutare se la rete è in overfitting o in underfitting e regolare le opzioni di addestramento in base alle esigenze. Ad esempio, se la perdita di convalida è molto più alta della perdita di addestramento, la rete potrebbe essere in overfitting.

Loss plot showing the training and validation loss versus iteration number. The validation loss is much higher than the training loss.

In Deep Network Designer è possibile importare i dati di convalida:

  • Da un datastore nel workspace.

  • Da una cartella contenente sottocartelle di immagini di ciascuna classe (solo dati di classificazione dell'immagine).

  • Suddividendo una parte dei dati di addestramento da utilizzare come dati di convalida (solo dati di classificazione dell'immagine). I dati vengono suddivisi in set di convalida e di addestramento una volta, prima dell'addestramento. Questo metodo è chiamato convalida dei dati di controllo.

Suddivisione dei dati di convalida dai dati di addestramento

Quando si suddividono i dati di convalida dei dati di controllo dai dati di addestramento, Deep Network Designer suddivide una percentuale dei dati di addestramento da ciascuna classe. Ad esempio, si supponga di avere un set di dati con due classi, cane e gatto, e di scegliere di utilizzare il 30% dei dati di addestramento per la convalida. Deep Network Designer utilizza l'ultimo 30% delle immagini con l'etichetta "gatto" e l'ultimo 30% con l'etichetta "cane" come set di convalida.

Anziché utilizzare l'ultimo 30% dei dati di addestramento come dati di convalida, è possibile scegliere di assegnare casualmente le osservazioni ai set di addestramento e di convalida selezionando la casella di spunta Randomize nella finestra di dialogo Import Image Data (Importa dati immagine). La randomizzazione delle immagini può migliorare la precisione delle reti addestrate su dati memorizzati in ordine non casuale. Ad esempio, il set di dati delle cifre è costituito da 10.000 immagini sintetiche in scala di grigi di cifre scritte a mano. Questo set di dati ha un ordine sottostante in cui le immagini con lo stesso stile di scrittura appaiono una accanto all'altra all'interno di ciascuna classe. Di seguito un esempio della visualizzazione.

Six images of a handwritten number three. The first three images share the same handwriting and the latter three images share the same handwriting.

Vedi anche

| | | | |

Argomenti complementari