Automatiser prosessen for å endre bildebakgrunn ved å bruke Amazon Bedrock og AWS Step Functions | Amazon Web Services

Automatiser prosessen for å endre bildebakgrunn ved å bruke Amazon Bedrock og AWS Step Functions | Amazon Web Services

Mange kunder, inkludert de innen kreativ reklame, media og underholdning, e-handel og mote, trenger ofte å endre bakgrunnen i et stort antall bilder. Vanligvis innebærer dette å manuelt redigere hvert bilde med fotoprogramvare. Dette kan kreve mye innsats, spesielt for store grupper med bilder. Derimot, Amazonas grunnfjell og AWS trinnfunksjoner gjør det enkelt å automatisere denne prosessen i stor skala.

Amazon Bedrock tilbyr den generative AI-fundamentmodellen Amazon Titan Image Generator G1, som automatisk kan endre bakgrunnen til et bilde ved hjelp av en teknikk som kalles utmaling. Step Functions lar deg lage en automatisert arbeidsflyt som sømløst kobles til Amazon Bedrock og andre AWS-tjenester. Sammen effektiviserer Amazon Bedrock og Step Functions hele prosessen med automatisk endring av bakgrunner på tvers av flere bilder.

Dette innlegget introduserer en løsning som forenkler prosessen med å endre bakgrunn i flere bilder. Ved å utnytte mulighetene til generativ AI med Amazon Bedrock og Titan Image Generator G1-modellen, kombinert med Step Functions, genererer denne løsningen effektivt bilder med ønsket bakgrunn. Dette innlegget gir innsikt i den indre funksjonen til løsningen og hjelper deg å forstå designvalgene som er gjort for å bygge denne egen tilpassede løsningen.

Gå til GitHub repository for detaljerte instruksjoner om distribusjon av denne løsningen.

Løsningsoversikt

La oss se på hvordan løsningen fungerer på et høyt nivå før vi dykker dypere inn i spesifikke elementer og AWS-tjenestene som brukes. Følgende diagram gir en forenklet oversikt over løsningsarkitekturen og fremhever nøkkelelementene.

Løsningsarkitektur

Arbeidsflyten består av følgende trinn:

  1. En bruker laster opp flere bilder til en Amazon enkel lagringstjeneste (Amazon S3) bøtte via en Streamlit nettapplikasjon.
  2. Streamlit-nettapplikasjonen kaller en Amazon API-gateway REST API-endepunkt integrert med Amazon-anerkjennelse DetectLabels API, som oppdager etiketter for hvert bilde.
  3. Ved innsending oppdaterer Streamlit nettapplikasjon en Amazon DynamoDB tabell med bildedetaljer.
  4. DynamoDB-oppdateringen utløser en AWS Lambda funksjon, som starter en Step Functions-arbeidsflyt.
  5. Arbeidsflyten for trinnfunksjoner kjører følgende trinn for hvert bilde:
    5.1 Konstruerer en forespørselsnyttelast for Amazonas grunnfjell InvokeModel API.
    5.2 Påkaller Amazonas grunnfjell InvokeModel API-handling.
    5.3 Analyserer et bilde fra svaret og lagrer det på en S3-plassering.
    5.4 Oppdaterer bildestatusen i en DynamoDB-tabell.
  6. Arbeidsflyten Step Functions starter en Lambda-funksjon for å generere en statusrapport.
  7. Arbeidsflyten sender en e-post vha Amazon enkel varslingstjeneste (Amazon SNS).

Som vist i følgende skjermbilde lar Streamlit-nettapplikasjonen deg laste opp bilder og skrive inn tekstmeldinger for å spesifisere ønsket bakgrunn, negative meldinger og utmalingsmodus for bildegenerering. Du kan også se og fjerne uønskede etiketter knyttet til hvert opplastede bilde som du ikke vil beholde i de endelig genererte bildene.

Strømbelyst nettapplikasjon

I dette eksemplet er ledeteksten for bakgrunnen "London city background." Automatiseringsprosessen genererer nye bilder basert på de originale opplastede bildene med London som bakgrunn.

Genererte bilder

Strømbelyst nettapplikasjon og opplasting av bilder

En Streamlit webapplikasjon fungerer som frontend for denne løsningen. For å beskytte applikasjonen mot uautorisert tilgang, integreres den med en Amazon Cognito brukerpool. API-gateway bruker en Amazon Cognito-autorisator for å autentisere forespørsler. Nettapplikasjonen fullfører følgende trinn:

  1. For hvert valgt bilde henter den etiketter via Amazon Rekognition ved å bruke et API Gateway REST API-endepunkt.
  2. Ved innsending laster applikasjonen opp bilder til en S3-bøtte.
  3. Applikasjonen oppdaterer en DynamoDB-tabell med relevante parametere, bildenavn og tilhørende etiketter for hvert bilde ved å bruke et annet API Gateway REST API-endepunkt.

Arbeidsflyt for bildebehandling

Når DynamoDB-tabellen oppdateres, DynamoDB Strømmer utløser en Lambda-funksjon for å starte en ny Step Functions-arbeidsflyt. Følgende er en eksempelforespørsel for arbeidsflyten:

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

Arbeidsflyten for trinnfunksjoner utfører deretter følgende tre trinn:

  1. Bytt ut bakgrunnen for alle bildene.
  2. Generer en statusrapport.
  3. Send en e-post via Amazon SNS.

Følgende skjermbilde illustrerer arbeidsflyten for trinnfunksjoner.

AWS Step Functions Workflow

La oss se på hvert trinn mer detaljert.

Erstatt bakgrunn for alle bilder

Step Functions bruker en Distribuert kart å behandle hvert bilde i parallelle underordnede arbeidsflyter. Det distribuerte kartet tillater behandling med høy samtidighet. Hver underordnede arbeidsflyt har sin egen separate kjørehistorikk fra den overordnede arbeidsflyten.

Step Functions bruker en InvokeModel-optimalisert API-handling for Amazon Bedrock. API-en godtar forespørsler og svar som er opptil 25 MB. Step Functions har imidlertid en grense på 256 KB på statens nyttelastinngang og -utgang. For å støtte større bilder bruker løsningen en S3-bøtte der InvokeModel API leser data fra og skriver resultatet til. Følgende er konfigurasjonen for InvokeModel API for Amazon Bedrock-integrasjon:

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

De Input S3Uri parameter spesifiserer kildeplasseringen for å hente inndataene. De Output S3Uri parameter angir destinasjonen for å skrive API-svaret.

En Lambda-funksjon lagrer forespørselsnyttelasten som en JSON-fil i den spesifiserte Input S3Uri plassering. De InvokeModel API bruker denne nyttelasten for å generere bilder med den angitte bakgrunnen:

{
    "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 støtter følgende parametere for bildegenerering:

  • oppgavetype – Spesifiserer utmalingsmetoden for å erstatte bakgrunnen til bildet.
  • tekst – En tekstmelding for å definere bakgrunnen.
  • negativ tekst – En tekstmelding for å definere hva som ikke skal inkluderes i bildet.
  • maskPrompt – En tekstmelding som definerer masken. Det tilsvarer etiketter du ønsker å beholde i de endelige genererte bildene.
  • maskImage – JPEG- eller PNG-bildet kodet i base64.
  • outPaintingMode – Angir om det skal tillates modifikasjon av pikslene inne i masken eller ikke. STANDARD tillater modifikasjon av bildet inne i masken for å holde det konsistent med den rekonstruerte bakgrunnen. PRECISE forhindrer endring av bildet inne i masken.
  • numberOfImages – Antall bilder som skal genereres.
  • kvalitet – Kvaliteten på de genererte bildene: standard or premium.
  • cfgSkala – Angir hvor sterkt det genererte bildet skal følge forespørselen.
  • høyde – Høyden på bildet i piksler.
  • bredde – Bildets bredde i piksler.

Amazonas grunnfjell InvokeModel API genererer et svar med et kodet bilde i Output S3Uri plassering. En annen Lambda-funksjon analyserer bildet fra svaret, dekoder det fra base64 og lagrer bildefilen på følgende sted: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Til slutt oppdaterer en underordnet arbeidsflyt en DynamoDB-tabell med bildegenereringsstatus, og merker den som enten Etterfølger or Mislyktes, og inkludert detaljer som ImageName, Cause, Errorog Status.

Generer en statusrapport

Etter bildegenereringsprosessen henter en Lambda-funksjon statusdetaljene fra DynamoDB. Den kompilerer disse detaljene dynamisk til en omfattende statusrapport i JSON-format. Den lagrer deretter den genererte statusrapporten en JSON-fil på følgende plassering: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. ITOps-teamet kan integrere denne rapporten med sitt eksisterende varslingssystem for å spore om bildebehandlingen er fullført. For bedriftsbrukere kan du utvide dette ytterligere for å generere en rapport i CSV-format.

Send en e-post via Amazon SNS

Step Functions påkaller en Amazon SNS API-handling for å sende en e-post. E-posten inneholder detaljer, inkludert S3-plasseringen for statusrapporten og de endelige bildefilene. Følgende er eksempel på e-postvarsling.

E-postmelding

konklusjonen

I dette innlegget ga vi en oversikt over en prøveløsning som demonstrerer automatiseringen av å endre bildebakgrunn i skala ved hjelp av Amazons grunnfjell og trinnfunksjoner. Vi forklarte også hvert element i løsningen i detalj. Ved å bruke Step Functions-optimalisert integrasjon med Amazon Bedrock, Distributed Map og Titan Image Generator G1-modellen, erstatter løsningen effektivt bakgrunnene til bilder parallelt, og øker produktiviteten og skalerbarheten.

For å distribuere løsningen, se instruksjonene i GitHub repository.

Ressurser

For å lære mer om Amazon Bedrock, se følgende ressurser:

For å lære mer om Titan Image Generator G1-modellen, se følgende ressurser:

For å lære mer om bruk av Amazon Bedrock med trinnfunksjoner, se følgende ressurser:


om forfatteren

Automatiser prosessen for å endre bildebakgrunn ved å bruke Amazon Bedrock og AWS Step Functions | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Chetan Makvana er en senior løsningsarkitekt med Amazon Web Services. Han samarbeider med AWS-partnere og kunder for å gi dem arkitektonisk veiledning for å bygge skalerbar arkitektur og implementere strategier for å drive adopsjon av AWS-tjenester. Han er en teknologientusiast og en bygger med et kjerneområde av interesse for generativ AI, serverløs og DevOps. Utenom jobben liker han å se programmer, reise og musikk. 

Tidstempel:

Mer fra AWS maskinlæring