Contenido del curso

- Redes Convolucionales (CNN) para Visión por Computadora

Redes Convolucionales (CNN) para Visión por Computadora

Las redes convolucionales (CNN o ConvNets) son la columna vertebral del aprendizaje profundo aplicado a imágenes. A diferencia de las redes totalmente conectadas, las CNN preservan la estructura espacial de los píxeles y aprenden patrones jerárquicos: bordes, texturas, formas y objetos completos.

Conexión con el curso: Mientras que las redes recurrentes (RNN) modelan datos secuenciales (texto, tiempo), las CNN están optimizadas para datos con topología de cuadrícula (imágenes, mapas de características). Su combinación permite sistemas multimodales potentes.

1. Capas convolucionales y kernels

La capa convolucional aplica un filtro (kernel) deslizante sobre la imagen de entrada. Cada kernel detecta una característica específica: bordes verticales, horizontales, texturas. La operación es un producto punto entre el kernel y una pequeña región de entrada.

  • Kernel (filtro): matriz pequeña de pesos aprendibles (ej. 3×3, 5×5). Se desplaza por la imagen con un paso (stride).
  • Mapa de características (feature map): resultado de aplicar un kernel a toda la entrada. Cada mapa resalta la presencia de una característica.
  • Profundidad: se usan varios kernels (ej. 32, 64) para capturar múltiples características en paralelo.

2. Pooling (submuestreo)

El pooling reduce la dimensionalidad espacial de los mapas de características, manteniendo la información más relevante. Esto disminuye el número de parámetros y controla el sobreajuste.

  • Max pooling: toma el valor máximo en una ventana (ej. 2×2). Es el más común.
  • Average pooling: promedia los valores de la ventana.
  • Global average pooling: reduce cada mapa a un solo valor, usado antes de la capa final.

3. Arquitecturas clásicas

Varias arquitecturas han marcado hitos en la visión por computadora. Aquí las dos más fundacionales:

Arquitectura Año Innovación clave
LeNet-51998CNN para dígitos manuscritos. Capas: Conv -> Pool -> Conv -> Pool -> FC.
AlexNet2012Revolucionó ImageNet. Uso de ReLU, dropout, GPU y data augmentation.

LeNet-5 sentó las bases: convolución, pooling, y capas totalmente conectadas. AlexNet demostró la escalabilidad de las CNN con grandes conjuntos de datos y hardware paralelo.

4. Aplicación práctica: diagnóstico por imágenes médicas

Las CNN se aplican con éxito a la detección de tumores en radiografías, tomografías y resonancias. Un flujo típico:

  • Preprocesamiento: normalización, ecualización del histograma, y redimensionamiento.
  • Arquitectura: CNN con capas convolucionales seguidas de dropout y una capa final con sigmoide (binario) o softmax (multiclase).
  • Métrica: sensibilidad (recall) y especificidad son críticas en diagnóstico.

Ejemplo de un bloque convolucional simple en PyTorch:

import torch.nn as nn
model = nn.Sequential(
    nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Flatten(),
    nn.Linear(32 * 13 * 13, 128),
    nn.ReLU(),
    nn.Linear(128, 2)  # dos clases: tumor / sano
)

5. Data augmentation (aumento de datos)

Para evitar el sobreajuste en datos médicos (a menudo escasos), se generan variaciones artificiales de las imágenes de entrenamiento:

  • Rotaciones, desplazamientos, zoom, volteo horizontal.
  • Cambios de brillo, contraste, ruido gaussiano.
  • Uso de bibliotecas como torchvision.transforms o imgaug.

6. Transfer learning (aprendizaje por transferencia)

En lugar de entrenar desde cero, se parte de una CNN preentrenada en ImageNet (o en un conjunto médico grande). Se reemplaza la última capa y se ajustan (fine-tune) los pesos.

  • Ventajas: requiere menos datos y tiempo de entrenamiento; mejor generalización.
  • Estrategias: congelar capas tempranas (bordes universales) y solo entrenar las últimas capas.

7. Mapas de características: visualización

Las CNN no son cajas negras: podemos visualizar los mapas de activación de cada capa para entender qué aprenden.

# Ejemplo hipotético de extracción de mapas
activations = model.features(input_image)
print(activations.shape)  # (batch, canales, alto, ancho)

Los primeros mapas detectan bordes y colores, los intermedios texturas y partes de objetos, y los últimos representan conceptos semánticos.


Resumen clave: Las CNN extraen características visuales mediante convoluciones y pooling, apiladas en arquitecturas profundas. Su aplicación al diagnóstico médico, potenciada con data augmentation y transfer learning, permite detectar tumores y anomalías con precisión creciente. La conexión con RNNs abre la puerta a sistemas que integran visión y secuencias (ej. reportes radiológicos generados automáticamente).

Capas convolucionales, kernels, pooling y mapas de características. Arquitecturas clásicas (LeNet, AlexNet). Aplicación a diagnóstico por imágenes médicas (detección de tumores en radiografías). Data augmentation y transfer learning. Conexión: las RNN abordan datos secuenciales.
Calificación
0 0

No hay comentarios por ahora.