Remover objetos de uma imagem usando o retoque

Nesta página, descrevemos como remover objetos de uma imagem usando uma área de máscara, um processo também conhecido como repintura. Você pode fornecer sua própria máscara ou permitir que o Imagen gere uma para você.

Exemplo de remoção de conteúdo

O exemplo a seguir usa o retoque e uma máscara de imagem para remover conteúdo de uma imagem atual:

Entradas

Imagem de base* para editar

Mascarar a área especificada usando ferramentas no console Google Cloud

Comando de texto

Exemplo de imagem base de um sofá vermelho com uma bolsa de limões à direita e um travesseiro decorativo no canto esquerdo. O sofá está posicionado em um ângulo, com um único pé colocado em um tapete branco. Em frente ao sofá, no tapete, há dois limões. A imagem base de exemplo do sofá vermelho é mostrada, com áreas mascaradas definidas para a bolsa de limões no sofá e dois limões no tapete.

Comando: remover objetos selecionados da imagem

* Crédito da imagem: Inside Weather no Unsplash.

Saída após especificar uma área de máscara no console do Google Cloud

Uma amostra de imagem editada mostra o sofá e o tapete no exemplo de entrada sem limões Uma amostra de imagem editada mostra o sofá e o tapete no exemplo de entrada sem limões Uma amostra de imagem editada mostra o sofá e o tapete no exemplo de entrada sem limões

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.

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

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade 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.

    Saiba mais em 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 desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

    Remover com uma área de máscara definida

    Use os exemplos a seguir para especificar o retoque para remover o conteúdo. Nessas amostras, você especifica uma imagem de base, um prompt de texto e uma área de máscara para modificar a imagem de base.

    Console

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

    <a href="https://console.cloud.google.com/vertex-ai/studio/media/generate;tab=image" class="button button-primary"
    target="console" track-name="consoleLink" track-type="task">Go to Media
    Studio</a>
    
    1. Clique em Fazer upload. Na caixa de diálogo de arquivos exibida, selecione um arquivo para fazer upload.

    2. Clique em Pintar.

    3. No painel Parâmetros, clique em Pintar (remover).

    4. Escolha uma destas opções:

      • Fazer upload da sua própria máscara:

        1. Crie uma máscara no computador.

        2. Clique em Fazer upload da máscara. Na caixa de diálogo exibida, selecione uma máscara para fazer upload.

      • Defina sua própria máscara:na barra de ferramentas de edição, use as ferramentas de máscara (caixa, pincel ou masked_transitions inverter) para especificar a área ou áreas às quais adicionar conteúdo.

    5. Opcional: no painel Parâmetros, ajuste as seguintes opções:

      • Modelo: o modelo do Imagen a ser usado

      • Número de resultados: o número de resultados a serem gerados.

      • Comando negativo: itens a serem evitados na geração

    6. No campo de comando, digite um comando para modificar a imagem.

    7. Clique em Gerar.

    Python

    Instalar

    pip install --upgrade google-genai

    Para saber mais, consulte a documentação de referência do SDK.

    Defina variáveis de ambiente para usar o SDK de IA generativa com a Vertex AI:

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=us-central1
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import (
        RawReferenceImage,
        MaskReferenceImage,
        MaskReferenceConfig,
        EditImageConfig,
    )
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_file = "output-image.png"
    
    raw_ref = RawReferenceImage(
        reference_image=Image.from_file(location="test_resources/fruit.png"),
        reference_id=0,
    )
    mask_ref = MaskReferenceImage(
        reference_id=1,
        reference_image=Image.from_file(location="test_resources/fruit_mask.png"),
        config=MaskReferenceConfig(
            mask_mode="MASK_MODE_USER_PROVIDED",
            mask_dilation=0.01,
        ),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="",
        reference_images=[raw_ref, mask_ref],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_INPAINT_REMOVAL",
        ),
    )
    
    image.generated_images[0].image.save(output_file)
    
    print(f"Created output image using {len(image.generated_images[0].image.image_bytes)} bytes")
    # Example response:
    # Created output image using 1234567 bytes
    

    REST

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • 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.
    • prompt: para outpainting de imagens, é possível fornecer uma string vazia para criar as imagens editadas. Se você optar por fornecer um comando, use uma descrição da área mascarada para ter os melhores resultados. Por exemplo, um céu azul em vez de insira um céu azul.
    • referenceType: um ReferenceImage é uma imagem que fornece contexto adicional para a edição de imagens. Uma imagem de referência bruta RGB normal (REFERENCE_TYPE_RAW) é necessária para casos de uso de edição. No máximo, uma imagem de referência bruta pode existir em uma solicitação. A imagem de saída tem a mesma altura e largura da imagem de referência bruta. Uma imagem de referência de máscara (REFERENCE_TYPE_MASK) é necessária para casos de uso de edição mascarada. Se uma imagem de referência bruta estiver presente, a imagem da máscara precisará ter a mesma altura e largura da imagem de referência bruta. Se a imagem de referência da máscara estiver vazia e maskMode não estiver definido como MASK_MODE_USER_PROVIDED, a máscara será calculada com base na imagem de referência bruta.
    • 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.
    • B64_OUTPAINTING_MASK: a imagem em preto e branco que você quer usar como uma camada de máscara para editar a imagem original. A máscara precisa ter a mesma resolução da imagem de entrada. A imagem de saída terá a mesma resolução da imagem de entrada. Essa imagem de máscara precisa ser especificada como uma string de bytes codificada em base64. Limite de tamanho: 10 MB.
    • MASK_DILATION: ponto flutuante. A porcentagem da largura da imagem para dilatar essa máscara. Um valor de 0.03 é recomendado para a expansão da imagem. Definir "dilation": 0.0 pode resultar em bordas óbvias no ponto de extensão ou causar um efeito de borda branca.
    • EDIT_STEPS: número inteiro. O número de etapas de amostragem para o modelo de base. Para expansão, comece com 35 etapas. Aumente as etapas se a qualidade não atender aos seus requisitos.
    • EDIT_IMAGE_COUNT: o número de imagens editadas. Valores inteiros aceitos: 1 a 4. Valor padrão: 4.

    Método HTTP e URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict

    Corpo JSON da solicitação:

    {
      "instances": [
        {
          "prompt": "",
          "referenceImages": [
            {
              "referenceType": "REFERENCE_TYPE_RAW",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "B64_BASE_IMAGE"
              }
            },
            {
              "referenceType": "REFERENCE_TYPE_MASK",
              "referenceId": 2,
              "referenceImage": {
                "bytesBase64Encoded": "B64_OUTPAINTING_MASK"
              },
              "maskImageConfig": {
                "maskMode": "MASK_MODE_USER_PROVIDED",
                "dilation": MASK_DILATION
              }
            }
          ]
        }
      ],
      "parameters": {
        "editConfig": {
          "baseSteps": EDIT_STEPS
        },
        "editMode": "EDIT_MODE_OUTPAINT",
        "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 abaixo:

    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/imagen-3.0-capability-001: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/imagen-3.0-capability-001: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"
        }
      ]
    }
    

    Remover com detecção automática de máscaras

    Use os exemplos a seguir para especificar o retoque para remover o conteúdo. Nessas amostras, você especifica uma imagem de base e um comando de texto. O Imagen detecta e cria automaticamente uma área de máscara para modificar a imagem de base.

    Console

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

    <a href="https://console.cloud.google.com/vertex-ai/studio/media/generate;tab=image" class="button button-primary"
    target="console" track-name="consoleLink" track-type="task">Go to Media
    Studio</a>
    
    1. Clique em Fazer upload. Na caixa de diálogo de arquivos exibida, selecione um arquivo para fazer upload.

    2. Clique em Pintar.

    3. No painel Parâmetros, clique em Pintar (remover).

    4. Na barra de ferramentas de edição, clique em background_replaceExtrair.

      Selecione uma das opções de extração de máscara:

      • Elementos de segundo plano: detecta os elementos de segundo plano e cria uma máscara em torno deles.

      • Elementos em primeiro plano: detecta os objetos em primeiro plano e cria uma máscara ao redor deles.

      • background_replacePessoas: detecta pessoas e cria uma máscara ao redor delas.

    5. Opcional: no painel Parâmetros, ajuste as seguintes opções:

      • Modelo: o modelo do Imagen a ser usado

      • Número de resultados: o número de resultados a serem gerados.

      • Comando negativo: itens a serem evitados na geração

    6. No campo de prompt, digite um novo prompt para modificar a imagem.

    7. Clique em enviarGerar.

    Python

    Instalar

    pip install --upgrade google-genai

    Para saber mais, consulte a documentação de referência do SDK.

    Defina variáveis de ambiente para usar o SDK de IA generativa com a Vertex AI:

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=us-central1
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import (
        RawReferenceImage,
        MaskReferenceImage,
        MaskReferenceConfig,
        EditImageConfig,
    )
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_file = "output-image.png"
    
    raw_ref = RawReferenceImage(
        reference_image=Image.from_file(location="test_resources/fruit.png"),
        reference_id=0,
    )
    mask_ref = MaskReferenceImage(
        reference_id=1,
        reference_image=None,
        config=MaskReferenceConfig(
            mask_mode="MASK_MODE_FOREGROUND",
        ),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="",
        reference_images=[raw_ref, mask_ref],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_INPAINT_REMOVAL",
        ),
    )
    
    image.generated_images[0].image.save(output_file)
    
    print(f"Created output image using {len(image.generated_images[0].image.image_bytes)} bytes")
    # Example response:
    # Created output image using 1234567 bytes
    

    REST

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • 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.
    • prompt: para melhores resultados, omita um comando e negativePrompt ao usar a pintura interna para remoçã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.
    • MASK_MODE: uma string que define o tipo de criação automática de máscara usada pelo modelo. Valores disponíveis:
      • MASK_MODE_BACKGROUND: gera automaticamente uma máscara usando a segmentação de segundo plano. Use essa configuração para modificar o conteúdo em segundo plano.
      • MASK_MODE_FOREGROUND: gera automaticamente uma máscara usando a segmentação em primeiro plano. Use essa configuração para modificar o conteúdo em primeiro plano, como remover esses objetos em primeiro plano (remoção usando pintura).
      • MASK_MODE_SEMANTIC: gera automaticamente uma máscara usando a segmentação semântica com base nas classes de segmentação especificadas na matriz maskImageConfig.maskClasses. Por exemplo:
                  "maskImageConfig": {
                    "maskMode": "MASK_MODE_SEMANTIC",
                    "maskClasses": [175, 176], // bicycle, car
                    "dilation": 0.01
                  }
                
    • MASK_DILATION: ponto flutuante. A porcentagem da largura da imagem para dilatar essa máscara. Um valor de 0.01 é recomendado para compensar máscaras de entrada imperfeitas.
    • EDIT_STEPS: número inteiro. O número de etapas de amostragem para o modelo de base. Para a remoção de inpainting, comece com 12 etapas. Aumente as etapas até o limite superior de 75 se a qualidade não atender aos seus requisitos. Aumentar as etapas também aumenta a latência da solicitação.
    • EDIT_IMAGE_COUNT: o número de imagens editadas. Valores inteiros aceitos: 1 a 4. Valor padrão: 4.

    Método HTTP e URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict

    Corpo JSON da solicitação:

    {
      "instances": [
        {
          "prompt": "",
          "referenceImages": [
            {
              "referenceType": "REFERENCE_TYPE_RAW",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "B64_BASE_IMAGE"
              }
            },
            {
              "referenceType": "REFERENCE_TYPE_MASK",
              "referenceId": 2,
              "maskImageConfig": {
                "maskMode": "MASK_MODE",
                "dilation": MASK_DILATION
              }
            }
          ]
        }
      ],
      "parameters": {
        "editConfig": {
          "baseSteps": EDIT_STEPS
        },
        "editMode": "EDIT_MODE_INPAINT_REMOVAL",
        "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 abaixo:

    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/imagen-3.0-capability-001: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/imagen-3.0-capability-001: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"
        }
      ]
    }
    

    Limitações

    As seções a seguir explicam as limitações do recurso de remoção de objetos da Imagen.

    Pixels modificados

    Os pixels gerados pelo modelo que não estão na máscara são gerados na resolução do modelo (por exemplo, 1024 x 1024) e não têm garantia de serem idênticos à entrada. Isso pode resultar em pequenas mudanças na imagem gerada.

    Para preservar a imagem perfeitamente, recomendamos misturar a imagem gerada com a imagem de entrada usando a máscara. A fusão geralmente é necessária se a resolução da imagem de entrada for 2K ou superior.

    Limitação de remoção

    Objetos pequenos adjacentes à máscara também podem ser removidos. Para ter os melhores resultados, faça a máscara o mais precisa possível.

    Remover grandes áreas do céu em imagens externas pode resultar em artefatos indesejados. Para melhores resultados, recomendamos fornecer um comando.

    A seguir

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