Автоматизуйте процес зміни фону зображення за допомогою Amazon Bedrock і AWS Step Functions | Веб-сервіси Amazon

Автоматизуйте процес зміни фону зображення за допомогою Amazon Bedrock і AWS Step Functions | Веб-сервіси Amazon

Багатьом клієнтам, включно з креативною рекламою, медіа та розвагами, електронною комерцією та модою, часто потрібно змінити фон у великій кількості зображень. Як правило, це передбачає редагування кожного зображення вручну за допомогою програмного забезпечення для фотографій. Це може зайняти багато зусиль, особливо для великих партій зображень. однак, Amazon Bedrock та Функції кроку AWS спростити масштабну автоматизацію цього процесу.

Amazon Bedrock пропонує базову модель генеративного штучного інтелекту Amazon Titan Image Generator G1, який може автоматично змінювати фон зображення за допомогою техніки під назвою замальовування. Step Functions дозволяє створювати автоматизований робочий процес, який легко підключається до Amazon Bedrock та інших сервісів AWS. Разом Amazon Bedrock і Step Functions оптимізують весь процес автоматичної зміни фону для кількох зображень.

Ця публікація представляє рішення, яке спрощує процес зміни фону на кількох зображеннях. Використовуючи можливості генеративний ШІ з Amazon Bedrock і моделлю Titan Image Generator G1 у поєднанні з Step Functions це рішення ефективно створює зображення з бажаним фоном. Ця публікація містить уявлення про внутрішню роботу рішення та допомагає зрозуміти вибір дизайну, зроблений для створення цього власного спеціального рішення.

Див GitHub сховище для отримання докладних інструкцій щодо розгортання цього рішення.

Огляд рішення

Давайте розглянемо, як це рішення працює на високому рівні, перш ніж заглибитися в конкретні елементи та використовувані служби AWS. На наступній діаграмі представлено спрощений вигляд архітектури рішення та виділено ключові елементи.

Архітектура рішення

Робочий процес складається з наступних кроків:

  1. Користувач завантажує кілька зображень у Служба простого зберігання Amazon (Amazon S3) через веб-програму Streamlit.
  2. Веб-програма Streamlit викликає an API -шлюз Amazon Кінцева точка REST API інтегрована з Amazon Rekognition API DetectLabels, який визначає мітки для кожного зображення.
  3. Після надсилання веб-додаток Streamlit оновлює файл Amazon DynamoDB таблиця з деталями зображення.
  4. Оновлення DynamoDB запускає an AWS Lambda функція, яка запускає робочий процес Step Functions.
  5. Робочий цикл «Крокові функції» виконує такі кроки для кожного зображення:
    5.1 Створює корисне навантаження запиту для Amazon Bedrock InvokeModel API.
    5.2 Викликає фундамент Амазонки InvokeModel Дія API.
    5.3 Розбирає зображення з відповіді та зберігає його в розташуванні S3.
    5.4 Оновлює статус зображення в таблиці DynamoDB.
  6. Робочий процес Step Functions викликає функцію Lambda для створення звіту про стан.
  7. Робочий процес надсилає електронний лист за допомогою Служба простих сповіщень Amazon (Amazon SNS).

Як показано на наступному знімку екрана, веб-програма Streamlit дозволяє завантажувати зображення та вводити текстові підказки для визначення бажаного фону, негативних підказок і режиму зафарбовування для створення зображення. Ви також можете переглядати та видаляти непотрібні мітки, пов’язані з кожним завантаженим зображенням, які ви не хочете зберігати в остаточно створених зображеннях.

Веб-додаток Streamlit

У цьому прикладі підказкою для фону є «фон міста Лондона». Процес автоматизації генерує нові зображення на основі оригінальних завантажених зображень із Лондоном як фоном.

Згенеровані зображення

Поточне завантаження веб-додатків і зображень

Веб-додаток Streamlit служить інтерфейсом для цього рішення. Щоб захистити програму від несанкціонованого доступу, вона інтегрується з Амазонка Когніто пул користувачів. Шлюз API використовує Авторизатор Amazon Cognito для автентифікації запитів. Веб-додаток виконує такі дії:

  1. Для кожного вибраного зображення він отримує мітки через Amazon Rekognition за допомогою кінцевої точки REST API шлюзу API.
  2. Після надсилання програма завантажує зображення в сегмент S3.
  3. Програма оновлює таблицю DynamoDB з відповідними параметрами, назвами зображень і пов’язаними мітками для кожного зображення за допомогою іншої кінцевої точки REST API шлюзу API.

Процес обробки зображень

Коли таблиця DynamoDB оновлюється, Потоки DynamoDB запускає функцію Lambda для запуску нового робочого циклу Step Functions. Нижче наведено приклад запиту на робочий процес:

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

Робочий цикл «Крокові функції» згодом виконує такі три кроки:

  1. Замінити фон для всіх зображень.
  2. Створіть звіт про стан.
  3. Надішліть електронний лист через Amazon SNS.

Наступний знімок екрана ілюструє робочий процес крокових функцій.

Робочий процес крокових функцій AWS

Розглянемо кожен крок детальніше.

Замінити фон для всіх зображень

Step Functions використовує a Розподілена карта для обробки кожного зображення в паралельних дочірніх робочих процесах. Розподілена карта дозволяє обробку з високим рівнем паралелізму. Кожен дочірній робочий процес має власну історію виконання, окрему від історії батьківського робочого циклу.

Step Functions використовує an Оптимізована InvokeModel дія API для Amazon Bedrock. API приймає запити та відповіді розміром до 25 Мб. Однак функція Step Functions має обмеження в 256 КБ для введення та виведення корисного навантаження стану. Для підтримки більших зображень рішення використовує відро S3, де InvokeModel API зчитує дані з і записує результат. Нижче наведено конфігурацію для InvokeModel API для інтеграції 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”
    } 
}

Команда Input S3Uri Параметр визначає розташування джерела для отримання вхідних даних. The Output S3Uri Параметр визначає призначення для запису відповіді API.

Функція Lambda зберігає корисне навантаження запиту як файл JSON у вказаному Input S3Uri Розташування. The InvokeModel API використовує це вхідне корисне навантаження для створення зображень із указаним фоном:

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

Модель Titan Image Generator G1 підтримує наступні параметри для створення зображень:

  • taskType – Визначає метод зафарбовування для заміни фону зображення.
  • текст – Текстова підказка для визначення фону.
  • negativeText – Текстова підказка, щоб визначити, що не слід включати в зображення.
  • maskPrompt – Текстова підказка, яка визначає маску. Він відповідає міткам, які ви хочете зберегти в остаточно створених зображеннях.
  • maskImage – Зображення JPEG або PNG, закодоване в base64.
  • outPaintingMode – Визначає, чи дозволяти зміну пікселів усередині маски. DEFAULT дозволяє модифікувати зображення всередині маски, щоб воно відповідало реконструйованому фону. PRECISE запобігає зміні зображення всередині маски.
  • numberOfImages – Кількість зображень для створення.
  • якість – Якість створених зображень: standard or premium.
  • cfgScale – Визначає, наскільки сильно створене зображення має відповідати підказці.
  • висота – Висота зображення в пікселях.
  • ширина – Ширина зображення в пікселях.

Амазонка InvokeModel API генерує відповідь із закодованим зображенням у Output S3Uri Місцезнаходження. Інша функція Lambda аналізує зображення з відповіді, декодує його з base64 і зберігає файл зображення в такому місці: s3://<Image Bucket>/generated-image-file/<year>/<month>/<day>/<timestamp>/.

Нарешті, дочірній робочий процес оновлює таблицю DynamoDB зі статусом створення зображення, позначаючи його як будь-який Наступник or не вдалося, включаючи такі деталі, як 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 із покроковими функціями, перегляньте такі ресурси:


Про автора

Автоматизуйте процес зміни фону зображення за допомогою Amazon Bedrock і AWS Step Functions | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Четан Маквана є старшим архітектором рішень Amazon Web Services. Він працює з партнерами та клієнтами AWS, щоб надати їм архітектурні вказівки для створення масштабованої архітектури та впровадження стратегій для сприяння прийняттю послуг AWS. Він — ентузіаст технологій і розробник, головною сферою інтересів якого є генеративний штучний інтелект, безсерверні технології та DevOps. Поза роботою він захоплюється переглядом шоу, подорожами та музикою. 

Часова мітка:

Більше від AWS Машинне навчання