Edita imágenes usando peticiones de texto

En esta página se describe la edición sin máscara usando solo peticiones de texto. La edición sin máscara te permite editar una imagen sin máscara. Este método de edición es útil para las modificaciones que afectan a toda la imagen o cuando la ubicación de las ediciones no es tan importante para tu caso práctico.

Ejemplo de edición sin máscara (toda la imagen)

Puedes editar una imagen base (generada o subida) usando solo una petición de texto. No tienes que especificar el área que quieres modificar, ya que la actualización se aplica a toda la imagen (también se denomina edición sin máscara).

Para hacer una edición sin máscara, usa una petición que describa lo que quieres ver en lugar de instrucciones sobre lo que quieres cambiar. Por ejemplo, supongamos que tienes una imagen de un gato y quieres cambiarla por una de un perro. Una petición de edición sin máscara como "un perro" puede ser más eficaz que "cambia el gato por un perro". Del mismo modo, considera una imagen que generes con la petición "un gato en la playa". Para cambiar esta imagen, usa una petición de edición como "un perro en la playa".

Imagen original de un gato junto a una imagen editada de un perro
Imagen original (izquierda): Cédric VT en Unsplash.
Imagen editada (derecha): imagen generada con Imagen en Vertex AI a partir de la imagen base original y la petición un perro.

Ver la tarjeta del modelo Imagen for Editing and Customization

Antes de empezar

  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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Configura la autenticación de 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.

    Python

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local en la documentación de autenticación Google Cloud .

    REST

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

    Usar la edición sin máscara

    Usa los siguientes ejemplos para editar una imagen completa sin un área de máscara.

    Consola

    1. En la Google Cloud consola, ve a la página Vertex AI > Media Studio .

      Ir a Media Studio
    2. En el panel de tareas inferior, haz clic en Editar imagen.
    3. Ve a la pantalla Editar imagen.

      Editar imagen generada

      1. Generar imágenes mediante una petición de texto
      2. Haz clic en una imagen generada.
      3. Haz clic en Editar imagen.

      Editar imagen subida

      1. Haz clic en Subir una imagen.
      2. Selecciona el archivo local que quieras editar.
    4. Introduce una nueva petición para modificar la imagen.

    5. Opcional. Modifica los parámetros que quieras.
    6. Haz clic en Generar.

      Imagen de muestra editada solo con texto
      Vista Editar imagen de una imagen editada con Imagen en Vertex AI a partir de la petición: un pastel de matcha. Imagen original mostrada en la parte superior derecha. Créditos de la imagen original: David Holifield en Unsplash (se muestra en la Google Cloud consola).

    Python

    Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.

    En este ejemplo, se usa el método load_from_file para hacer referencia a un archivo local como Image base que se va a modificar. Después de especificar la imagen base, usa el método edit_image en ImageGenerationModel y guarda la imagen editada de forma local. Después, tienes la opción de usar el método show() en un cuaderno para ver la imagen editada.

    
    import vertexai
    from vertexai.preview.vision_models import Image, ImageGenerationModel
    
    # TODO(developer): Update and un-comment below lines
    # PROJECT_ID = "your-project-id"
    # input_file = "input-image.png"
    # output_file = "output-image.png"
    # prompt = "" # The text prompt describing what you want to see.
    
    vertexai.init(project=PROJECT_ID, location="us-central1")
    
    model = ImageGenerationModel.from_pretrained("imagegeneration@002")
    base_img = Image.load_from_file(location=input_file)
    
    images = model.edit_image(
        base_image=base_img,
        prompt=prompt,
        # Optional parameters
        seed=1,
        # Controls the strength of the prompt.
        # -- 0-9 (low strength), 10-20 (medium strength), 21+ (high strength)
        guidance_scale=21,
        number_of_images=1,
    )
    
    images[0].save(location=output_file, include_generation_parameters=False)
    
    # Optional. View the edited 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
    

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: tu Google Cloud ID de proyecto.
    • LOCATION: la región de tu proyecto. Por ejemplo, us-central1, europe-west2 o asia-northeast3. Para ver una lista de las regiones disponibles, consulta Ubicaciones de la IA generativa en Vertex AI.
    • TEXT_PROMPT: la petición de texto que indica qué imágenes debe generar el modelo. Este campo es obligatorio tanto para generar como para editar.
    • B64_BASE_IMAGE: la imagen base que quieres editar o aumentar de resolución. La imagen debe especificarse como una cadena de bytes codificada en Base64. Tamaño máximo: 10 MB.
    • EDIT_IMAGE_COUNT: número de imágenes editadas. Valor predeterminado: 4.

    Método HTTP y 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": "TEXT_PROMPT",
          "image": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        }
      ],
      "parameters": {
        "sampleCount": EDIT_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/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
    La siguiente respuesta de ejemplo corresponde a una solicitud con "sampleCount": 2. La respuesta devuelve dos objetos de predicción con los bytes de la imagen generada codificados en Base64.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    Siguientes pasos

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