Ottenere le descrizioni delle immagini usando le didascalie visive

Le didascalie visive consentono di generare una descrizione pertinente per un'immagine. Tu possono usare queste informazioni per vari usi:

  • Ottieni metadati più dettagliati sulle immagini per l'archiviazione e la ricerca.
  • Genera sottotitoli automatici a supporto dei casi d'uso di accessibilità.
  • Ricevi brevi descrizioni di prodotti e risorse visive.
Esempio di immagine con didascalia

Fonte dell'immagine: Santhosh Kumar su Unsplash (ritaglio)

Didascalia (formato breve): una camicia blu con pois bianchi appesa a un gancio

Lingue supportate

I sottotitoli codificati visivi sono disponibili nelle seguenti lingue:

  • Inglese (en)
  • Francese (fr)
  • Tedesco (de)
  • Italiano (it)
  • Spagnolo (es)

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 nella risposta (formato lungo) 512 token

Quando utilizzi questo strumento, vengono applicate le seguenti stime di latenza del servizio model. Questi valori hanno scopo puramente illustrativo e non costituiscono 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 controllare dove vengono archiviati i dati at-rest. Per un elenco delle aree geografiche disponibili, vedi IA generativa nelle località di Vertex AI.

Filtro sicurezza IA responsabile

Il modello di funzionalità per le didascalie delle immagini e la risposta alle domande visive (VQA) Supporta filtri di sicurezza configurabili dall'utente. Tuttavia, nel complesso Sicurezza Imagen vengono applicati i seguenti dati:

  • Input utente
  • Output del modello

Di conseguenza, l'output può essere diverso da quello di esempio se Imagen applica questi filtri di sicurezza. Considera quanto segue. esempi.

Input filtrato

Se l'input viene filtrato, la risposta è simile alla seguente:

{
  "error": {
    "code": 400,
    "message": "Media reasoning failed with the following error: The response is blocked, as it may violate our policies. If you believe this is an error, please send feedback to your account team. Error Code: 63429089, 72817394",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: Media reasoning failed with the following error: The response is blocked, as it may violate our policies. If you believe this is an error, please send feedback to your account team. Error Code: 63429089, 72817394 [google.rpc.error_details_ext] { message: \"Media reasoning failed with the following error: The response is blocked, as it may violate our policies. If you believe this is an error, please send feedback to your account team. Error Code: 63429089, 72817394\" }"
      }
    ]
  }
}

Output filtrato

Se il numero di risposte restituite è inferiore al numero di campioni specificato, Ciò significa che le risposte mancanti vengono filtrate dall'AI responsabile. Ad esempio: La seguente è una risposta a una richiesta con "sampleCount": 2, ma uno dei risposte vengono escluse:

{
  "predictions": [
    "cappuccino"
  ]
}

Se tutto l'output viene filtrato, la risposta è un oggetto vuoto simile al seguenti:

{}

Visualizza didascalie delle immagini brevi

Usa gli esempi riportati di seguito per generare didascalie brevi per un'immagine.

REST

Per ulteriori informazioni sulle richieste del modello imagetext, consulta Riferimento all'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 una lista delle regioni disponibili, consulta L'IA generativa nelle località di Vertex AI.
  • B64_IMAGE: l'immagine per la quale visualizzare i sottotitoli codificati. L'immagine deve essere specificato come stringa di byte con codifica base64. Limite dimensioni: 10 MB
  • RESPONSE_COUNT: il numero di didascalie delle immagini che vuoi generare. Numero intero accettato valori: 1-3.
  • LANGUAGE_CODE: uno dei codici lingua supportati. Lingue supportate:
    • Inglese (en)
    • Francese (fr)
    • Tedesco (de)
    • Italiano (it)
    • Spagnolo (es)

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": [
    {
      "image": {
          "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": RESPONSE_COUNT,
    "language": "LANGUAGE_CODE"
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

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. La risposta restituisce due stringhe di previsione.

Inglese (en):

{
  "predictions": [
    "a yellow mug with a sheep on it sits next to a slice of cake",
    "a cup of coffee with a heart shaped latte art next to a slice of cake"
  ],
  "deployedModelId": "DEPLOYED_MODEL_ID",
  "model": "projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID",
  "modelDisplayName": "MODEL_DISPLAYNAME",
  "modelVersionId": "1"
}

Spagnolo (es):

{
  "predictions": [
    "una taza de café junto a un plato de pastel de chocolate",
    "una taza de café con una forma de corazón en la espuma"
  ]
}

Python

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta API Python Vertex AI documentazione di riferimento.

Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

In questo esempio viene utilizzato il metodo load_from_file per fare riferimento a un file locale come Image per cui ricevere una didascalia. Dopo aver specificato utilizza il metodo get_captions nella ImageTextModel e stampa l'output.


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"

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

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

captions = model.get_captions(
    image=source_img,
    # Optional parameters
    language="en",
    number_of_results=1,
)

print(captions)

Utilizzare i parametri per le didascalie delle immagini

Per ottenere le didascalie delle immagini, esistono diversi parametri che puoi impostare a seconda del caso d'uso.

Numero risultati

Utilizza il parametro del numero di risultati per limitare la quantità di sottotitoli restituiti per per ogni richiesta che invii. Per ulteriori informazioni, consulta Riferimento API del modello imagetext (per le didascalie delle immagini).

Numero originale

Un numero che aggiungi a una richiesta per rendere deterministiche le descrizioni generate. Aggiungere un numero seed alla tua richiesta è un modo per assicurarti di ottenere lo stesso previsione (descrizioni) ogni volta. Tuttavia, le didascalie delle immagini non sono restituiti necessariamente nello stesso ordine. Per ulteriori informazioni, consulta Riferimento API del modello imagetext (per le didascalie delle immagini).

Passaggi successivi