← CC3084

Redes Neuronales para Reconocimiento de Imágenes

Semestre 02, 2026

Introducción

Idea central

El reconocimiento de imágenes enseña a una máquina a "ver" y entender el contenido de una imagen. Es el problema donde el deep learning demostró por primera vez su ventaja decisiva sobre los métodos clásicos.

  • Nos concentramos en las redes convolucionales (CNN), la arquitectura que domina la visión por computadora desde 2012.

Las tareas de la visión

Clasificación: una etiqueta para toda la imagen. "Esto es un gato".
Localización: la etiqueta más un recuadro alrededor del objeto.
Detección: varios objetos en la imagen, cada uno con su recuadro.
Segmentación: clasificar cada píxel de la imagen.
  • La clasificación es la puerta de entrada: las demás tareas usan las mismas ideas.

Por qué es difícil

El mismo objeto puede verse de infinitas maneras y aun así ser la misma clase.

Punto de vista: de frente, de lado o desde arriba, los píxeles cambian por completo.
Iluminación: sombras y contraluz alteran todos los valores.
Deformación y pose: acostado, saltando o hecho un ovillo.
Oclusión, fondo desordenado y variación dentro de la clase.

La imagen es una cuadrícula de números

Escala de grises

Una matriz de alto × ancho, con valores de 0 (negro) a 255 (blanco).

Color (RGB)

Tres matrices apiladas: rojo, verde y azul. Su forma es alto × ancho × 3.

  • Una foto a color de 224 × 224 es un tensor de 224 × 224 × 3 = 150 528 números.
  • Para la red, la imagen es exactamente eso: un tensor de números.

Qué es un tensor

Un tensor es un contenedor de números ordenados en una o más dimensiones. Generaliza ideas que ya conoces.

Escalar (0D): un solo número, como 7.
Vector (1D): una fila de números, [7, 3, 5].
Matriz (2D): una tabla de filas × columnas.
Tensor (3D o más): una pila de matrices; una imagen es alto × ancho × 3.
  • "Tensor" es el nombre genérico: un vector es un tensor 1D y una matriz uno 2D.
  • Un lote (batch) de 32 imágenes es un tensor 4D: 32 × alto × ancho × 3.

Preprocesamiento habitual

Redimensionar todas al mismo tamaño: la red espera una entrada fija.
Normalizar los píxeles: pasar de [0, 255] a [0, 1] o centrarlos. La red aprende mejor con valores pequeños.
Aumentar los datos: crear variantes (rotar, voltear, recortar) para ganar robustez.

Aumento de datos

La idea

En vez de conseguir más fotos, fabricamos variantes de las que ya tenemos con transformaciones que no cambian la clase: un gato volteado sigue siendo un gato.

Voltear, rotar, recortar, hacer zoom o desplazar la imagen.
Cambiar brillo, contraste o color.
Beneficio: más ejemplos, así se sobreajusta menos y gana robustez.
Es gratis y solo se aplica al entrenamiento, nunca al set de prueba.

Qué es un MLP

Perceptrón multicapa

La red neuronal clásica: neuronas en capas donde cada una se conecta con todas las de la siguiente. Por eso se le dice densa o totalmente conectada.

Estructura: entrada → capas ocultas → salida, todas conectadas entre capas vecinas.
Para clasificar una imagen habría que aplanarla en un vector y metérsela.
  • Funciona bien con datos tabulares, pero con imágenes falla. Veamos por qué.

Por qué el MLP no basta

Aplanar la imagen en un vector y meterla a una red densa funciona muy mal.

Explosión de parámetros: 224 × 224 × 3 a una capa de 1000 neuronas son más de 150 millones de pesos.
Pierde la estructura espacial: al aplanar, dos píxeles vecinos quedan tan lejos como dos en esquinas opuestas.
No es invariante a la posición: un ojo aprendido en una esquina no se reconoce en el centro.
  • La solución a los tres problemas es la convolución.

La convolución

La operación central

En lugar de conectar cada neurona con todos los píxeles, un filtro pequeño (kernel) se desliza por toda la imagen detectando un patrón.

  • Un filtro es una matriz pequeña de pesos, típicamente de 3 × 3 o 5 × 5.
  • Sobre cada región: se multiplican sus pesos por los píxeles, se suman, y ese número va a la salida.
  • El filtro se desliza por toda la imagen y produce un mapa de características: dónde apareció el patrón.

La convolución, con números

Un kernel detector de bordes verticales sobre una región con un borde (oscuro a la izquierda, claro a la derecha):


región de la imagen        kernel
[ 10  10  80 ]           [ -1  0  1 ]
[ 10  10  80 ]     *     [ -1  0  1 ]
[ 10  10  80 ]           [ -1  0  1 ]

suma = (80-10) + (80-10) + (80-10) = 210   ->  valor ALTO
  • Se multiplica cada peso del kernel por el píxel de abajo y se suman los 9 productos: un solo número.
  • Salió alto porque justo ahí hay un borde vertical. En una zona plana (todo 10) daría 0.
  • Ese número se guarda, el kernel se desliza un píxel y repite por toda la imagen.

Qué es un filtro

Filtro = kernel

Son la misma cosa: la matriz pequeña de pesos. Los números que lleva dentro deciden qué patrón busca.

Cada filtro detecta un patrón: bordes verticales, horizontales, cierta textura o color.
Su mapa de características marca en qué partes de la imagen apareció ese patrón.
Clave: nadie los programa. Empiezan aleatorios y la red los aprende al entrenar.

Tres ideas clave

Conectividad local: cada neurona mira solo una pequeña región (su campo receptivo), no toda la imagen.
Pesos compartidos: el mismo filtro se usa en toda la imagen. Un filtro de 3 × 3 × 3 tiene solo 27 pesos.
Invariancia a la traslación: detecta su patrón sin importar dónde aparezca en la imagen.

La jerarquía de características

Nadie programa los filtros: la red los aprende. En una red entrenada se ve un patrón claro.

1Primeras capas
  • Detectan bordes y colores simples.
2Capas intermedias
  • Combinan bordes en texturas y formas: esquinas, curvas, rejillas.
3Capas profundas
  • Combinan formas en partes de objetos (un ojo, una rueda) y luego en objetos completos.

Múltiples filtros y canales

  • Una capa convolucional no aprende un filtro, sino muchos (por ejemplo 32 o 64).
  • Cada filtro detecta un patrón distinto; la salida es un apilado de mapas de características.
  • Esa profundidad se convierte en los canales de entrada de la siguiente capa.

Parámetros de la convolución

Tamaño del kernel: el ancho y alto del filtro (3 × 3 es lo más común).
Stride: cuántos píxeles se desplaza en cada paso. Un stride de 2 reduce la salida a la mitad.
Padding: agregar un borde de ceros. "Same" mantiene el tamaño; "valid" lo encoge.

Tamaño de la salida

Dado el tamaño de entrada, se calcula el de salida de la convolución:

$$O = \left\lfloor \frac{N - K + 2P}{S} \right\rfloor + 1$$

\(N\): tamaño de entrada · \(K\): tamaño del kernel.
\(P\): padding · \(S\): stride (el paso del filtro).

Pooling (submuestreo)

Max pooling

Divide el mapa en regiones (por ejemplo 2 × 2) y de cada una conserva solo el valor máximo.

Average pooling

En lugar del máximo, conserva el promedio de cada región.

Para qué sirve el pooling

Reduce la resolución y, con ella, el número de cálculos y parámetros siguientes.
Aporta invariancia a pequeñas traslaciones: si el patrón se mueve un píxel, el máximo no cambia.
Amplía el campo receptivo: cada neurona resume una región más grande de la imagen.

Función de activación ReLU

Tras cada convolución se aplica una no linealidad; en las CNN la estándar es ReLU:

$$\text{ReLU}(z) = \max(0, z)$$

  • Deja pasar los valores positivos y pone en cero los negativos.
  • Es rápida de calcular y evita en gran medida el gradiente que se desvanece.
  • Sin no linealidad, apilar convoluciones sería inútil: la red se reduciría a algo lineal.

Arquitectura de una CNN

Una CNN de clasificación encadena bloques que se repiten y termina en un clasificador.

1Entrada
  • El tensor de la imagen (alto × ancho × canales).
2Bloques convolucionales
  • Se repite [Convolución → ReLU → Pooling]. La resolución baja y el número de filtros sube.
3Aplanado (flatten)
  • El último mapa de características se convierte en un vector.

Arquitectura de una CNN

4Capas densas
  • Una o dos capas totalmente conectadas combinan las características de alto nivel.
5Salida con softmax
  • Produce una probabilidad por clase; la mayor es la predicción.
La intuición

Las convoluciones extraen qué hay en la imagen (las características); las capas densas deciden qué clase es a partir de ellas.

Entrenar una CNN

El mismo ciclo

Una CNN se entrena como cualquier red: repite un ciclo hasta que la pérdida es baja.

  • 1. Forward: la imagen atraviesa la red y produce probabilidades por clase.
  • 2. Pérdida: se mide qué tan lejos está de la etiqueta real.
  • 3. Backpropagation: se calcula el gradiente respecto a cada peso, incluidos los filtros.
  • 4. Actualizar: el optimizador ajusta los pesos y se repite con el siguiente lote.

Pérdida: entropía cruzada

Para clasificación penaliza asignar poca probabilidad a la clase correcta:

$$L = -\sum_{c=1}^{C} y_c \log(\hat{y}_c)$$

  • \(y_c\) vale 1 para la clase correcta y 0 para las demás.
  • \(\hat{y}_c\) es la probabilidad que la red asignó a la clase \(c\).
  • La pérdida es baja cuando la red da alta probabilidad a la clase correcta.

Data augmentation

Más datos, gratis

Como las CNN necesitan muchos datos, se generan variantes de cada imagen para ampliar el entrenamiento y ganar robustez.

Voltear, rotar, recortar o hacer zoom.
Cambiar brillo, contraste o color; desplazar la imagen.

Regularización

Dropout: apaga al azar algunas neuronas para que la red no dependa de ninguna.
Regularización L2: penaliza pesos grandes.
Batch normalization: normaliza las activaciones; estabiliza y acelera el entrenamiento.
Early stopping: detener cuando la pérdida de validación deja de bajar.

Transfer learning

Casi nunca se entrena desde cero

Se parte de un modelo ya entrenado en un conjunto enorme (típicamente ImageNet, más de un millón de imágenes y 1000 clases).

  • Ese modelo ya aprendió filtros generales (bordes, texturas, formas) útiles para casi cualquier problema de visión.

Dos estrategias

Extracción de características

Se congelan las capas convolucionales y solo se entrena un clasificador nuevo al final. Ideal con pocos datos.

Fine-tuning

Además del clasificador, se reentrenan con tasa pequeña algunas de las últimas capas convolucionales.

  • Permite excelente precisión con unos pocos cientos o miles de imágenes, algo imposible entrenando desde cero.

Arquitecturas famosas

Muchas nacieron del concurso ImageNet (ILSVRC).

LeNet-5 (1998): la CNN pionera, para dígitos escritos a mano.
AlexNet (2012): ganó ImageNet y desató la revolución. ReLU, dropout y GPU.
VGG (2014): apilar muchas convoluciones pequeñas de 3 × 3. Simple y profunda.

Arquitecturas famosas

Inception / GoogLeNet (2014): módulos con filtros de varios tamaños en paralelo.
ResNet (2015): conexiones residuales que permiten entrenar cientos de capas. Muy influyente.
EfficientNet (2019): escala profundidad, ancho y resolución de forma balanceada.

Vision Transformers (ViT)

Desde 2020

Parten la imagen en parches (por ejemplo de 16 × 16), los tratan como una secuencia y aplican el mecanismo de atención.

Con suficientes datos igualan o superan a las CNN.
Requieren más datos; por eso las CNN siguen muy usadas, a menudo combinadas.

Más allá de la clasificación

Detección: R-CNN (precisas) y YOLO / SSD (en tiempo real) hallan y clasifican varios objetos con recuadros.
Segmentación semántica: encoder–decoder como U-Net clasifican cada píxel; usadas en imágenes médicas.
Segmentación de instancias: Mask R-CNN separa además cada objeto individual.

Evaluar el modelo

Exactitud: porcentaje de imágenes bien clasificadas. Útil con clases balanceadas.
Precisión y recall: clave con clases desbalanceadas o cuando un error cuesta más.
Matriz de confusión: muestra qué clases se confunden entre sí.
Top-5 accuracy: acierto si la clase correcta está entre las 5 más probables.

Aplicaciones

Medicina: detección de tumores en radiografías, resonancias y retinografías.
Vehículos autónomos: peatones, señales, carriles y otros autos.
Seguridad y biometría: reconocimiento facial y de huellas.
Agricultura: detección de plagas y enfermedades por foto.
Industria: control de calidad y detección de defectos.
Vida diaria: buscar fotos, filtros de cámara, OCR.

Consideraciones éticas

Sesgos: si los datos no representan a todos los grupos, el modelo falla más con los subrepresentados.
Privacidad y vigilancia: el reconocimiento facial masivo plantea problemas de derechos.
Ataques adversariales: cambios imperceptibles pueden engañar a la red.
Explicabilidad: en decisiones críticas hay que poder explicar el porqué.