Semestre 02, 2026
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.
El mismo objeto puede verse de infinitas maneras y aun así ser la misma clase.
Una matriz de alto × ancho, con valores de 0 (negro) a 255 (blanco).
Tres matrices apiladas: rojo, verde y azul. Su forma es alto × ancho × 3.
Un tensor es un contenedor de números ordenados en una o más dimensiones. Generaliza ideas que ya conoces.
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.
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.
Aplanar la imagen en un vector y meterla a una red densa funciona muy mal.
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 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
Son la misma cosa: la matriz pequeña de pesos. Los números que lleva dentro deciden qué patrón busca.
Nadie programa los filtros: la red los aprende. En una red entrenada se ve un patrón claro.
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$$
Divide el mapa en regiones (por ejemplo 2 × 2) y de cada una conserva solo el valor máximo.
En lugar del máximo, conserva el promedio de cada región.
Tras cada convolución se aplica una no linealidad; en las CNN la estándar es ReLU:
$$\text{ReLU}(z) = \max(0, z)$$
Una CNN de clasificación encadena bloques que se repiten y termina en un clasificador.
Las convoluciones extraen qué hay en la imagen (las características); las capas densas deciden qué clase es a partir de ellas.
Una CNN se entrena como cualquier red: repite un ciclo hasta que la pérdida es baja.
Para clasificación penaliza asignar poca probabilidad a la clase correcta:
$$L = -\sum_{c=1}^{C} y_c \log(\hat{y}_c)$$
Como las CNN necesitan muchos datos, se generan variantes de cada imagen para ampliar el entrenamiento y ganar robustez.
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).
Se congelan las capas convolucionales y solo se entrena un clasificador nuevo al final. Ideal con pocos datos.
Además del clasificador, se reentrenan con tasa pequeña algunas de las últimas capas convolucionales.
Muchas nacieron del concurso ImageNet (ILSVRC).
Parten la imagen en parches (por ejemplo de 16 × 16), los tratan como una secuencia y aplican el mecanismo de atención.