Logo Zephyrnet

Automatizza il processo per modificare gli sfondi delle immagini utilizzando Amazon Bedrock e AWS Step Functions | Servizi Web di Amazon

Data:

Molti clienti, compresi quelli che operano nel settore della pubblicità creativa, dei media e dell'intrattenimento, dell'e-commerce e della moda, hanno spesso la necessità di modificare lo sfondo in un gran numero di immagini. In genere, ciò comporta la modifica manuale di ciascuna immagine con un software fotografico. Questo può richiedere molto impegno, soprattutto per grandi lotti di immagini. Tuttavia, Roccia Amazzonica ed Funzioni AWS Step rendere semplice l’automazione di questo processo su larga scala.

Amazon Bedrock offre il modello base dell'intelligenza artificiale generativa Generatore di immagini Amazon Titan G1, che può cambiare automaticamente lo sfondo di un'immagine utilizzando una tecnica chiamata sovraverniciatura. Step Functions ti consente di creare un flusso di lavoro automatizzato che si connette perfettamente con Amazon Bedrock e altri servizi AWS. Insieme, Amazon Bedrock e Step Functions semplificano l'intero processo di modifica automatica degli sfondi su più immagini.

Questo post introduce una soluzione che semplifica il processo di modifica degli sfondi in più immagini. Sfruttando le capacità di IA generativa con Amazon Bedrock e il modello Titan Image Generator G1, combinato con Step Functions, questa soluzione genera in modo efficiente immagini con lo sfondo desiderato. Questo post fornisce informazioni dettagliate sul funzionamento interno della soluzione e ti aiuta a comprendere le scelte di progettazione effettuate per creare questa soluzione personalizzata.

Vedere la Repository GitHub per istruzioni dettagliate sulla distribuzione di questa soluzione.

Panoramica della soluzione

Diamo un'occhiata a come funziona la soluzione ad alto livello prima di approfondire gli elementi specifici e i servizi AWS utilizzati. Il diagramma seguente fornisce una visualizzazione semplificata dell'architettura della soluzione ed evidenzia gli elementi chiave.

Architettura della soluzione

Il flusso di lavoro è costituito dai seguenti passaggi:

  1. Un utente carica più immagini in un file Servizio di archiviazione semplice Amazon (Amazon S3) tramite un'applicazione web Streamlit.
  2. L'applicazione web Streamlit chiama an Gateway API Amazon Endpoint API REST integrato con Rekognition di Amazon API DetectLabels, che rileva le etichette per ciascuna immagine.
  3. Dopo l'invio, l'applicazione web Streamlit aggiorna un Amazon DynamoDB tabella con dettagli immagine.
  4. L'aggiornamento DynamoDB attiva un AWS Lambda funzione, che avvia un flusso di lavoro Step Functions.
  5. Il flusso di lavoro Step Functions esegue i seguenti passaggi per ciascuna immagine:
    5.1 Costruisce un payload di richiesta per Amazon Bedrock InvokeModel API.
    5.2 Invoca il fondamento roccioso dell'Amazzonia InvokeModel Azione API.
    5.3 Analizza un'immagine dalla risposta e la salva in una posizione S3.
    5.4 Aggiorna lo stato dell'immagine in una tabella DynamoDB.
  6. Il flusso di lavoro Step Functions richiama una funzione Lambda per generare un report sullo stato.
  7. Il flusso di lavoro invia un'e-mail utilizzando Servizio di notifica semplice Amazon (SNS Amazon).

Come mostrato nello screenshot seguente, l'applicazione web Streamlit consente di caricare immagini e inserire istruzioni di testo per specificare gli sfondi desiderati, istruzioni negative e modalità di outpainting per la generazione di immagini. Puoi anche visualizzare e rimuovere le etichette indesiderate associate a ciascuna immagine caricata che non desideri conservare nelle immagini generate finali.

Applicazione Web semplificata

In questo esempio, la richiesta per lo sfondo è “Sfondo città di Londra”. Il processo di automazione genera nuove immagini basate sulle immagini originali caricate con Londra come sfondo.

Immagini generate

Semplifica il caricamento di applicazioni Web e immagini

Un'applicazione web Streamlit funge da frontend per questa soluzione. Per proteggere l'applicazione da accessi non autorizzati, si integra con un file Amazzonia Cognito pool di utenti. API Gateway utilizza un file Autorizzatore di Amazon Cognito per autenticare le richieste. L'applicazione web completa i seguenti passaggi:

  1. Per ogni immagine selezionata, recupera le etichette tramite Amazon Rekognition utilizzando un endpoint API REST API Gateway.
  2. Dopo l'invio, l'applicazione carica le immagini in un bucket S3.
  3. L'applicazione aggiorna una tabella DynamoDB con i parametri rilevanti, i nomi delle immagini e le etichette associate per ciascuna immagine utilizzando un altro endpoint API REST di API Gateway.

Flusso di lavoro di elaborazione delle immagini

Quando la tabella DynamoDB viene aggiornata, Flussi DynamoDB attiva una funzione Lambda per avviare un nuovo flusso di lavoro Step Functions. Di seguito è riportato un esempio di richiesta del flusso di lavoro:

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

Il flusso di lavoro Step Functions esegue successivamente i tre passaggi seguenti:

  1. Sostituisci lo sfondo per tutte le immagini.
  2. Genera un rapporto sullo stato.
  3. Invia un'e-mail tramite Amazon SNS.

La schermata seguente illustra il flusso di lavoro di Step Functions.

Flusso di lavoro di AWS Step Functions

Diamo un'occhiata a ogni passaggio in modo più dettagliato.

Sostituisci lo sfondo per tutte le immagini

Step Functions utilizza a Mappa distribuita per elaborare ciascuna immagine in flussi di lavoro secondari paralleli. La mappa distribuita consente l'elaborazione ad alta concorrenza. Ogni flusso di lavoro figlio ha una propria cronologia di esecuzione separata da quella del flusso di lavoro padre.

Step Functions utilizza un file Azione API ottimizzata InvokeModel per Amazon Bedrock. L'API accetta richieste e risposte fino a 25 MB. Tuttavia, Step Functions ha un limite di 256 KB sull'input e sull'output del payload dello stato. Per supportare immagini più grandi, la soluzione utilizza un bucket S3 in cui InvokeModel L'API legge i dati e scrive il risultato. Quella che segue è la configurazione per InvokeModel API per l'integrazione di 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”
    } 
}

I Input S3Uri Il parametro specifica la posizione di origine per recuperare i dati di input. IL Output S3Uri Il parametro specifica la destinazione in cui scrivere la risposta API.

Una funzione Lambda salva il payload della richiesta come file JSON nel file specificato Input S3Uri Posizione. Il InvokeModel L'API utilizza questo payload di input per generare immagini con lo sfondo specificato:

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

Il modello Titan Image Generator G1 supporta i seguenti parametri per la generazione di immagini:

  • taskType – Specifica il metodo di verniciatura per sostituire lo sfondo dell'immagine.
  • testo – Un messaggio di testo per definire lo sfondo.
  • negativoTesto – Un messaggio di testo per definire cosa non includere nell'immagine.
  • mascheraPrompt – Un messaggio di testo che definisce la maschera. Corrisponde alle etichette che desideri conservare nelle immagini generate finali.
  • mascheraImmagine – L'immagine JPEG o PNG codificata in base64.
  • outPaintingMode – Specifica se consentire o meno la modifica dei pixel all'interno della maschera. DEFAULT permette di modificare l'immagine all'interno della maschera per mantenerla coerente con lo sfondo ricostruito. PRECISE impedisce la modifica dell'immagine all'interno della maschera.
  • numero di immagini – Il numero di immagini da generare.
  • qualità – La qualità delle immagini generate: standard or premium.
  • cfgScale – Specifica la forza con cui l'immagine generata deve aderire al prompt.
  • altezza – L'altezza dell'immagine in pixel.
  • larghezza – La larghezza dell'immagine in pixel.

Il substrato roccioso dell’Amazzonia InvokeModel L'API genera una risposta con un'immagine codificata nel file Output S3Uri posizione. Un'altra funzione Lambda analizza l'immagine dalla risposta, la decodifica da base64 e salva il file immagine nella seguente posizione: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Infine, un flusso di lavoro figlio aggiorna una tabella DynamoDB con lo stato di generazione dell'immagine, contrassegnandola come uno dei due Riuscito or fallitoe includendo dettagli come ImageName, Cause, Errore Status.

Genera un rapporto sullo stato

Dopo il processo di generazione dell'immagine, una funzione Lambda recupera i dettagli sullo stato da DynamoDB. Compila dinamicamente questi dettagli in un rapporto sullo stato completo in formato JSON. Quindi salva il report sullo stato generato in un file JSON nel seguente percorso: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/. Il team ITOps può integrare questo report con il sistema di notifica esistente per monitorare se l'elaborazione delle immagini è stata completata correttamente. Per gli utenti aziendali, puoi espanderlo ulteriormente per generare un report in formato CSV.

Invia un'e-mail tramite Amazon SNS

Step Functions richiama un'operazione API Amazon SNS per inviare un'e-mail. L'e-mail contiene dettagli tra cui la posizione S3 per il rapporto sullo stato e i file di immagini finali. Di seguito è riportato l'esempio di email di notifica.

Email di notifica

Conclusione

In questo post, abbiamo fornito una panoramica di una soluzione di esempio che dimostra l'automazione della modifica degli sfondi delle immagini su larga scala utilizzando Amazon Bedrock e Step Functions. Abbiamo anche spiegato in dettaglio ogni elemento della soluzione. Utilizzando l'integrazione ottimizzata di Step Functions con Amazon Bedrock, Distributed Map e il modello Titan Image Generator G1, la soluzione sostituisce in modo efficiente gli sfondi delle immagini in parallelo, migliorando produttività e scalabilità.

Per distribuire la soluzione, fare riferimento alle istruzioni nel file Repository GitHub.

Risorse

Per ulteriori informazioni su Amazon Bedrock, consulta le seguenti risorse:

Per ulteriori informazioni sul modello Titan Image Generator G1, consulta le seguenti risorse:

Per ulteriori informazioni sull'utilizzo di Amazon Bedrock con Step Functions, consulta le seguenti risorse:


L'autore

Chetan Makvana è un Senior Solutions Architect presso Amazon Web Services. Collabora con partner e clienti AWS per fornire loro indicazioni architettoniche per la creazione di un'architettura scalabile e l'implementazione di strategie per favorire l'adozione dei servizi AWS. È un appassionato di tecnologia e un costruttore con un'area di interesse principale su intelligenza artificiale generativa, serverless e DevOps. Al di fuori del lavoro, gli piace guardare spettacoli, viaggiare e musica. 

spot_img

L'ultima intelligenza

spot_img