Automatizálja a kép hátterének megváltoztatásának folyamatát az Amazon Bedrock és az AWS Step Functions | segítségével Amazon webszolgáltatások

Automatizálja a kép hátterének megváltoztatásának folyamatát az Amazon Bedrock és az AWS Step Functions | segítségével Amazon webszolgáltatások

Sok ügyfélnek, köztük a kreatív reklámozással, médiával és szórakoztatással, e-kereskedelemmel és divattal foglalkozó ügyfeleknek gyakran kell nagy számú kép hátterét megváltoztatniuk. Általában ez magában foglalja az egyes képek manuális szerkesztését fotószoftverrel. Ez sok erőfeszítést igényelhet, különösen nagy mennyiségű kép esetén. Azonban, Amazon alapkőzet és a AWS lépésfunkciók egyszerűvé teszi ennek a folyamatnak a nagyarányú automatizálását.

Az Amazon Bedrock a generatív AI alapozó modellt kínálja Amazon Titan Image Generator G1, amely képes automatikusan megváltoztatni egy kép hátterét egy ún kifestés. A Step Functions lehetővé teszi egy automatizált munkafolyamat létrehozását, amely zökkenőmentesen kapcsolódik az Amazon Bedrockhoz és más AWS-szolgáltatásokhoz. Az Amazon Bedrock és a Step Functions együttesen leegyszerűsíti a több kép hátterének automatikus megváltoztatásának teljes folyamatát.

Ez a bejegyzés egy olyan megoldást mutat be, amely leegyszerűsíti a hátterek megváltoztatásának folyamatát több képen. A képességek kihasználásával generatív AI az Amazon Bedrock és a Titan Image Generator G1 modellel, valamint a Step Functions funkcióval kombinálva ez a megoldás hatékonyan generálja a kívánt háttérrel rendelkező képeket. Ez a bejegyzés betekintést nyújt a megoldás belső működésébe, és segít megérteni a saját egyedi megoldás elkészítéséhez szükséges tervezési döntéseket.

Lásd az GitHub tárház a megoldás telepítésével kapcsolatos részletes utasításokért.

Megoldás áttekintése

Nézzük meg, hogyan működik a megoldás magas szinten, mielőtt mélyebben belemerülnénk az egyes elemekbe és a használt AWS szolgáltatásokba. A következő diagram egyszerűsített képet ad a megoldás architektúrájáról, és kiemeli a legfontosabb elemeket.

Megoldás architektúra

A munkafolyamat a következő lépésekből áll:

  1. Egy felhasználó több képet tölt fel egy Amazon egyszerű tárolási szolgáltatás (Amazon S3) vödör Streamlit webalkalmazáson keresztül.
  2. A Streamlit webalkalmazás egy Amazon API átjáró REST API végpont integrálva a Amazon felismerés DetectLabels API, amely minden egyes képhez címkét észlel.
  3. Beküldéskor a Streamlit webalkalmazás frissíti a Amazon DynamoDB táblázat a kép részleteivel.
  4. A DynamoDB frissítés egy AWS Lambda funkciót, amely elindítja a Step Functions munkafolyamatot.
  5. A Step Functions munkafolyamat a következő lépéseket futtatja minden egyes kép esetében:
    5.1 Létrehoz egy kérés hasznos terhet az Amazon Bedrock számára InvokeModel API.
    5.2 Meghívja az Amazon alapkőzetét InvokeModel API-művelet.
    5.3 Elemez egy képet a válaszból, és elmenti egy S3 helyre.
    5.4 Frissíti a kép állapotát a DynamoDB táblában.
  6. A Step Functions munkafolyamat Lambda függvényt hív meg állapotjelentés létrehozásához.
  7. A munkafolyamat e-mailt küld a használatával Amazon Simple Notification Service (Amazon SNS).

Ahogy a következő képernyőképen látható, a Streamlit webalkalmazás lehetővé teszi képek feltöltését és szöveges promptok megadását a kívánt hátterek, negatív üzenetek és kifestési mód megadásához a képgeneráláshoz. Megtekintheti és eltávolíthatja az egyes feltöltött képekhez társított nem kívánt címkéket is, amelyeket nem szeretne a végső generált képekben megtartani.

Egyszerű webalkalmazás

Ebben a példában a háttér kérése: „London city background”. Az automatizálási folyamat az eredeti feltöltött képek alapján új képeket generál, háttérként Londonnal.

Generált képek

Egyszerű webalkalmazások és képek feltöltése

Ehhez a megoldáshoz egy Streamlit webalkalmazás szolgál frontendként. Az alkalmazás illetéktelen hozzáféréstől való védelme érdekében integrálja a Amazon Cognito felhasználói készlet. Az API Gateway egy Amazon Cognito jogosultság kérések hitelesítésére. A webalkalmazás a következő lépéseket hajtja végre:

  1. Minden kiválasztott képhez lekéri a címkéket az Amazon Rekognition segítségével egy API Gateway REST API-végpont segítségével.
  2. A beküldés után az alkalmazás feltölti a képeket egy S3-as vödörbe.
  3. Az alkalmazás egy másik API-átjáró REST API-végpont használatával frissít egy DynamoDB-táblát minden egyes képhez kapcsolódó paraméterekkel, képnevekkel és kapcsolódó címkékkel.

Képfeldolgozási munkafolyamat

Amikor a DynamoDB tábla frissül, DynamoDB Streams elindít egy Lambda függvényt egy új Step Functions munkafolyamat elindításához. A következő minta kérés a munkafolyamathoz:

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

A Step Functions munkafolyamat ezt követően a következő három lépést hajtja végre:

  1. Cserélje ki az összes kép hátterét.
  2. Állapotjelentés létrehozása.
  3. Küldjön e-mailt az Amazon SNS-en keresztül.

A következő képernyőkép a Step Functions munkafolyamatot mutatja be.

AWS Step Functions munkafolyamat

Nézzük meg részletesebben az egyes lépéseket.

Cserélje le az összes kép hátterét

A Step Functions a Elosztott térkép hogy az egyes képeket párhuzamos gyermekmunkafolyamatokban dolgozza fel. Az elosztott térkép nagy egyidejű feldolgozást tesz lehetővé. Minden alárendelt munkafolyamatnak külön futási előzménye van, mint a szülő munkafolyamatnak.

A Step Functions egy InvokeModel optimalizált API-művelet az Amazon Bedrock számára. Az API legfeljebb 25 MB méretű kéréseket és válaszokat fogad el. A Step Functions azonban 256 KB-os korláttal rendelkezik az állapot hasznos adatbevitelére és kimenetére. A nagyobb képek támogatásához a megoldás egy S3 vödröt használ, ahol a InvokeModel Az API beolvassa az adatokat, és oda írja az eredményt. A következő a konfigurációja a InvokeModel API az Amazon Bedrock integrációjához:

{
    "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 paraméter határozza meg a forrás helyét a bemeneti adatok lekéréséhez. A Output S3Uri paraméter határozza meg az API-válasz írási célját.

Egy Lambda függvény a kérés hasznos adatát JSON-fájlként menti a megadott helyen Input S3Uri elhelyezkedés. A InvokeModel Az API ezt a bemeneti hasznos adatot használja a megadott háttérrel rendelkező képek létrehozásához:

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

A Titan Image Generator G1 modell a következő paramétereket támogatja a képalkotáshoz:

  • feladattípus – Meghatározza a kifestési módszert a kép hátterének cseréjéhez.
  • szöveg – Szöveges üzenet a háttér meghatározásához.
  • negatívSzöveg – Szöveges felszólítás annak meghatározására, hogy mit ne tartalmazzon a kép.
  • maszkPrompt – A maszkot meghatározó szöveges prompt. Azoknak a címkéknek felel meg, amelyeket meg szeretne őrizni a végső generált képekben.
  • maszkKép – Base64 kódolású JPEG vagy PNG kép.
  • outPaintingMode – Meghatározza, hogy engedélyezi-e a maszkon belüli képpontok módosítását vagy sem. Az ALAPÉRTÉKELÉS lehetővé teszi a kép módosítását a maszkon belül, hogy az összhangban legyen a rekonstruált háttérrel. A PRECISE megakadályozza a kép módosítását a maszkon belül.
  • képek száma – A generálandó képek száma.
  • világítás – A generált képek minősége: standard or premium.
  • cfgScale – Meghatározza, hogy a generált kép milyen erősen tapadjon a prompthoz.
  • magasság – A kép magassága pixelben.
  • szélesség – A kép szélessége pixelben.

Az Amazonas alapkőzete InvokeModel Az API választ generál egy kódolt képpel a Output S3Uri elhelyezkedés. Egy másik Lambda függvény elemzi a képet a válaszból, dekódolja a base64-ből, és elmenti a képfájlt a következő helyre: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Végül egy utódmunkafolyamat frissíti a DynamoDB táblát képgenerálási állapottal, és megjelöli azt bármelyikként Sikerült or Sikertelen, és olyan részleteket tartalmaz, mint pl ImageName, Cause, Errorés Status.

Állapotjelentés létrehozása

A képalkotási folyamat után egy Lambda függvény lekéri az állapot részleteit a DynamoDB-ből. Ezeket a részleteket dinamikusan összeállítja egy átfogó állapotjelentésbe JSON formátumban. Ezután a generált állapotjelentést JSON-fájlként menti a következő helyre: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Az ITOps csapata integrálhatja ezt a jelentést meglévő értesítési rendszerével annak nyomon követésére, hogy a képfeldolgozás sikeresen befejeződött-e. Az üzleti felhasználók számára ezt tovább bővítheti, hogy CSV formátumban készítsen jelentést.

Küldjön e-mailt az Amazon SNS-en keresztül

A Step Functions egy Amazon SNS API-műveletet hív meg e-mail küldéséhez. Az e-mail részleteket tartalmaz, beleértve az állapotjelentés S3 helyét és a végső képfájlokat. Az alábbi minta értesítő e-mail.

Értesítési e-mail

Következtetés

Ebben a bejegyzésben áttekintést adtunk egy mintamegoldásról, amely bemutatja a képháttér nagyarányú megváltoztatásának automatizálását az Amazon Bedrock és a Step Functions használatával. Részletesen ismertettük a megoldás egyes elemeit is. A Step Functions optimalizált integrációjával az Amazon Bedrock, a Distributed Map és a Titan Image Generator G1 modellel a megoldás hatékonyan helyettesíti a képek hátterét párhuzamosan, növelve a termelékenységet és a méretezhetőséget.

A megoldás üzembe helyezéséhez olvassa el az utasításokat a GitHub tárház.

Tudástár

Ha többet szeretne megtudni az Amazon Bedrockról, tekintse meg a következő forrásokat:

Ha többet szeretne megtudni a Titan Image Generator G1 modellről, tekintse meg a következő forrásokat:

Ha többet szeretne megtudni az Amazon Bedrock Step Functions használatáról, tekintse meg a következő forrásokat:


A szerzőről

Automatizálja a kép hátterének megváltoztatásának folyamatát az Amazon Bedrock és az AWS Step Functions | segítségével Amazon Web Services PlatoBlockchain Data Intelligence. Függőleges keresés. Ai.Chetan Makvana az Amazon Web Services vezető megoldástervezője. Együttműködik az AWS-partnerekkel és ügyfelekkel, hogy építészeti útmutatást nyújtson számukra a méretezhető architektúra felépítéséhez és az AWS-szolgáltatások elterjedését elősegítő stratégiák megvalósításához. Technológia rajongó és építő, akinek fő érdeklődési területe a generatív mesterséges intelligencia, a szerver nélküli és a DevOps. A munkán kívül szívesen néz műsorokat, utazik és zenél. 

Időbélyeg:

Még több AWS gépi tanulás