Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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 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ñoFormato de los datosFunción de cambio de tamañoCódigo de muestra
Reescalado
  • Un arreglo 3D que representa un solo color o una imagen multiespectral

  • Un arreglo 3D que representa una pila de imágenes en escala de grises

  • Un arreglo 4D que representa una pila de imágenes

imresize

im = imresize(I,outputSize);

outputSize especifica las dimensiones de la imagen reescalada.

  • Un arreglo 4D que representa una pila de imágenes

  • ImageDatastore

  • tabla

augmentedImageDatastore

auimds = augmentedImageDatastore(outputSize,I);

outputSize especifica las dimensiones de la imagen reescalada.

Recorte
  • Un arreglo 3D que representa un solo color o una imagen multiespectral

imcrop (Image Processing Toolbox)

im = imcrop(I,rect);

rect especifica el tamaño y la posición de la ventana de recorte 2D.

  • Un arreglo 3D que representa una pila de imágenes en escala de grises

  • Un arreglo 4D que representa una pila de color o imágenes multiespectrales

imcrop3 (Image Processing Toolbox)

im = imcrop3(I,cuboid);

cuboid especifica el tamaño y la posición de la ventana de recorte 3D.

  • Un arreglo 4D que representa una pila de imágenes

  • ImageDatastore

  • tabla

augmentedImageDatastore

auimds = augmentedImageDatastore(outputSize,I,'OutputSizeMode',m);

Especifique m como 'centercrop' para recortar desde el centro de la imagen de entrada.

Especifique m como 'randcrop' para recortar desde una ubicación aleatoria en la imagen de entrada.

Aumentar imágenes para el entrenamiento con transformaciones geométricas aleatorias

En problemas de clasificación de imágenes, puede usar augmentedImageDatastore 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 trainNetwork 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 una red con imágenes aumentadas.

  1. Especifique imágenes de entrenamiento.

  2. 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.

    Sugerencia

    Para previsualizar las transformaciones aplicadas a las imágenes de muestreo, use la función augment.

  3. Cree augmentedImageDatastore. Especifique las imágenes de entrenamiento, el tamaño de las imágenes de salida y imageDataAugmenter. El tamaño de las imágenes de salida debe ser compatible con el tamaño de imageInputLayer de la red.

  4. Entrene la red especificando el almacén de datos de imágenes aumentadas como la fuente de datos de trainNetwork. 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 con un formato compatible con trainNetwork.

Almacén de datosDescripción
augmentedImageDatastoreAplique 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 Transferencia del aprendizaje mediante una red preentrenada.
randomPatchExtractionDatastore (Image Processing Toolbox)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.
denoisingImageDatastore (Image Processing Toolbox)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.

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 de ImageDatastore. 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

| | | |

Ejemplos relacionados

Más acerca de