Nesta página, descrevemos como substituir o plano de fundo de uma imagem. Com a Imagen na Vertex AI, você pode usar a segmentação automática de objetos para manter esse conteúdo enquanto modifica outros conteúdos da imagem. Com o Imagen 3, você também pode fornecer sua própria área de máscara para ter mais controle ao editar.
Os seguintes modelos são compatíveis com a substituição de planos de fundo de imagens:
Ver o card do modelo do Imagen para edição e personalização
Exemplo de edição de imagem do produto
O caso de uso a seguir destaca o aprimoramento de uma imagem de produto modificando o plano de fundo de uma imagem, mas preservando a aparência de um produto nela.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho sem custos financeiros.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Configure a autenticação do ambiente.
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Google Cloud para acessar os serviços e as APIs Google Cloud , não é necessário configurar a autenticação.
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
Editar com uma máscara de plano de fundo detectada automaticamente
Use as instruções a seguir para ativar e usar a edição de imagens de produtos com detecção automática de plano de fundo.
Console
No console do Google Cloud , acesse a página Vertex AI > Vertex AI Studio .
Clique em Gerar mídia.
Clique em Imagem.
Na lista Tarefa, selecione Product-background-editing.
Na lista Modelo, selecione o modelo do Imagen que você quer usar.
Em Imagem de entrada, clique em Adicionar e selecione a imagem que você está editando para fazer upload.
Na caixa Comando, digite um comando que descreva como editar a imagem.
Selecione uma das seguintes 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_replace Pessoas: detecta pessoas e cria uma máscara ao redor delas.
Clique em Executar.
REST
Para mais informações, consulte a referência da API Editar imagens.
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-west2ouasia-northeast3. Para uma lista de regiões disponíveis, consulte IA generativa em locais da Vertex AI. Quando um endpoint de API regional é usado, a região do URL do endpoint determina onde a solicitação é processada, e esseLOCATIONno caminho do recurso é ignorado se houver conflito. - TEXT_PROMPT: o comando de texto que orienta quais imagens o modelo gera. Este campo é obrigatório para geração e edição.
referenceType: umaReferenceImageé uma imagem que fornece contexto adicional para a edição de imagens. Uma imagem de referência RGB bruta 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 que a 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.referenceId: o ID inteiro da imagem de referência. Neste exemplo, os dois objetos de imagem de referência são de tipos diferentes, então eles têm valoresreferenceIddistintos (1e2).- 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.
maskImageConfig.maskMode: o modo de máscara para edição de máscara.MASK_MODE_BACKGROUNDé usado para mascarar automaticamente o plano de fundo sem uma máscara fornecida pelo usuário.- MASK_DILATION: ponto flutuante. A porcentagem da largura da imagem para dilatar essa máscara. Um
valor de
0.00é recomendado para evitar a extensão do produto em primeiro plano. Mínimo: 0, máximo: 1. Padrão: 0,03. - EDIT_STEPS: número inteiro. O número de etapas de amostragem para o modelo de base. Para editar imagens de produtos, comece pelas etapas
75. - 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": "TEXT_PROMPT",
"referenceImages": [
{
"referenceType": "REFERENCE_TYPE_RAW",
"referenceId": 1,
"referenceImage": {
"bytesBase64Encoded": "B64_BASE_IMAGE"
}
},
{
"referenceType": "REFERENCE_TYPE_MASK",
"referenceId": 2,
"maskImageConfig": {
"maskMode": "MASK_MODE_BACKGROUND",
"dilation": MASK_DILATION
}
}
]
}
],
"parameters": {
"editConfig": {
"baseSteps": EDIT_STEPS
},
"editMode": "EDIT_MODE_BGSWAP",
"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
{
"predictions": [
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
},
{
"mimeType": "image/png",
"bytesBase64Encoded": "BASE64_IMG_BYTES"
},
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
},
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
}
]
}
Editar com uma área de máscara definida
Você pode mascarar a área substituída em vez de deixar o Imagen detectar a máscara automaticamente.
Console
No console do Google Cloud , acesse a página Vertex AI > Vertex AI Studio .
Clique em Gerar mídia.
Clique em Imagem.
Na lista Tarefa, selecione Product-background-editing.
Na lista Modelo, selecione o modelo do Imagen que você quer usar.
Em Imagem de entrada, clique em Adicionar e selecione a imagem que você está editando para fazer upload.
Na caixa Comando, digite um comando que descreva como editar a imagem.
Faça o seguinte para especificar uma máscara:
- Fazer upload da sua própria máscara:
- Crie uma máscara no computador.
- Clique em upload Máscara de importação e selecione uma máscara para fazer upload.
- Defina sua 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.
- Fazer upload da sua própria máscara:
Clique em Executar.
REST
Para mais informações sobre a API Imagen, consulte:
- Método:
endpoints.predict VisionGenerativeModelInstanceVisionGenerativeModelParams-
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-west2ouasia-northeast3. Para uma lista de regiões disponíveis, consulte IA generativa em locais da Vertex AI. Quando um endpoint de API regional é usado, a região do URL do endpoint determina onde a solicitação é processada, e esseLOCATIONno caminho do recurso é ignorado se houver conflito. - TEXT_PROMPT: o comando de texto que orienta quais imagens o modelo gera. Este campo é obrigatório para geração e edição.
referenceId: o ID inteiro da imagem de referência. Neste exemplo, os dois objetos de imagem de referência são de tipos diferentes. Portanto, eles têm valoresreferenceIddistintos (1e2).- 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_MASK_IMAGE: a imagem em preto e branco que você quer usar como uma camada de máscara para editar a imagem original. A imagem 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.00é recomendado para evitar a extensão do produto em primeiro plano. Mínimo: 0, máximo: 1. Padrão: 0,03. - EDIT_STEPS: número inteiro. O número de etapas de amostragem para o modelo de base. Para editar imagens de produtos, comece pelas etapas
75. - 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": "TEXT_PROMPT": [ { "referenceType": "REFERENCE_TYPE_RAW", "referenceId": 1, "referenceImage": { "bytesBase64Encoded": "B64_BASE_IMAGE" } }, { "referenceType": "REFERENCE_TYPE_MASK", "referenceId": 2, "referenceImage": { "bytesBase64Encoded": "B64_MASK_IMAGE" }, "maskImageConfig": { "maskMode": "MASK_MODE_USER_PROVIDED", "dilation": MASK_DILATION } } ] } ], "parameters": { "editConfig": { "baseSteps": EDIT_STEPS }, "editMode": "EDIT_MODE_BGSWAP", "sampleCount": EDIT_IMAGE_COUNT } }Para enviar a solicitação, escolha uma destas opções:
O exemplo de resposta a seguir é para uma solicitação de edição do plano de fundo do produto.curl
Salve o corpo da solicitação em um arquivo com o nome
request.jsone 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.jsone 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{ "predictions": [ { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" }, { "mimeType": "image/png", "bytesBase64Encoded": "BASE64_IMG_BYTES" }, { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" }, { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" } ] }
Limitações
Como as máscaras às vezes estão incompletas, o modelo pode tentar completar o objeto em primeiro plano quando faltam partes extremamente pequenas no limite. Como um efeito colateral raro, quando o objeto em primeiro plano já está completo, o modelo pode criar pequenas extensões.
Uma solução alternativa é segmentar a saída do modelo e depois fazer a fusão. Confira a seguir um exemplo de snippet em Python que demonstra uma solução alternativa:
blended = Image.composite(out_images[0].resize(image_expanded.size), image_expanded, mask_expanded)
A seguir
Confira artigos sobre o Imagen e outras IAs generativas nos produtos da Vertex AI:
- Guia para desenvolvedores sobre como começar a usar o Imagen 3 na Vertex AI
- Novos modelos e ferramentas de mídia generativa criados com criadores para criadores
- Novidades no Gemini: Gems personalizados e geração de imagens aprimorada com o Imagen 3
- Google DeepMind: Imagen 3 — Nosso modelo de qualidade mais alta para conversão de texto em imagem