Condividi tramite


Eseguire il recupero di immagini usando incorporamenti multimodali (versione 4.0)

Le API di incorporamento multimodale consentono la vettorizzazione di immagini e query di testo. Convertono le immagini in coordinate in uno spazio vettoriale multidimensionale. Le query di testo in ingresso possono quindi essere convertite anche in vettori e le immagini possono essere abbinate al testo in base alla prossimità semantica. In questo modo l'utente può cercare un set di immagini usando testo senza la necessità di usare tag di immagine o altri metadati. La prossimità semantica restituisce spesso risultati di ricerca migliori.

L'API 2024-02-01 include un modello multilingue che supporta la ricerca di testo in 102 lingue. Il modello originale solo in lingua inglese è ancora disponibile, ma non può essere combinato con il nuovo modello nello stesso indice di ricerca. Se testo e immagini sono stati vettorializzati con il modello solo in lingua inglese, tali vettori non saranno compatibili con i vettori per testo e immagini multilingue.

Importante

Queste API sono disponibili solo in determinate aree geografiche. Vedere Disponibilità a livello di area.

Prerequisiti

  • Sottoscrizione di Azure: creare un account gratuito
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa di Visione artificiale nel portale di Azure per ottenere la chiave e l'endpoint. Assicurarsi di crearlo in una delle aree geografiche supportate: vedere Disponibilità a livello di area.
    • Al termine della distribuzione, fare clic su Vai alla risorsa. Copiare la chiave e l'endpoint in un percorso temporaneo da utilizzare in un secondo momento.

Provare gli incorporamenti multimodali

È possibile provare rapidamente e facilmente la funzionalità di incorporamento multimodale nel browser usando Vision Studio.

Importante

L'esperienza di Vision Studio è limitata a 500 immagini. Per usare un set di immagini più grande, creare un'applicazione di ricerca personalizzata usando le API descritte in questa guida.

Chiamare l'API per la vettorializzazione delle immagini

L'API retrieval:vectorizeImage consente di convertire i dati di un'immagine in un vettore. Per chiamarla, apportare le modifiche indicate al comando cURL seguente:

  1. Sostituire <endpoint> con l'endpoint di Visione di Azure AI.
  2. Sostituire <subscription-key> con la chiave di Visione di Azure AI.
  3. Nel corpo della richiesta impostare "url" sull'URL di un'immagine remota da usare.
  4. Facoltativamente, modificare il parametro model-version in una versione precedente. 2022-04-11 è il modello legacy che supporta solo il testo in inglese. Le immagini e il testo vettorizzati con un determinato modello non sono compatibili con altri modelli, quindi assicurarsi di usare lo stesso modello per entrambi.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeImage?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'url':'https://zcusa.951200.xyz/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"

Per vettorizzare un'immagine locale, inserire i dati binari nel corpo della richiesta HTTP.

La chiamata API restituisce un oggetto JSON vettoriale, che definisce le coordinate dell'immagine nello spazio vettoriale ad alta dimensionalità.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Chiamare l'API per la vettorializzazione del testo

L'API retrieval:vectorizeText consente di convertire una stringa di testo in un vettore. Per chiamarla, apportare le modifiche indicate al comando cURL seguente:

  1. Sostituire <endpoint> con l'endpoint di Visione di Azure AI.
  2. Sostituire <subscription-key> con la chiave di Visione di Azure AI.
  3. Nel corpo della richiesta impostare "text" sul termine di ricerca di esempio che si vuole usare.
  4. Facoltativamente, modificare il parametro model-version in una versione precedente. 2022-04-11 è il modello legacy che supporta solo il testo in inglese. Le immagini e il testo vettorizzati con un determinato modello non sono compatibili con altri modelli, quindi assicurarsi di usare lo stesso modello per entrambi.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeText?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'text':'cat jumping'
}"

La chiamata API restituisce un oggetto JSON vettoriale, che definisce le coordinate della stringa di testo nello spazio vettoriale ad alta dimensionalità.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Calcolare la similarità del vettore

La similarità del coseno è un metodo per misurare la similarità di due vettori. In uno scenario di recupero di immagini si confronterà il vettore della query di ricerca con il vettore di ogni immagine. Le immagini che superano una determinata soglia di similarità possono quindi essere restituite come risultati della ricerca.

Il codice di esempio seguente calcola la similarità del coseno tra due vettori. Spetterà all'utente decidere la soglia di similarità da usare per la restituzione di immagini come risultati della ricerca.

public static float GetCosineSimilarity(float[] vector1, float[] vector2)
{ 
    float dotProduct = 0; 
    int length = Math.Min(vector1.Length, vector2.Length); 
    for (int i = 0; i < length; i++) 
    { 
        dotProduct += vector1[i] * vector2[i]; 
    } 
    float magnitude1 = Math.Sqrt(vector1.Select(x => x * x).Sum());
    float magnitude2 = Math.Sqrt(vector2.Select(x => x * x).Sum());
    
    return dotProduct / (magnitude1 * magnitude2);
}

Passaggio successivo