Usar a resposta visual para perguntas para conseguir informações de imagens

O recurso de resposta visual a perguntas (VQA, na sigla em inglês) permite fornecer uma imagem para o modelo e fazer uma pergunta sobre o conteúdo da imagem. Em resposta à sua pergunta, você recebe uma ou mais respostas em linguagem natural.

Exemplo de imagem, pergunta e respostas do VQA no console
Fonte da imagem (mostrada no console do Google Cloud): Sharon Pittaway em Unsplash (links em inglês)
Pergunta imediata: quais objetos estão na imagem?
Resposta 1: bolinhas de gude
Resposta 2: bolinhas de gude de vidro

Linguagens compatíveis

O recurso VQA está disponível nos seguintes idiomas:

  • inglês (en)

Desempenho e limitações

Os limites a seguir se aplicam quando você usa esse modelo :

Limites Valor
Número máximo de solicitações de API (formato curto) por minuto e projeto 500
Número máximo de tokens retornados na resposta (formato curto) 64 tokens
Número máximo de tokens aceitos na solicitação (somente no formato curto de VQA) 80 tokens
Número máximo de tokens retornados em resposta (formato longo) 512 tokens

As estimativas de latência de serviço a seguir se aplicam quando você usa esse modelo. Estes valores são ilustrativos e não são uma promessa de serviço:

Latência Valor
Solicitações de API (formato curto) 1,5 segundos
Solicitações de API (formato longo) 4,5 segundos

Locais

Um local é uma região que pode ser especificada em uma solicitação para controlar onde os dados são armazenados em repouso. Para uma lista de regiões disponíveis, consulte IA generativa em locais da Vertex AI.

Use VQA em uma imagem (respostas curtas)

Use os exemplos a seguir para fazer uma pergunta e receber uma resposta sobre uma imagem.

Console

  1. No console do Google Cloud, abra a guia Vertex AI Studio > Visão no painel da Vertex AI.

    Acessar a guia "Vertex AI Studio"

  2. No menu inferior, clique em Perguntas e respostas visuais.

  3. Clique em Fazer upload da imagem para selecionar a imagem local para legenda.

  4. No painel Parâmetros, escolha o número de legendas e o idioma.

  5. No campo do prompt, digite uma pergunta sobre a imagem enviada.

  6. Clique em Enviar.

REST

Para mais informações sobre solicitações de modelo imagetext, consulte a imagetext referência da API do modelo.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud.
  • LOCATION: a região do seu projeto. Por exemplo, us-central1, europe-west2 ou asia-northeast3. Para uma lista de regiões disponíveis, consulte IA generativa em locais da Vertex AI.
  • VQA_PROMPT: a pergunta que você quer que seja respondida sobre sua imagem.
    • Que cor é este sapato?
    • Qual é o tipo de manga da camisa?
  • B64_IMAGE: a imagem que receberá as legendas. A imagem precisa ser especificada como uma string de bytes codificada em base64. Limite de tamanho: 10 MB.
  • RESPONSE_COUNT: o número de respostas que você quer gerar. Valores inteiros aceitos: 1 a 3.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
As amostras de respostas a seguir são para uma solicitação com "sampleCount": 2 e "prompt": "What is this?". A resposta retorna duas respostas de string de previsão.
{
  "predictions": [
    "cappuccino",
    "coffee"
  ]
}

Python

Antes de testar essa amostra, siga as instruções de configuração para Python Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Python.

Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Neste exemplo, você usa o método load_from_file para referenciar um arquivo local como a Image base para acessar informações. Depois de especificar a imagem de base, use o método ask_question na ImageTextModel e mostre as respostas.


import argparse

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

def get_short_form_image_responses(
    project_id: str, location: str, input_file: str, question: str
) -> list:
    """Get short-form responses to a question about a local image.
    Args:
      project_id: Google Cloud project ID, used to initialize Vertex AI.
      location: Google Cloud region, used to initialize Vertex AI.
      input_file: Local path to the input image file.
      question: The question about the contents of the image."""

    vertexai.init(project=project_id, location=location)

    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)

    return answers

Usar parâmetros para VQA

Ao receber respostas de VQA, há vários parâmetros que podem ser definidos, de acordo com o caso de uso.

Número de resultados

Use o parâmetro de número de resultados para limitar a quantidade de respostas retornadas para cada solicitação enviada. Para mais informações, consulte a referência da API do modelo imagetext (VQA).

Número da semente

Um número que você adiciona a uma solicitação para tornar as respostas geradas determinísticas. Adicionar um número de origem à solicitação é uma maneira de garantir que você sempre receba a mesma previsão (respostas) todas as vezes. No entanto, as respostas não são retornadas necessariamente na mesma ordem. Para mais informações, consulte a referência da API do modelo imagetext (VQA).

A seguir