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

Le API di incorporamento di Vector 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 produce spesso risultati migliori nella ricerca.

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

Importante

Queste API sono disponibili solo nelle aree geografiche seguenti: Stati Uniti orientali, Francia centrale, Corea centrale, Europa settentrionale, Asia sud-orientale, Europa occidentale, Stati Uniti occidentali.

Prerequisiti

  • Sottoscrizione di Azure: creare un account gratuito
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa Visione artificiale nel portale di Azure per ottenere la chiave e l'endpoint. Assicurarsi di crearlo in una delle aree geografiche consentite: Stati Uniti orientali, Francia centrale, Corea centrale, Europa settentrionale, Asia sud-orientale, Europa occidentale, Stati Uniti occidentali.
    • Al termine della distribuzione, fare clic su Vai alla risorsa. Copiare la chiave e l'endpoint in un percorso temporaneo da usare in un secondo momento.

Provare gli incorporamenti di Librerie

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

Importante

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

Chiamare l'API Vectorize Image

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

  1. Sostituire <endpoint> con l'endpoint di Visione artificiale di Azure.
  2. Sostituire <subscription-key> con la chiave di Visione artificiale di Azure.
  3. Nel corpo della richiesta impostare sull'URL "url" di un'immagine remota da usare.
  4. Facoltativamente, modificare il model-version parametro in una versione precedente. 2022-04-11 è il modello legacy che supporta solo il testo in inglese. Le immagini e il testo vettorializzati 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://learn.microsoft.com/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 altamente dimensionale.

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

Chiamare l'API Vectorize Text

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

  1. Sostituire <endpoint> con l'endpoint di Visione artificiale di Azure.
  2. Sostituire <subscription-key> con la chiave di Visione artificiale di Azure.
  3. Nel corpo della richiesta impostare "text" sul termine di ricerca di esempio che si vuole usare.
  4. Facoltativamente, modificare il model-version parametro in una versione precedente. 2022-04-11 è il modello legacy che supporta solo il testo in inglese. Le immagini e il testo vettorializzati 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 dimensione.

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

Calcolare la somiglianza del vettore

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

Il codice di esempio seguente calcola la somiglianza del coseno tra due vettori. Spetta a te decidere quale soglia di somiglianza 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);
}

Passaggi successivi

Concetti relativi al recupero delle immagini