Многим клиентам, в том числе из креативной рекламы, средств массовой информации и развлечений, электронной коммерции и моды, часто приходится менять фон в большом количестве изображений. Обычно это предполагает ручное редактирование каждого изображения с помощью программного обеспечения для обработки фотографий. Это может потребовать больших усилий, особенно для больших партий изображений. Однако Amazon Bedrock и AWS Step Functions упрощают автоматизацию этого процесса в большом масштабе.
Amazon Bedrock предлагает базовую модель генеративного искусственного интеллекта Amazon Titan Image Generator G1, которая может автоматически менять фон изображения с помощью метода, называемого перерисовкой. Step Functions позволяет создать автоматизированный рабочий процесс, который легко подключается к Amazon Bedrock и другим сервисам AWS. Amazon Bedrock и Step Functions вместе упрощают весь процесс автоматического изменения фона в нескольких изображениях.
В этом посте представлено решение, которое упрощает процесс изменения фона в нескольких изображениях. Используя возможности генеративного искусственного интеллекта с Amazon Bedrock и моделью Titan Image Generator G1 в сочетании с пошаговыми функциями, это решение эффективно генерирует изображения с желаемым фоном. Этот пост дает представление о внутренней работе решения и помогает понять выбор дизайна, сделанный для создания собственного индивидуального решения.
См. Репозиторий GitHub для получения подробных инструкций по развертыванию этого решения.
Обзор решения
Давайте посмотрим, как решение работает на высоком уровне, прежде чем углубляться в конкретные элементы и используемые сервисы AWS. На следующей диаграмме представлено упрощенное представление архитектуры решения и выделены ключевые элементы.
Рабочий процесс состоит из следующих этапов:
- Пользователь загружает несколько изображений в корзину Amazon Simple Storage Service (Amazon S3) через веб-приложение Streamlit.
- Веб-приложение Streamlit вызывает конечную точку REST API Amazon API Gateway, интегрированную с API Amazon Rekognition DetectLabels, которая обнаруживает метки для каждого изображения.
- После отправки веб-приложение Streamlit обновляет таблицу Amazon DynamoDB со сведениями об изображении.
- Обновление DynamoDB запускает функцию AWS Lambda, которая запускает рабочий процесс Step Functions.
- Рабочий процесс Step Functions выполняет следующие шаги для каждого изображения:
5.1 Создает полезную нагрузку запроса для Amazon BedrockInvokeModel
API.
5.2 Обращение к коренной породе АмазонкиInvokeModel
Действие API.
5.3 Анализирует изображение из ответа и сохраняет его в папке S3.
5.4 Обновляет статус изображения в таблице DynamoDB. - Рабочий процесс «Шаговые функции» вызывает функцию Lambda для создания отчета о состоянии.
- Рабочий процесс отправляет электронное письмо с помощью Amazon Simple Notification Service (Amazon SNS).
Как показано на следующем снимке экрана, веб-приложение Streamlit позволяет загружать изображения и вводить текстовые подсказки для указания желаемого фона, отрицательные подсказки и режим закрашивания для создания изображений. Вы также можете просмотреть и удалить ненужные метки, связанные с каждым загруженным изображением, которые вы не хотите сохранять в окончательно созданных изображениях.
В этом примере подсказка для фона — «Фон города Лондона». Процесс автоматизации генерирует новые изображения на основе исходных загруженных изображений с Лондоном в качестве фона.
Streamlit веб-приложение и загрузка изображений
Веб-приложение Streamlit служит интерфейсом для этого решения. Чтобы защитить приложение от несанкционированного доступа, оно интегрируется с пулом пользователей Amazon Cognito. API Gateway использует авторизатор Amazon Cognito для аутентификации запросов. Веб-приложение выполняет следующие шаги:
- Для каждого выбранного изображения он получает метки через Amazon Rekognition, используя конечную точку REST API API Gateway.
- После отправки приложение загружает изображения в корзину S3.
- Приложение обновляет таблицу DynamoDB, добавляя соответствующие параметры, имена изображений и связанные метки для каждого изображения, используя другую конечную точку REST API API-шлюза.
Рабочий процесс обработки изображений
Когда таблица DynamoDB обновляется, DynamoDB Streams запускает функцию Lambda для запуска нового рабочего процесса Step Functions. Ниже приведен пример запроса для рабочего процесса:
Рабочий процесс Step Functions впоследствии выполняет следующие три шага:
- Замените фон для всех изображений.
- Создайте отчет о состоянии.
- Отправьте электронное письмо через Amazon SNS.
На следующем снимке экрана показан рабочий процесс Step Functions.
Давайте рассмотрим каждый шаг более подробно.
Заменить фон для всех изображений
Step Functions использует распределенную карту для обработки каждого изображения в параллельных дочерних рабочих процессах. Распределенная карта обеспечивает высокопараллельную обработку. Каждый дочерний рабочий процесс имеет собственную историю выполнения, отличную от истории родительского рабочего процесса.
Step Functions использует оптимизированное действие API InvokeModel для Amazon Bedrock. API принимает запросы и ответы размером до 25 МБ. Однако Step Functions имеет ограничение в 256 КБ на ввод и вывод полезных данных состояния. Для поддержки изображений большего размера решение использует корзину S3, в которой InvokeModel
API считывает данные и записывает результат. Ниже приведена конфигурация для InvokeModel
API для интеграции с Amazon Bedrock:
Input S3Uri
Параметр указывает расположение источника для получения входных данных. Output S3Uri
Параметр указывает место назначения для записи ответа API.
Функция Lambda сохраняет полезные данные запроса в виде файла JSON в указанном формате. Input S3Uri
расположение. InvokeModel
API использует эту входную полезную нагрузку для создания изображений с указанным фоном:
Модель Titan Image Generator G1 поддерживает следующие параметры генерации изображений:
- тип задачи – Указывает метод перерисовки для замены фона изображения.
- текст – Текстовая подсказка для определения фона.
- негативный текст – Текстовая подсказка для определения того, что не включать в изображение.
- маскаПодсказка – Текстовое приглашение, определяющее маску. Он соответствует меткам, которые вы хотите сохранить в окончательно созданных изображениях.
- маскаизображение – Изображение JPEG или PNG, закодированное в base64.
- outPaintingMode – Указывает, разрешено ли изменение пикселей внутри маски или нет. DEFAULT позволяет изменять изображение внутри маски, чтобы оно соответствовало реконструированному фону. PRECISE предотвращает изменение изображения внутри маски.
- количество изображений – Количество изображений, которые нужно сгенерировать.
- качество – Качество генерируемых изображений:
standard
илиpremium
. - cfgScale – Указывает, насколько сильно созданное изображение должно соответствовать подсказке.
- высота – Высота изображения в пикселях.
- ширина – Ширина изображения в пикселях.
Коренная порода Амазонки InvokeModel
API генерирует ответ с закодированным изображением в формате Output S3Uri
расположение. Другая функция Lambda анализирует изображение из ответа, декодирует его из base64 и сохраняет файл изображения в следующем месте: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/
.
Наконец, дочерний рабочий процесс обновляет таблицу DynamoDB со статусом создания изображения, помечая ее как Удалось или Неуспешныйвключая такие детали, как ImageName
, Cause
, Error
и Status
.
Создать отчет о состоянии
После процесса создания изображения функция Lambda получает сведения о состоянии из DynamoDB. Он динамически компилирует эти сведения в подробный отчет о состоянии в формате JSON. Затем он сохраняет созданный отчет о состоянии в файле JSON в следующем месте: s3://<Image Bucket>/status-report-files/<year>/<month>/<day>/<timestamp>/
. Команда ITOps может интегрировать этот отчет со своей существующей системой уведомлений, чтобы отслеживать успешность завершения обработки изображений. Бизнес-пользователи могут расширить эту возможность, чтобы создать отчет в формате CSV.
Отправьте электронное письмо через Amazon SNS
Step Functions вызывает действие Amazon SNS API для отправки электронного письма. В электронном письме содержится подробная информация, включая местоположение S3 для отчета о состоянии и окончательных файлов изображений. Ниже приведен образец электронного письма с уведомлением.
Заключение
В этом посте мы представили обзор примера решения, демонстрирующего автоматизацию масштабного изменения фона изображения с помощью Amazon Bedrock и Step Functions. Мы также подробно объяснили каждый элемент решения. Благодаря оптимизированной интеграции Step Functions с Amazon Bedrock, Distributed Map и моделью Titan Image Generator G1 решение эффективно параллельно заменяет фоны изображений, повышая производительность и масштабируемость.
Чтобы развернуть решение, обратитесь к инструкциям в Репозиторий GitHub.
Ресурсы
Чтобы узнать больше об Amazon Bedrock, посетите следующие ресурсы:
Чтобы узнать больше о модели Titan Image Generator G1, посетите следующие ресурсы:
Чтобы узнать больше об использовании Amazon Bedrock с Step Functions, посетите следующие ресурсы:
об авторе
Четан Маквана — старший архитектор решений Amazon Web Services. Он работает с партнерами и клиентами AWS, предоставляя им рекомендации по созданию масштабируемой архитектуры и реализации стратегий, способствующих внедрению сервисов AWS. Он энтузиаст технологий и разработчик, специализирующийся на генеративном искусственном интеллекте, бессерверных технологиях и DevOps. Вне работы он любит смотреть шоу, путешествовать и слушать музыку.