Obtén descripciones de imágenes con subtítulos visuales

Los subtítulos visuales te permiten generar una descripción relevante para una imagen. Puedes usar esta información para diversos usos:

  • Obtener metadatos más detallados sobre las imágenes para almacenar y buscar.
  • Generar subtítulos automáticos para casos de uso de accesibilidad.
  • Recibir descripciones rápidas de productos y elementos visuales.
Imagen con subtítulos de muestra

Fuente de la imagen: Santhosh Kumar en Unsplash (recortado)

Subtítulo (formato corto): una camisa azul con lunares blancos cuelga de un gancho

Idiomas compatibles

Las leyendas visuales están disponibles en los siguientes idiomas:

  • Inglés (en)
  • Francés (fr)
  • Alemán (de)
  • Italiano (it)
  • Español (es)

Rendimiento y limitaciones

Se aplican los siguientes límites cuando usas este modelo:

Límites Valor
Cantidad máxima de solicitudes a la API (formato corto) por minuto y por proyecto 500
Cantidad máxima de tokens mostrados en respuesta (formato corto) 64 tokens
Cantidad máxima de tokens aceptados en la solicitud (solo VQA en formato corto) 80 tokens
Cantidad máxima de tokens mostrados en respuesta (formato largo) 512 tokens

Cuando usas este modelo, se aplican las siguientes estimaciones de latencia del servicio. Estos valores son ilustrativos y no son una promesa de servicio:

Latencia Valor
Solicitudes a la API (formato corto) 1.5 segundos
Solicitudes a la API (formato largo) 4.5 seconds

Ubicaciones

Una ubicación es una región que puedes especificar en una solicitud para controlar dónde se almacenan los datos en reposo. Para obtener una lista de las regiones disponibles, consulta IA generativa en ubicaciones de Vertex AI.

Obtén subtítulos de imágenes de formato corto

Usa las siguientes muestras para generar subtítulos cortos de una imagen.

Console

  1. En la consola de Google Cloud, abre la pestaña Vertex AI Studio > Vision en el panel de Vertex AI.

    Ir a la pestaña Vertex AI Studio

  2. En el menú inferior, haz clic en Subtítulos.

  3. Haz clic en Subir imagen para seleccionar la imagen local que quieres subtitular.

  4. En el panel Parámetros, elige Número de subtítulos e Idioma.

  5. Haz clic en Generar subtítulos.

REST

Para obtener más información sobre imagetextlas solicitudes del modelo, consulta la imagetextreferencia de la API del modelo.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • LOCATION: La región del proyecto. Por ejemplo, us-central1, europe-west2 o asia-northeast3. Para obtener una lista de las regiones disponibles, consulta IA generativa en ubicaciones de Vertex AI.
  • B64_IMAGE: es la imagen para la que se deben obtener subtítulos. La imagen debe especificarse como una cadena de bytes codificada en base64. Límite de tamaño: 10 MB.
  • RESPONSE_COUNT: La cantidad de subtítulos de imágenes que deseas generar. Valores de números enteros aceptados: de 1 a 3.
  • LANGUAGE_CODE: Uno de los códigos de idioma compatibles. Idiomas admitidos:
    • Inglés (en)
    • Francés (fr)
    • Alemán (de)
    • Italiano (it)
    • Español (es)

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "image": {
          "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": RESPONSE_COUNT,
    "language": "LANGUAGE_CODE"
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
Las siguientes respuestas de muestra son para una solicitud con "sampleCount": 2. La respuesta muestra dos cadenas de predicción.

Inglés (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"
}

Español (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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

En este ejemplo, se usa el método load_from_file para hacer referencia a un archivo local como la base Image para obtener una leyenda. Después de especificar la imagen base, usa el método get_captions en ImageTextModel y, luego, imprime el resultado.


import argparse

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

def get_short_form_image_captions(
    project_id: str, location: str, input_file: str
) -> list:
    """Get short-form captions for 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."""

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

    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)

    return captions

Usa parámetros para la leyenda de imágenes

Cuando obtienes subtítulos de imágenes, hay varios parámetros que puedes configurar según tu caso de uso.

Cantidad de resultados

Usa el parámetro de cantidad de resultados para limitar la cantidad de subtítulos que se muestran de cada solicitud que envías. Para obtener más información, consulta la referencia de la API del modelo imagetext (subtitulado de imágenes).

Número de origen

Un número que agregues a una solicitud para hacer que las descripciones generadas sean determinísticas. Agregar un número de origen con tu solicitud es una forma de garantizar que obtengas la misma predicción (descripciones) cada vez. Sin embargo, los subtítulos de la imagen no se muestran necesariamente en el mismo orden. Para obtener más información, consulta la referencia de la API del modelo imagetext (subtitulado de imágenes).

¿Qué sigue?