🍑 Culo o Codo IA
← Volver a la app

📜 Changelog

Cómo ha ido evolucionando la habilidad de la IA para distinguir un culo de un codo.

Sobre los nombres: cada versión lleva nombre en clave en mayúsculas, como los modelos de IA grandes (Llama, Mistral, Capybara…), pero relacionado con el problema. Así es fácil hablar de ellas: "esto lo acertaba MOFLETE pero CULIBARA fallaba."

Cómo probar versiones antiguas: usa el selector "v… ▾" arriba a la derecha en cualquier página de la app, o entra directamente a /v1/, /v2/, etc.

v4.0
HOYUELO

Qué cambia respecto a CODETEX

  • Conocimiento anatómico fundamentado: el system prompt está construido a partir de Gray's Anatomy 41ed (Standring, 2016), Atlas de Netter, Borges (1973) sobre Langer lines, Blume-Peytavi (2008) sobre tricología y Bharti et al. (2015) sobre fossae lumbales laterales (hoyuelos de Venus).
  • Razonamiento estructurado en 4 pasos: extracción de features → consideración de la trampa de rotación → scoring con pesos → veredicto. Cada modelo enumera qué ve antes de decidir.
  • Detección explícita de features: la API devuelve booleanos por hoyuelo de Venus, olécranon, triángulo de Hueter, queratinización, hiperpigmentación, topología cóncava/convexa, patrón del vello, etc. La UI los muestra como chips → puedes auditar el razonamiento.
  • Anti-rotación: si el modelo solo ve "una rajita" sin más contexto, marca rotation_unclear: true y baja la confianza. Una raja vertical podría ser un culo en orientación normal, pero también un codo girado 90°.
  • Scoring con pesos derivados de literatura: hoyuelo de Venus = +30 culo (rotation-invariant, 100% específico), olécranon visible = +30 codo, queratinización = +15 codo, etc. Sin más adivinanza autoreporte.
  • Hallazgo anatómico real: el vello del codo crece asimétrico — más denso del lado medial (cubital) que del lateral (radial), por la inervación del nervio cutáneo medial. El prompt usa esta señal para distinguir codos de glúteos en zooms extremos.
  • Benchmark sintético ampliado a 35 imágenes (antes 15): añade culos rotados 90°/45°, simulación de hoyuelos de Venus, vello asimétrico medial>lateral, parches de hiperpigmentación, distractores (rodillas, espaldas).

Investigación que llevó a esta versión

  • Juan observó que su codo derecho tiene más pelo en un lado que en el otro de la rajita — y eso resultó ser un patrón anatómico documentado (territorio del nervio cutáneo medial del antebrazo).
  • Un agente de investigación profundizó en literatura anatómica: el cleft glúteo es cóncavo entre dos masas convexas; el codo es lo opuesto, una prominencia convexa sobre superficie plana. Esa topología, no la orientación, es la señal robusta.
  • Los hoyuelos de Venus (presentes en 20-40% de la población) son rotation-invariant: si los ves, es un culo. No hay análogo en codo.
v3.0
CODETEX

Qué cambia respecto a MOFLETE

  • 3 modelos en paralelo en lugar de 1: Mistral 24B + Llama 4 Scout 17B + Gemma 3 12B. Cada uno se equivoca en cosas distintas — el consenso de 3 supera al mejor individual.
  • Consensus voting en server-side: el endpoint cuenta votos y devuelve unanimous, majority o split. Si los tres discrepan, la app reconoce que la imagen es genuinamente ambigua en lugar de inventarse un veredicto.
  • Confianza basada en grado de acuerdo, no en lo que dice cada modelo: 95 % si los 3 coinciden, ~70 % si 2/3, ~35 % si discrepan.
  • Infraestructura few-shot lista: el endpoint puede inyectar imágenes de referencia anatómicas en el prompt (preparado en functions/_shared/few-shot.js). Pendiente de poblar con imágenes CC.
  • Benchmark medible: nueva página /benchmark que ejecuta un dataset etiquetado contra v1, v2 y v3 y muestra precisión real. El dataset empieza vacío y se rellena con material curado de quizzes ingleses + clips de El Hormiguero (uso evaluativo).
  • UI con votos individuales: en cada clasificación ves cómo votó cada uno de los 3 modelos, su confianza individual y razonamiento.

El coste real

  • 3 llamadas en paralelo ≈ 12-18 K neuronas por clasificación (vs ~5-8 K en MOFLETE).
  • Free tier de Cloudflare Workers AI: ~10 K/día → menos clasificaciones gratis al día.
  • A cambio: precisión real superior y honesto cuando duda.
v2.0
MOFLETE

Qué cambia respecto a CULIBARA

  • Modelo 3,4× más grande: pasamos de LLaVA 1.5 (7 B parámetros) a Mistral Small 3.1 (24 B), francés y sin restricciones en la UE.
  • Prompt comparativo: ya no le pedimos elegir A/B/C a ciegas. Le obligamos a enumerar evidencia anatómica concreta para cada opción (cleft glúteo, olécranon, dirección del vello, textura de piel) antes de decidir.
  • Salida JSON estructurada: scores 0-100 por cada clase, con razonamiento en español. Permite mostrar las tres barras de confianza al usuario.
  • Doble pasada con prompt alternativo: si la confianza de la primera pasada es < 65 %, lanza una segunda con prompt distinto (focado en pelo y forma del pliegue) y promedia los scores.
  • Razonamiento visible: el usuario ve la justificación de la IA en la propia tarjeta del resultado.
  • Cadena de fallback de 4 modelos: si Mistral falla, prueba Llama 4 Scout → Gemma 3 → LLaVA hasta que alguno responda.
  • Imagen a 1024 px (antes 768): los pelos finos y poros pequeños se pierden por debajo de los 1000 px.
  • Parser JSON robusto: 5 estrategias de reparación para casos donde el modelo devuelve markdown con escapes raros (\_, comas finales, comillas mixtas).
v1.0
CULIBARA

Qué la hace simple

  • Un único modelo de 7 B parámetros, sin fallback.
  • Prompt directo: "elige A, B o C". Sin razonamiento intermedio.
  • Una sola llamada al modelo por imagen → barata y rápida.
  • Sin parsing JSON: deduce el veredicto buscando palabras clave en la respuesta.

Por qué fallaba en casos difíciles

  • En primeros planos extremos (solo se ve la "rajita" y los pelos), el modelo pequeño no tiene suficiente capacidad para distinguir cleft glúteo (vertical, simétrico, profundo) de pliegue del codo (horizontal o con olécranon).
  • Sin razonamiento explícito, el modelo "saltaba" al veredicto por intuición visual y se equivocaba.
  • Una sola pasada → cuando la confianza es baja, no tiene segunda oportunidad.
Próximas ideas: Poblar few-shot con 6 imágenes anatómicas CC reales de Wikimedia (hoyuelos de Venus, codo flexionado mostrando olécranon) para anclar el reconocimiento de features · Sustituir el benchmark sintético por imágenes reales curadas de quizzes ingleses + Wikimedia + clips de El Hormiguero (uso evaluativo no comercial) · v5 con detección de orientación pre-LLM (CV clásico) para no depender solo de prompt-level rotation awareness · v6 con clasificador binario fine-tuneado en los casos extremos donde los LLMs aún fallan.