Generar imágenes

La API de Imagen te permite crear imágenes de alta calidad en segundos, con instrucciones de texto para guiar la generación. También puedes mejorar las imágenes con la API de Image.

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

Modelos compatibles

Modelo Código
Generación de imágenes imagen-3.0-generate-002
imagen-3.0-generate-001
imagen-3.0-fast-generate-001
imagegeneration@006
imagegeneration@005
imagegeneration@002

Para obtener más información sobre cómo funcionan las funciones que admite cada modelo, consulta Control de versiones de modelos.

Ejemplo de sintaxis

Sintaxis para crear una imagen a partir de una instrucción de texto.

Sintaxis

Sintaxis para generar una imagen.

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_VERSION}:predict \
-d '{
  "instances": [
    {
      "prompt": "..."
    }
  ],
  "parameters": {
    "sampleCount": ...
  }
}'

Python

generation_model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-001")

response = generation_model.generate_images(
    prompt="...",
    negative_prompt="...",
    aspect_ratio=...,
)
response.images[0].show()

Lista de parámetros

Consulta ejemplos para obtener detalles sobre la implementación.

Generar imágenes

REST

Parámetros
prompt

Obligatorio: string

Es la instrucción de texto para la imagen.

El modelo imagen-3.0-generate-002 admite hasta 480 tokens.

El modelo imagen-3.0-generate-001 admite hasta 480 tokens.

El modelo imagen-3.0-fast-generate-001 admite hasta 480 tokens.

El modelo imagegeneration@006 admite hasta 128 tokens.

El modelo imagegeneration@005 admite hasta 128 tokens.

El modelo imagegeneration@002 admite hasta 64 tokens.

sampleCount

Obligatorio: int

Es la cantidad de imágenes que se generarán. El valor predeterminado es 4.

El modelo imagen-3.0-generate-002 admite los valores del 1 al 4.

El modelo imagen-3.0-generate-001 admite los valores del 1 al 4.

El modelo imagen-3.0-fast-generate-001 admite los valores del 1 al 4.

El modelo imagegeneration@006 admite los valores del 1 al 4.

El modelo imagegeneration@005 admite los valores del 1 al 4.

El modelo imagegeneration@002 admite valores del 1 al 8.

seed

Opcional: Uint32

La semilla aleatoria para la generación de imágenes. No está disponible cuando addWatermark se configura como true.

enhancePrompt

Opcional: boolean

Es un parámetro opcional 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 a las instrucciones.

imagen-3.0-generate-002 admite este campo. Valor predeterminado true.

imagen-3.0-generate-001 no admite este campo.

imagen-3.0-fast-generate-001 no admite este campo.

imagegeneration@006 no admite este campo.

imagegeneration@005 no admite este campo.

imagegeneration@002 no admite este campo.

negativePrompt

Opcional: string

Una descripción de lo que se debe evitar en las imágenes generadas.

imagen-3.0-generate-002 no admite este campo.

El modelo imagen-3.0-generate-001 admite hasta 480 tokens.

El modelo imagen-3.0-fast-generate-001 admite hasta 480 tokens.

El modelo imagegeneration@006 admite hasta 128 tokens.

El modelo imagegeneration@005 admite hasta 128 tokens.

El modelo imagegeneration@002 admite hasta 64 tokens.

aspectRatio

Opcional: string

Es la relación de aspecto de la imagen. El valor predeterminado es "1:1".

El modelo imagen-3.0-generate-002 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

El modelo imagen-3.0-generate-001 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

El modelo imagen-3.0-fast-generate-001 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

El modelo imagegeneration@006 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

El modelo imagegeneration@005 admite "1:1" o "9:16".

El modelo imagegeneration@002 admite "1:1".

outputOptions

Opcional: outputOptions

Describe el formato de imagen de salida en un objeto outputOptions.

sampleImageStyle

Opcional: string (solo imagegeneration@002)

Describe el estilo de las imágenes generadas. Se admiten los siguientes valores:

  • "photograph"
  • "digital_art"
  • "landscape"
  • "sketch"
  • "watercolor"
  • "cyberpunk"
  • "pop_art"
personGeneration

Opcional: string (solo imagen-3.0-generate-002, imagen-3.0-generate-001, imagen-3.0-fast-generate-001 y imagegeneration@006)

Permite que el modelo genere personas. Se admiten los siguientes valores:

  • "dont_allow": No permite la inclusión de personas ni rostros en las imágenes.
  • "allow_adult": Permite la generación de adultos solamente.
  • "allow_all": permite la generación de personas de todas las edades.

El valor predeterminado es "allow_adult".

safetySetting

Opcional: string (solo imagen-3.0-generate-002, imagen-3.0-generate-001, imagen-3.0-fast-generate-001 y imagegeneration@006)

Agrega un nivel de filtro al filtrado de seguridad. Se admiten los siguientes valores:

  • "block_low_and_above": Es el nivel de filtrado más estricto y el bloqueo más estricto. Valor obsoleto: "block_most".
  • "block_medium_and_above": Bloquea algunas instrucciones y respuestas problemáticas. Valor obsoleto: "block_some".
  • "block_only_high": Reduce la cantidad de solicitudes bloqueadas debido a los filtros de seguridad. Puede aumentar el contenido censurable que genera Imagen. Valor obsoleto: "block_few".
  • "block_none": Bloquea muy pocas instrucciones y respuestas problemáticas. El acceso a esta función está restringido. Valor del campo anterior: "block_fewest".

El valor predeterminado es "block_medium_and_above".

addWatermark

Opcional: bool

Agrega una marca de agua invisible a las imágenes generadas. El valor predeterminado es false para los modelos imagegeneration@002 y imagegeneration@005, y true para los modelos imagen-3.0-generate-002, imagen-3.0-generate-001, imagen-3.0-fast-generate-001, imagegeneration@006 y imagegeneration@006.

storageUri

Opcional: string

Es el URI de Cloud Storage para almacenar las imágenes generadas.

Objeto de opciones de salida

El objeto outputOptions describe el resultado de la imagen.

Parámetros
outputOptions.mimeType

Opcional: string

Es el formato de imagen en el que se debe guardar el resultado. Se admiten los siguientes valores:

  • "image/png": Guardar como imagen PNG
  • "image/jpeg": Guardar como imagen JPEG

El valor predeterminado es "image/png".

outputOptions.compressionQuality

Opcional: int

El nivel de compresión si el tipo de salida es "image/jpeg". Los valores aceptados son del 0 al 100. El valor predeterminado es 75.

Respuesta

El cuerpo de la respuesta de la solicitud de REST.

Parámetro
predictions

Un array de objetos VisionGenerativeModelResult, uno para cada sampleCount solicitado. Si la IA responsable filtra alguna imagen, no se incluyen, a menos que includeRaiReason se establezca en true.

Objeto del resultado del modelo generativo de visión

Objeto del resultado del modelo generativo de visión

Parámetro
bytesBase64Encoded

La imagen generada codificada en base64. No está presente si la imagen de salida no pasó los filtros de IA responsable.

mimeType

Es el tipo de la imagen generada. No está presente si la imagen de salida no pasó los filtros de IA responsable.

raiFilteredReason

El motivo del filtro de IA responsable. Solo se muestra si includeRaiReason está habilitado y esta imagen se filtró.

safetyAttributes.categories

Es el nombre del atributo de seguridad. Solo se muestra si includeSafetyAttributes está habilitado y la imagen de salida pasó los filtros de IA responsable.

safetyAttributes.scores

La puntuación del atributo de seguridad. Solo se muestra si includeSafetyAttributes está habilitado y la imagen de salida pasó los filtros de IA responsable.

Python

Parámetros
prompt

Obligatorio: string

Es la instrucción de texto para la imagen.

El modelo imagen-3.0-generate-001 admite hasta 480 tokens.

El modelo imagen-3.0-fast-generate-001 admite hasta 480 tokens.

El modelo imagegeneration@006 admite hasta 128 tokens.

El modelo imagegeneration@005 admite hasta 128 tokens.

El modelo imagegeneration@002 admite hasta 64 tokens.

number_of_images

Obligatorio: int

Es la cantidad de imágenes que se generarán. El valor predeterminado es 1.

El modelo imagen-3.0-generate-001 admite valores del 1 al 8.

El modelo imagen-3.0-fast-generate-001 admite valores del 1 al 8.

El modelo imagegeneration@006 admite los valores del 1 al 4.

El modelo imagegeneration@005 admite los valores del 1 al 4.

El modelo imagegeneration@002 admite valores del 1 al 8.

seed

Opcional: int

La semilla aleatoria para la generación de imágenes. No está disponible cuando addWatermark se configura como true.

negative_prompt

Opcional: string

Una descripción de lo que se debe evitar en las imágenes generadas.

El modelo imagen-3.0-generate-001 admite hasta 480 tokens.

El modelo imagen-3.0-fast-generate-001 admite hasta 480 tokens.

El modelo imagegeneration@006 admite hasta 128 tokens.

El modelo imagegeneration@005 admite hasta 128 tokens.

El modelo imagegeneration@002 admite hasta 64 tokens.

aspect_ratio

Opcional: string

Es la relación de aspecto de la imagen. El valor predeterminado es "1:1".

El modelo imagen-3.0-generate-001 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

El modelo imagen-3.0-fast-generate-001 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

El modelo imagegeneration@006 admite "1:1", "9:16", "16:9", "3:4" o "4:3".

output_mime_type

Opcional: string (solo imagen-3.0-generate-001, imagen-3.0-fast-generate-001 y imagegeneration@006)

Es el formato de imagen en el que se debe guardar el resultado. Se admiten los siguientes valores:

  • "image/png": Guardar como imagen PNG
  • "image/jpeg": Guardar como imagen JPEG

El valor predeterminado es "image/png".

compression_quality

Opcional: int

El nivel de compresión si el tipo de MIME de salida es "image/jpeg". El valor predeterminado es 75.

language

Opcional: string

Es el idioma de la instrucción de texto de la imagen. Se admiten los siguientes valores:

  • "en": Inglés
  • "hi": Hindi
  • "ja": Japonés
  • "ko": Coreano
  • "auto": detección automática de idioma

El valor predeterminado es "auto".

output_gcs_uri

Opcional: string

Es el URI de Cloud Storage para almacenar las imágenes generadas.

add_watermark

Opcional: bool

Agrega una marca de agua a la imagen generada. El valor predeterminado es false para los modelos imagegeneration@002 y imagegeneration@005, y true para los modelos imagen-3.0-fast-generate-001, imagen-3.0-generate-001 y imagegeneration@006.

safety_filter_level

Opcional: string

Agrega un nivel de filtro al filtrado de seguridad. Se admiten los siguientes valores:

  • "block_low_and_above": Es el nivel de filtrado más estricto, que da como resultado el bloqueo más estricto. Valor obsoleto: "block_most".
  • "block_medium_and_above": Bloquea algunas instrucciones y respuestas problemáticas. Valor obsoleto: "block_some".
  • "block_only_high": Bloquea menos instrucciones y respuestas problemáticas. Valor obsoleto: "block_few".
  • "block_none": Bloquea muy pocas instrucciones y respuestas problemáticas. Valor obsoleto: "block_fewest".

El valor predeterminado es "block_medium_and_above".

person_generation

Opcional: string (solo imagen-3.0-generate-001, imagen-3.0-fast-generate-001 y imagegeneration@006)

Permite que el modelo genere personas. Se admiten los siguientes valores:

  • "dont_allow": Bloquea la generación de personas
  • "allow_adult": Genera adultos, pero no niños
  • "allow_all": Genera adultos y niños

El valor predeterminado es "allow_adult".

Mejorar las imágenes

REST

Parámetro
mode

Obligatorio: string

Debe establecerse en "upscale" para las solicitudes de escalamiento.

upscaleConfig

Obligatorio: UpscaleConfig

Un objeto UpscaleConfig.

outputOptions

Opcional: OutputOptions

Describe el formato de imagen de salida en un objeto outputOptions.

storageUri

Opcional: string

Es el URI de Cloud Storage donde se almacenarán las imágenes generadas.

Objeto de configuración de mejora

Parámetro
upscaleConfig.upscaleFactor

Obligatorio: string

El factor de mejora. Los valores admitidos son "x2" y "x4".

Respuesta

El cuerpo de la respuesta de la solicitud de REST.

Parámetro
predictions

Un array de objetos VisionGenerativeModelResult, uno para cada sampleCount solicitado. Si la IA responsable filtra alguna imagen, no se incluyen, a menos que includeRaiReason se establezca en true.

Ejemplos

En los siguientes ejemplos, se muestra cómo usar los modelos de Imagen para generar imágenes.

Generar imágenes

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.
  • 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: El mensaje 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.

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 la ImageGenerationModel (versión @006) 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

Mejorar las imágenes

REST

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?