Construir una red neuronal convolucional (CNN) para clasificar imágenes médicas como radiografías de neumonía requiere entender cómo se conectan sus capas y qué hace cada una. Aquí verás cómo se comporta una CNN paso a paso y cómo traducirla a código, con un ejemplo práctico aplicado a clasificación binaria.
¿Qué estructura tiene una red neuronal convolucional?
Una CNN se organiza como una secuencia de capas que transforman la imagen original hasta producir una predicción.
En el ejemplo clásico de reconocimiento de dígitos manuscritos del cero al nueve, la red recibe un dibujo y devuelve dos resultados: la predicción principal (por ejemplo, un tres) y la probabilidad asociada a cada clase posible, porque se trata de un problema multiclase.
¿Cuáles son las capas principales de una CNN?
La arquitectura básica incluye los siguientes bloques:
- Capa de entrada, que recibe la imagen ya convertida en tensor.
- Capas intermedias, donde ocurre la magia: convoluciones, pooling y capas totalmente conectadas.
- Capa de salida, que entrega la predicción final.
La capa de convolución aplica diferentes kernels o filtros a la imagen original para resaltar contornos y características específicas. Cuando activas esta capa, ves cómo aparecen múltiples matrices, cada una mostrando un aspecto distinto de la imagen [1:00].
¿Qué hace el pooling dentro de la red?
El pooling es una operación de downsampling que reduce el tamaño de cada matriz conservando la información más relevante. En el ejemplo se aplica sobre cada una de las matrices numéricas resultantes de la convolución, simplificando los datos antes de pasar a la siguiente capa [1:25].
Después puedes apilar más bloques: una segunda convolución, otro pooling, y así sucesivamente, hasta llegar a la parte final de la red.
¿Qué es la capa totalmente conectada y para qué sirve?
La capa totalmente conectada o fully connected enlaza cada valor con todos los nodos de las capas anteriores. Es el puente entre la representación visual aprendida y la decisión final.
Esta capa equivale al flatten, una operación que transforma un espacio multidimensional en un único vector de una sola dimensión. Ese vector es lo que la red usará para tomar la decisión final.
¿Qué es el flatten en una red neuronal? Es la operación que aplana las matrices multidimensionales generadas por las capas convolucionales y de pooling en un solo vector unidimensional, listo para entrar a la capa totalmente conectada.
¿Cómo se traduce esta arquitectura a código?
Al programar la red, defines capa tras capa siguiendo la lógica que viste visualmente. Recuerda que partes de una imagen original que primero se convierte en tensor y luego entra a la primera convolución [2:30].
¿Qué parámetros usar en la primera convolución?
Para una imagen a color, incluso si trabajas con radiografías que parecen blanco y negro, la captura llega con tres canales de color. Los parámetros del ejemplo son:
- Tres canales de entrada, porque la imagen está a color.
- Cuatro características de salida.
- Tamaño de kernel igual a tres.
- Padding de uno.
Después aplicas un pooling del tipo máximo, que conserva el valor más alto de cada región y reduce la complejidad computacional [2:55].
¿Cómo se llega a la decisión binaria final?
Una vez extraídas las características, aplicas un flatten para obtener el vector característico de la imagen. Ese vector entra a una capa final con salida de dos valores, porque la tarea es una decisión binaria: la imagen corresponde a neumonía o es normal [3:25].
¿Por qué la salida tiene dos valores si es clasificación binaria? Porque la red asigna una probabilidad a cada clase posible, en este caso neumonía o normal, y elige la de mayor valor como predicción.
¿Cómo se ejecuta la red en CPU o GPU?
Defines la secuencia de capas para que, cuando la imagen original cargue como tensor, se apliquen las capas sucesivas en orden. Un detalle clave: el proceso se ejecuta en el dispositivo que hayas definido previamente, ya sea CPU o GPU detectada [3:50].
En el ejemplo, la red se asigna automáticamente a la GPU disponible, lo que acelera notablemente el entrenamiento frente a una ejecución en CPU.
Con la red ya definida, el siguiente paso es entrenarla con tus datos. ¿Qué arquitectura piensas probar primero en tu proyecto? Cuéntame en los comentarios.