Automatize o processo para alterar planos de fundo de imagens usando Amazon Bedrock e AWS Step Functions | Amazon Web Services

Automatize o processo para alterar planos de fundo de imagens usando Amazon Bedrock e AWS Step Functions | Amazon Web Services

Muitos clientes, incluindo aqueles de publicidade criativa, mídia e entretenimento, comércio eletrônico e moda, muitas vezes precisam alterar o plano de fundo em um grande número de imagens. Normalmente, isso envolve a edição manual de cada imagem com um software fotográfico. Isso pode exigir muito esforço, especialmente para grandes lotes de imagens. No entanto, Rocha Amazônica e Funções de etapa da AWS torne simples a automatização desse processo em grande escala.

Amazon Bedrock oferece o modelo de base de IA generativa Gerador de imagem Amazon Titan G1, que pode alterar automaticamente o plano de fundo de uma imagem usando uma técnica chamada pintura externa. Step Functions permite criar um fluxo de trabalho automatizado que se conecta perfeitamente ao Amazon Bedrock e outros serviços da AWS. Juntos, o Amazon Bedrock e o Step Functions simplificam todo o processo de alteração automática de planos de fundo em várias imagens.

Esta postagem apresenta uma solução que simplifica o processo de alteração de planos de fundo em múltiplas imagens. Ao aproveitar as capacidades de IA generativa com Amazon Bedrock e o modelo Titan Image Generator G1, combinado com Step Functions, esta solução gera de forma eficiente imagens com o fundo desejado. Esta postagem fornece informações sobre o funcionamento interno da solução e ajuda você a entender as escolhas de design feitas para construir sua própria solução personalizada.

veja a Repositório GitHub para obter instruções detalhadas sobre a implantação desta solução.

Visão geral da solução

Vejamos como a solução funciona em alto nível antes de nos aprofundarmos nos elementos específicos e nos serviços AWS usados. O diagrama a seguir fornece uma visão simplificada da arquitetura da solução e destaca os principais elementos.

Arquitetura da Solução

O fluxo de trabalho consiste nas seguintes etapas:

  1. Um usuário carrega múltiplas imagens em um Serviço de armazenamento simples da Amazon (Amazon S3) por meio de um aplicativo da web Streamlit.
  2. O aplicativo da web Streamlit chama um Gateway de API da Amazon Endpoint da API REST integrado com o Reconhecimento da Amazônia API DetectLabels, que detecta rótulos para cada imagem.
  3. Após o envio, o aplicativo da web Streamlit atualiza um Amazon DynamoDB tabela com detalhes da imagem.
  4. A atualização do DynamoDB aciona um AWS Lambda function, que inicia um fluxo de trabalho do Step Functions.
  5. O fluxo de trabalho do Step Functions executa as seguintes etapas para cada imagem:
    5.1 Constrói uma carga útil de solicitação para o Amazon Bedrock InvokeModel API.
    5.2 Invoca o alicerce amazônico InvokeModel Ação da API.
    5.3 Analisa uma imagem da resposta e a salva em um local S3.
    5.4 Atualiza o status da imagem em uma tabela do DynamoDB.
  6. O fluxo de trabalho do Step Functions invoca uma função Lambda para gerar um relatório de status.
  7. O fluxo de trabalho envia um email usando Serviço de notificação simples da Amazon (Amazônia SNS).

Conforme mostrado na captura de tela a seguir, o aplicativo da web Streamlit permite fazer upload de imagens e inserir prompts de texto para especificar os planos de fundo desejados, prompts negativos e modo de pintura externa para geração de imagens. Você também pode visualizar e remover rótulos indesejados associados a cada imagem enviada que você não deseja manter nas imagens finais geradas.

Aplicativo da Web Streamlit

Neste exemplo, o prompt para o plano de fundo é “Fundo da cidade de Londres”. O processo de automação gera novas imagens com base nas imagens originais carregadas com Londres como plano de fundo.

Imagens geradas

Aplicativos da web Streamlit e uploads de imagens

Um aplicativo da web Streamlit serve como frontend para esta solução. Para proteger o aplicativo contra acesso não autorizado, ele se integra a um Amazon Cognito grupo de usuários. O API Gateway usa um Autorizador do Amazon Cognito para autenticar solicitações. O aplicativo da web conclui as seguintes etapas:

  1. Para cada imagem selecionada, ele recupera rótulos por meio do Amazon Rekognition usando um endpoint da API REST do API Gateway.
  2. Após o envio, o aplicativo carrega as imagens em um bucket S3.
  3. O aplicativo atualiza uma tabela do DynamoDB com parâmetros relevantes, nomes de imagens e rótulos associados para cada imagem usando outro endpoint da API REST do API Gateway.

Fluxo de trabalho de processamento de imagens

Quando a tabela do DynamoDB é atualizada, Streams do DynamoDB aciona uma função Lambda para iniciar um novo fluxo de trabalho do Step Functions. Veja a seguir um exemplo de solicitação para o fluxo de trabalho:

{
  "Id": "621fa85a-38bb-4d98-a656-93bbbcf5477f",
  "S3Bucket": "<Image Bucket>",
  "InputS3Prefix": "image-files/<year>/<month>/<day>/<timestamp>",
  "OutputS3Prefix": "generated-image-files/<year>/<month>/<day>/<timestamp>",
  "StatusS3Prefix": "status-report-files/<year>/<month>/<day>/<timestamp>",
  "Prompt": "london city background",
  "NegativePrompt": "low quality, low resolution",
  "Mode": "PRECISE",
  "Images": [
    {
      "ImageName": "bus.png",
      "Labels": "Bus, Person"
    },
    {
      "ImageName": "cop.png",
      "Labels": "Person, Adult, Male, Man, Helmet, Jacket"
    },
    {
      "ImageName": "iguana-2.png",
      "Labels": "Lizard”
    },
    {
      "ImageName": "dog.png",
      "Labels": "Dog"
    }
  ]
}

O fluxo de trabalho do Step Functions executa posteriormente as três etapas a seguir:

  1. Substitua o plano de fundo de todas as imagens.
  2. Gere um relatório de status.
  3. Envie um e-mail pelo Amazon SNS.

A captura de tela a seguir ilustra o fluxo de trabalho do Step Functions.

Fluxo de trabalho do AWS Step Functions

Vejamos cada etapa com mais detalhes.

Substitua o plano de fundo de todas as imagens

Step Functions usa um Mapa Distribuído para processar cada imagem em fluxos de trabalho filhos paralelos. O Mapa Distribuído permite processamento de alta simultaneidade. Cada fluxo de trabalho filho tem seu próprio histórico de execução separado daquele do fluxo de trabalho pai.

Step Functions usa um Ação de API otimizada InvokeModel para Amazon Bedrock. A API aceita solicitações e respostas de até 25 MB. No entanto, o Step Functions tem um limite de 256 KB na entrada e saída da carga útil do estado. Para suportar imagens maiores, a solução usa um bucket S3 onde o InvokeModel API lê dados e grava o resultado. A seguir está a configuração do InvokeModel API para integração do Amazon Bedrock:

{
    "ModelId": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-image-generator-v1",
    "ContentType": "application/json",
    "Input": {  
        "S3Uri": “s3://<Image Bucket>/image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json",
    },  
    "Output": {  
        "S3Uri": “s3://<Image Bucket>/generated-image-files/<year>/<month>/<day>/<timestamp>/<Image name>.json”
    } 
}

A Input S3Uri parâmetro especifica o local de origem para recuperar os dados de entrada. O Output S3Uri parâmetro especifica o destino para gravar a resposta da API.

Uma função do Lambda salva a carga útil da solicitação como um arquivo JSON no local especificado. Input S3Uri localização. o InvokeModel A API usa esta carga de entrada para gerar imagens com o plano de fundo especificado:

{
    "taskType": "OUTPAINTING",
    "outPaintingParams": {
        "text": "london city background",
        "negativeText": "low quality, low resolution",        
        "image": "<base64-encoded string>",                         
        "maskPrompt": "Bus",                      
        "maskImage": "base64-encoded string",                             
        "outPaintingMode": "DEFAULT | PRECISE"                 
    },                                                 
    "imageGenerationConfig": {
        "numberOfImages": 1,
        "quality": "premium",
        "height": 1024,
        "width": 1024,
        "cfgScale": 8.0
    }
}

O modelo Titan Image Generator G1 suporta os seguintes parâmetros para geração de imagens:

  • tipo de tarefa – Especifica o método de pintura externa para substituir o plano de fundo da imagem.
  • texto – Um prompt de texto para definir o plano de fundo.
  • texto negativo – Um prompt de texto para definir o que não incluir na imagem.
  • máscaraPrompt – Um prompt de texto que define a máscara. Corresponde aos rótulos que você deseja manter nas imagens finais geradas.
  • máscaraImagem – A imagem JPEG ou PNG codificada em base64.
  • outPaintingMode – Especifica se permite ou não a modificação dos pixels dentro da máscara. DEFAULT permite a modificação da imagem dentro da máscara para mantê-la consistente com o fundo reconstruído. PRECISE evita a modificação da imagem dentro da máscara.
  • número de imagens – O número de imagens a serem geradas.
  • qualidade – A qualidade das imagens geradas: standard or premium.
  • escala cfg – Especifica o quanto a imagem gerada deve aderir ao prompt.
  • altura – A altura da imagem em pixels.
  • largura – A largura da imagem em pixels.

A base amazônica InvokeModel API gera uma resposta com uma imagem codificada no Output S3Uri localização. Outra função do Lambda analisa a imagem da resposta, decodifica-a em base64 e salva o arquivo de imagem no seguinte local: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Por fim, um fluxo de trabalho filho atualiza uma tabela do DynamoDB com o status de geração de imagem, marcando-a como Sucedido or fracassadoe incluindo detalhes como ImageName, Cause, Error e Status.

Gerar um relatório de status

Após o processo de geração de imagem, uma função Lambda recupera os detalhes do status do DynamoDB. Ele compila dinamicamente esses detalhes em um relatório de status abrangente no formato JSON. Em seguida, ele salva o relatório de status gerado em um arquivo JSON no seguinte local: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. A equipe ITOps pode integrar este relatório ao sistema de notificação existente para rastrear se o processamento de imagens foi concluído com sucesso. Para usuários empresariais, você pode expandir ainda mais para gerar um relatório em formato CSV.

Envie um e-mail pelo Amazon SNS

Step Functions invoca uma ação da API do Amazon SNS para enviar um email. O e-mail contém detalhes, incluindo a localização do S3 para o relatório de status e os arquivos de imagens finais. A seguir está o exemplo de e-mail de notificação.

Email de Notificação

Conclusão

Nesta postagem, fornecemos uma visão geral de um exemplo de solução que demonstra a automação da alteração de planos de fundo de imagens em escala usando Amazon Bedrock e Step Functions. Também explicamos cada elemento da solução em detalhes. Ao usar a integração otimizada do Step Functions com Amazon Bedrock, Distributed Map e o modelo Titan Image Generator G1, a solução substitui eficientemente os planos de fundo das imagens em paralelo, aumentando a produtividade e a escalabilidade.

Para implantar a solução, consulte as instruções no Repositório GitHub.

Recursos

Para saber mais sobre o Amazon Bedrock, consulte os seguintes recursos:

Para saber mais sobre o modelo Titan Image Generator G1, consulte os seguintes recursos:

Para saber mais sobre como usar o Amazon Bedrock com Step Functions, consulte os seguintes recursos:


Sobre o autor

Automatize o processo para alterar planos de fundo de imagens usando Amazon Bedrock e AWS Step Functions | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Chetan Makvana é arquiteto de soluções sênior da Amazon Web Services. Ele trabalha com parceiros e clientes da AWS para fornecer orientação arquitetônica para a construção de arquitetura escalável e implementação de estratégias para impulsionar a adoção de serviços da AWS. Ele é um entusiasta de tecnologia e um construtor com uma área central de interesse em IA generativa, serverless e DevOps. Fora do trabalho, ele gosta de assistir shows, viajar e ouvir música. 

Carimbo de hora:

Mais de Aprendizado de máquina da AWS