Tema 1: Introducción a Computer Vision
Contexto histórico
La visión por computador (Computer Vision) es el campo de la IA que permite a las máquinas interpretar y comprender el contenido visual del mundo. Su historia se divide en varias etapas:
Métodos heurísticos (pre-deep learning)
- Detector de bordes Canny: Algoritmo de 1986 para detectar bordes en imágenes mediante gradientes.
- Detector de bordes Sobel: Operador de gradiente para resaltar bordes verticales y horizontales.
- Detector de esquinas Harris: Identifica puntos de interés (esquinas) en imágenes para matching y seguimiento.
- SIFT (Scale-Invariant Feature Transform): Extrae características robustas a escala, rotación e iluminación. Base de muchos sistemas de reconocimiento clásicos.
- Bag of Visual Words (BoW visual): Adaptación del BoW de NLP para clasificar imágenes mediante histogramas de características visuales.
- SVM para clasificación de imágenes: Combinado con características HOG (Histogram of Oriented Gradients) o SIFT para clasificación.
Primeras redes convolucionales y el cambio de paradigma
ImageNet: Base de datos de más de 14 millones de imágenes etiquetadas en 20.000 categorías. Creada por Fei-Fei Li (Stanford, 2009). Su existencia fue fundamental para el desarrollo del deep learning en visión.
ILSVRC (ImageNet Large Scale Visual Recognition Challenge): Competición anual desde 2010. En 2012, AlexNet (Krizhevsky, Sutskever, Hinton) ganó con un error del 15.3%, vs 26% del segundo mejor método tradicional. Este resultado marcó el inicio de la era del deep learning en computer vision.
Tema 2: Redes Neuronales Convolucionales (CNN)
Inspiración biológica
Las CNNs están inspiradas en el córtex visual del cerebro humano, donde diferentes neuronas responden a diferentes regiones del campo visual. Las primeras neuronas detectan características simples (bordes, colores) y las capas superiores combinan estas para reconocer objetos complejos.
La operación de convolución
La convolución aplica un filtro (kernel) sobre la imagen deslizándolo por todas las posiciones. El kernel es una pequeña matriz de pesos aprendidos durante el entrenamiento. Para cada posición, se calcula el producto punto entre el kernel y la región de la imagen.
Ejemplo: Imagen 32×32 RGB (3 canales) con kernel 3×3 → Se aplica el kernel sobre cada píxel de cada canal, generando un mapa de características (feature map).
Tipos de kernels
- Detección de bordes: Kernels que resaltan cambios bruscos de intensidad (verticales, horizontales, diagonales).
- Desenfoque (Blur): Kernels gaussianos que promedian píxeles vecinos, suavizando la imagen.
- Realce: Kernels que amplifican detalles de alta frecuencia.
- Detección de texturas: Kernels sensibles a patrones repetitivos.
- Afilado (Sharpening): Kernels que incrementan el contraste local.
- Kernels aprendidos: En redes profundas, los kernels se optimizan automáticamente durante el entrenamiento mediante backpropagation.
Tema 3: Arquitecturas CNN
Capas de convolución
Cada capa convolucional aplica múltiples filtros, generando múltiples mapas de características. Los hiperparámetros clave son:
- Stride: Paso del filtro al deslizarse. Stride=1: se mueve píxel a píxel. Stride=2: reduce la resolución a la mitad.
- Padding válido (valid): Sin relleno. La salida es más pequeña que la entrada.
- Padding mismo (same): Se añaden ceros alrededor de la imagen para que la salida tenga el mismo tamaño que la entrada.
Fórmula de tamaño de salida: ((W - K + 2P) / S) + 1, donde W=tamaño entrada, K=kernel size, P=padding, S=stride.
Capas de Pooling
Las capas de pooling, también conocidas como capas de agrupamiento o submuestreo, reducen progresivamente la dimensión espacial (ancho y alto, NO la profundidad) de los mapas de características. Esto reduce la cantidad de parámetros y cálculos en la red.
El proceso se realiza de forma independiente en cada profundidad del mapa de características. Se aplica una ventana (usualmente 2×2 o 3×3 píxeles) que se desplaza sobre cada mapa de características. En cada posición, se realiza una operación que resume la información de esa región.
Tipos de Pooling
- Max Pooling: Toma el valor máximo dentro de la ventana de pooling. Es la forma más común. Efectivo para capturar la presencia de características en regiones de la imagen, independientemente de las variaciones menores en esas regiones. Ej: ventana 2×2 → selecciona el valor más alto de los 4 píxeles.
- Average Pooling: Calcula el promedio de los valores dentro de la ventana. Menos común que Max Pooling. Suaviza las características y puede ser útil cuando la uniformidad de la información es más relevante.
Hiperparámetros del Pooling
- Tamaño de ventana: Típicamente 2×2. Una ventana más grande produce una reducción más significativa de la dimensión espacial.
- Stride: Distancia entre aplicaciones consecutivas de la ventana. Un stride mayor reduce más la dimensión espacial.
Ventajas de las capas de Pooling
- Reducción de dimensionalidad: Disminuye la cantidad de parámetros y cálculos en capas subsiguientes → mayor eficiencia computacional.
- Reducción del sobreajuste: Menos parámetros → la red es menos propensa a memorizar detalles específicos de los datos de entrenamiento.
- Invariancia a la traslación: Al agrupar características similares, permite que la red detecte características independientemente de su posición exacta en la imagen. Esto es especialmente valioso en reconocimiento y clasificación de imágenes, donde el objeto puede no estar en el mismo lugar en todas las imágenes.
Capa de Flattening
La capa de flattening (aplanamiento) juega un papel crucial en la transición entre las capas de convolución y pooling y las capas completamente conectadas (fully-connected). Actúa como un puente entre el procesamiento tensorial y la clasificación final.
Las capas completamente conectadas esperan vectores de entrada 1D, no tensores 3D. Por tanto, la salida de las capas de convolución y pooling debe transformarse de un formato tridimensional a uno unidimensional.
Cómo funciona
El proceso es conceptualmente simple: toma un tensor 3D y lo reorganiza en un vector 1D. No implica ninguna computación compleja ni cambio en los valores; simplemente cambia la forma en que se organizan los datos.
Ejemplo del PDF: Si la salida de la última capa de pooling es un tensor de dimensiones 5×5×32, la capa de flattening lo reorganiza en un vector 1D de 800 elementos (5×5×32 = 800).
Impacto en la red
El tamaño del vector aplanado influye directamente en el número de conexiones (y por tanto, en el número de pesos) en la siguiente capa completamente conectada. Una salida de pooling más grande dará como resultado un vector aplanado más largo y, en consecuencia, más parámetros en las capas subsiguientes. Esto tiene implicaciones en la capacidad de la red, su propensión al sobreajuste y sus requisitos computacionales.
Sin la capa de flattening, sería imposible conectar las capas de convolución y pooling (que manejan tensores 3D) con las capas completamente conectadas (que requieren vectores 1D).
Arquitecturas CNN clásicas destacadas
- LeNet-5 (1998): Primera CNN moderna. Diseñada para reconocimiento de dígitos escritos a mano (MNIST).
- AlexNet (2012): 5 capas conv + 3 FC. ReLU como activación. Dropout para regularización. Ganó ILSVRC 2012.
- VGGNet (2014): Arquitectura simple con kernels 3×3. Demostró que la profundidad es clave.
- Inception/GoogLeNet (2014): Módulos inception con múltiples tamaños de kernel en paralelo.
- ResNet (2015): Conexiones residuales (skip connections) para entrenar redes muy profundas (50, 101, 152 capas). Resuelve el problema de degradación del gradiente.
- EfficientNet (2019): Escala eficientemente profundidad, anchura y resolución. Estado del arte en relación parámetros/rendimiento.
Tema 4: Data Augmentation
¿Qué es la Data Augmentation?
El Data Augmentation (aumento de datos) es una técnica esencial en el aprendizaje automático, particularmente en visión por computadora. Su caso de uso principal es enriquecer los conjuntos de datos de entrenamiento sin necesidad de recopilar datos adicionales. Al transformar las imágenes de maneras diversas, el aumento de datos simula la variabilidad que un modelo encontrará en el mundo real.
Es especialmente valiosa cuando los datos son escasos o costosos de obtener. Las CNN son propensas al sobreajuste con datasets pequeños o poco variados: el Data Augmentation aborda este problema creando versiones modificadas de las imágenes existentes.
Tipos de Data Augmentation para CNN
Transformaciones Geométricas
Ayudan al modelo a reconocer objetos desde diferentes perspectivas y escalas:
- Rotación: Girar la imagen en un ángulo (ej. ±45°).
- Traslación: Desplazar la imagen en el espacio horizontal o verticalmente.
- Escalado: Cambiar el tamaño de la imagen.
- Volteo (flip): Invertir la imagen horizontal o verticalmente.
- Deformaciones: Distorsiones locales que simulan variaciones naturales.
Ajustes de Color
Hacen al modelo más robusto a variaciones de iluminación y color del mundo real:
- Brillo: Aumentar (Brighter) o disminuir (Darker) aleatoriamente.
- Contraste: Ajustar el rango dinámico de la imagen.
- Saturación: Modificar la intensidad de los colores.
- Escala de grises (Grayscale): Convertir a blanco y negro con cierta probabilidad.
Recorte Aleatorio (Random Crop)
Recortar aleatoriamente secciones de la imagen. Ayuda al modelo a enfocarse en diferentes características y a aprender a reconocer objetos que están parcialmente ocultos o fuera de centro.
Ruido Gaussiano
Añadir diferentes tipos de ruido (Noise added) hace al modelo más resistente a variaciones y artefactos en las imágenes, comunes en situaciones del mundo real.
Oclusión
Cubrir partes de la imagen. Simula situaciones donde los objetos de interés están parcialmente bloqueados.
Data Augmentation vs Synthetic Data
Son dos técnicas para mejorar la calidad y cantidad de datos disponibles para entrenar modelos, pero operan de manera diferente:
| Aspecto | Data Augmentation | Synthetic Data |
|---|---|---|
| Definición | Toma datos existentes y aplica transformaciones para crear nuevas variaciones | Datos generados completamente por algoritmos o simulaciones, sin ser recolectados del mundo real |
| Método de generación | Transformaciones geométricas, ajustes de color, ruido, oclusión… | Gráficos por computadora (CGI), simuladores para datos sensoriales, GANs |
| Coste | Bajo — se aplica en tiempo de entrenamiento | Alto — la generación puede ser computacionalmente costosa |
| Ventajas | Mejora la robustez del modelo, previene sobreajuste, fácil de implementar | Puede generar grandes cantidades de datos, cubrir escenarios raros o peligrosos, control total sobre las condiciones |
| Desventajas | No puede cubrir todos los escenarios posibles; las transformaciones deben seleccionarse cuidadosamente | Compleja de generar; riesgo de no representar con precisión la realidad (domain gap) |
| Uso típico | Estándar en todos los proyectos CV | Casos con escasez severa de datos reales (medicina, seguridad, vehículos autónomos) |
Uso complementario: ambas técnicas pueden usarse de manera complementaria — el Data Augmentation mejora la robustez del modelo utilizando el conjunto de datos real, y el Synthetic Data expande el conjunto con ejemplos que podrían no estar presentes en los datos originales.
Tema 5: Transfer Learning
¿Qué es el Transfer Learning?
El Transfer Learning consiste en reutilizar un modelo preentrenado en una tarea o dataset grande (generalmente ImageNet con 1.2M imágenes y 1000 clases) como punto de partida para una nueva tarea con menos datos. Las capas iniciales aprenden características generales (bordes, texturas, formas simples) que son útiles en muchos dominios visuales.
Estrategias de Transfer Learning
- Feature extraction (extracción de características): Se congela toda la red preentrenada y solo se entrena la nueva cabeza de clasificación. Rápido y requiere pocos datos. Ideal cuando el nuevo dominio es similar a ImageNet.
- Fine-tuning (ajuste fino): Se descongela parte o toda la red preentrenada y se reentrenan con una tasa de aprendizaje muy pequeña. Mayor adaptación al nuevo dominio. Requiere más datos y tiempo.
- Fine-tuning progresivo: Se descongelan capas gradualmente de arriba hacia abajo (primeras las capas finales, luego las iniciales). Más estable y eficiente.
Modelos preentrenados populares
- ResNet (50, 101, 152): Ampliamente usado como backbone. Buen equilibrio entre rendimiento y eficiencia.
- EfficientNet (B0-B7): Escalado eficiente. Excelente relación parámetros/accuracy.
- MobileNet: Diseñado para dispositivos móviles y edge computing. Uso de depthwise separable convolutions.
- ConvNeXt: CNN moderna que incorpora ideas de ViT. Estado del arte en CNNs puras.
- CLIP (OpenAI): Preentrenado con texto e imagen. Permite zero-shot classification con descripciones textuales.
Tema 6: Transformers Visuales
Qué son los Transformers
Los transformers han revolucionado el aprendizaje profundo. Introducidos por primera vez en el paper "Attention is All You Need" (Vaswani et al., 2017), se basan en el mecanismo de atención. Aunque nacieron para NLP, su éxito llevó a explorar su uso en visión por computadora.
Los transformers visuales representan un cambio de paradigma: mientras las CNN tienen limitaciones para capturar relaciones a largo plazo entre diferentes partes de una imagen, los transformers pueden modelar directamente las relaciones globales entre los píxeles gracias a su mecanismo de autoatención.
El mecanismo de autoatención (Self-Attention)
El mecanismo de autoatención es el componente central de los transformers. A diferencia de las RNN (que procesan datos secuencialmente) y las CNN (que se enfocan en patrones locales), los transformers consideran todas las partes de la entrada simultáneamente.
Esto permite asignar diferentes niveles de importancia a las distintas partes de una entrada. En el contexto de imágenes, un transformer puede enfocarse en regiones específicas más relevantes para una tarea (clasificación, detección de objetos).
Cómo funciona matemáticamente
El mecanismo de autoatención utiliza tres matrices principales derivadas de la entrada:
- Query (Q): representa "qué estoy buscando".
- Key (K): representa "qué información tengo".
- Value (V): representa "cuál es el contenido de esa información".
Se calcula un puntaje de similitud entre cada Query y todas las Keys. Estos puntajes determinan la influencia relativa de cada elemento en los demás. Los resultados se combinan para generar una representación ponderada de la entrada, que captura tanto relaciones locales como globales.
Fórmula: Atención(Q, K, V) = softmax(QKᵀ / √d_k) × V
Arquitectura de un bloque Transformer (para visión)
ViT utiliza solo el componente de codificador. Cada bloque incluye:
- Capa de autoatención multi-cabezal: Permite al modelo considerar simultáneamente diferentes aspectos de la información.
- Capa feedforward totalmente conectada: Procesa las características extraídas por la autoatención e introduce no linealidad.
- Normalización: Estabiliza el proceso de entrenamiento.
- Conexiones residuales: Mejoran la estabilidad y facilitan el flujo de gradientes.
Vision Transformers (ViT)
El Vision Transformer (ViT), introducido por Dosovitskiy et al. en 2020, fue uno de los primeros modelos en adaptar la arquitectura de los transformers a la visión por computadora. Marcó un punto de inflexión al demostrar que los transformers pueden igualar o superar el rendimiento de las CNN en clasificación de imágenes.
Tokenización de imágenes — cómo ViT procesa imágenes
El principal desafío al aplicar transformers a datos visuales es la naturaleza bidimensional de las imágenes. ViT lo resuelve:
- División en parches: La imagen se divide en parches de tamaño fijo (ej. 16×16 píxeles). Para una imagen de 224×224 se obtienen 196 parches.
- Aplanamiento: Cada parche se aplana en un vector 1D.
- Proyección lineal (Linear Projection of Flattened Patches): Los parches aplanados se transforman en vectores mediante una capa de embedding.
- Embeddings posicionales (Patch + Position Embedding): Se añade información posicional para preservar la estructura espacial, crucial para las tareas de visión.
- Token [CLS]: Se añade un token de clasificación especial extra aprendible que recoge la información global para la predicción final.
- Transformer Encoder: La secuencia de embeddings pasa por múltiples bloques de codificador con autoatención multi-cabezal.
- MLP Head: El token [CLS] alimenta una cabeza de clasificación MLP (Multi-Layer Perceptron) para la predicción de clase final.
Variantes de ViT
Swin Transformers
Los Swin Transformers representan una evolución significativa al introducir un enfoque jerárquico que divide las imágenes en ventanas deslizantes (swins). Este diseño permite modelar relaciones locales y globales de manera eficiente.
- Los parches de imagen se agrupan y procesan progresivamente en diferentes niveles de resolución.
- Mejoran la eficiencia computacional y permiten capturar tanto patrones locales como globales.
- Arquitectura escalable para imágenes de alta resolución con menos requisitos computacionales que ViT original.
- Efectivos más allá de la clasificación: segmentación semántica y detección de objetos.
DeiT (Data-Efficient Image Transformers)
DeiT se centra en abordar una de las principales limitaciones de los Vision Transformers: la dependencia de grandes conjuntos de datos para el entrenamiento efectivo.
- Introduce técnicas de regularización y destilación de conocimiento desde redes convolucionales como profesores durante el entrenamiento.
- Permite que DeiT aprenda eficientemente incluso en escenarios con recursos limitados.
- Alto rendimiento con conjuntos de datos más pequeños.
- Mantiene la simplicidad arquitectónica y la eficiencia de los transformers visuales.
- Abre posibilidades para combinar lo mejor de las CNN y los ViT.
CNNs vs Vision Transformers
Son dos enfoques distintos para resolver problemas en visión por computadora, cada uno con sus propias fortalezas y limitaciones. La elección no depende de cuál tecnología sea inherentemente mejor, sino de su adecuación al contexto de la tarea.
| Aspecto | CNN | Vision Transformer (ViT) |
|---|---|---|
| Relaciones que captura | Patrones locales (por tamaño del kernel) | Relaciones globales a largo plazo entre diferentes regiones |
| Rendimiento con datos | Bueno con datasets pequeños o limitados | Mejora considerablemente a medida que crece el dataset; supera a CNN en gran escala |
| Requisitos computacionales | Eficientes, optimizadas para operaciones convolucionales | Elevados — demandan considerable memoria y capacidad de procesamiento |
| Flexibilidad arquitectónica | Limitada a operaciones convolucionales locales | Alta — facilita la adaptación a tareas específicas |
| Uso en dispositivos limitados | Adecuadas — eficiencia computacional | Difícil — implementación compleja en recursos restringidos |
| Cuándo usar | Recursos limitados, datos escasos, patrones locales importantes | Grandes datasets, relaciones globales complejas, escenarios de gran escala |
Conclusión del PDF: Los transformers visualales son ideales para problemas que requieren modelar relaciones globales complejas y trabajar con grandes conjuntos de datos. Las CNN siguen siendo una opción confiable y eficiente para aplicaciones donde los recursos son limitados o los datos disponibles son escasos.