Preprocesar imágenes para deep learning
Para entrenar una red y hacer predicciones sobre datos nuevos, sus imágenes deben coincidir con el tamaño de entrada de la red. Si necesita ajustar el tamaño de sus imágenes para que coincidan con la red, puede cambiar la escala de sus datos o recortarlos de acuerdo con el tamaño necesario.
Puede incrementar de forma efectiva la cantidad de datos de entrenamiento aplicando un aumento aleatorio a los datos. El aumento también permite entrenar redes para que permanezcan invariables a las distorsiones en los datos de imágenes. Por ejemplo, puede añadir rotaciones aleatorias para introducir imágenes de manera que una red permanezca invariable ante la presencia de rotación en las imágenes de entrada. augmentedImageDatastore
(Deep Learning Toolbox) proporciona un forma útil de aplicar un conjunto limitado de aumentos a imágenes 2D para problemas de clasificación.
En operaciones de preprocesamiento más avanzadas, para preprocesar imágenes en problemas de regresión o para preprocesar imágenes volumétricas 3D, puede empezar con un almacén de datos incorporado. También puede preprocesar imágenes de acuerdo con su propio flujo mediante las funciones transform
y combine
.
Cambiar el tamaño de imágenes mediante reescalado y recorte
Puede almacenar datos de imágenes como un arreglo numérico, un objeto ImageDatastore
o una tabla. ImageDatastore
le permite importar datos en lotes desde colecciones de imágenes que son demasiado grandes para caber en la memoria. Puede usar un almacén de datos de imágenes aumentado o un arreglo 4D de tamaño cambiado para el entrenamiento, predicción y clasificación. Puede usar un arreglo 3D de tamaño cambiado solo para la predicción y la clasificación.
Hay dos formas de cambiar el tamaño de los datos de las imágenes para que coincidan con el tamaño de entrada de una red.
La acción de reescalar multiplica la altura y el ancho de la imagen por un factor de escala. Si el factor de escala no es idéntico en las direcciones vertical y horizontal, reescalar cambia las extensiones espaciales de los píxeles y la relación de aspecto.
La acción de recortar extrae una subregión de la imagen y conserva la extensión espacial de cada píxel. Puede recortar una imagen desde el centro o desde posiciones aleatorias de esta.
Opción de cambio de tamaño | Formato de los datos | Función de cambio de tamaño | Código de muestra |
---|---|---|---|
Reescalado |
| imresize |
im = imresize(I,outputSize);
|
| augmentedImageDatastore (Deep Learning Toolbox) |
auimds = augmentedImageDatastore(outputSize,I);
| |
Recorte |
| imcrop |
im = imcrop(I,rect);
|
| imcrop3 |
im = imcrop3(I,cuboid);
| |
| augmentedImageDatastore (Deep Learning Toolbox) |
auimds = augmentedImageDatastore(outputSize,I,'OutputSizeMode',m);
Especifique Especifique |
Aumentar imágenes para el entrenamiento con transformaciones geométricas aleatorias
En problemas de clasificación de imágenes, puede usar augmentedImageDatastore
(Deep Learning Toolbox) para aumentar imágenes con una combinación aleatoria de transformaciones de cambio de tamaño, rotación, reflexión, estiramiento y traslación.
El diagrama muestra como trainnet
(Deep Learning Toolbox) usa un almacén de datos de imágenes aumentadas para transformar los datos de entrenamiento de cada época. Cuando utiliza aumento de datos, un versión de cada imagen aumentada aleatoriamente se usa durante cada época del entrenamiento. Para ver un ejemplo del flujo de trabajo, consulte Entrenar redes de deep learning para clasificar nuevas imágenes (Deep Learning Toolbox).
Especifique imágenes de entrenamiento.
Configure opciones de transformación de imágenes, como el rango de los ángulos de rotación y si se aplica reflexión de forma aleatoria, creando
imageDataAugmenter
(Deep Learning Toolbox).Sugerencia
Para previsualizar las transformaciones aplicadas a las imágenes de muestreo, use la función
augment
(Deep Learning Toolbox).Cree
augmentedImageDatastore
(Deep Learning Toolbox). Especifique las imágenes de entrenamiento, el tamaño de las imágenes de salida yimageDataAugmenter
. El tamaño de las imágenes de salida debe ser compatible con el tamaño deimageInputLayer
(Deep Learning Toolbox) de la red.Entrene la red especificando el almacén de datos de imágenes aumentadas como la fuente de datos de
trainnet
(Deep Learning Toolbox). Para cada iteración de entrenamiento, el almacén de datos de imágenes aumentadas aplica una combinación aleatoria de transformaciones a las imágenes en el minilote de los datos de entrenamiento.Cuando utiliza un almacén de datos de imágenes aumentado como fuente de imágenes de entrenamiento, el almacén de datos perturba aleatoriamente los datos de entrenamiento de cada época, para que cada época utilice un conjunto de datos ligeramente diferente. El número real de imágenes de entrenamiento de cada época no cambia. Las imágenes transformadas no se almacenan en la memoria.
Ejecutar operaciones adicionales de procesamiento de imágenes usando almacenes de datos integrados
Algunos almacenes de datos ejecutan operaciones de preprocesamiento de imágenes limitadas y específicas cuando leen un lote de datos. Estos almacenes de datos específicos de aplicaciones se muestran en la tabla. Puede usar estos almacenes de datos como una fuente de entrenamiento, validación y conjuntos de datos de prueba con aplicaciones de deep learning que usan Deep Learning Toolbox™. Todos esos almacenes de datos devuelven datos de imágenes con un formato compatible con trainnet
.
Almacén de datos | Descripción |
---|---|
augmentedImageDatastore (Deep Learning Toolbox) | Aplique transformaciones geométricas afines aleatorias, incluido cambio de tamaño, rotación, reflexión, estiramiento y traslación, para entrenar redes neuronales profundas. Para ver un ejemplo, consulte Entrenar redes de deep learning para clasificar nuevas imágenes (Deep Learning Toolbox). |
randomPatchExtractionDatastore | Extraiga varios pares de zonas aleatorias de imágenes o imágenes de etiquetas de píxeles (requiere Image Processing Toolbox™). Puede aplicar de manera opcional transformaciones geométricas afines aleatorias idénticas a los pares de zonas. Para ver un ejemplo, consulte Increase Image Resolution Using Deep Learning (Deep Learning Toolbox). |
denoisingImageDatastore | Aplique ruido gaussiano generado aleatoriamente para entrenar redes de eliminación de ruido (requiere Image Processing Toolbox). |
Aplicar flujos de procesamiento de imágenes personalizados usando las funciones combine y transform
Para ejecutar más operaciones de preprocesamiento de imágenes complejas y generales de las que ofrecen los almacenes de datos específicos de aplicaciones, puede usar las funciones transform
y combine
. Para obtener más información, consulte Datastores for Deep Learning (Deep Learning Toolbox).
Transformar almacenes de datos con datos de imágenes
La función transform
crea una forma alterada de un almacén de datos, denominada almacén de datos subyacente, transformando los datos leídos por dicho almacén de acuerdo con una función de transformación que usted defina.
La función de transformación personalizada debe aceptar datos en el formato devuelto por la función read
del almacén de datos subyacente. Para datos de imágenes de ImageDatastore
, el formato depende de la propiedad ReadSize
.
Cuando
ReadSize
es 1, la función de transformación debe aceptar un arreglo de enteros. El tamaño del arreglo es coherente con el tipo de imágenes deImageDatastore
. Por ejemplo, una imagen en escala de grises tiene dimensiones m por n, una imagen en color verdadero tiene dimensiones m por n por 3 y una imagen multiespectral con c canales tiene dimensiones m por n por c.Cuando
ReadSize
es mayor que 1, la función de transformación debe aceptar un arreglo de celdas de datos de imágenes. Cada elemento corresponde a una imagen del lote.
La función transform
debe devolver datos que coincidan con el tamaño de entrada de la red. La función transform
no admite asignaciones de observación de uno a muchos.
Sugerencia
La función transform
admite la precarga cuando ImageDatastore
subyacente lee un lote de archivos de imágenes JPG o PNG. Con este tipo de imágenes, no use el argumento readFcn
de ImageDatastore
para aplicar preprocesamiento de imágenes, ya que esta opción suele ser significativamente más lenta. Si utiliza una función de lectura personalizada, ImageDatastore
no realiza la precarga.
Combinar almacenes de datos con datos de imágenes
La función combine
concatena los datos leídos de varios almacenes de datos y conserva la paridad entre ellos.
Concatene los datos en una tabla de dos columnas o en un arreglo de celdas de dos columnas para entrenar redes con una sola entrada, como las redes de regresión entre imágenes.
Concatene datos a un arreglo de celdas de (
numInputs
+1) columnas para entrenar redes con varias entradas.
Consulte también
trainnet
(Deep Learning Toolbox) | trainingOptions
(Deep Learning Toolbox) | dlnetwork
(Deep Learning Toolbox) | imresize
| transform
| combine
| ImageDatastore
Ejemplos relacionados
- Entrenar redes de deep learning para clasificar nuevas imágenes (Deep Learning Toolbox)
- Create and Explore Datastore for Image Classification (Deep Learning Toolbox)
- Prepare Datastore for Image-to-Image Regression (Deep Learning Toolbox)
Más acerca de
- Datastores for Deep Learning (Deep Learning Toolbox)
- Preprocess Volumes for Deep Learning (Deep Learning Toolbox)
- Deep learning en MATLAB (Deep Learning Toolbox)