Editar imagens usando solicitações de texto

Esta página descreve a edição sem máscara usando apenas comandos de texto. A edição sem máscara permite editar uma imagem sem uma máscara. Esse método de edição é útil para edições que pertencem a toda a imagem ou quando o local das edições não é tão importante para seu caso de uso.

Exemplo de edição sem máscara (toda a imagem)

Você pode editar uma imagem de base (gerada ou enviada) usando apenas uma solicitação de texto. Não é necessário especificar a área a ser modificada, e a atualização é aplicada à imagem inteira (também chamada de edição sem máscara).

Para fazer uma edição sem máscara, use uma solicitação que descreva o que você quer ver, em vez de instruções sobre o que mudar. Por exemplo, considere a imagem de um gato que você quer trocar para um cachorro. Um comando de edição sem máscara de "um cachorro" pode ser mais eficaz do que "troque o gato por um cachorro". Da mesma forma, considere uma imagem gerada com o comando "um gato na praia". Para mudar a imagem, use o comando de edição um cachorro na praia.

Imagem original de gato ao lado da imagem do cachorro editada
Imagem original (à esquerda): Cédric VT no Unsplash.
Imagem editada (à direita): imagem gerada usando o Imagen na Vertex AI com a imagem base original e a solicitação: um cachorro.

Ver o card do modelo do Imagen para edição e personalização

Antes de começar

  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. Configure a autenticação do ambiente.

    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 os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.

    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.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI 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.

    Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud .

    Usar a edição sem máscaras

    Use os exemplos a seguir para editar uma imagem inteira sem uma área de máscara.

    Console

    1. No Google Cloud console, acesse a página Vertex AI > Media Studio .

      Acessar o Media Studio
    2. No painel inferior de tarefas, clique em Editar imagem.
    3. Acesse a tela Editar imagem.

      Editar imagem gerada

      1. Gerar imagens usando uma solicitação de texto
      2. Clique em uma imagem gerada.
      3. Clique em Editar imagem.

      Editar imagem enviada

      1. Clique em Enviar uma imagem.
      2. Selecione o arquivo local a ser editado.
    4. Insira uma nova solicitação para modificar a imagem.

    5. Opcional. Modifique os Parâmetros.
    6. Clique em Gerar.

      Um exemplo de imagem de edição que usa apenas texto
      Visualização de edição de imagem de uma imagem editada com o Imagen na Vertex AI a partir do prompt: um bolo de matcha. Imagem original exibida no canto superior direito. Crédito da imagem original: David Holifield no Unsplash (mostrado no console do Google Cloud ).

    Python

    Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

    Neste exemplo, você usa o método load_from_file para referenciar um arquivo local como a Image base a ser modificada. Depois de especificar a imagem de base, use o método edit_image no ImageGenerationModel e salve a imagem editada localmente. Em seguida, você tem a opção de usar o método show() em um notebook para mostrar as imagens editadas.

    
    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 os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto do Google Cloud .
    • LOCATION: a região do seu projeto. Por exemplo, us-central1, europe-west2 ou asia-northeast3. Para uma lista de regiões disponíveis, consulte IA generativa em locais da Vertex AI.
    • TEXT_PROMPT: o comando de texto que orienta quais imagens o modelo gera. Este campo é obrigatório para geração e edição.
    • B64_BASE_IMAGE: a imagem de base que será editada ou aprimorada. A imagem precisa ser especificada como uma string de bytes codificada em base64. Limite de tamanho: 10 MB.
    • EDIT_IMAGE_COUNT: o número de imagens editadas. Valor padrão: 4.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          "image": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        }
      ],
      "parameters": {
        "sampleCount": EDIT_IMAGE_COUNT
      }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    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

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $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
    O exemplo de resposta a seguir é para uma solicitação com "sampleCount": 2. A resposta retorna dois objetos de previsão, com os bytes de imagem gerados codificados em base64.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    A seguir

    Confira artigos sobre o Imagen e outras IAs generativas nos produtos da Vertex AI: