OpenAI

OpenAI / clip-vit-base-patch32

Una variante del modello multimodale CLIP che utilizza un'architettura di trasformatori ViT-B/32 per la codifica delle immagini e un trasformatore di autoattenzione mascherato per la codifica del testo.

Introduzione a clip-vit-base-patch32

Il modello CLIP, sviluppato da OpenAI, mira a comprendere la robustezza nei compiti di computer vision e a testare la capacità dei modelli di generalizzarsi a nuovi compiti di classificazione delle immagini senza un addestramento preliminare. La variante clip-vit-base-patch32 utilizza un'architettura di trasformatori ViT-B/32 per la codifica delle immagini e un trasformatore di autoattenzione mascherato per la codifica del testo. Addestrando questi codificatori a massimizzare la somiglianza delle coppie (immagine, testo) attraverso la perdita contrastiva, il modello impara ad associare le immagini alle corrispondenti descrizioni testuali.

Come creare incorporazioni multimodali con clip-vit-base-patch32

Esistono due modi principali per generare embeddings vettoriali:

  1. Zilliz Cloud Pipelines: una funzione integrata in Zilliz Cloud (il Milvus gestito) che integra perfettamente il modello clip-vit-base-patch32. Fornisce una soluzione pronta all'uso che semplifica la creazione e il recupero di incorporazioni vettoriali di testo o immagini.
  2. SentenceTransformers: libreria Python per sentence_transformers.

Una volta generate le incorporazioni vettoriali, queste possono essere archiviate in Zilliz Cloud (un servizio di database vettoriale completamente gestito da Milvus) e utilizzate per la ricerca di similarità semantica. Ecco i quattro passaggi chiave:

  1. Iscriviti per un account Zilliz Cloud gratuito.
  2. Configurare un cluster serverless e ottenere il Public Endpoint and API Key.
  3. Creare una collezione di vettori e inserire gli embeddings vettoriali.
  4. Eseguire una ricerca semantica sugli embeddings memorizzati.

Generare embeddings vettoriali tramite Zilliz Cloud Pipelines ed eseguire una ricerca di similarità.

Fare riferimento alle seguenti risorse per le istruzioni passo-passo.

Generare embeddings vettoriali tramite SentenceTransformer e inserirli in Zilliz Cloud per la ricerca di similarità

da PIL import Image
da sentence_transformers import SentenceTransformer
da pymilvus import MilvusClient
importare richieste

#Carica il modello CLIP
model = SentenceTransformer('clip-ViT-B-32')

#Generare le incorporazioni delle immagini
immagine_url = [
    "https://raw.githubusercontent.com/milvus-io/milvus-docs/v2.4.x/assets/milvus_logo.png",
]
images = [Image.open(requests.get(url, stream=True).raw) for url in image_urls]
image_embeddings = model.encode(images)

# Generare incorporazioni di testo
query = ["logo blu"]
query_embeddings = model.encode(queries)

# Connettersi a Zilliz Cloud con l'endpoint pubblico e la chiave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLEZIONE = "documenti"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(nome_raccolta=COLLEZIONE)
client.create_collection(
    nome_collezione=COLLEZIONE,
    dimensione=512,
    auto_id=True)

per image_url, embedding in zip(image_urls, image_embeddings):
    client.insert(COLLECTION, {"url": image_url, "vector": embedding})
    
risultati = client.search(
    nome_collezione=COLLEZIONE,
    dati=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Per ulteriori informazioni, consultare la pagina del modello su HuggingFace.