Zephyrnet-Logo

Automatisieren Sie den Prozess zum Ändern von Bildhintergründen mit Amazon Bedrock und AWS Step Functions | Amazon Web Services

Datum:

Viele Kunden, darunter Kunden aus den Bereichen kreative Werbung, Medien und Unterhaltung, E-Commerce und Mode, müssen häufig den Hintergrund einer großen Anzahl von Bildern ändern. In der Regel umfasst dies die manuelle Bearbeitung jedes Bildes mit einer Fotosoftware. Dies kann insbesondere bei großen Bildmengen sehr aufwändig sein. Jedoch, Amazonas Grundgestein und AWS Step-Funktionen Machen Sie es einfach, diesen Prozess in großem Maßstab zu automatisieren.

Amazon Bedrock bietet das generative KI-Grundlagenmodell an Amazon Titan Image Generator G1, das den Hintergrund eines Bildes mithilfe einer Technik namens automatisch ändern kann übermalen. Mit Step Functions können Sie einen automatisierten Workflow erstellen, der sich nahtlos mit Amazon Bedrock und anderen AWS-Diensten verbindet. Zusammen optimieren Amazon Bedrock und Step Functions den gesamten Prozess der automatischen Änderung des Hintergrunds über mehrere Bilder hinweg.

In diesem Beitrag wird eine Lösung vorgestellt, die das Ändern des Hintergrunds in mehreren Bildern vereinfacht. Durch die Nutzung der Fähigkeiten von generative KI Mit Amazon Bedrock und dem Titan Image Generator G1-Modell in Kombination mit Step Functions generiert diese Lösung effizient Bilder mit dem gewünschten Hintergrund. Dieser Beitrag bietet Einblick in das Innenleben der Lösung und hilft Ihnen, die Designentscheidungen zu verstehen, die zum Erstellen dieser eigenen benutzerdefinierten Lösung getroffen wurden.

Siehe die GitHub-Repository Ausführliche Anweisungen zur Bereitstellung dieser Lösung finden Sie hier.

Lösungsüberblick

Schauen wir uns an, wie die Lösung auf hohem Niveau funktioniert, bevor wir näher auf bestimmte Elemente und die verwendeten AWS-Dienste eingehen. Das folgende Diagramm bietet eine vereinfachte Ansicht der Lösungsarchitektur und hebt die Schlüsselelemente hervor.

Lösungsarchitektur

Der Arbeitsablauf besteht aus den folgenden Schritten:

  1. Ein Benutzer lädt mehrere Bilder in eine hoch Amazon Simple Storage-Service (Amazon S3) Bucket über eine Streamlit-Webanwendung.
  2. Die Streamlit-Webanwendung ruft eine auf Amazon API-Gateway REST-API-Endpunkt integriert mit Amazon-Anerkennung DetectLabels-API, das Beschriftungen für jedes Bild erkennt.
  3. Nach der Übermittlung aktualisiert die Streamlit-Webanwendung eine Amazon DynamoDB Tabelle mit Bilddetails.
  4. Das DynamoDB-Update löst eine aus AWS Lambda Funktion, die einen Step Functions-Workflow startet.
  5. Der Step Functions-Workflow führt für jedes Bild die folgenden Schritte aus:
    5.1 Erstellt eine Anforderungsnutzlast für das Amazon Bedrock InvokeModel API.
    5.2 Ruft das Amazonas-Grundgestein auf InvokeModel API-Aktion.
    5.3 Analysiert ein Bild aus der Antwort und speichert es an einem S3-Speicherort.
    5.4 Aktualisiert den Bildstatus in einer DynamoDB-Tabelle.
  6. Der Step Functions-Workflow ruft eine Lambda-Funktion auf, um einen Statusbericht zu generieren.
  7. Der Workflow sendet eine E-Mail mit Amazon Simple Notification Service (Amazon SNS).

Wie im folgenden Screenshot gezeigt, können Sie mit der Streamlit-Webanwendung Bilder hochladen und Texteingabeaufforderungen eingeben, um gewünschte Hintergründe, negative Eingabeaufforderungen und den Outpainting-Modus für die Bildgenerierung anzugeben. Sie können außerdem mit jedem hochgeladenen Bild verknüpfte unerwünschte Etiketten anzeigen und entfernen, die Sie nicht in den endgültig generierten Bildern behalten möchten.

Streamlit-Webanwendung

In diesem Beispiel lautet die Eingabeaufforderung für den Hintergrund „Londoner Stadthintergrund“. Der Automatisierungsprozess generiert neue Bilder basierend auf den ursprünglich hochgeladenen Bildern mit London als Hintergrund.

Generierte Bilder

Streamlit-Webanwendung und Bild-Uploads

Als Frontend dieser Lösung dient eine Streamlit-Webanwendung. Um die Anwendung vor unbefugtem Zugriff zu schützen, ist sie in eine integriert Amazon Cognito Benutzerpool. API Gateway verwendet eine Autorisierung von Amazon Cognito um Anfragen zu authentifizieren. Die Webanwendung führt die folgenden Schritte aus:

  1. Für jedes ausgewählte Bild werden Beschriftungen über Amazon Rekognition mithilfe eines API Gateway-REST-API-Endpunkts abgerufen.
  2. Nach der Übermittlung lädt die Anwendung Bilder in einen S3-Bucket hoch.
  3. Die Anwendung aktualisiert eine DynamoDB-Tabelle mit relevanten Parametern, Bildnamen und zugehörigen Bezeichnungen für jedes Bild mithilfe eines anderen API Gateway-REST-API-Endpunkts.

Bildverarbeitungs-Workflow

Wenn die DynamoDB-Tabelle aktualisiert wird, DynamoDB-Streams Löst eine Lambda-Funktion aus, um einen neuen Step Functions-Workflow zu starten. Im Folgenden finden Sie eine Beispielanforderung für den Workflow:

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

Der Step Functions-Workflow führt anschließend die folgenden drei Schritte aus:

  1. Ersetzen Sie den Hintergrund für alle Bilder.
  2. Erstellen Sie einen Statusbericht.
  3. Senden Sie eine E-Mail über Amazon SNS.

Der folgende Screenshot veranschaulicht den Step Functions-Workflow.

AWS Step Functions-Workflow

Schauen wir uns jeden Schritt genauer an.

Ersetzen Sie den Hintergrund für alle Bilder

Step Functions verwendet a Verteilte Karte um jedes Bild in parallelen untergeordneten Arbeitsabläufen zu verarbeiten. Die Distributed Map ermöglicht eine Verarbeitung mit hoher Parallelität. Jeder untergeordnete Workflow verfügt über einen eigenen, vom übergeordneten Workflow getrennten Ausführungsverlauf.

Step Functions verwendet eine InvokeModel optimierte API-Aktion für Amazon Bedrock. Die API akzeptiert Anfragen und Antworten mit einer Größe von bis zu 25 MB. Bei Step Functions ist die Eingabe und Ausgabe der Zustandsnutzlast jedoch auf 256 KB begrenzt. Um größere Bilder zu unterstützen, verwendet die Lösung einen S3-Bucket, in dem die InvokeModel Die API liest Daten aus und schreibt das Ergebnis dorthin. Im Folgenden finden Sie die Konfiguration für InvokeModel API für die Amazon Bedrock-Integration:

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

Das Input S3Uri Der Parameter gibt den Quellspeicherort zum Abrufen der Eingabedaten an. Der Output S3Uri Der Parameter gibt das Ziel zum Schreiben der API-Antwort an.

Eine Lambda-Funktion speichert die Anforderungsnutzlast als JSON-Datei im angegebenen Input S3Uri Lage. Die InvokeModel Die API verwendet diese Eingabenutzlast, um Bilder mit dem angegebenen Hintergrund zu generieren:

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

Das Modell Titan Image Generator G1 unterstützt die folgenden Parameter für die Bilderzeugung:

  • Aufgabentyp – Gibt die Outpainting-Methode zum Ersetzen des Bildhintergrunds an.
  • Text – Eine Textaufforderung zum Definieren des Hintergrunds.
  • negativerText – Eine Textaufforderung, um zu definieren, was nicht in das Bild aufgenommen werden soll.
  • maskPrompt – Eine Textaufforderung, die die Maske definiert. Es entspricht den Beschriftungen, die Sie in den endgültig generierten Bildern beibehalten möchten.
  • maskImage – Das in Base64 kodierte JPEG- oder PNG-Bild.
  • outPaintingMode – Gibt an, ob eine Änderung der Pixel innerhalb der Maske zulässig ist oder nicht. Mit DEFAULT können Sie das Bild innerhalb der Maske ändern, um es mit dem rekonstruierten Hintergrund in Einklang zu bringen. PRECISE verhindert eine Änderung des Bildes innerhalb der Maske.
  • numberOfImages – Die Anzahl der zu generierenden Bilder.
  • Qualität – Die Qualität der generierten Bilder: standard or premium.
  • cfgScale – Gibt an, wie stark sich das generierte Bild an die Eingabeaufforderung halten soll.
  • Höhe – Die Höhe des Bildes in Pixel.
  • Breite – Die Breite des Bildes in Pixel.

Das Amazonas-Grundgestein InvokeModel Die API generiert eine Antwort mit einem codierten Bild im Output S3Uri Standort. Eine weitere Lambda-Funktion analysiert das Bild aus der Antwort, dekodiert es aus Base64 und speichert die Bilddatei am folgenden Speicherort: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Schließlich aktualisiert ein untergeordneter Workflow eine DynamoDB-Tabelle mit dem Bildgenerierungsstatus und markiert sie als einen der beiden Gelungen or Gescheitert, und einschließlich Details wie ImageName, Cause, Error und Status.

Erstellen Sie einen Statusbericht

Nach dem Bildgenerierungsprozess ruft eine Lambda-Funktion die Statusdetails von DynamoDB ab. Diese Details werden dynamisch zu einem umfassenden Statusbericht im JSON-Format zusammengestellt. Anschließend wird der generierte Statusbericht als JSON-Datei am folgenden Speicherort gespeichert: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Das ITOps-Team kann diesen Bericht in sein bestehendes Benachrichtigungssystem integrieren, um zu verfolgen, ob die Bildverarbeitung erfolgreich abgeschlossen wurde. Für Geschäftsanwender können Sie dies weiter erweitern, um einen Bericht im CSV-Format zu erstellen.

Senden Sie eine E-Mail über Amazon SNS

Step Functions ruft eine Amazon SNS-API-Aktion auf, um eine E-Mail zu senden. Die E-Mail enthält Details, einschließlich des S3-Speicherorts für den Statusbericht und die endgültigen Bilddateien. Im Folgenden finden Sie eine Beispiel-Benachrichtigungs-E-Mail.

Benachrichtigungsemail

Zusammenfassung

In diesem Beitrag haben wir einen Überblick über eine Beispiellösung gegeben, die die Automatisierung sich ändernder Bildhintergründe im großen Maßstab mithilfe von Amazon Bedrock und Step Functions demonstriert. Wir haben auch jedes Element der Lösung ausführlich erklärt. Durch die Verwendung der durch Step Functions optimierten Integration mit Amazon Bedrock, Distributed Map und dem Titan Image Generator G1-Modell ersetzt die Lösung die Hintergründe von Bildern effizient parallel und steigert so die Produktivität und Skalierbarkeit.

Informationen zum Bereitstellen der Lösung finden Sie in den Anweisungen im GitHub-Repository.

Downloads

Weitere Informationen zu Amazon Bedrock finden Sie in den folgenden Ressourcen:

Weitere Informationen zum Titan Image Generator G1-Modell finden Sie in den folgenden Ressourcen:

Weitere Informationen zur Verwendung von Amazon Bedrock mit Step Functions finden Sie in den folgenden Ressourcen:


Über den Autor

Chetan Makvana ist Senior Solutions Architect bei Amazon Web Services. Er arbeitet mit AWS-Partnern und Kunden zusammen, um ihnen Architekturberatung für den Aufbau einer skalierbaren Architektur und die Implementierung von Strategien zur Förderung der Einführung von AWS-Services zu geben. Er ist ein Technologie-Enthusiast und Entwickler mit einem Schwerpunkt auf generativer KI, Serverless und DevOps. Außerhalb der Arbeit schaut er gerne Shows, reist und hört gerne Musik. 

spot_img

Neueste Intelligenz

spot_img