061 — Clasificación y representación visual

← Clase anterior · Índice de la parte · Clase siguiente →

Parte: 05 — Lenguaje, visión, audio e IA multimodal
Nivel: avanzado · Horas estimadas: 6
Laboratorio: perception · Estado: EXECUTABLE_CORE

🎯 Propósito

Comprender clasificación y representación visual dentro de la evolución de la inteligencia artificial, implementar un experimento mínimo verificable y distinguir qué parte constituye evidencia frente a una afirmación todavía no comprobada.

📚 Resultados de aprendizaje

Al finalizar podrás:

  1. Explicar clasificación y representación visual usando los conceptos visión, features, clasificación, augmentación.
  2. Ejecutar el laboratorio con una semilla explícita y revisar su contrato JSON.
  3. Identificar al menos un supuesto, una limitación y un riesgo de aplicación.
  4. Comparar el enfoque con la etapa anterior de la ruta de aprendizaje.
  5. Producir una evidencia reproducible y una conclusión que no exceda los datos.

🧩 Conceptos centrales

visión, features, clasificación, augmentación

🗺️ Ubicación en el mapa de la IA

La visión por computador fue el dominio donde el aprendizaje profundo demostró su superioridad empírica: AlexNet (2012) redujo el error top-5 de ImageNet del 26 % al 16 % y desencadenó la era moderna del deep learning que estudiaste en la parte 04. Esta clase conecta esa historia con la práctica: cómo una imagen se convierte en números, cómo esos números se transforman en representaciones útiles y cómo un clasificador decide sobre ellas. Todo lo que sigue en esta parte —detección (062), OCR (063), modelos visión-lenguaje (069)— se construye sobre la idea de representación visual que se formaliza aquí.

📖 Fundamentos

🖼️ La imagen como tensor

Una imagen digital es un tensor de forma alto × ancho × canales. Una foto RGB de 224×224 píxeles son 150 528 números enteros en [0, 255] (o flotantes normalizados). El problema central de la visión es que ese espacio crudo es semánticamente inútil: dos fotos del mismo gato con distinta iluminación distan más, píxel a píxel, que un gato y una lavadora del mismo color medio. Clasificar exige transformar píxeles en una representación donde la semántica sea geometría: imágenes de la misma clase deben quedar cerca.

🧰 Features diseñadas a mano (era pre-deep)

Antes de 2012 las representaciones se diseñaban manualmente:

El pipeline clásico era imagen → detector de features → descriptor → SVM/k-NN. Funcionaba, pero cada dominio nuevo exigía reingeniería manual de features.

🧠 Features aprendidas: la convolución

Una capa convolucional aprende bancos de filtros pequeños (p. ej. 3×3) que se deslizan sobre la imagen. La operación en cada posición es un producto punto entre el filtro y el parche:

salida[i,j] = Σ_u Σ_v  filtro[u,v] · imagen[i+u, j+v]  + sesgo

Tres propiedades hacen a la convolución adecuada para imágenes:

  1. Compartición de pesos: el mismo filtro se aplica en toda la imagen (un detector de bordes sirve en cualquier posición) → muchos menos parámetros que una capa densa.
  2. Localidad: cada salida depende solo de un vecindario, como los campos receptivos de la corteza visual.
  3. Jerarquía: apilar capas compone detectores: bordes → texturas → partes → objetos.

La activación de la penúltima capa de una CNN entrenada (p. ej. el vector de 2048 dimensiones de ResNet-50 tras el pooling global) es el embedding visual: una representación compacta donde la distancia refleja similitud semántica. Los Vision Transformers (ViT) llegan a representaciones análogas troceando la imagen en parches de 16×16 y aplicando atención.

🎯 Clasificación: de logits a probabilidades

Sobre el embedding z se aplica una capa lineal que produce logits s = W·z + b (un número por clase) y la función softmax los convierte en una distribución:

softmax(s)_k = exp(s_k) / Σ_j exp(s_j)

La pérdida de entrenamiento es la entropía cruzada −log p(clase correcta). Las métricas de evaluación son accuracy, matriz de confusión y top-k accuracy (la clase correcta está entre las k más probables); con clases desbalanceadas, precisión/recall por clase.

🔄 Augmentación y transferencia

🧮 Ejemplo trabajado

Paso 1 — una convolución a mano. Parche de imagen 3×3 (intensidades) y filtro de borde vertical tipo Sobel:

parche:            filtro:
 10  10  90        -1  0  +1
 10  10  90        -2  0  +2
 10  10  90        -1  0  +1

salida = (10·-1)+(10·0)+(90·1)
       + (10·-2)+(10·0)+(90·2)
       + (10·-1)+(10·0)+(90·1)
       = (-10+90) + (-20+180) + (-10+90) = 320

El valor alto (320) señala un borde vertical fuerte: a la izquierda oscuro (10), a la derecha claro (90). Sobre una zona uniforme (todo 10) la salida sería 0.

Paso 2 — de logits a decisión. Supón que la cabeza lineal produce logits s = [2.0, 1.0, 0.1] para las clases [gato, perro, coche]:

exp(s) = [7.389, 2.718, 1.105]      suma = 11.212
softmax = [0.659, 0.242, 0.099]

Predicción: gato con probabilidad 0.659. Nota que softmax siempre produce una distribución, incluso ante una imagen de una tostadora: la confianza no es evidencia de que la entrada pertenezca a alguna de las clases conocidas.

📊 Propiedades y comparación

Representación Origen Dimensión típica Datos necesarios Fortaleza Límite
HOG / SIFT Diseño manual 100–3 000 Ninguno (sin entrenamiento) Interpretable, barata Tope de precisión bajo
CNN entrenada desde cero Aprendida 512–2 048 10⁵–10⁶ imágenes Estado del arte clásico Cara de entrenar
CNN preentrenada + linear probe Transferida 512–2 048 10²–10⁴ imágenes Muy eficiente en datos Hereda sesgos del preentrenamiento
ViT preentrenado Transferida (atención) 768–1 024 10²–10⁴ (fine-tune) Escala mejor con datos masivos Débil con poco preentrenamiento
flowchart LR
    A[Imagen H x W x 3] --> B[Capas convolucionales<br/>bordes → texturas → partes]
    B --> C[Pooling global]
    C --> D[Embedding visual z<br/>p. ej. 2048-D]
    D --> E[Capa lineal W·z + b]
    E --> F[Logits]
    F --> G[Softmax]
    G --> H[Distribución sobre clases]
    D -.-> I[Reutilizable:<br/>búsqueda, clustering,<br/>transfer learning]

⚠️ Errores conceptuales frecuentes

  1. "La CNN ve como un humano." Falso: las CNN son muy sensibles a texturas y a perturbaciones adversariales imperceptibles; los humanos priorizan formas. Son sistemas estadísticos, no réplicas de la percepción biológica.
  2. "Softmax alto = el modelo está seguro y tiene razón." Softmax normaliza logits, no calibra incertidumbre: un modelo puede dar 0.99 a una clase equivocada o a una entrada fuera de distribución que no pertenece a ninguna clase conocida.
  3. "Más augmentación siempre ayuda." Una augmentación que rompe la semántica de la clase (espejar caracteres, rotar 180° señales de tráfico) enseña invariancias falsas y degrada el desempeño.
  4. "El embedding es objetivo." El embedding hereda la distribución del preentrenamiento: si ImageNet subrepresenta ciertos contextos culturales, las distancias en el embedding también lo harán.
  5. "Accuracy global basta." Con 95 % de una clase mayoritaria, un clasificador que siempre predice esa clase logra 95 % de accuracy sin haber aprendido nada útil: hay que mirar la matriz de confusión por clase.

🚀 Del aprendizaje a la operación

Entre este núcleo educativo y un clasificador visual en producción faltan: un pipeline de datos con control de deriva (las cámaras y condiciones cambian con el tiempo), calibración de confianza y umbral de rechazo para entradas fuera de distribución, evaluación por subgrupos para detectar sesgos de desempeño, optimización de inferencia (cuantización, batching) y un circuito de revisión humana para los casos de baja confianza o alto costo de error.

🧪 Laboratorio

python lab.py

El laboratorio llama a ai_evolution.labs.run_lab("perception"). Esta decisión evita 183 implementaciones divergentes: cada clase tiene un entrypoint propio, pero los motores didácticos se prueban como una biblioteca común.

🔍 Evidencia esperada

📓 Notebooks

📝 Evaluación

Criterio Peso
Comprensión conceptual 25 %
Ejecución reproducible 25 %
Interpretación basada en evidencia 25 %
Riesgos, límites y mejora propuesta 25 %

Consulta assessment.md para preguntas y criterio de aceptación.

⚠️ Errores comunes

Síntoma Causa probable Corrección
El código corre, pero no hay conclusión Se confundió ejecución con aprendizaje Explica qué demuestra y qué no demuestra
El resultado cambia sin explicación No se registró semilla o configuración Conserva semilla, versión y parámetros
Se promete uso real Se extrapoló desde una demo educativa Declara entorno, datos, límites y revisión humana
Se copia una métrica aislada No existe baseline ni costo de error Añade comparación y criterio de decisión

❓ Preguntas frecuentes

¿Debo usar una API comercial?
No. El núcleo funciona localmente. Las extensiones LIVE se documentan por separado.

¿El laboratorio representa una implementación industrial?
No por sí solo. Enseña el contrato y el patrón; producción exige integración, seguridad, observabilidad, pruebas y operación.

¿Dónde profundizo?
Revisa las especializaciones enlazadas en el README raíz y la ruta siguiente.

🔗 Referencias


📜 Papers que fundamentan esta clase

Bloque generado por python scripts/link_papers_to_classes.py. La fuente es papers/catalog/papers.json.

Paper Año Qué desbloqueó Miniatura
P04 · Clasificación de ImageNet con redes neuronales convolucionales profundas 2012 El resultado que convirtió el deep learning en la corriente principal: margen amplio sobre los métodos de visión hechos a mano. notebook
P44 · Aprendizaje residual profundo para reconocimiento de imágenes 2015 El atajo identidad hace apilables cientos de capas. Es la misma idea aditiva de la LSTM, aplicada a la profundidad. notebook
P46 · Una imagen vale 16x16 palabras: Transformers para reconocimiento de imágenes a escala 2020 Trata la imagen como una secuencia de parches y aplica un Transformer puro: la convolución deja de ser imprescindible en visión. notebook

Cada ficha explica el problema anterior, la matemática mínima, los límites y los errores de atribución más frecuentes. Para leerlas con método: cómo leer un paper de IA · anexos matemáticos.


📚 Bibliografía de apoyo

Bloque generado por python scripts/link_sources_to_classes.py. Cada obra lleva su localizador verificado en sources/bibliography.json.

Los papers dicen de dónde salió el mecanismo. Estas obras lo desarrollan con el espacio que una clase no tiene: teoría completa, demostraciones y ejercicios.

Obra Edición Localizador Papel en esta clase
Goodfellow, Ian, Bengio, Yoshua y Courville, Aaron — Deep Learning 2016 ISBN 9780262035613 · web de la obra citada en las referencias de esta clase · cap. 9
Szeliski, Richard — Computer Vision: Algorithms and Applications 2.ª · 2022 web de la obra · pendiente de confirmar en su catálogo citada en las referencias de esta clase
Jurafsky, Daniel y Martin, James H. — Speech and Language Processing 2.ª (la 3.ª circula como borrador abierto sin ISBN) · 2009 ISBN 9780131873216 · web de la obra obra de referencia de la parte 05 · lenguaje y habla

⬅️ Clase anterior

060 — Proyecto: modelo trazable de extremo a extremo

➡️ Siguiente clase

062 — Detección, segmentación y pose


📝 Evaluación completa

❓ Preguntas

  1. Define clasificación y representación visual sin usar una marca o framework como definición.
  2. Explica la relación entre visión, features, clasificación, augmentación.
  3. Ejecuta lab.py dos veces con la misma semilla. ¿Qué debe conservarse?
  4. Identifica una afirmación permitida y una afirmación exagerada sobre el resultado.
  5. Propón una prueba negativa o un caso límite.

🏆 Reto verificable

Amplía el resultado del laboratorio con una clave student_extension que incluya:

✅ Criterio de aceptación