Editar imágenes mediante mensajes de texto

En esta página, se describe la edición sin máscaras con solo instrucciones de texto. La edición sin máscara te permite editar una imagen sin una máscara. Este método de edición es útil para las ediciones que pertenecen a toda la imagen o cuando la ubicación de las ediciones no es tan importante para tu caso de uso.

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

Puedes editar una imagen base (generada o subida) solo con un mensaje de texto. No es necesario que especifiques el área para modificar y la actualización se aplica a toda la imagen (también llamada edición sin máscara).

Para realizar una edición sin máscara, usa una instrucción que describa lo que deseas ver en lugar de las instrucciones sobre qué cambiar. Por ejemplo, imagina una imagen existente de un gato que quieres cambiar a un perro. Un mensaje de edición sin máscara de "un perro" podría ser más eficaz que "cambiar el gato a un perro". Del mismo modo, considera una imagen que generes con el mensaje “un gato en la playa”. Para cambiar esta imagen, usa un mensaje de edición "un perro en la playa".

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

Consulta la tarjeta del modelo de Imagen para edición y personalización

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.

    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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. 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.

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

    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.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

    Usa la edición sin máscaras

    Usa las siguientes muestras para editar una imagen completa sin un área de la máscara.

    Console

    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 Edit image.

      Edita la imagen generada

      1. Genera imágenes con un mensaje de texto
      2. Haz clic en una imagen generada.
      3. Haz clic en Edit image.

      Edita la imagen subida

      1. Haz clic en Cargar una imagen.
      2. Selecciona el archivo local que deseas editar.
    4. Ingresa un mensaje nuevo que modifique la imagen.

    5. Opcional. Modifica cualquier parámetro.
    6. Haz clic en Generar.

      Una imagen de edición de muestra que usa solo texto
      Vista Edit image de una imagen editada con Imagen on Vertex AI de un mensaje: un pastel de matcha. La imagen original se muestra en la parte superior derecha. Crédito de la imagen original: David Holifield en Unsplash (se muestra en la Google Cloud consola).

    Python

    Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API de Python.

    En este ejemplo, se usa el método load_from_file para hacer referencia a un archivo local como la base Image que se debe modificar. Después de especificar la imagen base, usa el método edit_image en ImageGenerationModel y guarda la imagen editada de forma local. Luego, tienes la opción de usar el método show() en un notebook para mostrar 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El Google Cloud ID del 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: Es 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.
    • 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.
    • EDIT_IMAGE_COUNT: la cantidad de imágenes editadas. El valor predeterminado es 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 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"
        }
      ]
    }
    

    ¿Qué sigue?

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