Avtomatizirajte postopek spreminjanja ozadij slik z uporabo Amazon Bedrock in AWS Step Functions | Spletne storitve Amazon

Avtomatizirajte postopek spreminjanja ozadij slik z uporabo Amazon Bedrock in AWS Step Functions | Spletne storitve Amazon

Številne stranke, vključno s tistimi v kreativnem oglaševanju, medijih in zabavi, e-trgovini in modi, morajo pogosto spremeniti ozadje v velikem številu slik. Običajno to vključuje ročno urejanje vsake slike s programsko opremo za fotografije. To lahko zahteva veliko truda, zlasti pri velikih serijah slik. vendar Amazon Bedrock in Korak funkcije AWS omogoča preprosto avtomatizacijo tega procesa v velikem obsegu.

Amazon Bedrock ponuja generativni temeljni model AI Amazon Titan Image Generator G1, ki lahko samodejno spremeni ozadje slike s tehniko, imenovano slikanje. Step Functions vam omogoča, da ustvarite avtomatiziran potek dela, ki se neopazno poveže z Amazon Bedrock in drugimi storitvami AWS. Amazon Bedrock in Step Functions skupaj poenostavita celoten postopek samodejnega spreminjanja ozadij na več slikah.

Ta objava predstavlja rešitev, ki poenostavi postopek spreminjanja ozadij v več slikah. Z izkoriščanjem zmogljivosti generativni AI z Amazon Bedrock in modelom Titan Image Generator G1 v kombinaciji s funkcijami Step Functions ta rešitev učinkovito ustvarja slike z želenim ozadjem. Ta objava nudi vpogled v notranje delovanje rešitve in vam pomaga razumeti oblikovalske odločitve, ki ste jih naredili za izdelavo te lastne rešitve po meri.

Oglejte GitHub repozitorij za podrobna navodila o uvajanju te rešitve.

Pregled rešitev

Oglejmo si, kako rešitev deluje na visoki ravni, preden se poglobimo v določene elemente in uporabljene storitve AWS. Naslednji diagram ponuja poenostavljen pogled na arhitekturo rešitve in poudarja ključne elemente.

Arhitektura rešitve

Potek dela je sestavljen iz naslednjih korakov:

  1. Uporabnik naloži več slik v Preprosta storitev shranjevanja Amazon (Amazon S3) prek spletne aplikacije Streamlit.
  2. Spletna aplikacija Streamlit kliče an Amazon API Gateway Končna točka REST API, integrirana z Amazonsko ponovno vžiganje API DetectLabels, ki zazna oznake za vsako sliko.
  3. Po predložitvi spletna aplikacija Streamlit posodobi an Amazon DynamoDB tabela s slikovnimi podrobnostmi.
  4. Posodobitev DynamoDB sproži an AWS Lambda funkcija, ki zažene delovni tok funkcij koraka.
  5. Potek dela s funkcijami korakov izvaja naslednje korake za vsako sliko:
    5.1 Konstruira obremenitev zahteve za Amazon Bedrock InvokeModel API.
    5.2 Prikliče Amazon Bedrock InvokeModel API dejanje.
    5.3 Razčleni sliko iz odgovora in jo shrani na lokacijo S3.
    5.4 Posodobi status slike v tabeli DynamoDB.
  6. Potek dela Step Functions prikliče funkcijo Lambda za ustvarjanje poročila o stanju.
  7. Potek dela pošlje e-pošto z uporabo Amazon Simple notification Service (Amazon SNS).

Kot je prikazano na naslednjem posnetku zaslona, ​​vam spletna aplikacija Streamlit omogoča nalaganje slik in vnos besedilnih pozivov za določitev želenih ozadij, negativnih pozivov in načina prebarvanja za ustvarjanje slike. Prav tako si lahko ogledate in odstranite neželene oznake, povezane z vsako naloženo sliko, ki jih ne želite obdržati v končno ustvarjenih slikah.

Spletna aplikacija Streamlit

V tem primeru je poziv za ozadje »ozadje mesta London«. Postopek avtomatizacije ustvari nove slike na podlagi izvirno naloženih slik z Londonom kot ozadjem.

Ustvarjene slike

Pretočna spletna aplikacija in nalaganje slik

Spletna aplikacija Streamlit služi kot frontend za to rešitev. Za zaščito aplikacije pred nepooblaščenim dostopom se integrira z Amazon Cognito skupina uporabnikov. API Gateway uporablja an Avtor Amazon Cognito za preverjanje pristnosti zahtev. Spletna aplikacija opravi naslednje korake:

  1. Za vsako izbrano sliko pridobi oznake prek Amazon Rekognition z uporabo končne točke API Gateway REST API.
  2. Po predložitvi aplikacija naloži slike v vedro S3.
  3. Aplikacija posodobi tabelo DynamoDB z ustreznimi parametri, imeni slik in povezanimi oznakami za vsako sliko z uporabo druge končne točke API Gateway REST API.

Potek obdelave slik

Ko je tabela DynamoDB posodobljena, Tokovi DynamoDB sproži funkcijo Lambda za začetek novega delovnega toka funkcij korakov. Sledi vzorčna zahteva za potek dela:

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

Potek dela s funkcijami korakov nato izvede naslednje tri korake:

  1. Zamenjaj ozadje za vse slike.
  2. Ustvarite poročilo o stanju.
  3. Pošljite e-pošto prek storitve Amazon SNS.

Naslednji posnetek zaslona prikazuje potek dela funkcij korakov.

Potek dela korakov AWS

Oglejmo si vsak korak podrobneje.

Zamenjaj ozadje za vse slike

Funkcije korakov uporabljajo a Porazdeljeni zemljevid za obdelavo vsake slike v vzporednih podrejenih potekih dela. Distributed Map omogoča obdelavo z visoko sočasnostjo. Vsak podrejeni potek dela ima svojo ločeno zgodovino izvajanja od zgodovine nadrejenega poteka dela.

Funkcije korakov uporabljajo an InvokeModel optimizirano dejanje API za Amazon Bedrock. API sprejema zahteve in odgovore do 25 MB. Vendar ima funkcija Step Functions omejitev 256 KB za vnos in izhod koristne vsebine stanja. Za podporo večjim slikam rešitev uporablja vedro S3, kjer je InvokeModel API prebere podatke iz in zapiše rezultat. Sledi konfiguracija za InvokeModel API za integracijo 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”
    } 
}

O Input S3Uri parameter določa izvorno lokacijo za pridobitev vhodnih podatkov. The Output S3Uri parameter določa cilj za pisanje odgovora API-ja.

Funkcija Lambda shrani tovor zahteve kot datoteko JSON v podanem Input S3Uri lokacijo. The InvokeModel API uporablja to vhodno obremenitev za ustvarjanje slik z navedenim ozadjem:

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

Model Titan Image Generator G1 podpira naslednje parametre za ustvarjanje slike:

  • taskType – Določa metodo prebarvanja za zamenjavo ozadja slike.
  • besedilo – Besedilni poziv za določitev ozadja.
  • negativeText – Besedilni poziv za določitev, česa ne smete vključiti v sliko.
  • maskPrompt – Besedilni poziv, ki definira masko. Ustreza oznakam, ki jih želite obdržati v končno ustvarjenih slikah.
  • maskImage – Slika JPEG ali PNG, kodirana v base64.
  • outPaintingMode – Določa, ali dovolite spreminjanje slikovnih pik znotraj maske ali ne. DEFAULT dovoljuje spreminjanje slike znotraj maske, da ostane skladna z rekonstruiranim ozadjem. PRECISE preprečuje spreminjanje slike znotraj maske.
  • numberOfImages – Število slik za ustvarjanje.
  • kakovost – Kakovost ustvarjenih slik: standard or premium.
  • cfgScale – Določa, kako močno naj se ustvarjena slika drži poziva.
  • višina – Višina slike v slikovnih pikah.
  • širina – Širina slike v slikovnih pikah.

Amazonska podlaga InvokeModel API ustvari odgovor s kodirano sliko v Output S3Uri lokacijo. Druga funkcija Lambda razčleni sliko iz odgovora, jo dekodira iz base64 in shrani slikovno datoteko na naslednje mesto: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Nazadnje podrejeni potek dela posodobi tabelo DynamoDB s statusom generiranja slike in jo označi kot bodisi Uspelo or ni uspelo, vključno s podrobnostmi, kot je ImageName, Cause, Errorin Status.

Ustvarite poročilo o stanju

Po procesu generiranja slike funkcija Lambda pridobi podrobnosti stanja iz DynamoDB. Te podrobnosti dinamično združi v izčrpno poročilo o stanju v formatu JSON. Nato shrani ustvarjeno poročilo o stanju kot datoteko JSON na naslednje mesto: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Skupina ITOps lahko integrira to poročilo s svojim obstoječim sistemom obveščanja, da spremlja, ali je bila obdelava slike uspešno zaključena. Za poslovne uporabnike lahko to dodatno razširite in ustvarite poročilo v formatu CSV.

Pošljite e-pošto prek storitve Amazon SNS

Funkcije koraka prikliče dejanje Amazon SNS API za pošiljanje e-pošte. E-poštno sporočilo vsebuje podrobnosti, vključno z lokacijo S3 za poročilo o stanju in končne slikovne datoteke. Sledi vzorec e-poštnega obvestila.

E-poštno obvestilo

zaključek

V tej objavi smo podali pregled vzorčne rešitve, ki prikazuje avtomatizacijo spreminjanja slikovnih ozadij v velikem obsegu z uporabo Amazon Bedrock in Step Functions. Vsak element rešitve smo tudi podrobno razložili. Z uporabo optimizirane integracije Step Functions z Amazon Bedrock, Distributed Map in modelom Titan Image Generator G1 rešitev učinkovito zamenja ozadja slik vzporedno, s čimer izboljša produktivnost in razširljivost.

Če želite uvesti rešitev, glejte navodila v GitHub repozitorij.

viri

Če želite izvedeti več o Amazon Bedrock, si oglejte naslednje vire:

Če želite izvedeti več o modelu Titan Image Generator G1, glejte naslednje vire:

Če želite izvedeti več o uporabi Amazon Bedrock s funkcijami korakov, si oglejte naslednje vire:


O Author

Avtomatizirajte postopek spreminjanja ozadij slik z uporabo Amazon Bedrock in AWS Step Functions | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Četan Makvana je višji arhitekt rešitev pri Amazon Web Services. Sodeluje s partnerji in strankami AWS, da bi jim zagotovil arhitekturne smernice za gradnjo razširljive arhitekture in izvajanje strategij za spodbujanje sprejemanja storitev AWS. Je tehnološki navdušenec in graditelj z osrednjim področjem zanimanja za generativno umetno inteligenco, brez strežnikov in DevOps. Poleg službe uživa v gledanju oddaj, potovanjih in glasbi. 

Časovni žig:

Več od Strojno učenje AWS