
clasificación: trabajando con Jina (II)
febrero 25, 2025
Clasificación. Pie de fotos, décadas de la memoria (IV)
febrero 28, 2025Sigamos con los lobos marinos. Jina tiene muchas alternativas, es un mercado muy competitivo (modelo de lenguaje que no esté pensado para el idioma inglés y que no requiera una alta inversión en equipos). Hice algunas pruebas sin llegar a conclusiones como decía en otro post. Recordemos cuál es la foto, epígrafe y etiquetas que pasé.
Y las etiquetas:
‘personas’, ‘edificios’, ‘transporte’, ‘animales’, ‘playa’, ‘barrio’, ‘casa’, ‘familia’
Hice algunas pruebas con máquinas locales (no son modelos sino bibliotecas de funciones que no requieren conectarse para hacer el trabajo, la mayoría de código abierto, gratuitas, y también más lentas culpa del equipo en el que las corro). No fueron buenos los resultados. Probamos con Clip de HuggingFace, Google Vision, OpenAi, Torchvision, Flava (de Facebook). Todos más o menos funcionan así: enviamos una petición con el formato de la API elegida (headers, clave, etc.) y nos devuelve una cadena en formato JSON que tiene los valores de cada etiqueta. Torchvision funciona en mi computadora. El problema más interesante de estas pruebas es que sé muy poco para inferir problemas o interpretar diferencias…por ejemplo: algunos de los modelos son claramente multimodales, como Jina, otros son textuales y otros «leen» fotos pero de manera diferente a la que las «leen» los multimodales. Google Vision, por ejemplo, deduce sus etiquetas a partir de la imagen pero también elige alguna de las que le pasé. CLIP y Jina son primos hermanos, y son sobrinos de OpenAi…así interpreto los índices que me llegan, como puedo, como hacen estas máquinas, creo.
Un ejemplo de CLIP (en este caso ejecutado localmente). Un diccionario (una manera particular de organizar datos con claves y valores, en este caso un diccionario con dos diccionarios en su interior. Cada etiqueta tiene un valor.
dic = {'classifications': {'personas': {'score': 0.0916210189461708, 'match': False}, 'edificios': {'score': 0.21593958139419556, 'match': True}, 'transporte': {'score': 0.23527632653713226, 'match': True}, 'animales': {'score': 0.11715422570705414, 'match': False}, 'playa': {'score': 0.15964899957180023, 'match': False}, 'barrio': {'score': 0.1631484180688858, 'match': False}, 'casa': {'score': 0.002619792940095067, 'match': False}, 'familia': {'score': 0.014591588638722897, 'match': False}}, 'top_match': 'transporte'}Los dos valores más cerca de 1 son «transporte» y «edificios», más atrás quedó «barrio» pero ya está marcado como False, a diferencia de los dos primeros.
transporte: 0.2353 edificios: 0.2159
Cualquiera! ese elefante marino no se parece a una nave (o sí?) ni un edificio (aunque en la foto la textura se parece a la del hormigón…). El CLIP por api estuvo mejor:
playa 0.6940199732780457
Google Vision no detectó la imagen, no tiene la suficiente definición como para poder leerla…con otras fotografías estuvo mucho mejor. Como dije: propone sin que se lo pida otras etiquetas y elige una de las propuestas.
Flava también concluyó que «edificios» es la etiqueta de esa imagen. Torchvisión llegó a la misma conclusión solo que obligada por las categorías porque todo era False para el algoritmo.
Openai fue, de todos, la sorpresa. Usé el modelo «gpt-4-turbo-2024-04-09» y me devolvió
categorias»: [«animales», «edificios», «playa»]
sin valores del cálculo. Openai con un modelo general acierta de lleno en la evaluación, calculando como Jina, como el resto de los modelos y como yo, el pobre humano.
Hasta aquí las «pruebas». Elegí un modelo contrastivo y, como propone Katherine N. Hayles, me dispuse a conversar.




