Utilizzare la risposta alle domande visive (VQA) per ottenere informazioni sulle immagini

La risposta visiva a domande (VQA) consente di fornire un'immagine al modello e porre una domanda sui contenuti dell'immagine. In risposta alla tua domanda ricevi una o più risposte in linguaggio naturale.

Immagine, domanda e risposte di esempio VQA nella console
Origine immagine (visualizzata nella console Google Cloud): Sharon Pittaway su Unsplash
Domanda della richiesta: Quali oggetti sono presenti nell'immagine?
Risposta 1: biglie
Risposta 2: biglie di vetro

Lingue supportate

VQA è disponibile nelle seguenti lingue:

  • Inglese (en)

Prestazioni e limitazioni

Quando utilizzi questo modello, si applicano i seguenti limiti:

Limiti Valore
Numero massimo di richieste API (formato breve) al minuto per progetto 500
Numero massimo di token restituiti nella risposta (formato breve) 64 token
Numero massimo di token accettati nella richiesta (solo VQA nel formato breve) 80 token
Numero massimo di token restituiti in risposta (formato lungo) 512 token

Quando utilizzi questo modello, vengono applicate le seguenti stime di latenza del servizio. Questi valori hanno scopo illustrativo e non sono una promessa di servizio:

Latenza Valore
Richieste API (formato breve) 1,5 secondi
Richieste API (formato lungo) 4,5 secondi

Località

Una località è una regione che puoi specificare in una richiesta per controllare dove sono archiviati i dati at-rest. Per un elenco delle regioni disponibili, consulta Generative AI on Vertex AI località.

Utilizzare VQA su un'immagine (risposte nel formato breve)

Utilizza i seguenti esempi per porre una domanda e ricevere una risposta su un'immagine.

Console

  1. Nella console Google Cloud, apri la scheda Vertex AI Studio > Vision nella dashboard Vertex AI.

    Vai alla scheda Vertex AI Studio

  2. Nel menu in basso, fai clic su Domande e risposte visive.

  3. Fai clic su Carica immagine per selezionare l'immagine locale da aggiungere alla didascalia.

  4. Nel riquadro Parametri, scegli Numero di sottotitoli e Lingua.

  5. Nel campo di richiesta, inserisci una domanda sull'immagine caricata.

  6. Fai clic su Invia.

REST

Per ulteriori informazioni sulle richieste del modello imagetext, consulta la documentazione di riferimento dell'API del modello imagetext.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto Google Cloud.
  • LOCATION: la regione del tuo progetto. Ad esempio, us-central1, europe-west2 o asia-northeast3. Per un elenco delle regioni disponibili, consulta la pagina relativa all'IA generativa sulle località di Vertex AI.
  • VQA_PROMPT: la domanda a cui vuoi ricevere una risposta sull'immagine.
    • Di che colore è questa scarpa?
    • Che tipo di maniche ci sono sulla maglietta?
  • B64_IMAGE: l'immagine per la quale ottenere i sottotitoli codificati. L'immagine deve essere specificata come una stringa di byte codificata in Base64. Dimensioni massime: 10 MB.
  • RESPONSE_COUNT: il numero di risposte che vuoi generare. Valori interi accettati: 1-3.

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagetext:predict

Corpo JSON della richiesta:

{
  "instances": [
    {
      "prompt": "VQA_PROMPT",
      "image": {
          "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": RESPONSE_COUNT
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagetext:predict"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagetext:predict" | Select-Object -Expand Content
Le seguenti risposte di esempio si riferiscono a una richiesta con "sampleCount": 2 e "prompt": "What is this?". La risposta restituisce due risposte della stringa di previsione.
{
  "predictions": [
    "cappuccino",
    "coffee"
  ]
}

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python Vertex AI.

Per eseguire l'autenticazione in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

In questo esempio utilizzerai il metodo load_from_file per fare riferimento a un file locale come base Image su cui ottenere informazioni. Dopo aver specificato l'immagine di base, utilizza il metodo ask_question su ImageTextModel e stampa le risposte.


import vertexai
from vertexai.preview.vision_models import Image, ImageTextModel

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# input_file = "my-input.png"
# question = "" # The question about the contents of the image.

vertexai.init(project=project_id, location="us-central1")

model = ImageTextModel.from_pretrained("imagetext@001")
source_img = Image.load_from_file(location=input_file)

answers = model.ask_question(
    image=source_img,
    question=question,
    # Optional parameters
    number_of_results=1,
)

print(answers)

Utilizzare i parametri per VQA

Quando ricevi risposte VQA, puoi impostare diversi parametri a seconda del caso d'uso.

Numero risultati

Utilizza il parametro del numero di risultati per limitare il numero di risposte restituite per ogni richiesta inviata. Per maggiori informazioni, consulta l'articolo Riferimento API del modello imagetext (VQA).

Numero di origine

Un numero che aggiungi a una richiesta per rendere deterministiche le risposte generate. L'aggiunta di un numero seed alla richiesta è un modo per assicurarti di ricevere ogni volta la stessa previsione (risposte). Tuttavia, le risposte non vengono restituite necessariamente nello stesso ordine. Per maggiori informazioni, consulta la pagina di riferimento sull'API del modello imagetext (VQA).

Passaggi successivi