Un pequeño comentario:
No es buena practica cargar TODAS las imágenes de golpe, ya que puede saturar la memoria. En este caso especial hay poca cantidad de imágenes por ende no se presenta este problema. Pero para un dataset de miles de imágenes si podría ocurrir. Una mejor alternativa sería usar un DataLoader.
Sí, tienes toda la razón. No es una buena práctica cargar todas las imágenes o todos los datos a la vez. Con un dataset grande se llenaría la memoria y no podríamos entrenar. Lo ideal es utilizar un DataLoader, como dices, para ir cargando los datos por lotes, aplicando el pre-procesado que sea necesario a cada lote.
En este caso se hace así por cuestiones de simpleza en el código y para que el procedimiento seguido sea más sencillo de entender.
Muchas gracias por la puntualización! :)
Saludos cordiales. Para una mejor convergencia de la red se debe rescalar tanto las imagenes como las mascaras?
Buena pregunta, entiendo que en cuaquier problema de machine learning y en especial problemas de deep learning, se deben escalar los datos a 0-1. Ya que eso no hace que el gradiente explote en el entrenamiento.
Para visualizar un dataset de segmentación, generalmente se superponen las máscaras de segmentación sobre las imágenes originales para obtener una visión clara de cómo se etiquetan y segmentan los objetos. Aquí tienes algunos pasos y un ejemplo de código en Python usando matplotlib para visualizar las imágenes y las máscaras.
### Pasos para Visualizar el Dataset de Segmentación
1. **Cargar la Imagen y la Máscara**: Extrae una imagen y su máscara correspondiente del dataset.
2. **Convertir la Máscara a Color (opcional)**: Las máscaras suelen ser en escala de grises, donde cada píxel representa una clase en el rango 0, 1, 2, etc. Podemos convertir esta máscara en una versión en color para que sea más visualmente intuitiva.
3. **Superponer la Máscara sobre la Imagen**: Usualmente se combinan la imagen original y la máscara para ver cómo se alinean los objetos con las etiquetas de segmentación.
4. **Mostrar las Imágenes con Matplotlib**: Visualiza la imagen original y la superposición de la máscara para tener una visión clara de las etiquetas.
### Ejemplo de Código en Python para Visualización
Aquí hay un código en Python que carga una imagen y su máscara, y las muestra usando matplotlib.
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import random
def visualize\_segmentation(image\_path, mask\_path):  \# Cargar la imagen y la máscara  image = Image.open(image\_path).convert("RGB")  mask = Image.open(mask\_path)  \# Convertir la máscara a un array de NumPy  mask\_np = np.array(mask)  \# Opcional: Crear una versión en color de la máscara para visualización  num\_classes = mask\_np.max() + 1 # Asumiendo que las clases están en 0, 1, 2, etc.  colors = plt.cm.get\_cmap("hsv", num\_classes) # Crear un mapa de color  mask\_color = colors(mask\_np / num\_classes)\[:, :, :3] # Normalizar y aplicar el mapa  \# Mostrar la imagen original, la máscara y la superposición  plt.figure(figsize=(15, 5))  plt.subplot(1, 3, 1)  plt.imshow(image)  plt.title("Imagen Original")  plt.axis("off")  plt.subplot(1, 3, 2)  plt.imshow(mask, cmap="gray")  plt.title("Máscara de Segmentación")  plt.axis("off")  plt.subplot(1, 3, 3)  plt.imshow(image)  plt.imshow(mask\_color, alpha=0.5) # Superponer la máscara en color  plt.title("Superposición de Imagen y Máscara")  plt.axis("off")  plt.tight\_layout()  plt.show()
\# Ejemplo de uso
image\_path ="ruta/a/imagen.jpg"# Cambia a la ruta de tu imagenmask\_path ="ruta/a/mascara.png"# Cambia a la ruta de tu máscaravisualize\_segmentation(image\_path, mask\_path)
### Explicación del Código
- **Carga de Imagen y Máscara**: Cargamos la imagen y la máscara usando PIL.
- **Colorización de la Máscara**: Para convertir la máscara a color, aplicamos un mapa de color basado en el número de clases. Esto puede hacerse usando plt.cm.get\_cmap().
- **Visualización en matplotlib**: Mostramos tres gráficos: la imagen original, la máscara en escala de grises, y la superposición de ambas, lo que ayuda a ver cómo se alinean las etiquetas en la imagen.
---
### Tips para la Visualización
- **Máscaras Transparentes**: Ajusta la transparencia (alpha) para ver mejor la superposición de la máscara sobre la imagen.
- **Escala de Colores Personalizada**: Si tienes clases específicas, puedes definir una paleta de colores única para cada clase en lugar de usar un mapa de colores genérico.
- **Aumentar la Resolución**: Configura plt.figure(figsize=(15, 5)) según el tamaño que quieras para la visualización.
Esta técnica te permitirá ver cómo el modelo puede estar interpretando el dataset y ajustar en caso de que los resultados de segmentación no se alineen correctamente.