Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

randomPatchExtractionDatastore

Almacén de datos para extraer parches aleatorios de imágenes o imágenes de etiquetas de píxel

Descripción

A extrae los parches correspondientes colocados aleatoriamente de dos almacenes de datos.randomPatchExtractionDatastore Los almacenes de datos de entrada pueden ser dos almacenes de datos de imagen que contienen las entradas de red y las respuestas de red deseadas para entrenar redes neuronales profundas, o imágenes de verdad en tierra y datos de etiquetas de píxel para entrenar redes de segmentación semántica.

Este objeto requiere que usted tenga.Deep Learning Toolbox™

Nota

Cuando se utiliza a como fuente de datos de entrenamiento, el almacén extrae múltiples parches aleatorios de cada imagen para cada época, de modo que cada época utilice un conjunto de datos ligeramente diferente.randomPatchExtractionDatastore El número real de parches de entrenamiento en cada época es el número de imágenes de entrenamiento multiplicadas por PatchesPerImage. Los parches de imagen no se almacenan en la memoria.

Creación

Descripción

ejemplo

patchds = randomPatchExtractionDatastore(imds1,imds2,patchSize) crea un almacén de datos que extrae parches colocados aleatoriamente de tamaño a partir de imágenes en el almacén de datos de imagen y parches correspondientes de imágenes en el almacén de datos de imagen.patchSizeimds1imds2

ejemplo

patchds = randomPatchExtractionDatastore(imds1,pxds,patchSize) crea un almacén de datos que extrae parches colocados aleatoriamente de tamaño de imágenes de verdad en tierra en el almacén de datos de imagen y parches correspondientes de imágenes de etiqueta de píxel en el almacén de datos de etiquetas de píxel.patchSizeimds1pxds

Esta sintaxis requiere.Computer Vision Toolbox™

patchds = randomPatchExtractionDatastore(___,Name,Value) utiliza pares nombre-valor para establecer el PatchesPerImage, DataAugmentationY DispatchInBackground Propiedades. Puede especificar varios pares nombre-valor. Incluya cada argumento o nombre de propiedad entre comillas.

Por ejemplo, crea un almacén de datos que genera aleatoriamente 40 parches de tamaño 50-por-50 píxeles de cada imagen en almacenes de datos de imagen y.randomPatchExtractionDatastore(imds1,imds2,50,'PatchesPerImage',40)imds1imds2

Argumentos de entrada

expandir todo

Introduzca datos de imagen que contengan entradas de formación en la red, especificadas como un objeto.ImageDatastore

permite la lectura por lotes de archivos de imagen JPG o PNG mediante la captura previa.ImageDatastore Si utiliza una función personalizada para leer las imágenes, no se realiza la captura previa.

Datos de imagen de respuesta que representan las respuestas de red deseadas, especificadas como un objeto.ImageDatastore

Datos de etiqueta de píxel de respuesta que representan las respuestas de red deseadas, especificadas como un objeto.pixelLabelDatastore

Tamaño de parche, especificado como uno de los siguientes.

  • Un entero positivo que especifica el número de filas y columnas de parches cuadrados.

  • Un vector de 2 elementos de enteros positivos, de la forma [].rc El primer elemento especifica el número de filas de la revisión y el segundo elemento especifica el número de columnas.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Propiedades

expandir todo

Número de parches aleatorios por imagen, especificados como un entero positivo.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Preprocesamiento aplicado a las imágenes de entrada, especificadas como un objeto o.imageDataAugmenter'none' Cuando es, no se aplica ningún preprocesamiento a las imágenes de entrada.DataAugmentation'none'

Aumente los datos con transformaciones aleatorias, como el cambio de tamaño, la rotación y la reflexión, para ayudar a evitar que la red sobreajuste y memoriza los detalles exactos de los datos de entrenamiento. Aplica la misma transformación aleatoria a ambos parches en cada par.randomPatchExtractionDatastore

Enviar observaciones en segundo plano durante el entrenamiento, la predicción o la clasificación, especificadas como o.falsetrue Para usar el envío de fondo, debe tener.Parallel Computing Toolbox™

Esta propiedad es de solo lectura.

Número de observaciones que se devuelven en cada lote. Para el entrenamiento, la predicción y la clasificación, la propiedad se establece en el tamaño de mini lote definido en.MiniBatchSizetrainingOptions

Esta propiedad es de solo lectura.

Número total de observaciones en el.randomPatchExtractionDatastore El número de observaciones es la duración de una época de entrenamiento.

Funciones del objeto

hasdataDetermine if data is available to read
partitionByIndexPartición según índicesrandomPatchExtractionDatastore
previewSubset of data in datastore
readLeer datos derandomPatchExtractionDatastore
readallRead all data in datastore
readByIndexLea los datos especificados por el índice desderandomPatchExtractionDatastore
resetReset datastore to initial state
shuffleMezclar datos enrandomPatchExtractionDatastore

Ejemplos

contraer todo

Cree un almacén de datos de imagen que contenga imágenes de entrenamiento. El almacén de datos de este ejemplo contiene imágenes en color JPEG.

imageDir = fullfile(toolboxdir('images'),'imdata'); imds1 = imageDatastore(imageDir,'FileExtensions','.jpg');

Cree un segundo almacén de datos de imágenes que contenga respuestas de red deseadas. Este almacén de datos de imágenes incluye una función de lectura personalizada llamada (definida al final del ejemplo) que suaviza las imágenes utilizando un desenfoque gaussiano.myreadfcn

imds2 = imageDatastore(imageDir,'FileExtensions','.jpg','ReadFcn',@myreadfcn);

Cree una que gire las imágenes por ángulos aleatorios en el rango [0, 90] grados y refleje aleatoriamente los datos de imagen horizontalmente.imageDataAugmenter

augmenter = imageDataAugmenter('RandRotation',[0 90],'RandXReflection',true)
augmenter =    imageDataAugmenter with properties:             FillValue: 0      RandXReflection: 1      RandYReflection: 0         RandRotation: [0 90]            RandScale: [1 1]           RandXScale: [1 1]           RandYScale: [1 1]           RandXShear: [0 0]           RandYShear: [0 0]     RandXTranslation: [0 0]     RandYTranslation: [0 0]  

Cree un objeto que extrae parches aleatorios de tamaño [100 100] de las imágenes de entrenamiento sin procesar y las imágenes de respuesta suavizadas correspondientes.randomPatchExtractionDatastore Especifique las opciones de aumento estableciendo la propiedad.DataAugmentation

patchds = randomPatchExtractionDatastore(imds1,imds2,[100 100], ...     'DataAugmentation',augmenter)
patchds =    randomPatchExtractionDatastore with properties:           PatchesPerImage: 128                PatchSize: [100 100]         DataAugmentation: [1×1 imageDataAugmenter]            MiniBatchSize: 128          NumObservations: 4736     DispatchInBackground: 0  

Previsualice un conjunto de parches de imagen aumentada y los parches de imagen suavizados correspondientes.

minibatch = preview(patchds); inputs = minibatch.InputImage; responses = minibatch.ResponseImage; test = cat(2,inputs,responses); montage(test','Size',[8 2]) title('Inputs (Left) and Responses (Right)')

Función de apoyo

En este ejemplo se define la función que lee un archivo desde el disco y, a continuación, suaviza la imagen al APAR un desenfoque gaussiano.myreadfcn La función devuelve la imagen suavizada.

function J = myreadfcn(filename)     I = imread(filename);     J = imgaussfilt(I,2); end

Cree un almacén de datos de imagen que contenga imágenes de entrenamiento.

dataDir = fullfile(toolboxdir('vision'),'visiondata','triangleImages'); imageDir = fullfile(dataDir,'trainingImages'); imds = imageDatastore(imageDir);

Defina los nombres de clase y sus identificadores de etiqueta asociados. A continuación, cree un almacén de datos de etiquetas de píxel que contenga las etiquetas de píxel de verdad del terreno para las imágenes de entrenamiento.

classNames = ["triangle","background"]; labelIDs = [255 0]; labelDir = fullfile(dataDir,'trainingLabels'); pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);

Cree un almacén de datos de extracción de parches aleatorio para extraer parches aleatorios de tamaño 32-by-32 píxeles de las imágenes y etiquetas de píxel correspondientes. Establezca la propiedad opcional para extraer 512 parches aleatorios de cada par de etiquetas de imagen y píxel.PatchesPerImage

patchds = randomPatchExtractionDatastore(imds,pxds,32, ...      'PatchesPerImage',512);

Cree una red para la segmentación semántica.

layers = [     imageInputLayer([32 32 1])     convolution2dLayer(3,64,'Padding',1)     reluLayer()     maxPooling2dLayer(2,'Stride',2)     convolution2dLayer(3,64,'Padding',1)     reluLayer()     transposedConv2dLayer(4,64,'Stride',2,'Cropping',1)     convolution2dLayer(1,2)     softmaxLayer()     pixelClassificationLayer()     ]
layers =    10x1 Layer array with layers:       1   ''   Image Input                  32x32x1 images with 'zerocenter' normalization      2   ''   Convolution                  64 3x3 convolutions with stride [1  1] and padding [1  1  1  1]      3   ''   ReLU                         ReLU      4   ''   Max Pooling                  2x2 max pooling with stride [2  2] and padding [0  0  0  0]      5   ''   Convolution                  64 3x3 convolutions with stride [1  1] and padding [1  1  1  1]      6   ''   ReLU                         ReLU      7   ''   Transposed Convolution       64 4x4 transposed convolutions with stride [2  2] and output cropping [1  1]      8   ''   Convolution                  2 1x1 convolutions with stride [1  1] and padding [0  0  0  0]      9   ''   Softmax                      softmax     10   ''   Pixel Classification Layer   Cross-entropy loss  

Configure las opciones de formación. Para reducir el tiempo de entrenamiento, ajuste a 5.MaxEpochs

options = trainingOptions('sgdm', ...     'InitialLearnRate',1e-3, ...     'MaxEpochs',5, ...     'Verbose',false);

Entrena la red.

net = trainNetwork(patchds,layers,options);

Sugerencias

  • Espera que la salida de la operación en los almacenes datos de entrada devuelva matrices del mismo tamaño.randomPatchExtractionDatastoreread

  • El siempre lee una imagen a la vez desde cada almacén de datos de entrada.randomPatchExtractionDatastore Esto se logra estableciendo la propiedad de los almacenes de datos de entrada a.ReadSize1

  • Si el almacén de datos de entrada es un, los valores de su propiedad son ignorados por el.ImageDatastoreLabelsrandomPatchExtractionDatastore

  • Para visualizar los datos en a, puede utilizar la función, que devuelve un subconjunto de datos en una tabla.randomPatchExtractionDatastorepreview Visualice todos los parches de la misma figura utilizando la función.montage Por ejemplo, este código muestra una vista previa de los parches de imagen de un llamado.randomPatchExtractionDatastorepatchds

    minibatch = preview(patchds); montage(minibatch.InputImage)

Introducido en R2018b