sentence-transformers/clip-ViT-B-32-multilingual-v1

sentence-transformers
Similitud de oraciones

Esta es una versión multilingüe del modelo OpenAI CLIP-ViT-B32. Puedes mapear texto (en más de 50 idiomas) e imágenes a un espacio vectorial denso común de manera que las imágenes y los textos coincidentes estén cerca. Este modelo puede ser utilizado para la búsqueda de imágenes (los usuarios buscan a través de una gran colección de imágenes) y para la clasificación de imágenes multilingües sin entrenamiento (las etiquetas de las imágenes se definen como texto).

Como usar

Usando este modelo se vuelve fácil cuando tienes instalado sentence-transformers:

pip install -U sentence-transformers

Luego puedes usar el modelo de esta manera:

from sentence_transformers import SentenceTransformer, util
from PIL import Image, ImageFile
import requests
import torch

# Usamos el clip-ViT-B-32 original para codificar imágenes
img_model = SentenceTransformer('clip-ViT-B-32')

# Nuestro modelo de embeddings de texto está alineado con el modelo de imágenes y mapea más de 50
# idiomas al mismo espacio vectorial
text_model = SentenceTransformer('sentence-transformers/clip-ViT-B-32-multilingual-v1')

# Ahora cargamos y codificamos las imágenes
def load_image(url_or_path):
    if url_or_path.startswith("http://") or url_or_path.startswith("https://"):
        return Image.open(requests.get(url_or_path, stream=True).raw)
    else:
        return Image.open(url_or_path)

# Cargamos 3 imágenes. Puedes pasar URLs o
# una ruta en tu disco
ing_paths = [
    "https://unsplash.com/photos/QtxgNsmJQSs/download?ixid=MnwxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNjM1ODQ0MjY3&w=640",
    "https://unsplash.com/photos/9UUoGaaHtNE/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8Mnx8Y2F0fHwwfHx8fDE2MzU4NDI1ODQ&w=640",
    "https://unsplash.com/photos/Siuwr3uCir0/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8NHx8YmVhY2h8fDB8fHx8MTYzNTg0MjYzMg&w=640"
]

images = [load_image(img) for img in img_paths]

# Mapeamos las imágenes al espacio vectorial
img_embeddings = img_model.encode(images)

# Ahora codificamos nuestro texto:
texts = [
    "A dog in the snow",
    "Eine Katze", # Alemán: Un gato
    "Una playa con palmeras." # Español: una playa con palmeras
]

text_embeddings = text_model.encode(texts)

# Calculamos las similitudes de coseno:
cos_sim = util.cos_sim(text_embeddings, img_embeddings)

for text, scores in zip(texts, cos_sim):
    max_img_idx = torch.argmax(scores)
    print("Text:", text)
    print("Score:", scores[max_img_idx])
    print("Path:", img_paths[max_img_idx], "\n")

Funcionalidades

Mapeo de texto e imágenes a un espacio vectorial común
Soporte para más de 50 idiomas
Búsqueda de imágenes
Clasificación de imágenes multilingües sin entrenamiento

Casos de uso

Búsqueda de imágenes
Clasificación de imágenes multilingües sin entrenamiento

Recibe las últimas noticias y actualizaciones sobre el mundo de IA directamente en tu bandeja de entrada.