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 aleatorios 2D o 3D de imágenes o imágenes de etiquetas de píxeles

Descripción

Un extrae los parches posicionados aleatoriamente correspondientes de dos almacenes de datos basados en imágenes.randomPatchExtractionDatastore Por ejemplo, los almacenes de datos de entrada pueden ser dos almacenes de datos de imágenes que contienen las entradas de red y las respuestas de red deseadas para entrenar redes de regresión de imagen a imagen, o imágenes de verdad de terreno y datos de etiquetas de píxeles para redes de segmentación semántica de entrenamiento.

Este objeto requiere que tenga .Deep Learning Toolbox™

Nota

Cuando se utiliza como fuente de datos de entrenamiento, el almacén de datos extrae varios parches aleatorios de cada imagen para cada época, de modo que cada época utiliza 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 multiplicado por PatchesPerImage. Los parches de imagen no se almacenan en la memoria.

Creación

Descripción

ejemplo

patchds = randomPatchExtractionDatastore(ds1,ds2,PatchSize) crea un almacén de datos que extrae parches de tamaño posicionados al azar PatchSize de datos de entrada en el almacén de datos y datos de respuesta en el almacén de datos.ds1ds2

patchds = randomPatchExtractionDatastore(ds1,ds2,PatchSize,Name,Value) utiliza pares nombre-valor para establecer el PatchesPerImage, DataAugmentationY DispatchInBackground Propiedades. Puede especificar varios pares nombre-valor. Incluya cada 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 imágenes y archivos .randomPatchExtractionDatastore(imds1,imds2,50,'PatchesPerImage',40)imds1imds2

Argumentos de entrada

expandir todo

Introduzca los datos que contienen la entrada de entrenamiento en la red, especificada como , , o .ImageDatastorePixelLabelDatastoreTransformedDatastore Si especifica un , el almacén de datos subyacente debe ser un archivo o un archivo .TransformedDatastoreImageDatastorePixelLabelDatastore

Especificar un requires .PixelLabelDatastoreComputer Vision Toolbox™

Nota

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

Datos de respuesta que representan las respuestas de red deseadas, especificadas como , , o .ImageDatastorePixelLabelDatastoreTransformedDatastore Si especifica un , el almacén de datos subyacente debe ser un archivo o un archivo .TransformedDatastoreImageDatastorePixelLabelDatastore

Especificar un requires .PixelLabelDatastoreComputer Vision Toolbox

Nota

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

Propiedades

expandir todo

Esta propiedad es de solo lectura.

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

  • Un vector de 2 elementos de enteros positivos para parches 2D. tiene el formulario [ ] donde especifica el número de filas y especifica el número de columnas en el parche.PatchSizercrc

  • Un vector de 3 elementos de enteros positivos para parches 3D. tiene el formato [ ] donde especifica el número de filas, especifica el número de columnas y especifica el número de planos en el parche.PatchSizercprcp

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

Preprocesamiento aplicado a las imágenes de entrada, especificada 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 memorice los detalles exactos de los datos de entrenamiento. La transformación aleatoria aplica la misma transformación aleatoria a ambos parches en cada par.randomPatchExtractionDatastore El almacén de datos aumenta los datos en tiempo real durante el entrenamiento.

La propiedad no se admite para datos 3D.DataAugmentation Para preprocesar datos 3D, utilice la función.transform

Observaciones de envío en segundo plano durante el entrenamiento, predicción o clasificación, especificadas como o .falsetrue Para utilizar la distribución en segundo plano, debe tener .Parallel Computing Toolbox™

Número de observaciones que se devuelven en cada lote. Puede cambiar el valor de solo después de crear el almacén de datos.MiniBatchSize Para el entrenamiento, la predicción y la clasificación, la propiedad se establece en el tamaño de minilote definido en .MiniBatchSizetrainingOptions

Esta propiedad es de solo lectura.

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

Funciones del objeto

combineCombine data from multiple datastores
hasdataDetermine if data is available to read
numpartitionsNumber of datastore partitions
partitionPartition a datastore
partitionByIndexPartición según índicesrandomPatchExtractionDatastore
previewSubset of data in datastore
readLeer datos derandomPatchExtractionDatastore
readallRead all data in datastore
readByIndexLeer los datos especificados por el índice derandomPatchExtractionDatastore
resetReset datastore to initial state
shuffleDatos aleatorios en el almacén de datos
transformTransform datastore

Ejemplos

contraer todo

Cree un almacén de datos de imágenes 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 que transforme las imágenes aplicando un desenfoque gaussiano.imds1

imds2 = transform(imds1,@(x)imgaussfilt(x,2));

Cree un que gire las imágenes por ángulos aleatorios en el rango [0, 90] grados y refleje aleatoriamente los datos de la 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 extraiga parches aleatorios de tamaño 100 por 100 a partir 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: []     DispatchInBackground: 0  

Obtenga una vista previa de un conjunto de parches de imagen aumentados 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)')

Cree un almacén de datos de imágenes 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 ideos de etiqueta asociados. A continuación, cree un almacén de datos de etiquetas de píxeles que contenga las etiquetas de píxeles de la verdad del suelo 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 aleatorios para extraer parches aleatorios de tamaño 32 por 32 píxeles de las imágenes y las etiquetas de píxelcorrespondientes. 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 entrenamiento. 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 de datos de entrada devuelva matrices del mismo tamaño.randomPatchExtractionDatastoreread

  • Si el almacén de datos de entrada es un , el archivo .ImageDatastoreLabelsrandomPatchExtractionDatastore

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

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

Introducido en R2018b