Con este tema comienza una nueva etapa del curso. Hasta ahora trabajamos principalmente con visión por computadora clásica: imágenes como matrices, espacios de color, filtros, bordes, histogramas y transformaciones geométricas. Todo eso sigue siendo importante, pero ahora damos un paso más hacia el aprendizaje profundo.
Las redes convolucionales, conocidas como CNN por Convolutional Neural Networks, son una de las ideas más influyentes en la historia moderna de la visión por computadora. Su aparición permitió que las máquinas dejaran de depender tanto de características diseñadas manualmente y empezaran a aprender representaciones visuales directamente desde los datos.
En este tema veremos por qué surgieron, cuál es su intuición principal, cómo procesan imágenes y por qué resultaron mucho más adecuadas que las redes totalmente conectadas para tareas visuales.
Una red neuronal totalmente conectada puede, en teoría, recibir los píxeles de una imagen como entrada. Sin embargo, este enfoque presenta problemas importantes cuando trabajamos con imágenes reales:
Por ejemplo, una imagen pequeña de 224 x 224 x 3 ya contiene más de 150 mil valores. Conectar cada uno de ellos densamente con una capa grande produce una cantidad enorme de pesos.
La idea principal de una CNN es muy elegante: en lugar de conectar cada píxel con cada neurona, se aplican pequeños filtros locales que recorren la imagen buscando patrones. De este modo, el modelo aprende a detectar características visuales de forma jerárquica.
Esos patrones pueden ser:
Esto permite explotar la estructura bidimensional de la imagen y reutilizar los mismos filtros en distintas posiciones.
El término “convolucional” proviene de la operación de convolución. En este contexto, una convolución consiste en aplicar un pequeño filtro o kernel que se desplaza sobre la imagen y calcula respuestas locales.
La idea se parece mucho a los filtros clásicos que ya vimos en procesamiento de imágenes. La diferencia es que, en una CNN, esos filtros no son diseñados a mano por el programador, sino aprendidos automáticamente durante el entrenamiento.
Este punto es decisivo: la red aprende qué patrones visuales son útiles para resolver la tarea.
Una CNN aprende de forma jerárquica. Las primeras capas suelen detectar patrones simples. Las capas intermedias combinan esos patrones en estructuras más complejas. Las capas profundas construyen representaciones cada vez más abstractas.
En una tarea de clasificación de imágenes, por ejemplo:
Esta construcción progresiva es una de las razones por las que las CNN funcionan tan bien en visión.
La entrada de una CNN suele ser una imagen representada como un tensor. Si la imagen es en color, esto incluye ancho, alto y canales.
Por ejemplo, una imagen RGB de 224 x 224 puede representarse como:
224 x 224 x 3
o, según el framework, como un tensor reordenado en otra convención de dimensiones. Lo importante es recordar que la imagen entra manteniendo su estructura espacial, no como un vector completamente plano desde el principio.
Cuando una capa convolucional aplica un filtro sobre la imagen, produce una nueva salida llamada mapa de características o feature map. Este mapa indica en qué regiones de la entrada el patrón aprendido aparece con mayor intensidad.
Si un filtro detecta bordes verticales, por ejemplo, su mapa de características será fuerte en las regiones donde ese tipo de borde esté presente.
Una misma capa suele tener muchos filtros. Por eso produce múltiples mapas, cada uno especializado en un patrón distinto.
Una propiedad clave de las CNN es que los mismos pesos del filtro se reutilizan en toda la imagen. Esto se llama compartición de pesos.
Gracias a esto:
Esta es una de las razones técnicas más importantes del éxito de las CNN.
Otra idea central es la localidad. Cada neurona de una capa convolucional no mira toda la imagen, sino solo una pequeña región local de la entrada. Esa región se conoce como campo receptivo local.
Esto tiene mucho sentido en imágenes, porque los patrones visuales relevantes suelen aparecer primero a pequeña escala: bordes, esquinas, texturas y transiciones locales.
Aunque existen muchas arquitecturas, una CNN clásica suele combinar varios tipos de capas:
En este tema nos enfocamos en la intuición general. Más adelante veremos con detalle cada componente.
Después de una convolución, suele aplicarse una función de activación no lineal, como ReLU. Esto permite que la red aprenda relaciones complejas y no quede limitada a transformaciones puramente lineales.
La secuencia típica es:
Este patrón se repite muchas veces a lo largo de la red.
Las capas de pooling reducen la dimensión espacial de los mapas de características. Esto ayuda a:
Aunque estudiaremos pooling en el tema 18, conviene mencionarlo aquí porque forma parte del flujo clásico de una CNN.
A medida que la red avanza, los mapas de características se vuelven más abstractos y menos parecidos a la imagen original. Finalmente, la información extraída se combina para producir una salida, como una clase o una probabilidad.
Por ejemplo:
La red no memoriza píxeles individuales. Aprende representaciones internas que le permiten generalizar.
Las redes convolucionales ofrecen ventajas muy importantes para visión por computadora:
Estas ventajas explican por qué se volvieron la base de gran parte de la visión profunda moderna.
Es interesante notar que las CNN no surgen de la nada. Conceptualmente, retoman ideas que ya vimos en visión clásica:
La gran diferencia es que los filtros ya no son definidos manualmente, sino aprendidos automáticamente desde datos.
Una CNN aprende parámetros de filtros y pesos internos que minimizan el error de la tarea para la que fue entrenada. En otras palabras, aprende qué patrones visuales son útiles para clasificar, detectar o segmentar correctamente.
En las primeras capas, esos patrones suelen ser relativamente interpretables. En capas profundas, las representaciones son mucho más abstractas y difíciles de visualizar directamente.
Aunque las CNN son más eficientes que redes densas para imágenes, siguen teniendo una gran capacidad de modelado. Eso significa que pueden aprender relaciones complejas, pero también que necesitan suficientes ejemplos para generalizar bien.
Por eso suelen beneficiarse de:
Más adelante veremos que en muchos problemas reales no se entrena una CNN grande desde cero, sino que se parte de modelos ya entrenados.
Las CNN no se usan solo para clasificación de imágenes. También son la base de muchas tareas visuales modernas:
Esto demuestra que su importancia excede ampliamente el problema de “decir qué hay en una foto”.
A pesar de su potencia, las CNN también presentan desafíos:
Por eso su uso efectivo no depende solo de la arquitectura, sino también de buenos datos, evaluación rigurosa y entrenamiento adecuado.
Supongamos que queremos clasificar imágenes de gatos y perros:
Al entrenarse con muchos ejemplos, la red aprende qué combinaciones internas distinguen mejor a un gato de un perro.
Es importante evitar una idea equivocada: aunque las CNN logren resultados impresionantes, eso no significa que comprendan la escena del mismo modo que una persona. Su funcionamiento se basa en patrones estadísticos aprendidos a partir de ejemplos.
Aun así, para tareas visuales bien definidas pueden alcanzar rendimientos extraordinariamente altos y muy útiles en la práctica.
En la segunda mitad del curso utilizaremos PyTorch para construir y entrenar CNN. Esa biblioteca nos permitirá definir capas convolucionales, funciones de activación, optimizadores y todo el flujo de entrenamiento.
Por ahora lo importante es comprender la lógica conceptual. Luego llevaremos esas ideas al código.
Este tema funciona como puerta de entrada. A partir de ahora profundizaremos en los componentes que hacen funcionar a una CNN:
Es decir, empezamos la transición desde la intuición general hacia la implementación práctica.
Las redes convolucionales representan el puente entre el procesamiento clásico de imágenes y la visión por computadora basada en aprendizaje profundo. Su gran aporte fue demostrar que una máquina puede aprender automáticamente filtros visuales útiles a partir de datos, en lugar de depender por completo de características diseñadas manualmente.
Comprender la intuición detrás de una CNN es más importante que memorizar detalles aislados. Si entendemos por qué aprovechan la estructura espacial, por qué usan filtros y cómo construyen representaciones jerárquicas, estaremos listos para estudiar su funcionamiento con mayor profundidad.
En el próximo tema veremos las capas convolucionales en profundidad, donde analizaremos más de cerca cómo opera una convolución y qué parámetros controlan su comportamiento.