Automatiser processen for at ændre billedbaggrunde ved hjælp af Amazon Bedrock og AWS Step Functions | Amazon Web Services

Automatiser processen for at ændre billedbaggrunde ved hjælp af Amazon Bedrock og AWS Step Functions | Amazon Web Services

Mange kunder, herunder dem inden for kreativ reklame, medier og underholdning, e-handel og mode, har ofte brug for at ændre baggrunden i et stort antal billeder. Typisk involverer dette manuel redigering af hvert billede med fotosoftware. Dette kan tage en stor indsats, især for store partier af billeder. Imidlertid, Amazonas grundfjeld , AWS-trinfunktioner gør det ligetil at automatisere denne proces i stor skala.

Amazon Bedrock tilbyder den generative AI-fundamentmodel Amazon Titan Image Generator G1, som automatisk kan ændre baggrunden for et billede ved hjælp af en teknik kaldet udmaling. Step Functions giver dig mulighed for at skabe en automatiseret arbejdsgang, der problemfrit forbindes med Amazon Bedrock og andre AWS-tjenester. Sammen strømliner Amazon Bedrock og Step Functions hele processen med automatisk ændring af baggrunde på tværs af flere billeder.

Dette indlæg introducerer en løsning, der forenkler processen med at ændre baggrunde i flere billeder. Ved at udnytte mulighederne for generativ AI med Amazon Bedrock og Titan Image Generator G1-modellen, kombineret med Step Functions, genererer denne løsning effektivt billeder med den ønskede baggrund. Dette indlæg giver indsigt i løsningens indre funktioner og hjælper dig med at forstå de designvalg, der er truffet for at bygge denne egen tilpassede løsning.

se GitHub repository for detaljerede instruktioner om implementering af denne løsning.

Løsningsoversigt

Lad os se på, hvordan løsningen fungerer på et højt niveau, før vi dykker dybere ned i specifikke elementer og de anvendte AWS-tjenester. Følgende diagram giver et forenklet billede af løsningsarkitekturen og fremhæver nøgleelementerne.

Løsningsarkitektur

Arbejdsgangen består af følgende trin:

  1. En bruger uploader flere billeder til en Amazon Simple Storage Service (Amazon S3) spand via en Streamlit webapplikation.
  2. Streamlit-webapplikationen kalder en Amazon API Gateway REST API-endepunkt integreret med Amazon-anerkendelse DetectLabels API, som registrerer etiketter for hvert billede.
  3. Ved indsendelse opdaterer Streamlit-webapplikationen en Amazon DynamoDB tabel med billeddetaljer.
  4. DynamoDB-opdateringen udløser en AWS Lambda funktion, som starter et Step Functions-arbejdsforløb.
  5. Workflowet Trinfunktioner kører følgende trin for hvert billede:
    5.1 Konstruerer en anmodningsnyttelast til Amazonas grundfjeld InvokeModel API.
    5.2 Påberåber sig Amazonas grundfjeld InvokeModel API handling.
    5.3 Parser et billede fra svaret og gemmer det på en S3-placering.
    5.4 Opdaterer billedstatus i en DynamoDB-tabel.
  6. Workflowet Trinfunktioner aktiverer en Lambda-funktion for at generere en statusrapport.
  7. Arbejdsgangen sender en e-mail vha Amazon Simple Notification Service (Amazon SNS).

Som vist på det følgende skærmbillede giver Streamlit-webapplikationen dig mulighed for at uploade billeder og indtaste tekstprompter for at angive ønskede baggrunde, negative prompter og udmalingstilstand til billedgenerering. Du kan også se og fjerne uønskede etiketter knyttet til hvert uploadet billede, som du ikke ønsker at beholde i de endeligt genererede billeder.

Strømbelyst webapplikation

I dette eksempel er prompten for baggrunden "London city background." Automatiseringsprocessen genererer nye billeder baseret på de originale uploadede billeder med London som baggrund.

Genererede billeder

Strømbelyst webapplikation og upload af billeder

En Streamlit webapplikation fungerer som frontend for denne løsning. For at beskytte applikationen mod uautoriseret adgang, integreres den med en Amazon Cognito brugerpulje. API Gateway bruger en Amazon Cognito-autorisator at autentificere anmodninger. Webapplikationen fuldfører følgende trin:

  1. For hvert valgt billede henter den etiketter via Amazon Rekognition ved hjælp af et API Gateway REST API-slutpunkt.
  2. Ved indsendelse uploader applikationen billeder til en S3-bøtte.
  3. Applikationen opdaterer en DynamoDB-tabel med relevante parametre, billednavne og tilknyttede etiketter for hvert billede ved hjælp af et andet API Gateway REST API-slutpunkt.

Billedbehandling arbejdsgang

Når DynamoDB-tabellen opdateres, DynamoDB-streams udløser en Lambda-funktion for at starte en ny Step Functions-arbejdsgang. Følgende er en prøveanmodning til arbejdsgangen:

{
  "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"
    }
  ]
}

Trinfunktioner-arbejdsgangen udfører efterfølgende følgende tre trin:

  1. Udskift baggrunden for alle billeder.
  2. Generer en statusrapport.
  3. Send en e-mail via Amazon SNS.

Følgende skærmbillede illustrerer arbejdsgangen Trinfunktioner.

AWS Step Funktioner Workflow

Lad os se på hvert trin mere detaljeret.

Udskift baggrund for alle billeder

Trinfunktioner bruger en Distribueret kort at behandle hvert billede i parallelle underordnede arbejdsgange. Det distribuerede kort tillader behandling med høj samtidighed. Hvert underordnede arbejdsforløb har sin egen separate kørselshistorik fra den overordnede arbejdsgang.

Trinfunktioner bruger en InvokeModel-optimeret API-handling til Amazon Bedrock. API'en accepterer anmodninger og svar på op til 25 MB. Trinfunktioner har dog en grænse på 256 KB for tilstandens nyttelast input og output. For at understøtte større billeder bruger løsningen en S3-spand, hvor den InvokeModel API læser data fra og skriver resultatet til. Følgende er konfigurationen for InvokeModel API til Amazon Bedrock-integration:

{
    "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”
    } 
}

Input S3Uri parameter angiver kildeplaceringen for at hente inputdataene. Det Output S3Uri parameter angiver destinationen til at skrive API-svaret.

En Lambda-funktion gemmer anmodningens nyttelast som en JSON-fil i den angivne Input S3Uri Beliggenhed. Det InvokeModel API bruger denne input nyttelast til at generere billeder med den angivne baggrund:

{
    "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
    }
}

Titan Image Generator G1-modellen understøtter følgende parametre til billedgenerering:

  • opgavetype – Angiver udmalingsmetoden til at erstatte billedets baggrund.
  • tekst – En tekstmeddelelse for at definere baggrunden.
  • negativ tekst – En tekstprompt for at definere, hvad der ikke skal inkluderes i billedet.
  • maskePrompt – En tekstprompt, der definerer masken. Det svarer til etiketter, som du ønsker at beholde i de endeligt genererede billeder.
  • maskeBillede – JPEG- eller PNG-billedet kodet i base64.
  • outPaintingMode – Angiver, om der skal tillades ændring af pixels inde i masken eller ej. DEFAULT tillader ændring af billedet inde i masken for at holde det i overensstemmelse med den rekonstruerede baggrund. PRECISE forhindrer ændring af billedet inde i masken.
  • antal billeder – Antallet af billeder, der skal genereres.
  • kvalitet – Kvaliteten af ​​de genererede billeder: standard or premium.
  • cfgSkala – Angiver, hvor stærkt det genererede billede skal overholde prompten.
  • højde – Billedets højde i pixels.
  • bredde – Billedets bredde i pixels.

Amazonas grundfjeld InvokeModel API genererer et svar med et kodet billede i Output S3Uri Beliggenhed. En anden Lambda-funktion analyserer billedet fra svaret, afkoder det fra base64 og gemmer billedfilen på følgende placering: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Endelig opdaterer en underordnet arbejdsgang en DynamoDB-tabel med billedgenereringsstatus og markerer den som enten lykkedes or mislykkedes, og herunder detaljer som f.eks ImageName, Cause, Errorog Status.

Generer en statusrapport

Efter billedgenereringsprocessen henter en Lambda-funktion statusdetaljerne fra DynamoDB. Den kompilerer disse detaljer dynamisk til en omfattende statusrapport i JSON-format. Den gemmer derefter den genererede statusrapport en JSON-fil på følgende placering: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. ITOps-teamet kan integrere denne rapport med deres eksisterende meddelelsessystem for at spore, om billedbehandlingen er gennemført med succes. For erhvervsbrugere kan du udvide dette yderligere for at generere en rapport i CSV-format.

Send en e-mail via Amazon SNS

Trinfunktioner påkalder en Amazon SNS API-handling for at sende en e-mail. E-mailen indeholder detaljer, herunder S3-placeringen for statusrapporten og de endelige billedfiler. Følgende er eksempel på e-mail.

Meddelelses-e-mail

Konklusion

I dette indlæg gav vi et overblik over en prøveløsning, der demonstrerer automatiseringen af ​​at ændre billedbaggrunde i skala ved hjælp af Amazon Bedrock og Step Functions. Vi forklarede også hvert enkelt element i løsningen i detaljer. Ved at bruge Step Functions-optimerede integration med Amazon Bedrock, Distributed Map og Titan Image Generator G1-modellen erstatter løsningen effektivt billedernes baggrunde parallelt, hvilket øger produktiviteten og skalerbarheden.

For at implementere løsningen, se instruktionerne i GitHub repository.

Ressourcer

For at lære mere om Amazon Bedrock, se følgende ressourcer:

For at lære mere om Titan Image Generator G1-modellen, se følgende ressourcer:

For at lære mere om brugen af ​​Amazon Bedrock med Step Functions, se følgende ressourcer:


Om forfatteren

Automate the process to change image backgrounds using Amazon Bedrock and AWS Step Functions | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Chetan Makvana er Senior Solutions Architect med Amazon Web Services. Han arbejder sammen med AWS-partnere og kunder for at give dem arkitektonisk vejledning til at bygge skalerbar arkitektur og implementere strategier til at drive indførelse af AWS-tjenester. Han er en teknologientusiast og en bygherre med et kerneinteresseområde inden for generativ AI, serverløs og DevOps. Uden for arbejdet nyder han at se shows, rejse og musik. 

Tidsstempel:

Mere fra AWS maskinindlæring