Zautomatyzuj proces zmiany tła obrazu za pomocą funkcji Amazon Bedrock i AWS Step Functions | Usługi internetowe Amazona

Zautomatyzuj proces zmiany tła obrazu za pomocą funkcji Amazon Bedrock i AWS Step Functions | Usługi internetowe Amazona

Wielu klientów, w tym zajmujących się reklamą kreatywną, mediami i rozrywką, e-commerce i modą, często musi zmienić tło w dużej liczbie obrazów. Zwykle wiąże się to z ręczną edycją każdego obrazu za pomocą oprogramowania fotograficznego. Może to wymagać dużego wysiłku, szczególnie w przypadku dużych partii obrazów. Jednakże, Amazońska skała macierzysta i Funkcje kroków AWS ułatwiają automatyzację tego procesu na dużą skalę.

Amazon Bedrock oferuje podstawowy model generatywnej sztucznej inteligencji Generator obrazów Amazon Titan G1, który może automatycznie zmienić tło obrazu za pomocą techniki zwanej przemalowanie. Step Functions umożliwia utworzenie zautomatyzowanego przepływu pracy, który płynnie łączy się z Amazon Bedrock i innymi usługami AWS. Razem funkcje Amazon Bedrock i Step Functions usprawniają cały proces automatycznej zmiany tła wielu obrazów.

W tym poście przedstawiono rozwiązanie, które upraszcza proces zmiany tła w wielu obrazach. Wykorzystując możliwości generatywna sztuczna inteligencja dzięki Amazon Bedrock i modelowi Titan Image Generator G1, w połączeniu z funkcjami Step, rozwiązanie to skutecznie generuje obrazy z pożądanym tłem. Ten post zapewnia wgląd w wewnętrzne działanie rozwiązania i pomaga zrozumieć wybory projektowe podjęte w celu zbudowania tego własnego, niestandardowego rozwiązania.

Zobacz Repozytorium GitHub aby uzyskać szczegółowe instrukcje dotyczące wdrażania tego rozwiązania.

Omówienie rozwiązania

Przyjrzyjmy się, jak rozwiązanie działa na wysokim poziomie, zanim zagłębimy się w konkretne elementy i wykorzystywane usługi AWS. Poniższy diagram przedstawia uproszczony widok architektury rozwiązania i wyróżnia kluczowe elementy.

Architektura rozwiązania

Przepływ pracy składa się z następujących kroków:

  1. Użytkownik przesyła wiele obrazów do pliku Usługa Amazon Simple Storage Łyżka (Amazon S3) za pośrednictwem aplikacji internetowej Streamlit.
  2. Aplikacja internetowa Streamlit wywołuje Brama Amazon API Punkt końcowy API REST zintegrowany z Amazon Rekognition Interfejs API DetectLabels, który wykrywa etykiety dla każdego obrazu.
  3. Po przesłaniu aplikacja internetowa Streamlit aktualizuje plik Amazon DynamoDB tabela ze szczegółami obrazu.
  4. Aktualizacja DynamoDB powoduje wyzwolenie AWS Lambda funkcja, która rozpoczyna przepływ pracy Funkcje kroku.
  5. Przepływ pracy Funkcje kroku obejmuje następujące kroki dla każdego obrazu:
    5.1 Konstruuje ładunek żądania dla Amazon Bedrock InvokeModel API.
    5.2 Przywołuje skałę amazońską InvokeModel Akcja API.
    5.3 Analizuje obraz z odpowiedzi i zapisuje go w lokalizacji S3.
    5.4 Aktualizuje status obrazu w tabeli DynamoDB.
  6. Przepływ pracy Step Functions wywołuje funkcję Lambda w celu wygenerowania raportu o stanie.
  7. Przepływ pracy wysyła wiadomość e-mail za pomocą Usługa prostego powiadomienia Amazon (Amazonskie SNS).

Jak pokazano na poniższym zrzucie ekranu, aplikacja internetowa Streamlit umożliwia przesyłanie obrazów i wprowadzanie podpowiedzi tekstowych w celu określenia żądanego tła, podpowiedzi negatywnych i trybu odmalowania do generowania obrazu. Możesz także przeglądać i usuwać niechciane etykiety powiązane z każdym przesłanym obrazem, których nie chcesz zachować w ostatecznie wygenerowanych obrazach.

Usprawniona aplikacja internetowa

W tym przykładzie monit o podanie tła to „Tło miasta Londynu”. Proces automatyzacji generuje nowe obrazy w oparciu o oryginalne przesłane obrazy z Londynem w tle.

Wygenerowane obrazy

Usprawnij przesyłanie aplikacji internetowych i obrazów

Frontendem dla tego rozwiązania jest aplikacja internetowa Streamlit. Aby chronić aplikację przed nieautoryzowanym dostępem, integruje się z m.in Amazon Cognito pula użytkowników. Brama API korzysta z Autoryzator Amazon Cognito do uwierzytelniania żądań. Aplikacja internetowa wykonuje następujące kroki:

  1. Dla każdego wybranego obrazu pobiera etykiety za pośrednictwem usługi Amazon Rekognition przy użyciu punktu końcowego API REST API Gateway.
  2. Po przesłaniu aplikacja przesyła obrazy do segmentu S3.
  3. Aplikacja aktualizuje tabelę DynamoDB o odpowiednie parametry, nazwy obrazów i powiązane etykiety dla każdego obrazu przy użyciu innego punktu końcowego API REST API Gateway.

Proces przetwarzania obrazu

Po zaktualizowaniu tabeli DynamoDB, Strumienie DynamoDB wyzwala funkcję Lambda, aby rozpocząć nowy przepływ pracy funkcji kroku. Poniżej znajduje się przykładowe żądanie dotyczące przepływu pracy:

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

Następnie przepływ pracy Funkcje kroku obejmuje następujące trzy kroki:

  1. Zamień tło dla wszystkich obrazów.
  2. Wygeneruj raport o stanie.
  3. Wyślij e-mail za pośrednictwem Amazon SNS.

Poniższy zrzut ekranu ilustruje przepływ pracy Funkcje kroku.

Przepływ pracy funkcji krokowych AWS

Przyjrzyjmy się każdemu krokowi bardziej szczegółowo.

Zamień tło dla wszystkich obrazów

Funkcje kroku wykorzystują a Rozproszona mapa do przetwarzania każdego obrazu w równoległych przepływach pracy podrzędnych. Mapa rozproszona umożliwia przetwarzanie o dużej współbieżności. Każdy podrzędny przepływ pracy ma własną, oddzielną historię uruchamiania od historii nadrzędnego przepływu pracy.

Funkcje kroku używają Zoptymalizowane działanie API InvokeModel dla Amazon Bedrock. Interfejs API akceptuje żądania i odpowiedzi o rozmiarze do 25 MB. Jednakże funkcja Step Functions ma limit 256 KB na wejściu i wyjściu ładunku stanu. Aby obsługiwać większe obrazy, rozwiązanie wykorzystuje segment S3, w którym plik InvokeModel API odczytuje dane i zapisuje do nich wynik. Poniżej znajduje się konfiguracja dla InvokeModel API do integracji z 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”
    } 
}

Połączenia Input S3Uri Parametr określa lokalizację źródłową, z której mają zostać pobrane dane wejściowe. The Output S3Uri Parametr określa miejsce docelowe, w którym ma zostać zapisana odpowiedź API.

Funkcja Lambda zapisuje ładunek żądania jako plik JSON w określonym formacie Input S3Uri Lokalizacja. ten InvokeModel API wykorzystuje ten ładunek wejściowy do generowania obrazów z określonym tłem:

{
    "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 obsługuje następujące parametry generowania obrazu:

  • Typ zadania – Określa metodę przemalowania zastępującą tło obrazu.
  • XNUMX – Podpowiedź tekstowa określająca tło.
  • tekst negatywny – Podpowiedź tekstowa określająca, czego nie należy umieszczać na obrazie.
  • maskaPodpowiedź – Podpowiedź tekstowa definiująca maskę. Odpowiada etykietom, które chcesz zachować w ostatecznie wygenerowanych obrazach.
  • obraz maski – Obraz JPEG lub PNG zakodowany w base64.
  • poza trybem malowania – Określa, czy zezwolić na modyfikację pikseli wewnątrz maski, czy nie. DEFAULT umożliwia modyfikację obrazu wewnątrz maski w celu zachowania jego spójności z rekonstruowanym tłem. PRECISE zapobiega modyfikacji obrazu wewnątrz maski.
  • liczba obrazów – Liczba obrazów do wygenerowania.
  • jakość – Jakość generowanych obrazów: standard or premium.
  • cfgSkala – Określa, jak mocno wygenerowany obraz powinien przylegać do podpowiedzi.
  • wysokość – Wysokość obrazu w pikselach.
  • szerokość – Szerokość obrazu w pikselach.

Podłoże Amazonii InvokeModel API generuje odpowiedź z zakodowanym obrazem w formacie Output S3Uri Lokalizacja. Inna funkcja Lambda analizuje obraz z odpowiedzi, dekoduje go z base64 i zapisuje plik obrazu w następującej lokalizacji: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Na koniec podrzędny przepływ pracy aktualizuje tabelę DynamoDB o status generowania obrazu, oznaczając ją jako dowolny Następca or Failedi zawiera szczegóły takie jak ImageName, Cause, Error, Status.

Wygeneruj raport o stanie

Po procesie generowania obrazu funkcja Lambda pobiera szczegóły statusu z DynamoDB. Dynamicznie kompiluje te szczegóły w kompleksowy raport o stanie w formacie JSON. Następnie zapisuje wygenerowany raport o stanie w pliku JSON w następującej lokalizacji: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Zespół ITOps może zintegrować ten raport z istniejącym systemem powiadomień, aby śledzić, czy przetwarzanie obrazu zakończyło się pomyślnie. Użytkownicy biznesowi mogą rozszerzyć tę opcję, aby wygenerować raport w formacie CSV.

Wyślij e-mail za pośrednictwem Amazon SNS

Step Functions wywołuje akcję Amazon SNS API w celu wysłania wiadomości e-mail. Wiadomość e-mail zawiera szczegółowe informacje, w tym lokalizację S3, w której znajduje się raport o stanie i ostateczne pliki obrazów. Poniżej znajduje się przykładowy e-mail z powiadomieniem.

E-mail z powiadomieniem

Wnioski

W tym poście przedstawiliśmy przegląd przykładowego rozwiązania demonstrującego automatyzację zmiany tła obrazu na dużą skalę przy użyciu funkcji Amazon Bedrock i Step Functions. Wyjaśniliśmy także szczegółowo każdy element rozwiązania. Dzięki zoptymalizowanej integracji Step Functions z Amazon Bedrock, Distributed Map i modelem Titan Image Generator G1, rozwiązanie skutecznie zastępuje tła obrazów równolegle, zwiększając produktywność i skalowalność.

Aby wdrożyć rozwiązanie, zapoznaj się z instrukcjami w pliku Repozytorium GitHub.

Zasoby

Aby dowiedzieć się więcej o Amazon Bedrock, zapoznaj się z następującymi zasobami:

Aby dowiedzieć się więcej na temat modelu Titan Image Generator G1, zapoznaj się z następującymi zasobami:

Aby dowiedzieć się więcej na temat korzystania z usługi Amazon Bedrock z funkcjami Step, zapoznaj się z następującymi zasobami:


O autorze

Zautomatyzuj proces zmiany tła obrazu za pomocą funkcji Amazon Bedrock i AWS Step Functions | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Chetan Makvana jest starszym architektem rozwiązań w Amazon Web Services. Współpracuje z partnerami i klientami AWS, aby zapewnić im wskazówki architektoniczne dotyczące budowania skalowalnej architektury i wdrażania strategii wspierających przyjęcie usług AWS. Jest entuzjastą technologii i konstruktorem, którego główny obszar zainteresowań obejmuje generatywną sztuczną inteligencję, rozwiązania bezserwerowe i DevOps. Poza pracą lubi oglądać programy, podróżować i słuchać muzyki. 

Znak czasu:

Więcej z Uczenie maszynowe AWS