[ad_1]
Muchos clientes, incluidos los de publicidad creativa, medios y entretenimiento, comercio electrónico y moda, a menudo necesitan cambiar el fondo de una gran cantidad de imágenes. Normalmente, esto implica editar manualmente cada imagen utilizando un software de fotografía. Esto puede llevar mucho tiempo, especialmente con grandes cantidades de imágenes. Sin embargo, Amazon Bedrock y AWS Step Functions facilitan la automatización de este proceso a escala.
Amazon Bedrock ofrece el modelo básico de IA generativa Amazon Titan Image Generator G1, que puede cambiar automáticamente el fondo de una imagen mediante una técnica llamada pintura exterior. Step Functions le permite crear un flujo de trabajo automatizado que se conecta perfectamente con Amazon Bedrock y otros servicios de AWS. Juntos, Amazon Bedrock y Step Functions agilizan todo el proceso de cambiar automáticamente el fondo en varias imágenes.
Esta publicación presenta una solución que facilita el cambio del fondo en varias imágenes. Al aprovechar las capacidades de la IA generativa con Amazon Bedrock y el modelo Titan Image Generator G1 combinado con funciones escalonadas, esta solución genera de manera eficiente imágenes con el fondo deseado. Esta publicación brinda información sobre el funcionamiento interno de la solución y lo ayuda a comprender las decisiones de diseño tomadas para crear su propia solución personalizada.
Se pueden encontrar instrucciones detalladas para implementar esta solución en el repositorio de GitHub.
Descripción general de la solución
Veamos cómo funciona la solución a un alto nivel antes de profundizar en elementos específicos y los servicios de AWS utilizados. El siguiente diagrama proporciona una vista simplificada de la arquitectura de la solución y resalta los elementos clave.
El flujo de trabajo consta de los siguientes pasos:
- Un usuario carga varias imágenes en un depósito de Amazon Simple Storage Service (Amazon S3) mediante una aplicación web Streamlit.
- La aplicación web Streamlit llama a un punto final de API REST de Amazon API Gateway que está integrado con la API DetectLabels de Amazon Rekognition y detecta etiquetas para cada imagen.
- Después del envío, la aplicación web Streamlit actualiza una tabla de Amazon DynamoDB con detalles de la imagen.
- La actualización de DynamoDB activa una función AWS Lambda que inicia un flujo de trabajo de Step Functions.
- El flujo de trabajo de Step Functions realiza los siguientes pasos para cada imagen:
5.1 Crea una carga útil de solicitud para Amazon BedrockInvokeModel
API.
5.2 Accesos al lecho de roca amazónicoInvokeModel
Acción API.
5.3 Analiza una imagen de la respuesta y la guarda en una ubicación de almacenamiento de S3.
5.4 Actualiza el estado de la imagen en una tabla de DynamoDB. - El flujo de trabajo de Step Functions llama a una función Lambda para generar un informe de estado.
- El flujo de trabajo envía un correo electrónico mediante Amazon Simple Notification Service (Amazon SNS).
Como se muestra en la captura de pantalla a continuación, la aplicación web Streamlit le permite cargar imágenes e ingresar mensajes de texto para especificar los fondos deseados, los mensajes negativos y el modo de pintura exterior para la generación de imágenes. También puede ver y eliminar etiquetas no deseadas asociadas con cada imagen cargada que no desea conservar en las imágenes finales generadas.
En este ejemplo, el mensaje de fondo es «Fondo de la ciudad de Londres». El proceso de automatización genera nuevas imágenes basadas en las imágenes cargadas originalmente con Londres como fondo.
Cargas de imágenes y aplicaciones web Streamlit
Una aplicación web Streamlit sirve como interfaz de esta solución. Para proteger la aplicación del acceso no autorizado, está integrada con un grupo de usuarios de Amazon Cognito. API Gateway utiliza un autorizador de Amazon Cognito para autenticar solicitudes. La aplicación web realiza los siguientes pasos:
- Para cada imagen seleccionada, los títulos se recuperan a través de Amazon Rekognition mediante un punto final API REST de API Gateway.
- Una vez enviada, la aplicación carga imágenes en un depósito de S3.
- La aplicación actualiza una tabla de DynamoDB con parámetros relevantes, nombres de imágenes y etiquetas asociadas para cada imagen mediante un punto final de API REST de API Gateway diferente.
Flujo de trabajo de procesamiento de imágenes
Cuando se actualiza la tabla de DynamoDB, DynamoDB Streams activa una función Lambda para iniciar un nuevo flujo de trabajo de Step Functions. A continuación se muestra una solicitud de flujo de trabajo de muestra:
Luego, el flujo de trabajo de Step Functions realiza los siguientes tres pasos:
- Reemplace el fondo de todas las imágenes.
- Crea un informe de estado.
- Envíe un correo electrónico a través de Amazon SNS.
La siguiente captura de pantalla ilustra el flujo de trabajo de Step Functions.
Echemos un vistazo más de cerca a cada paso.
Reemplazar el fondo de todas las imágenes.
Step Functions utiliza un mapa distribuido para procesar cada imagen en subflujos de trabajo paralelos. El mapa distribuido permite un procesamiento de alto paralelismo. Cada flujo de trabajo secundario tiene su propio historial de ejecución, independiente del flujo de trabajo principal.
Step Functions utiliza una acción API optimizada para InvokeModel para Amazon Bedrock. La API acepta solicitudes y respuestas de hasta 25 MB de tamaño. Sin embargo, para Step Functions, la entrada y salida de la carga útil del estado está limitada a 256 KB. Para admitir imágenes más grandes, la solución utiliza un depósito S3 en el que InvokeModel
La API lee datos y escribe el resultado allí. A continuación se muestra la configuración para InvokeModel
API para la integración de Amazon Bedrock:
El Input S3Uri
El parámetro especifica la ubicación de origen para recuperar los datos de entrada. El Output S3Uri
El parámetro especifica el destino para escribir la respuesta API.
Una función Lambda almacena la carga útil de la solicitud como un archivo JSON en el espacio especificado. Input S3Uri
Ubicación. El InvokeModel
La API utiliza esta carga útil de entrada para generar imágenes con el fondo especificado:
El modelo Titan Image Generator G1 admite los siguientes parámetros de generación de imágenes:
- Tipo de tarea – Especifica el método de pintura exterior para reemplazar el fondo de la imagen.
- texto – Un mensaje de texto para definir el fondo.
- texto negativo – Un mensaje de texto para definir qué no incluir en la imagen.
- máscaraAvisar – Un mensaje de texto que define la máscara. Corresponde a los títulos que desea conservar en las imágenes finales generadas.
- máscaraImagen – La imagen JPEG o PNG codificada en Base64.
- fueraPaintingMode – Indica si se permite o no cambiar los píxeles dentro de la máscara. DEFAULT le permite cambiar la imagen dentro de la máscara para que coincida con el fondo reconstruido. PRECISE evita que la imagen cambie dentro de la máscara.
- númerodeimágenes – El número de imágenes a generar.
- Calidad – La calidad de las imágenes generadas:
standard
opremium
. - cfgEscala – Especifica qué tan cerca debe adherirse la imagen generada al mensaje.
- Altura – La altura de la imagen en píxeles.
- Ancho – El ancho de la imagen en píxeles.
La base del Amazonas InvokeModel
La API genera una respuesta con una imagen codificada en el Output S3Uri
Ubicación. Otra función Lambda analiza la imagen de la respuesta, la decodifica desde Base64 y guarda el archivo de imagen en la siguiente ubicación: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/
.
Finalmente, un subflujo de trabajo actualiza una tabla de DynamoDB con el estado de generación de la imagen y la marca como una de las dos Exitoso o Fallidoe incluyendo detalles como ImageName
, Cause
, Error
Y Status
.
Crear un informe de estado
Después del proceso de generación de imágenes, una función Lambda recupera los detalles del estado de DynamoDB. Estos detalles se compilan dinámicamente en un informe de estado completo en formato JSON. Luego, el informe de estado generado se guarda como un archivo JSON en la siguiente ubicación: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/
. El equipo de ITOps puede integrar este informe en su sistema de notificación existente para rastrear si el procesamiento de imágenes se ha completado con éxito. Para los usuarios empresariales, puede ampliar esto aún más para crear un informe en formato CSV.
Enviar un correo electrónico mediante Amazon SNS
Step Functions llama a una acción API de Amazon SNS para enviar un correo electrónico. El correo electrónico contiene detalles que incluyen la ubicación de S3 para el informe de estado y los archivos de imagen finales. A continuación se muestra un ejemplo de correo electrónico de notificación.
Diploma
En esta publicación, brindamos una descripción general de una solución de muestra que demuestra la automatización del cambio de fondos de imágenes a escala utilizando Amazon Bedrock y Step Functions. También hemos explicado cada elemento de la solución en detalle. Al utilizar la integración optimizada de Step Functions con Amazon Bedrock, Distributed Map y el modelo Titan Image Generator G1, la solución reemplaza eficientemente los fondos de las imágenes en paralelo, lo que aumenta la productividad y la escalabilidad.
Para implementar la solución, consulte las instrucciones en el repositorio de GitHub.
recursos
Para obtener más información sobre Amazon Bedrock, consulte los siguientes recursos:
Para obtener más información sobre el modelo Titan Image Generator G1, consulte los siguientes recursos:
Para obtener más información sobre el uso de Amazon Bedrock con Step Functions, consulte los siguientes recursos:
Sobre el Autor
Chetan Makvana es arquitecto senior de soluciones en Amazon Web Services. Trabaja con socios y clientes de AWS para brindarles asesoramiento arquitectónico sobre la creación de una arquitectura escalable y la implementación de estrategias para impulsar la adopción de los servicios de AWS. Es un desarrollador y entusiasta de la tecnología centrado en la IA generativa, sin servidor y DevOps. Fuera del trabajo, le gusta ver programas, viajar y escuchar música.
[ad_2]