Nesta página, descrevemos como remover objetos de uma imagem usando uma área de máscara, um processo também conhecido como inpainting. Você pode fornecer sua própria máscara ou deixar que o Imagen gere uma para você.
Os seguintes modelos podem remover objetos de uma imagem:
Exemplo de remoção de conteúdo
O exemplo a seguir usa retoque e uma máscara de imagens 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 |
|---|---|---|
|
|
Comando: remova os objetos selecionados da imagem |
* Crédito da imagem: Inside Weather no Unsplash.
Saída após especificar uma área da máscara no console do Google Cloud
|
|
|
Ver o card do modelo do Imagen para edição e personalização
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.
-
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 do Google Cloud para acessar os serviços e as APIs do 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 .
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
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 Inpaint-remove.
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 VisionGenerativeModelInstanceVisionGenerativeModelParamsVisionGenerativeModelResult
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. 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 "inserir um céu azul".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 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 emaskModenão estiver definido comoMASK_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.0pode 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
pintura externa, comece com
35etapas. 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
"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áscara
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
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 Inpaint-remove.
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.
Na barra de ferramentas de edição, clique em background_replaceExtrair máscara.
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_replace Pessoas: detecta pessoas e cria uma máscara ao redor delas.
Clique em Executar.
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-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. prompt: para melhores resultados, omita um comando enegativePromptao usar o inpainting 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 (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 matrizmaskImageConfig.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. Recomendamos
um valor de
0.01para compensar máscaras de entrada imperfeitas. - EDIT_STEPS: número inteiro. O número de etapas de amostragem para o modelo de base. Para
remoção de inpainting, comece com
12etapas. Aumente as etapas até o limite superior de75se 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
"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 do 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 generativa 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 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:
- 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