Automatizați procesul de schimbare a fundalurilor imaginilor folosind Amazon Bedrock și AWS Step Functions | Amazon Web Services

Automatizați procesul de schimbare a fundalurilor imaginilor folosind Amazon Bedrock și AWS Step Functions | Amazon Web Services

Mulți clienți, inclusiv cei din publicitate creativă, media și divertisment, comerț electronic și modă, au adesea nevoie să schimbe fundalul într-un număr mare de imagini. De obicei, aceasta implică editarea manuală a fiecărei imagini cu un software foto. Acest lucru poate necesita mult efort, mai ales pentru loturi mari de imagini. In orice caz, Amazon Bedrock și Funcții pas AWS simplificați automatizarea acestui proces la scară.

Amazon Bedrock oferă modelul de fundație generativ AI Amazon Titan Image Generator G1, care poate schimba automat fundalul unei imagini folosind o tehnică numită pictura. Step Functions vă permite să creați un flux de lucru automat care se conectează perfect cu Amazon Bedrock și alte servicii AWS. Împreună, Amazon Bedrock și Step Functions simplifică întregul proces de schimbare automată a fundalurilor pe mai multe imagini.

Această postare prezintă o soluție care simplifică procesul de schimbare a fundalurilor în mai multe imagini. Prin valorificarea capacităţilor de AI generativă cu Amazon Bedrock și modelul Titan Image Generator G1, combinat cu Step Functions, această soluție generează eficient imagini cu fundalul dorit. Această postare oferă o perspectivă asupra funcționării interioare a soluției și vă ajută să înțelegeți alegerile de proiectare făcute pentru a construi această soluție personalizată.

A se vedea GitHub depozit pentru instrucțiuni detaliate despre implementarea acestei soluții.

Prezentare generală a soluțiilor

Să ne uităm la modul în care soluția funcționează la un nivel înalt înainte de a ne aprofunda elementele specifice și serviciile AWS utilizate. Următoarea diagramă oferă o vedere simplificată a arhitecturii soluției și evidențiază elementele cheie.

Arhitectura soluției

Fluxul de lucru constă din următorii pași:

  1. Un utilizator încarcă mai multe imagini într-un Serviciul Amazon de stocare simplă (Amazon S3) prin intermediul unei aplicații web Streamlit.
  2. Aplicația web Streamlit apelează un Gateway API Amazon Punct final API REST integrat cu Amazon Rekognition API DetectLabels, care detectează etichete pentru fiecare imagine.
  3. La trimitere, aplicația web Streamlit actualizează un Amazon DynamoDB tabel cu detalii imagini.
  4. Actualizarea DynamoDB declanșează un AWS Lambdas funcția, care pornește un flux de lucru Step Functions.
  5. Fluxul de lucru Step Functions rulează următorii pași pentru fiecare imagine:
    5.1 Construiește o sarcină utilă de solicitare pentru Amazon Bedrock InvokeModel API-ul.
    5.2 Invocă Amazon Bedrock InvokeModel Acțiune API.
    5.3 Analizează o imagine din răspuns și o salvează într-o locație S3.
    5.4 Actualizează starea imaginii într-un tabel DynamoDB.
  6. Fluxul de lucru Step Functions invocă o funcție Lambda pentru a genera un raport de stare.
  7. Fluxul de lucru trimite un e-mail folosind Serviciul de notificare simplă Amazon (Amazon SNS).

După cum se arată în următoarea captură de ecran, aplicația web Streamlit vă permite să încărcați imagini și să introduceți solicitări de text pentru a specifica fundalurile dorite, solicitările negative și modul de desenare pentru generarea imaginilor. De asemenea, puteți vizualiza și elimina etichetele nedorite asociate fiecărei imagini încărcate pe care nu doriți să le păstrați în imaginile finale generate.

Aplicație web Streamlit

În acest exemplu, solicitarea pentru fundal este „Fondul orașului Londra”. Procesul de automatizare generează noi imagini bazate pe imaginile originale încărcate cu Londra ca fundal.

Imagini generate

Aplicații web simplificate și încărcări de imagini

O aplicație web Streamlit servește drept interfață pentru această soluție. Pentru a proteja aplicația de accesul neautorizat, se integrează cu un Amazon Cognito grup de utilizatori. API Gateway utilizează un Autorizator Amazon Cognito pentru autentificarea cererilor. Aplicația web parcurge următorii pași:

  1. Pentru fiecare imagine selectată, preia etichetele prin Amazon Rekognition folosind un punct final API REST API Gateway.
  2. La trimitere, aplicația încarcă imagini într-o găleată S3.
  3. Aplicația actualizează un tabel DynamoDB cu parametri relevanți, nume de imagini și etichete asociate pentru fiecare imagine folosind un alt punct final API REST API Gateway.

Flux de lucru pentru procesarea imaginilor

Când tabelul DynamoDB este actualizat, Fluxuri DynamoDB declanșează o funcție Lambda pentru a începe un nou flux de lucru Step Functions. Mai jos este un exemplu de solicitare pentru fluxul de lucru:

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

Fluxul de lucru Step Functions efectuează ulterior următorii trei pași:

  1. Înlocuiți fundalul pentru toate imaginile.
  2. Generați un raport de stare.
  3. Trimiteți un e-mail prin Amazon SNS.

Următoarea captură de ecran ilustrează fluxul de lucru Step Functions.

Flux de lucru AWS Step Functions

Să ne uităm la fiecare pas mai detaliat.

Înlocuiți fundalul pentru toate imaginile

Step Functions folosește a Harta distribuita pentru a procesa fiecare imagine în fluxuri de lucru secundare paralele. Harta distribuită permite procesarea cu concurență ridicată. Fiecare flux de lucru copil are propriul său istoric de rulare separat de cel al fluxului de lucru părinte.

Step Functions folosește un Acțiune API optimizată InvokeModel pentru Amazon Bedrock. API-ul acceptă solicitări și răspunsuri de până la 25 MB. Cu toate acestea, Step Functions are o limită de 256 KB pentru intrarea și ieșirea sarcinii utile de stat. Pentru a suporta imagini mai mari, soluția folosește o găleată S3 unde InvokeModel API citește date de la și scrie rezultatul în. Următoarea este configurația pentru InvokeModel API pentru integrarea 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”
    } 
}

Input S3Uri parametrul specifică locația sursei pentru a prelua datele de intrare. The Output S3Uri parametrul specifică destinația pentru a scrie răspunsul API.

O funcție Lambda salvează sarcina utilă a cererii ca fișier JSON în fișierul specificat Input S3Uri Locație. The InvokeModel API folosește această sarcină utilă de intrare pentru a genera imagini cu fundalul specificat:

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

Modelul Titan Image Generator G1 acceptă următorii parametri pentru generarea imaginilor:

  • taskType – Specifică metoda de pictură pentru a înlocui fundalul imaginii.
  • a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match. – O solicitare text pentru a defini fundalul.
  • text negativ – O solicitare text pentru a defini ce să nu includă în imagine.
  • maskPrompt – Un mesaj text care definește masca. Ea corespunde etichetelor pe care doriți să le păstrați în imaginile finale generate.
  • mascaImagine – Imaginea JPEG sau PNG codificată în base64.
  • outPaintingMode – Specifică dacă se permite modificarea pixelilor din interiorul măștii sau nu. DEFAULT permite modificarea imaginii din interiorul măștii pentru a o menține în concordanță cu fundalul reconstruit. PRECISE previne modificarea imaginii din interiorul măștii.
  • numărDeImagini – Numărul de imagini de generat.
  • calitate – Calitatea imaginilor generate: standard or premium.
  • cfgScale – Specifică cât de puternic ar trebui să adere imaginea generată la prompt.
  • înălțime – Înălțimea imaginii în pixeli.
  • lățime – Lățimea imaginii în pixeli.

Roca de bază a Amazonului InvokeModel API generează un răspuns cu o imagine codificată în Output S3Uri Locație. O altă funcție Lambda analizează imaginea din răspuns, o decodifică din base64 și salvează fișierul imagine în următoarea locație: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

În cele din urmă, un flux de lucru copil actualizează un tabel DynamoDB cu starea de generare a imaginii, marcându-l ca oricare Reușit or A eșuat, și inclusiv detalii precum ImageName, Cause, Error, și Status.

Generați un raport de stare

După procesul de generare a imaginii, o funcție Lambda preia detaliile de stare din DynamoDB. Compilează în mod dinamic aceste detalii într-un raport cuprinzător de stare în format JSON. Apoi salvează raportul de stare generat un fișier JSON în următoarea locație: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Echipa ITOps poate integra acest raport cu sistemul de notificare existent pentru a urmări dacă procesarea imaginii s-a finalizat cu succes. Pentru utilizatorii de afaceri, puteți extinde acest lucru și mai mult pentru a genera un raport în format CSV.

Trimiteți un e-mail prin Amazon SNS

Step Functions invocă o acțiune API Amazon SNS pentru a trimite un e-mail. E-mailul conține detalii, inclusiv locația S3 pentru raportul de stare și fișierele de imagini finale. Următorul este exemplul de e-mail de notificare.

E-mail de notificare

Concluzie

În această postare, am oferit o prezentare generală a unui exemplu de soluție care demonstrează automatizarea schimbării fundalurilor de imagine la scară folosind Amazon Bedrock și Step Functions. De asemenea, am explicat în detaliu fiecare element al soluției. Utilizând integrarea optimizată Step Functions cu Amazon Bedrock, Distributed Map și modelul Titan Image Generator G1, soluția înlocuiește eficient fundalul imaginilor în paralel, sporind productivitatea și scalabilitatea.

Pentru a implementa soluția, consultați instrucțiunile din GitHub depozit.

Resurse

Pentru a afla mai multe despre Amazon Bedrock, consultați următoarele resurse:

Pentru a afla mai multe despre modelul Titan Image Generator G1, consultați următoarele resurse:

Pentru a afla mai multe despre utilizarea Amazon Bedrock cu Step Functions, consultați următoarele resurse:


Despre autor

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 este arhitect senior de soluții cu Amazon Web Services. El lucrează cu partenerii și clienții AWS pentru a le oferi îndrumări arhitecturale pentru construirea arhitecturii scalabile și implementarea strategiilor pentru a stimula adoptarea serviciilor AWS. Este un pasionat de tehnologie și un constructor cu un domeniu de interes principal pe AI generativă, fără server și DevOps. În afara serviciului, îi place să urmărească spectacole, să călătorească și muzică. 

Timestamp-ul:

Mai mult de la Învățare automată AWS