Imágenes a tensores con PyTorch

Resumen

Antes de entrenar una red neuronal con radiografías, necesitas convertir cada imagen en un tensor que PyTorch pueda procesar. Aquí te muestro cómo preparar el dataset, habilitar la GPU y aplicar transformaciones básicas para que tu modelo aprenda con datos limpios y homogéneos.

¿Cómo habilitar la GPU en PyTorch para acelerar el entrenamiento?

Cuando trabajas con imágenes médicas, el tiempo de cómputo se dispara rápido. Por eso lo primero es activar la GPU desde el notebook.

En la sección de preparación de data instalas las dependencias habituales: PyTorch, NumPy y Matplotlib. Luego habilitas CUDA, que es la capa de optimización que permite a tu código comunicarse con la GPU. Después seleccionas el device: si estás conectado a una T4 en Colab, por defecto el device será GPU [00:36].

¿Qué es CUDA en PyTorch? Es la tecnología de NVIDIA que permite a PyTorch ejecutar operaciones en la GPU en paralelo, reduciendo drásticamente los tiempos de entrenamiento frente a la CPU.

¿Qué transformaciones aplicar a las imágenes antes de entrenar?

Una red neuronal no entiende píxeles tal cual; entiende tensores. Por eso defines un pipeline de transformaciones tanto para entrenamiento como para validación [01:05].

La transformación base convierte la imagen a un tensor. Inmediatamente después aplicas una normalización con media y desviación estándar, lo que lleva las intensidades de color a un rango homogéneo. Esto no es un capricho: es una buena práctica que mejora los resultados del modelo.

  • ToTensor: convierte la imagen en un tensor que PyTorch procesa.
  • Normalize: ajusta los valores con media y desviación estándar para uniformar el rango de colores.
  • Transformaciones separadas: las de entrenamiento y validación generalmente coinciden, pero no siempre.

¿Por qué normalizar las imágenes?

Normalizar estabiliza el aprendizaje. Cuando todas las imágenes comparten una distribución de intensidades similar, la red converge mejor y evita sesgos por diferencias de iluminación o contraste entre radiografías.

¿Cómo cargar el dataset y configurar el DataLoader?

Una vez listas las transformaciones, toca apuntar al directorio donde viven las imágenes. Antes de eso, conviene listar archivos con el comando ls de Linux para confirmar que el .zip y la carpeta están en su sitio [02:30].

Tienes dos caminos para tener tus datos disponibles:

  1. Subir el .zip al notebook y descomprimirlo localmente.
  2. Montar Google Drive, ir a My Drive, ubicar tu carpeta y copiar la ruta con clic derecho.

Cualquiera funciona. Después le indicas a PyTorch que dentro del directorio hay subcarpetas de entrenamiento y validación, y le aplicas las transformaciones que ya definiste.

¿Qué es el batch size en deep learning? Es el número de imágenes que la GPU procesa en paralelo en cada iteración. Un batch de 4 significa que la red ve 4 radiografías a la vez antes de actualizar pesos.

¿Qué valores usar para batch size, shuffle y num workers?

Estos tres parámetros dependen del hardware. Con una GPU T4 los valores recomendados son conservadores y seguros [04:25].

  • batch size: 4 para una T4. En GPUs más potentes puedes subir a 8, 16 o más.
  • shuffle: reparte las imágenes de forma aleatoria entre iteraciones, evitando que la red memorice el orden.
  • num workers: 2 es un valor bajo y estable para la carga paralela de imágenes.

Si no sabes por dónde empezar, estos valores funcionan como punto de partida sin saturar la memoria.

¿Cómo verificar que las imágenes se cargaron correctamente?

Antes de pasar al modelo, vale la pena revisar que todo esté en orden. Puedes consultar las dimensiones del dataset y las clases disponibles, que en este caso son normal y neumonía [05:40].

Una función de visualización te muestra una radiografía cargada junto con su etiqueta. Si ves una imagen de neumonía clasificada como neumonía, con dimensiones cercanas a 224 por 224, vas por buen camino. Es una validación interna rápida que te ahorra horas de depuración más adelante.

Con las imágenes ya convertidas en tensores y el DataLoader funcionando, tienes la base lista para construir tu primera red neuronal. ¿Qué transformación adicional te gustaría explorar primero? Cuéntamelo en los comentarios.