Genera imágenes con mensajes de texto

Puedes usar Imagen en Vertex AI para generar imágenes nuevas a partir de un mensaje de texto que proporcionas en la consola de Google Cloud o enviar una solicitud a la API de Vertex AI.

Si deseas obtener más información sobre cómo escribir mensajes de texto para la generación y edición de imágenes, consulta la guía de instrucciones.

Cómo ver la tarjeta de modelo de Imagen para la generación

Prueba la generación de imágenes (Vertex AI Studio)

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.

Filtrado de seguridad

Se revisan los datos de entrada y el contenido de salida en busca de material ofensivo cuando envías una solicitud de generación de imágenes a Imagen. Esto significa que se puede bloquear una entrada de instrucción de texto que sea ofensiva. Del mismo modo, es posible que también se bloqueen las imágenes de salida ofensivas, lo que afectará la cantidad de imágenes generadas que obtengas en una respuesta.

Para obtener más información sobre el filtrado de seguridad y el manejo de contenido bloqueado, consulta IA responsable y los lineamientos de uso de Imagen.

Rendimiento y limitaciones

Se aplican los siguientes límites cuando usas un modelo de Imagen para la generación de imágenes:

Límites Valor
(Imagen 3)
Cantidad máxima de solicitudes a la API por minuto y por proyecto Imagen 3: 20

Imagen 3 rápida: 200
Cantidad máxima de imágenes que se muestran por solicitud (generación de texto a imagen) 4
Tamaño máximo de la imagen subida o enviada en una solicitud (MB) 10 MB
Resolución de imagen que se muestra (píxeles) compatible
  • 1024x1024 píxeles (relación de aspecto de 1:1)
  • 896x1280 (relación de aspecto de 3:4)
  • 1280x896 (relación de aspecto de 4:3)
  • 768x1408 (relación de aspecto de 9:16)
  • 1408x768 (relación de aspecto de 16:9)
Cantidad máxima de tokens de entrada (texto de la instrucción de generación de texto a imagen) 480 tokens

Versiones del modelo

Hay varias versiones del modelo de generación de imágenes que puedes usar. Para obtener información sobre el control de versiones de modelos de Imagen, consulta Modelos y ciclo de vida de Imagen.

Los siguientes modelos y sus características asociadas están disponibles para la generación de imágenes:

Modelo Nombre y versión del recurso de modelo Etapa de lanzamiento Funciones Relaciones de aspecto Lenguajes compatibles Facturación
Imagen 3 Imagen 3:

imagen-3.0-generate-002 (modelo más reciente)

imagen-3.0-generate-001


Imagen 3 Fast: imagen-3.0-fast-generate-001

Esta es una variante de modelo de baja latencia que puedes usar para el prototipado o casos de uso de baja latencia.


Personalización y edición de Imagen 3: imagen-3.0-capability-001 (usuarios aprobados)
Disponibilidad general

Funciones admitidas

  • Generación de imágenes
  • Marca de agua y verificación digital
  • Parámetros de seguridad configurables por el usuario
  • Mejora de la instrucción con el reescribidor de instrucciones (solo para el modelo imagen-3.0-generate-002)
  • Personalización de imágenes (aprendizaje en pocos intentos):
    • Personalización del asunto (producto, persona y mascota)
    • Personalización de estilos
    • Personalización controlada (escritos y bordes definidos)
    • Personalización de instrucciones (transferencia de estilo)
  • Edición de imágenes (basada en máscaras):
    • Retoque (insertar o quitar)
    • Extensión de imagen
    • edición de imágenes del producto
  • 1:1 - 1024 x 1024 píxeles (cuadrado)
  • 3:4  - 896x1280
  • 4:3  - 1280x896
  • 9:16 - 768x1408
  • 16:9 - 1408x768

Disponibilidad general:

  • Inglés

Vista previa:

  • Chino (simplificado)
  • Chino (tradicional)
  • Hindi
  • Japonés
  • Coreano
  • Portugués
  • Español

Sí, se aplican precios para la generación. Los precios de los modelos de Imagen 3 tienen un SKU nuevo, por lo que difieren de los de otros modelos.

Para ver todas las funciones y etapas de lanzamiento, consulta la descripción general de imágenes.
Para ver los precios de cada función, consulta la página de precios.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. Configura la autenticación para tu entorno.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    Java

    Para usar las muestras de Java de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .

    Node.js

    Para usar las muestras de Node.js de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .

    Python

    Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Genera imágenes con texto

Puedes generar imágenes nuevas solo con texto descriptivo como entrada. En los siguientes ejemplos, se muestran instrucciones básicas para generar imágenes, pero también puedes usar parámetros adicionales según tu caso de uso.

Console

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

    Ir a la pestaña Vertex AI Studio
  2. En el campo Escribir la instrucción, ingresa una descripción para las imágenes que deseas generar. Para obtener detalles sobre cómo escribir instrucciones eficaces, consulta la guía de instrucciones.

    • Por ejemplo: barco pequeño en el agua en la ilustración de acuarela matutina
  3. Opcional. En el cuadro Opciones de modelo del panel Parámetros, selecciona la versión de modelo que deseas usar. Para obtener más información, consulta Versiones modelo.

  4. Opcional. Cambia los parámetros estándar y avanzados.

  5. Para generar imágenes, haz clic en Generar.

    Una imagen generada de muestra con texto
    Generación de imágenes vista de imágenes generadas con Imagen en Vertex AI a partir de la instrucción: pequeño barco rojo en el agua en la ilustración de la acuarela matutina.

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

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

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • MODEL_VERSION: La versión del modelo imagegeneration que se usará. Valores disponibles:
      .
    • Imagen 3:
      • imagen-3.0-generate-002 (modelo más reciente)
      • imagen-3.0-generate-001
      • imagen-3.0-fast-generate-001: Versión del modelo de baja latencia.
    • Versión predeterminada del modelo:
      • imagegeneration: Usa la versión de modelo predeterminada v.006. Como práctica recomendada, siempre debes especificar una versión del modelo, en especial en entornos de producción.

    Para obtener más información sobre las versiones y los atributos del modelo, consulta las versiones del modelo.

  • 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.
  • TEXT_PROMPT: La instrucción de texto que guía qué imágenes genera el modelo. Este campo es obligatorio para la generación y la edición.
  • IMAGE_COUNT: La cantidad de imágenes generadas. Valores de números enteros aceptados: 1-8 (imagegeneration@002), 1-4 (todas las demás versiones del modelo). Valor predeterminado: 4.
  • Parámetros opcionales adicionales

    Usa las siguientes variables opcionales según tu caso de uso. Agrega algunos o todos los siguientes parámetros en el objeto "parameters": {}. Esta lista muestra parámetros opcionales comunes y no pretende ser exhaustiva. Para obtener más información sobre los parámetros opcionales, consulta la referencia de la API de Imagen: Genera imágenes.

    "parameters": {
      "sampleCount": IMAGE_COUNT,
      "addWatermark": ADD_WATERMARK,
      "aspectRatio": "ASPECT_RATIO",
      "enhancePrompt": ENABLE_PROMPT_REWRITING,
      "includeRaiReason": INCLUDE_RAI_REASON,
      "includeSafetyAttributes": INCLUDE_SAFETY_ATTRIBUTES,
      "outputOptions": {
        "mimeType": "MIME_TYPE",
        "compressionQuality": COMPRESSION_QUALITY
      },
      "personGeneration": "PERSON_SETTING",
      "safetySetting": "SAFETY_SETTING",
      "seed": SEED_NUMBER,
      "storageUri": "OUTPUT_STORAGE_URI"
    }
    
    • ADD_WATERMARK: Es un valor booleano. Opcional. Indica si se debe habilitar una marca de agua para las imágenes generadas. Cualquier imagen generada cuando el campo se configura como true contiene un SynthID digital que puedes usar para verificar una imagen con marca de agua. Si omites este campo, se usa el valor predeterminado de true. Debes establecer el valor en false para inhabilitar esta función. Puedes usar el campo seed para obtener una salida determinista solo cuando este campo se establece en false.
    • ASPECT_RATIO: Es una cadena. Opcional. Un parámetro de modo de generación que controla la relación de aspecto. Valores de proporción admitidos y su uso previsto:
      • 1:1 (predeterminado, cuadrado)
      • 3:4 (anuncios y redes sociales)
      • 4:3 (TV, fotografía)
      • 16:9 (horizontal)
      • 9:16 (vertical)
    • ENABLE_PROMPT_REWRITING: Es un valor booleano. Opcional. Es un parámetro para usar una función de reescritura de instrucciones basada en LLM para entregar imágenes de mayor calidad que reflejen mejor la intención de la instrucción original. Si inhabilitas esta función, es posible que se vea afectada la calidad de las imágenes y la adherencia. Valor predeterminado true.
    • INCLUDE_RAI_REASON: Es un valor booleano. Opcional. Indica si se debe habilitar el código de motivo de IA responsable filtrado en respuestas con entradas o salidas bloqueadas. Valor predeterminado: false.
    • INCLUDE_SAFETY_ATTRIBUTES: Es un valor booleano. Opcional. Indica si se deben habilitar las puntuaciones redondeadas de IA responsable para obtener una lista de atributos de seguridad en las respuestas de entrada y salida sin filtrar. Categorías de atributos de seguridad: "Death, Harm & Tragedy", "Firearms & Weapons", "Hate", "Health", "Illicit Drugs", "Politics", "Porn", "Religion & Belief", "Toxic", "Violence", "Vulgarity", "War & Conflict". Valor predeterminado: false.
    • MIME_TYPE: Es una cadena. Opcional. El tipo de MIME del contenido de la imagen. Valores disponibles:
      • image/jpeg
      • image/gif
      • image/png
      • image/webp
      • image/bmp
      • image/tiff
      • image/vnd.microsoft.icon
    • COMPRESSION_QUALITY: Es un número entero. Opcional. Solo se aplica a los archivos de salida JPEG. Es el nivel de detalle que el modelo conserva para las imágenes generadas en formato de archivo JPEG. Valores: 0 a 100, en los que un número más alto significa más compresión. Valor predeterminado: 75.
    • PERSON_SETTING: Es una cadena. Opcional. Es la configuración de seguridad que controla el tipo de generación de personas o rostros que permite el modelo. Valores disponibles:
      • allow_adult (configuración predeterminada): permite la generación de adultos solamente, excepto la generación de celebridades. No se permite la generación de celebridades para ningún parámetro de configuración.
      • dont_allow: Inhabilita la inclusión de personas o rostros en las imágenes generadas.
    • SAFETY_SETTING: Es una cadena. Opcional. Es un parámetro de configuración que controla los umbrales del filtro de seguridad para las imágenes generadas. Valores disponibles:
      • block_low_and_above: El umbral de seguridad más alto, que da como resultado la mayor cantidad de imágenes generadas que se filtran. Valor anterior: block_most.
      • block_medium_and_above (configuración predeterminada): un umbral de seguridad medio que equilibra el filtrado del contenido potencialmente dañino y seguro. Valor anterior: block_some.
      • block_only_high: Un umbral de seguridad que reduce la cantidad de solicitudes bloqueadas debido a los filtros de seguridad. Esta configuración puede aumentar el contenido censurable que genera Imagen. Valor anterior: block_few.
    • SEED_NUMBER: Es un número entero. Opcional. Cualquier número entero no negativo que proporciones para que las imágenes de salida sean determinísticas. Proporcionar el mismo número de origen siempre da como resultado las mismas imágenes de salida. Si el modelo que usas admite la marca de agua digital, debes configurar "addWatermark": false para usar este campo. Valores de números enteros aceptados: 1 - 2147483647.
    • OUTPUT_STORAGE_URI: Es una cadena. Opcional. Es el bucket de Cloud Storage para almacenar las imágenes de salida. Si no se proporciona, se muestran bytes de imagen codificados en base64 en la respuesta. Valor de muestra: gs://image-bucket/output/.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT
  }
}

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/MODEL_VERSION: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/MODEL_VERSION:predict" | Select-Object -Expand Content
La siguiente respuesta de muestra es para una solicitud con "sampleCount": 2. La respuesta muestra dos objetos de predicción, con los bytes de imagen generados codificados en base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

Si usas un modelo que admite la mejora de instrucciones, la respuesta incluye un campo prompt adicional con la instrucción mejorada que se usó para la generación:

{
  "predictions": [
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_1",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_1"
    },
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_2",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_2"
    }
  ]
}

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 llama al método generate_images en ImageGenerationModel y se guardan las imágenes generadas de forma local. Luego, de forma opcional, puedes usar el método show() en un notebook para mostrar las imágenes generadas. Para obtener más información sobre las versiones y las características de los modelos, consulta las versiones del modelo.


import vertexai
from vertexai.preview.vision_models import ImageGenerationModel

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# output_file = "input-image.png"
# prompt = "" # The text prompt describing what you want to see.

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

model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")

images = model.generate_images(
    prompt=prompt,
    # Optional parameters
    number_of_images=1,
    language="en",
    # You can't use a seed value and watermark at the same time.
    # add_watermark=False,
    # seed=100,
    aspect_ratio="1:1",
    safety_filter_level="block_some",
    person_generation="allow_adult",
)

images[0].save(location=output_file, include_generation_parameters=False)

# Optional. View the generated image in a notebook.
# images[0].show()

print(f"Created output image using {len(images[0]._image_bytes)} bytes")
# Example response:
# Created output image using 1234567 bytes

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java 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 Java.

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, especificas el modelo imagen-3.0-generate-001 como parte de un EndpointName. EndpointName se pasa al método predict, al que se llama en un PredictionServiceClient. El servicio genera imágenes que, luego, se guardan de forma local. Para obtener más información sobre las versiones y las características de los modelos, consulta las versiones del modelo.


import com.google.api.gax.rpc.ApiException;
import com.google.cloud.aiplatform.v1.EndpointName;
import com.google.cloud.aiplatform.v1.PredictResponse;
import com.google.cloud.aiplatform.v1.PredictionServiceClient;
import com.google.cloud.aiplatform.v1.PredictionServiceSettings;
import com.google.gson.Gson;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class GenerateImageSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project-id";
    String location = "us-central1";
    String prompt = ""; // The text prompt describing what you want to see.

    generateImage(projectId, location, prompt);
  }

  // Generate an image using a text prompt using an Imagen model
  public static PredictResponse generateImage(String projectId, String location, String prompt)
      throws ApiException, IOException {
    final String endpoint = String.format("%s-aiplatform.googleapis.com:443", location);
    PredictionServiceSettings predictionServiceSettings =
        PredictionServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (PredictionServiceClient predictionServiceClient =
        PredictionServiceClient.create(predictionServiceSettings)) {

      final EndpointName endpointName =
          EndpointName.ofProjectLocationPublisherModelName(
              projectId, location, "google", "imagen-3.0-generate-001");

      Map<String, Object> instancesMap = new HashMap<>();
      instancesMap.put("prompt", prompt);
      Value instances = mapToValue(instancesMap);

      Map<String, Object> paramsMap = new HashMap<>();
      paramsMap.put("sampleCount", 1);
      // You can't use a seed value and watermark at the same time.
      // paramsMap.put("seed", 100);
      // paramsMap.put("addWatermark", false);
      paramsMap.put("aspectRatio", "1:1");
      paramsMap.put("safetyFilterLevel", "block_some");
      paramsMap.put("personGeneration", "allow_adult");
      Value parameters = mapToValue(paramsMap);

      PredictResponse predictResponse =
          predictionServiceClient.predict(
              endpointName, Collections.singletonList(instances), parameters);

      for (Value prediction : predictResponse.getPredictionsList()) {
        Map<String, Value> fieldsMap = prediction.getStructValue().getFieldsMap();
        if (fieldsMap.containsKey("bytesBase64Encoded")) {
          String bytesBase64Encoded = fieldsMap.get("bytesBase64Encoded").getStringValue();
          Path tmpPath = Files.createTempFile("imagen-", ".png");
          Files.write(tmpPath, Base64.getDecoder().decode(bytesBase64Encoded));
          System.out.format("Image file written to: %s\n", tmpPath.toUri());
        }
      }
      return predictResponse;
    }
  }

  private static Value mapToValue(Map<String, Object> map) throws InvalidProtocolBufferException {
    Gson gson = new Gson();
    String json = gson.toJson(map);
    Value.Builder builder = Value.newBuilder();
    JsonFormat.parser().merge(json, builder);
    return builder.build();
  }
}

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.

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 llama al método predict en un PredictionServiceClient. El servicio genera imágenes que, luego, se guardan de forma local. Para obtener más información sobre las versiones y las características de los modelos, consulta las versiones del modelo.

/**
 * TODO(developer): Update these variables before running the sample.
 */
const projectId = process.env.CAIP_PROJECT_ID;
const location = 'us-central1';
const prompt = 'a dog reading a newspaper';

const aiplatform = require('@google-cloud/aiplatform');

// Imports the Google Cloud Prediction Service Client library
const {PredictionServiceClient} = aiplatform.v1;

// Import the helper module for converting arbitrary protobuf.Value objects
const {helpers} = aiplatform;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: `${location}-aiplatform.googleapis.com`,
};

// Instantiates a client
const predictionServiceClient = new PredictionServiceClient(clientOptions);

async function generateImage() {
  const fs = require('fs');
  const util = require('util');
  // Configure the parent resource
  const endpoint = `projects/${projectId}/locations/${location}/publishers/google/models/imagen-3.0-generate-001`;

  const promptText = {
    prompt: prompt, // The text prompt describing what you want to see
  };
  const instanceValue = helpers.toValue(promptText);
  const instances = [instanceValue];

  const parameter = {
    sampleCount: 1,
    // You can't use a seed value and watermark at the same time.
    // seed: 100,
    // addWatermark: false,
    aspectRatio: '1:1',
    safetyFilterLevel: 'block_some',
    personGeneration: 'allow_adult',
  };
  const parameters = helpers.toValue(parameter);

  const request = {
    endpoint,
    instances,
    parameters,
  };

  // Predict request
  const [response] = await predictionServiceClient.predict(request);
  const predictions = response.predictions;
  if (predictions.length === 0) {
    console.log(
      'No image was generated. Check the request parameters and prompt.'
    );
  } else {
    let i = 1;
    for (const prediction of predictions) {
      const buff = Buffer.from(
        prediction.structValue.fields.bytesBase64Encoded.stringValue,
        'base64'
      );
      // Write image content to the output file
      const writeFile = util.promisify(fs.writeFile);
      const filename = `output${i}.png`;
      await writeFile(filename, buff);
      console.log(`Saved image ${filename}`);
      i++;
    }
  }
}
await generateImage();

Usa parámetros para generar imágenes

Cuando generas imágenes, hay varios parámetros estándar y avanzados que puedes configurar según tu caso de uso.

Agrega o verifica una marca de agua de imagen

De forma predeterminada, se agrega una marca de agua digital a cualquier imagen que genere una versión del modelo que admita la generación de marcas de agua. Esta función agrega una marca de agua digital no visible, denominada SynthID, a las imágenes. Luego, puedes verificar si una imagen contiene o no una marca de agua digital.

Genera imágenes con marcas de agua

Usa las siguientes muestras para generar imágenes con una marca de agua digital.

Console

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

    Ir a la pestaña Vertex AI Studio
  2. En el campo Escribir la instrucción, ingresa una descripción para las imágenes que deseas generar. Para obtener detalles sobre cómo escribir instrucciones eficaces, consulta la guía de instrucciones.

    • Por ejemplo: barco pequeño en el agua en la ilustración de acuarela matutina
  3. Opcional. En el cuadro Opciones de modelo del panel Parámetros, selecciona la versión de modelo que deseas usar. Para obtener más información, consulta Versiones modelo.

  4. Opcional. Cambia los parámetros estándar y avanzados.

  5. Para generar imágenes, haz clic en Generar.

  6. Versión de modelo 006 y superiores: se agrega automáticamente una marca de agua digital a las imágenes generadas. No puedes inhabilitar la marca de agua digital para la generación de imágenes con la consola de Google Cloud.

    Puedes seleccionar una imagen para ir a la ventana Detalles de la imagen. Las imágenes con marcas de agua contienen una insignia de marca de agua digital. También puedes verificar de manera explícita una marca de agua de imagen.

    Una imagen generada con marca de agua de muestra con texto
    Detalles de la imagen vista de una imagen con marca de agua generada con Imagen 2 a partir de la instrucción: pequeño barco rojo en el agua en la ilustración de acuarela matutinas.

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

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

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • MODEL_VERSION: La versión del modelo imagegeneration que se usará. Valores disponibles:
      .
    • imagen-3.0-generate-002 (modelo más reciente)
    • imagen-3.0-generate-001
    • imagen-3.0-fast-generate-001: Versión del modelo de baja latencia.
    • imagegeneration@006

    Para obtener más información sobre las versiones y los atributos del modelo, consulta las versiones del modelo.

  • 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.
  • TEXT_PROMPT: La instrucción de texto que guía qué imágenes genera el modelo. Este campo es obligatorio para la generación y la edición.
  • IMAGE_COUNT: La cantidad de imágenes generadas. Valores de números enteros aceptados: 1-8 (imagegeneration@002), 1-4 (todas las demás versiones del modelo). Valor predeterminado: 4.
  • ADD_WATERMARK: Es un valor booleano. Opcional. Indica si se debe habilitar una marca de agua para las imágenes generadas. Cualquier imagen generada cuando el campo se configura como true contiene un SynthID digital que puedes usar para verificar una imagen con marca de agua. Si omites este campo, se usa el valor predeterminado de true. Debes establecer el valor en false para inhabilitar esta función. Puedes usar el campo seed para obtener una salida determinista solo cuando este campo se establece en false.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT,
    "addWatermark": ADD_WATERMARK
  }
}

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/MODEL_VERSION: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/MODEL_VERSION:predict" | Select-Object -Expand Content
La siguiente respuesta de muestra es para una solicitud con "sampleCount": 2. La respuesta muestra dos objetos de predicción, con los bytes de imagen generados codificados en base64. La marca de agua digital se agrega automáticamente a las imágenes, por lo que la respuesta es la misma que una respuesta sin marca de agua.
{
  "predictions": [
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    },
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    }
  ]
}

SDK de Vertex AI para Python


import vertexai
from vertexai.preview.vision_models import ImageGenerationModel

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# output_file = "input-image.png"
# prompt = "" # The text prompt describing what you want to see.

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

model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")

images = model.generate_images(
    prompt=prompt,
    # Optional parameters
    number_of_images=1,
    language="en",
    # You can't use a seed value and watermark at the same time.
    # add_watermark=False,
    # seed=100,
    aspect_ratio="1:1",
    safety_filter_level="block_some",
    person_generation="allow_adult",
)

images[0].save(location=output_file, include_generation_parameters=False)

# Optional. View the generated image in a notebook.
# images[0].show()

print(f"Created output image using {len(images[0]._image_bytes)} bytes")
# Example response:
# Created output image using 1234567 bytes

Node.js

/**
 * TODO(developer): Update these variables before running the sample.
 */
const projectId = process.env.CAIP_PROJECT_ID;
const location = 'us-central1';
const prompt = 'a dog reading a newspaper';

const aiplatform = require('@google-cloud/aiplatform');

// Imports the Google Cloud Prediction Service Client library
const {PredictionServiceClient} = aiplatform.v1;

// Import the helper module for converting arbitrary protobuf.Value objects
const {helpers} = aiplatform;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: `${location}-aiplatform.googleapis.com`,
};

// Instantiates a client
const predictionServiceClient = new PredictionServiceClient(clientOptions);

async function generateImage() {
  const fs = require('fs');
  const util = require('util');
  // Configure the parent resource
  const endpoint = `projects/${projectId}/locations/${location}/publishers/google/models/imagen-3.0-generate-001`;

  const promptText = {
    prompt: prompt, // The text prompt describing what you want to see
  };
  const instanceValue = helpers.toValue(promptText);
  const instances = [instanceValue];

  const parameter = {
    sampleCount: 1,
    // You can't use a seed value and watermark at the same time.
    // seed: 100,
    // addWatermark: false,
    aspectRatio: '1:1',
    safetyFilterLevel: 'block_some',
    personGeneration: 'allow_adult',
  };
  const parameters = helpers.toValue(parameter);

  const request = {
    endpoint,
    instances,
    parameters,
  };

  // Predict request
  const [response] = await predictionServiceClient.predict(request);
  const predictions = response.predictions;
  if (predictions.length === 0) {
    console.log(
      'No image was generated. Check the request parameters and prompt.'
    );
  } else {
    let i = 1;
    for (const prediction of predictions) {
      const buff = Buffer.from(
        prediction.structValue.fields.bytesBase64Encoded.stringValue,
        'base64'
      );
      // Write image content to the output file
      const writeFile = util.promisify(fs.writeFile);
      const filename = `output${i}.png`;
      await writeFile(filename, buff);
      console.log(`Saved image ${filename}`);
      i++;
    }
  }
}
await generateImage();

Verifica una imagen con marca de agua

Usa las siguientes muestras para verificar que una imagen tenga una marca de agua.

Console

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

    Ir a la pestaña Vertex AI Studio

  2. En el panel inferior, haz clic en Verificar.

  3. Haz clic en Subir imagen.

  4. Selecciona una imagen generada guardada de forma local.

    Marca de agua verificada de muestra en la imagen generada en la consola

REST

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

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • 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: la imagen que se debe verificar que contiene una marca de agua digital. La imagen debe especificarse como una cadena de bytes codificada en base64. Límite de tamaño: 10 MB.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "image": {
        "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "watermarkVerification": true
  }
}

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/imageverification@001: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/imageverification@001:predict" | Select-Object -Expand Content
La siguiente respuesta de muestra es para una solicitud con una imagen que tiene una marca de agua digital. El campo de decisión puede mostrar cualquiera de los siguientes valores: ACCEPT o REJECT.
{
  "predictions": [
    {
      "decision": "ACCEPT"
    }
  ]
}

SDK de Vertex AI para Python


import vertexai
from vertexai.preview.vision_models import (
    Image,
    WatermarkVerificationModel,
)

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# input_file = "input-image.png"

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

verification_model = WatermarkVerificationModel.from_pretrained(
    "imageverification@001"
)
image = Image.load_from_file(location=input_file)

watermark_verification_response = verification_model.verify_image(image)

print(
    f"Watermark verification result: {watermark_verification_response.watermark_verification_result}"
)
# Example response:
# Watermark verification result: ACCEPT
# or "REJECT" if the image does not contain a digital watermark.

Node.js

/**
 * TODO(developer): Update these variables before running the sample.
 */
const projectId = process.env.CAIP_PROJECT_ID;
const location = 'us-central1';
const inputFile = 'resources/dog_newspaper.png'; // has watermark

const aiplatform = require('@google-cloud/aiplatform');

// Imports the Google Cloud Prediction Service Client library
const {PredictionServiceClient} = aiplatform.v1;

// Import the helper module for converting arbitrary protobuf.Value objects
const {helpers} = aiplatform;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: `${location}-aiplatform.googleapis.com`,
};

// Instantiates a client
const predictionServiceClient = new PredictionServiceClient(clientOptions);

async function verifyImageWatermark() {
  const fs = require('fs');
  // Configure the parent resource
  const endpoint = `projects/${projectId}/locations/${location}/publishers/google/models/imageverification@001`;

  const imageFile = fs.readFileSync(inputFile);
  // Convert the image data to a Buffer and base64 encode it.
  const encodedImage = Buffer.from(imageFile).toString('base64');

  const instance = {
    image: {
      bytesBase64Encoded: encodedImage,
    },
  };
  const instanceValue = helpers.toValue(instance);
  const instances = [instanceValue];

  const request = {
    endpoint,
    instances,
  };

  // Predict request
  const [response] = await predictionServiceClient.predict(request);
  const predictions = response.predictions;
  if (predictions.length === 0) {
    console.log('No decision was generated. Check the request image.');
  } else {
    predictions.forEach(prediction => {
      // "ACCEPT" if the image contains a digital watermark
      // "REJECT" if the image does not contain a digital watermark
      console.log(prediction.structValue.fields.decision.stringValue);
    });
  }
}
await verifyImageWatermark();

Establece la configuración de seguridad de IA responsable (RAI)

Existen varios parámetros de filtrado de IA responsable (RAI) que puedes usar con un modelo de generación de imágenes. Por ejemplo, puedes permitir que el modelo informe códigos de filtro RAI para el contenido bloqueado, inhabilitar la generación de personas o rostros con filtros RAI, establecer el nivel de filtrado de contenido o mostrar puntuaciones de RAI redondeadas de la lista de seguridad para la entrada y la salida.

Para obtener información más detallada sobre la IA responsable (RAI), sus parámetros asociados y su resultado de muestra, consulta Comprende y configura la IA responsable para Imagen.

En los siguientes ejemplos, se muestra cómo configurar los parámetros de RAI disponibles para la generación de imágenes.

Console

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

    Ir a la pestaña Vertex AI Studio

  2. Agrega la instrucción de texto y elige los parámetros de entrada.

  3. Si no está expandida, haz clic en Opciones avanzadas.

  4. Haz clic en Configuración de seguridad.

  5. Elige la configuración de seguridad:

    • Person/face generation: elige una configuración:
      • Allow (All ages)
      • Allow (Adults only)
      • Don't allow
    • Umbral del filtro de seguridad: elige una configuración:
      • Block low and above
      • Block medium and above
      • Block only high
  6. Haz clic en Guardar.

  7. Haz clic en Generar .

REST

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

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • 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.
  • TEXT_PROMPT: La instrucción de texto que guía qué imágenes genera el modelo. Este campo es obligatorio para la generación y la edición.
  • IMAGE_COUNT: La cantidad de imágenes generadas. Valores de números enteros aceptados: 1-8 (imagegeneration@002), 1-4 (todas las demás versiones del modelo). Valor predeterminado: 4.
  • SAFETY_SETTING: Es una cadena. Opcional. Es un parámetro de configuración que controla los umbrales del filtro de seguridad para las imágenes generadas. Valores disponibles:
    • block_low_and_above: El umbral de seguridad más alto, que da como resultado la mayor cantidad de imágenes generadas que se filtran. Valor anterior: block_most.
    • block_medium_and_above (configuración predeterminada): un umbral de seguridad medio que equilibra el filtrado del contenido potencialmente dañino y seguro. Valor anterior: block_some.
    • block_only_high: Un umbral de seguridad que reduce la cantidad de solicitudes bloqueadas debido a los filtros de seguridad. Esta configuración puede aumentar el contenido censurable que genera Imagen. Valor anterior: block_few.
  • PERSON_SETTING: Es una cadena. Opcional. Es la configuración de seguridad que controla el tipo de generación de personas o rostros que permite el modelo. Valores disponibles:
    • allow_adult (configuración predeterminada): permite la generación de adultos solamente, excepto la generación de celebridades. No se permite la generación de celebridades para ningún parámetro de configuración.
    • dont_allow: Inhabilita la inclusión de personas o rostros en las imágenes generadas.
  • INCLUDE_RAI_REASON: Es un valor booleano. Opcional. Indica si se debe habilitar el código de motivo de IA responsable filtrado en respuestas con entradas o salidas bloqueadas. Valor predeterminado: false.
  • INCLUDE_SAFETY_ATTRIBUTES: Es un valor booleano. Opcional. Indica si se deben habilitar las puntuaciones redondeadas de IA responsable para obtener una lista de atributos de seguridad en las respuestas de entrada y salida sin filtrar. Categorías de atributos de seguridad: "Death, Harm & Tragedy", "Firearms & Weapons", "Hate", "Health", "Illicit Drugs", "Politics", "Porn", "Religion & Belief", "Toxic", "Violence", "Vulgarity", "War & Conflict". Valor predeterminado: false.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT,
    "safetySetting": "SAFETY_SETTING",
    "personGeneration": "PERSON_SETTING",
    "includeRaiReason": INCLUDE_RAI_REASON,
    "includeSafetyAttributes": INCLUDE_SAFETY_ATTRIBUTES
  }
}

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/imagegeneration@006: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/imagegeneration@006:predict" | Select-Object -Expand Content
La respuesta que recibas dependerá de los parámetros de configuración de seguridad que establezcas. Si deseas obtener más información, consulta Comprende y configura la IA responsable (RAI) para Imagen.

Mejora de las instrucciones con el reescritor de instrucciones

La versión 002 del modelo de Imagen 3 incluye una función de reescritura de instrucciones que usa una herramienta de reescritura de instrucciones basada en LLM. Por lo general, esta herramienta agrega más detalles a la instrucción proporcionada para entregar imágenes de mayor calidad que reflejen mejor la instrucción. Si inhabilitas esta función, es posible que se vea afectada la calidad y la rapidez de las imágenes que recibas. Esta función está habilitada de forma predeterminada.

La instrucción reescrita solo se entrega mediante la respuesta de la API si la instrucción original tiene menos de 30 palabras.

Console

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

    Ir a la pestaña Vertex AI Studio

  2. Agrega la instrucción de texto y elige los parámetros de entrada.

  3. En el panel Parameters, usa la opción de activación toggle_onEnable prompt enhancement para dejar habilitada la mejora de instrucciones o inhabilitarla.

  4. Haz clic en Generar .

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

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

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • MODEL_VERSION: Es la versión del modelo de generación de imágenes que se usará. Valores disponibles que admiten la mejora de instrucciones:
    • imagen-3.0-generate-002

    Para obtener más información sobre las versiones y los atributos del modelo, consulta las versiones del modelo.

  • 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.
  • TEXT_PROMPT: La instrucción de texto que guía qué imágenes genera el modelo. Antes de que se generen las imágenes, esta instrucción base se mejora con más detalles y lenguaje descriptivo mediante la herramienta de reescritura de instrucciones basada en LLM.
  • IMAGE_COUNT: La cantidad de imágenes generadas. Valores de números enteros aceptados: de 1 a 4. Valor predeterminado: 4.
  • enhancePrompt: Un valor booleano que permite habilitar la mejora de instrucciones basada en LLM. De forma predeterminada, este valor se establece en true.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT,
    "enhancePrompt": true
  }
}

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/MODEL_VERSION: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/MODEL_VERSION:predict" | Select-Object -Expand Content
Con la mejora de instrucciones habilitada, la respuesta incluye un campo prompt adicional que muestra la instrucción mejorada y su imagen generada asociada:
  {
    "predictions": [
      {
        "mimeType": "MIME_TYPE",
        "prompt": "ENHANCED_PROMPT_1",
        "bytesBase64Encoded": "BASE64_IMG_BYTES_1"
      },
      {
        "mimeType": "MIME_TYPE",
        "prompt": "ENHANCED_PROMPT_2",
        "bytesBase64Encoded": "BASE64_IMG_BYTES_2"
      }
    ]
  }

Por ejemplo, la siguiente respuesta de muestra es para una solicitud con "sampleCount": 2 y "prompt": "A raccoon wearing formal clothes, wearing a top hat. Oil painting in the style of Vincent Van Gogh.". La respuesta muestra dos objetos de predicción, cada uno con su instrucción mejorada y los bytes de imagen generados codificados en base64.

{
  "predictions": [
    {
      "mimeType": "image/png",
      "prompt": "An oil painting in the style of Vincent van Gogh, depicting a raccoon adorned
        in a finely tailored tuxedo, complete with a crisp white shirt and a bow tie. The raccoon
        also sports a classic top hat, perched jauntily on its head. The painting uses thick,
        swirling brushstrokes characteristic of van Gogh, with vibrant hues of blue, yellow, and
        green in the background, contrasting with the dark tones of the raccoon's attire. The light
        source is subtly placed, casting a dramatic shadow of the raccoon's attire onto the surface
        it sits upon, further enhancing the depth and dimensionality of the composition. The
        overall impression is one of a whimsical and sophisticated character, a raccoon elevated to
        a higher class through its formal attire, rendered in van Gogh's iconic style.",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    },
    {
      "mimeType": "image/png",
      "prompt": "An oil painting in the style of Vincent van Gogh featuring a raccoon in a
        dapper suit, complete with a black jacket, crisp white shirt, and a black bow tie. The
        raccoon is wearing a black top hat, adding a touch of elegance to its ensemble. The
        painting is rendered with characteristic van Gogh brushwork, utilizing thick, impasto
        strokes of color. The background is a swirl of blues, greens, and yellows, creating a
        vibrant yet slightly chaotic atmosphere that contrasts with the raccoon's formal attire.
        The lighting is dramatic, casting sharp shadows and highlighting the textures of the fabric
        and the raccoon's fur, enhancing the sense of realism within the fantastical scene. The
        composition focuses on the raccoon's proud posture, highlighting the whimsical contrast of
        a wild animal dressed in formal attire, captured in the unique artistic language of van
        Gogh. ",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

Idioma de la instrucción de texto

Este parámetro opcional te permite configurar el idioma del texto de entrada para la generación de imágenes o la edición de imágenes.

la imagen de un libro generada a partir de una instrucción en hindi
Imagen generada a partir de la instrucción: ऊपर से देखा गया किताबों का ढेर। सबसे ऊपरी पुस्तक में एक पक्षी का जलरंग चित्रण है। किताब पर VERTEX AI मोटे अक्षरों में लिखा हुआ है *

* Una pila de libros vistos desde arriba. El libro de arriba contiene una ilustración en acuarela de un ave. VERTEX AI está escrito en letras en negrita en el libro
Una imagen de una mujer generada a partir de una instrucción en coreano
Imagen generada a partir de la instrucción: 어두운 노란색과 청록색으로 이루어진 밝은 색의 옷을입고 귀걸이를 끼고있는 여자 포스트 모던 패션 사진

Una mujer con colores brillantes, al estilo del amarillo oscuro y cian oscuro, con aros, fotografía de moda posmoderna

Antes de comenzar

Completa los siguientes pasos adicionales antes de usar esta función:

  1. Usa el siguiente comando a fin de crear una identidad de servicio para que Vertex AI la use en tu proyecto:

    gcloud beta services identity create --service=aiplatform.googleapis.com --project=PROJECT_ID
    
  2. Solicitar acceso a las funciones. Para solicitar acceso, envía un correo electrónico al grupo Google Cloud Acceso de verificadores de confianza: GenApp Builder. Haz referencia a Instrucciones multilingües en tu mensaje y, luego, incluye tu número de proyecto. El proceso de aprobación suele tardar varias horas.

Configura el idioma de la instrucción de texto

Se admiten los siguientes valores de idioma de la instrucción de texto de entrada:

  • Chino (simplificado) (zh/zh-CN)
  • Chino (tradicional) (zh-TW)
  • Inglés (en, valor predeterminado)
  • Hindi (hi)
  • Japonés (ja)
  • Coreano (ko)
  • Portugués (pt)
  • Español (es)

Console

Si la instrucción se encuentra en uno de los idiomas compatibles, Imagen detecta y traduce automáticamente el texto y muestra las imágenes generadas o editadas.

Si la instrucción está en un idioma no admitido, Imagen usa el texto al pie de la letra para la solicitud. Esto podría generar un resultado inesperado.

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

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

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • TEXT_PROMPT: La instrucción de texto que guía qué imágenes genera el modelo. Este campo es obligatorio para la generación y la edición.
  • PROMPT_LANGUAGE: Es una cadena. Opcional. Es el código de idioma que corresponde a tu idioma de la instrucción de texto. En este ejemplo, sería hi. Valores disponibles:
    • auto: Detección automática Si Imagen detecta un idioma admitido, la instrucción (y, opcionalmente, una instrucción negativa) se traduce al inglés. Si el idioma detectado no es compatible, Imagen usa el texto de entrada de forma literal, lo que podría generar un resultado inesperado. No se muestra ningún código de error.
    • en: Inglés (valor predeterminado si se omite)
    • es: Español
    • hi: Hindi
    • ja: Japonés
    • ko: Coreano
    • pt: Portugués
    • zh-TW: Chino (tradicional)
    • zh o zh-CN: Chino (simplificado)

HTTP method and URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagegeneration@005:predict

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "सूर्यास्त के समय एक समुद्र तट। उड़ते पक्षी, हवा में लहराते नारियल के पेड़। लोग समुद्र तट पर सैर का आनंद ले रहे हैं।"
    }
  ],
  "parameters": {
    "language": "PROMPT_LANGUAGE"
  }
}

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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagegeneration@005: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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagegeneration@005:predict" | Select-Object -Expand Content
La siguiente respuesta de muestra es para una solicitud con "sampleCount": 2. La respuesta muestra dos objetos de predicción, con los bytes de imagen generados codificados en base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

Relación de aspecto

Según cómo planees usar las imágenes generadas, algunas relaciones de aspecto pueden funcionar mejor que otras. Elige la relación de aspecto que mejor se adapte a tu caso de uso.

Relaciones de aspecto admitidas y su uso previsto:

Relación de aspecto Uso previsto Resolución de imagen (píxeles) Imagen de muestra
1:1 predeterminado, cuadrado, uso general 1024x1024 (Imagen v.002)

1536x1536 (Imagen 2 v.005, v.006)

1024x1024 (Imagen 3)
Imagen generada de muestra en la consola
Mensaje: toma general de una cena de pasta, foto de estudio al estilo de portada de una revista de comida.
3:4 TV, medios de comunicación, cine 1344x1792 (Imagen 2 v.006)

896x1280 (Imagen 3)
Imagen generada de muestra en la consola
Mensaje: sesión de fotos comerciales, anuncio de fragancia, frasco perfumado de lavanda y vainilla sobre un fondo de color claro.
4:3 TV, medios de comunicación, cine 1792x1344 (Imagen 2 v.006)

1280x896 (Imagen 3)
Imagen generada de muestra en la consola
Mensaje: sesión de fotos comerciales, calzado tipo sneakers altas de color verde y gris, 4k, ángulos dramáticos.
9:16 vertical, objetos altos, dispositivos móviles 1134x2016 (Imagen 2 v.005, v.006)

768x1408 (Imagen 3)
Imagen generada de muestra en la consola
Mensaje: rascacielos en la ciudad de Nueva York, renderización futurista, concepto, arte digital.
16:9 paisaje 2016x1134 (Imagen 2 v.006)

1408x768 (Imagen 3)
Imagen generada de muestra en la consola
Mensaje: foto de naturaleza, una playa de Hawái con el océano del fondo, destello de lente, atardecer.

Console

  1. Sigue las instrucciones para generar una imagen con texto a fin de abrir Generative AI Studio y, luego, ingresar la instrucción de texto.

  2. En el panel Parámetros, selecciona una relación de aspecto en el menú Relación de aspecto.

  3. Haz clic en Generar .

REST

La relación de aspecto es un campo opcional en el objeto parameters de un cuerpo de solicitud JSON.

  1. Sigue las instrucciones para generar una imagen con texto a fin de reemplazar otras variables de cuerpo de solicitud.

  2. Reemplaza lo siguiente:

    • ASPECT_RATIO: Es una cadena. Opcional. Un parámetro de modo de generación que controla la relación de aspecto. Valores de proporción admitidos y su uso previsto:
      • 1:1 (predeterminado, cuadrado)
      • 3:4 (anuncios y redes sociales)
      • 4:3 (TV, fotografía)
      • 16:9 (horizontal)
      • 9:16 (vertical)
    {
      "instances": [
        ...
      ],
      "parameters": {
        "sampleCount": IMAGE_COUNT,
        "aspectRatio": "ASPECT_RATIO"
      }
    }
    
  3. Sigue las instrucciones para generar una imagen con texto a fin de enviar tu solicitud de REST.

Cantidad de resultados

Usa el parámetro de cantidad de resultados para limitar la cantidad de imágenes que se muestran de cada solicitud (generar o editar).

Console

  1. Sigue las instrucciones para generar una imagen con texto a fin de abrir Generative AI Studio y, luego, ingresar la instrucción de texto.

  2. En el panel Parámetros, selecciona un valor de número entero válido en el campo Cantidad de resultados.

  3. Haz clic en Generar .

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

La cantidad de resultados es un campo en el objeto parameters de un cuerpo de la solicitud JSON.

  1. Sigue las instrucciones para generar una imagen con texto a fin de reemplazar otras variables de cuerpo de solicitud.

  2. Reemplaza lo siguiente:

    • IMAGE_COUNT: La cantidad de imágenes generadas. Valores de números enteros aceptados: 1-8 (imagegeneration@002), 1-4 (todas las demás versiones del modelo). Valor predeterminado: 4.
    {
      "instances": [
        ...
      ],
      "parameters": { 
        "sampleCount": IMAGE_COUNT
      }
    }
    
  3. Sigue las instrucciones para generar una imagen con texto a fin de enviar tu solicitud de REST.

Instrucción negativa

Una instrucción negativa es una descripción de lo que deseas omitir en las imágenes generadas. Por ejemplo, considera el mensaje “una calle de la ciudad bajo la lluvia por la noche sin personas”. El modelo puede interpretar a “personas” como una directiva de lo que se incluye, en lugar de omitirlo. Para generar mejores resultados, puedes usar el mensaje “una calle de la ciudad bajo la lluvia por la noche” durante la noche” con un mensaje negativo "personas".

La imagen genera estas imágenes con una instrucción negativa o sin una instrucción negativa:

Solo un mensaje de texto

  • Mensaje de texto: "una pizza"

tres imágenes de pizza de muestra

Instrucción negativa y mensaje de texto

  • Instrucción de texto: “una pizza
  • Instrucción negativa: “pepperoni

tres muestras de imágenes de pizzas sin pepperoni

Console

  1. Sigue las instrucciones para generar una imagen con texto a fin de abrir Generative AI Studio y, luego, ingresar la instrucción de texto.

  2. En el panel Parámetros, ingresa una instrucción negativa en el campo Instrucción negativa.

  3. Haz clic en Generar .

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

La instrucción negativa es un campo opcional en el objeto parameters de un cuerpo de la solicitud JSON.

  1. Sigue las instrucciones para generar una imagen con texto a fin de reemplazar otras variables de cuerpo de solicitud.

  2. Reemplaza lo siguiente:

    • NEGATIVE_PROMPT: una instrucción negativa para ayudar a generar las imágenes. Por ejemplo: “animales” (quita los animales), “difuminar” (hace que la imagen sea más clara), “texto” (quita el texto) o “recortada” (quita las imágenes recortadas).
    {
      "instances": [
        ...
      ],
      "parameters": {
        "sampleCount": IMAGE_COUNT,
        "negativePrompt": "NEGATIVE_PROMPT"
      }
    }
    
  3. Sigue las instrucciones para generar una imagen con texto a fin de enviar tu solicitud de REST.

Número de origen

Un número de origen es un número que agregas a una solicitud para hacer que las imágenes generadas sean determinísticas. Agregar un número de origen con tu solicitud es una forma de garantizar que obtengas las mismas imágenes generadas cada vez. Por ejemplo, puedes proporcionar una instrucción, establecer la cantidad de resultados en 1 y usar un número de origen para obtener la misma imagen cada vez que uses todos esos mismos valores de entrada. Si envías la misma solicitud con el número de resultados establecido en 8, obtendrás las mismas ocho imágenes. Sin embargo, las imágenes no siempre se muestran en el mismo orden.

Console

  1. Sigue las instrucciones para generar una imagen con texto a fin de abrir Generative AI Studio y, luego, ingresar la instrucción de texto.

  2. En el panel Parámetros, haz clic en la sección desplegable Opciones avanzadas.

  3. En el campo Origen, ingresa un número de origen.

  4. Haz clic en Generar .

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

El número de origen es un campo opcional en el objeto parameters de un cuerpo de la solicitud JSON.

  1. Sigue las instrucciones para generar una imagen con texto a fin de reemplazar otras variables de cuerpo de solicitud.

  2. Reemplaza lo siguiente:

    • SEED_NUMBER: Es un número entero. Opcional. Cualquier número entero no negativo que proporciones para que las imágenes de salida sean determinísticas. Proporcionar el mismo número de origen siempre da como resultado las mismas imágenes de salida. Si el modelo que usas admite la marca de agua digital, debes configurar "addWatermark": false para usar este campo. Valores de números enteros aceptados: 1 - 2147483647.
    {
      "instances": [
        ...
      ],
      "parameters": {
        "sampleCount": IMAGE_COUNT,
        "seed": SEED_NUMBER,
        // required for model version 006 and greater only when using a seed number
        "addWatermark": false
      }
    }
    
  3. Sigue las instrucciones para generar una imagen con texto a fin de enviar tu solicitud de REST.

Estilo predefinido

El estilo de la imagen que deseas generar. Puedes usar esta característica para crear imágenes en estilos populares, como el arte digital, la acuarela o el ciberseguridad.

Console

  1. Sigue las instrucciones para generar una imagen con texto a fin de abrir Generative AI Studio y, luego, ingresar la instrucción de texto.

  2. En la sección Estilo del panel Parámetros, elige un estilo del menú.

  3. Haz clic en Generar .

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

El estilo predefinido es un campo opcional en el objeto parameters de un cuerpo de solicitud JSON.

  1. Sigue las instrucciones para generar una imagen con texto a fin de reemplazar otras variables de cuerpo de solicitud.

  2. Reemplaza lo siguiente:

    • IMAGE_STYLE: Uno de los estilos predefinidos disponibles:
      • photograph
      • digital_art
      • landscape
      • sketch
      • watercolor
      • cyberpunk
      • pop_art
    {
      "instances": [
        ...
      ],
      "parameters": {
        "sampleCount": IMAGE_COUNT,
        "sampleImageStyle": "IMAGE_STYLE"
      }
    }
    
  3. Sigue las instrucciones para generar una imagen con texto a fin de enviar tu solicitud de REST.

Cómo mejorar una imagen

Usa el escalamiento vertical para aumentar el tamaño de las imágenes existentes, generadas o editadas sin perder calidad.

Console

  1. Sigue las instrucciones para generar una imagen con texto a fin de generar imágenes.

  2. Selecciona la imagen que deseas mejorar.

  3. Haz clic en Exportar.

  4. Selecciona Mejorar imágenes.

  5. Elige un valor de Factor de escala.

  6. Haz clic en Exportar para guardar la imagen actualizada.

REST

Para obtener más información sobre las solicitudes del modelo imagegeneration, consulta la referencia de la API del modelo imagegeneration.

El modo de mejora de la resolución es un campo opcional en el objeto parameters de un cuerpo de solicitud JSON. Cuando mejoras una imagen con la API, especifica "mode": "upscale" y upscaleConfig.

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

  • 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.
  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • B64_BASE_IMAGE: La imagen base que se editará o mejorará. La imagen debe especificarse como una cadena de bytes codificada en base64. Límite de tamaño: 10 MB.
  • IMAGE_SOURCE: La ubicación de Cloud Storage de la imagen que deseas editar o mejorar. Por ejemplo: gs://output-bucket/source-photos/photo.png.
  • UPSCALE_FACTOR: Opcional El factor al que se ampliará la imagen. Si no se especifica, el factor de mejora se determinará a partir del lado más largo de la imagen de entrada y sampleImageSize. Valores disponibles: x2 o x4 .

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "",
      "image": {
        // use one of the following to specify the image to upscale
        "bytesBase64Encoded": "B64_BASE_IMAGE"
        "gcsUri": "IMAGE_SOURCE"
        // end of base image input options
      },
    }
  ],
  "parameters": {
    "sampleCount": 1,
    "mode": "upscale",
    "upscaleConfig": {
      "upscaleFactor": "UPSCALE_FACTOR"
    }
  }
}

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/imagegeneration@002: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/imagegeneration@002:predict" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "predictions": [
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "iVBOR..[base64-encoded-upscaled-image]...YII="
    }
  ]
}

¿Qué sigue?

Lee artículos sobre Imagen y otros productos de IA generativa en Vertex AI: