هوش داده افلاطون
جستجوی عمودی و هوش مصنوعی

فرآیند تغییر پس‌زمینه تصویر را با استفاده از Amazon Bedrock و AWS Step Functions | خودکار کنید خدمات وب آمازون

تاریخ:

بسیاری از مشتریان، از جمله کسانی که در تبلیغات خلاق، رسانه و سرگرمی، تجارت الکترونیک و مد هستند، اغلب نیاز به تغییر پس زمینه در تعداد زیادی از تصاویر دارند. به طور معمول، این شامل ویرایش دستی هر تصویر با نرم افزار عکس است. این می تواند تلاش زیادی را ببرد، به خصوص برای دسته های بزرگ تصاویر. با این حال، بستر آمازون و توابع مرحله AWS خودکار کردن این فرآیند در مقیاس را ساده کنید.

Amazon Bedrock مدل پایه هوش مصنوعی مولد را ارائه می دهد Amazon Titan Image Generator G1، که می تواند به طور خودکار پس زمینه یک تصویر را با استفاده از تکنیکی به نام تغییر دهد نقاشی کردن. Step Functions به شما امکان می دهد یک گردش کار خودکار ایجاد کنید که به طور یکپارچه با Amazon Bedrock و سایر خدمات AWS متصل می شود. Amazon Bedrock و Step Functions با هم، کل فرآیند تغییر خودکار پس‌زمینه را در چندین تصویر ساده می‌کنند.

این پست راه حلی را معرفی می کند که فرآیند تغییر پس زمینه را در چندین تصویر ساده می کند. با بهره گیری از قابلیت های هوش مصنوعی مولد با Amazon Bedrock و Titan Image Generator مدل G1، همراه با توابع Step، این راه حل به طور موثر تصاویری با پس زمینه دلخواه تولید می کند. این پست بینشی در مورد عملکرد داخلی راه حل ارائه می دهد و به شما کمک می کند تا انتخاب های طراحی انجام شده برای ساخت این راه حل سفارشی خود را درک کنید.

مشاهده مخزن GitHub برای دستورالعمل های دقیق در مورد استقرار این راه حل.

بررسی اجمالی راه حل

بیایید قبل از غواصی عمیق تر در عناصر خاص و خدمات AWS مورد استفاده، به نحوه عملکرد راه حل در سطح بالا نگاه کنیم. نمودار زیر یک نمای ساده از معماری راه حل ارائه می دهد و عناصر کلیدی را برجسته می کند.

معماری راه حل

گردش کار شامل مراحل زیر است:

  1. یک کاربر چندین تصویر را در یک آپلود می کند سرویس ذخیره سازی ساده آمازون سطل (Amazon S3) از طریق یک برنامه وب Streamlit.
  2. برنامه وب Streamlit یک را صدا می کند دروازه API آمازون نقطه پایانی REST API یکپارچه شده با شناسایی آمازون DetectLabels API، که برچسب ها را برای هر تصویر تشخیص می دهد.
  3. پس از ارسال، برنامه وب Streamlit به روز رسانی می شود آمازون DynamoDB جدول با جزئیات تصویر
  4. به روز رسانی DynamoDB یک را راه اندازی می کند AWS لامبدا تابع، که یک گردش کار توابع مرحله را شروع می کند.
  5. گردش کار Step Functions مراحل زیر را برای هر تصویر اجرا می کند:
    5.1 یک بار درخواست برای بستر آمازون می سازد InvokeModel API
    5.2 بستر آمازون را فراخوانی می کند InvokeModel اقدام API.
    5.3 یک تصویر را از پاسخ تجزیه می کند و آن را در مکان S3 ذخیره می کند.
    5.4 وضعیت تصویر را در جدول DynamoDB به روز می کند.
  6. گردش کار توابع Step یک تابع Lambda را برای ایجاد گزارش وضعیت فراخوانی می کند.
  7. گردش کار یک ایمیل با استفاده از سرویس اطلاع رسانی ساده آمازون (Amazon SNS).

همانطور که در تصویر زیر نشان داده شده است، برنامه وب Streamlit به شما امکان می دهد تصاویر را آپلود کنید و اعلان های متنی را وارد کنید تا پس زمینه های دلخواه، اعلان های منفی و حالت نقاشی بیرونی را برای تولید تصویر مشخص کنید. همچنین می‌توانید برچسب‌های ناخواسته مرتبط با هر تصویر آپلود شده را که نمی‌خواهید در تصاویر تولید شده نهایی نگه دارید، مشاهده و حذف کنید.

نرم افزار وب Streamlit

در این مثال، درخواست پس‌زمینه «پس‌زمینه شهر لندن» است. فرآیند اتوماسیون تصاویر جدیدی را بر اساس تصاویر بارگذاری شده اصلی با لندن به عنوان پس‌زمینه تولید می‌کند.

تصاویر تولید شده

نرم افزار وب و آپلود تصاویر را ساده کنید

یک برنامه وب Streamlit به عنوان پیش زمینه برای این راه حل عمل می کند. برای محافظت از برنامه در برابر دسترسی غیرمجاز، با یک ادغام می شود Cognito آمازون استخر کاربر API Gateway از یک مجوز دهنده آمازون Cognito برای احراز هویت درخواست ها برنامه وب مراحل زیر را تکمیل می کند:

  1. برای هر تصویر انتخاب شده، برچسب ها را از طریق آمازون Rekognition با استفاده از نقطه پایانی API Gateway REST API بازیابی می کند.
  2. پس از ارسال، برنامه تصاویر را در یک سطل S3 آپلود می کند.
  3. این برنامه یک جدول DynamoDB را با پارامترهای مربوطه، نام تصویر و برچسب های مرتبط برای هر تصویر با استفاده از نقطه پایانی API Gateway REST API دیگر به روز می کند.

گردش کار پردازش تصویر

هنگامی که جدول DynamoDB به روز می شود، DynamoDB Streams یک تابع 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"
    }
  ]
}

گردش کار Step Functions متعاقباً سه مرحله زیر را انجام می دهد:

  1. پس زمینه را برای همه تصاویر جایگزین کنید.
  2. یک گزارش وضعیت ایجاد کنید.
  3. از طریق آمازون SNS ایمیل ارسال کنید.

تصویر زیر روند کار توابع مرحله را نشان می دهد.

گردش کار توابع مرحله AWS

بیایید هر مرحله را با جزئیات بیشتری بررسی کنیم.

پس زمینه را برای همه تصاویر جایگزین کنید

توابع مرحله از a استفاده می کند نقشه توزیع شده برای پردازش هر تصویر در جریان کار موازی فرزند. نقشه توزیع شده امکان پردازش با همزمانی بالا را فراهم می کند. هر گردش کار فرزند تاریخچه اجرای جداگانه خود را از گردش کار والد دارد.

توابع مرحله از یک استفاده می کند اقدام API بهینه سازی شده InvokeModel برای Amazon Bedrock. API درخواست ها و پاسخ هایی را می پذیرد که حداکثر 25 مگابایت باشد. با این حال، توابع Step دارای محدودیت 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”
    } 
}

La Input S3Uri پارامتر محل منبع برای بازیابی داده های ورودی را مشخص می کند. این Output S3Uri پارامتر مقصد را برای نوشتن پاسخ API مشخص می کند.

یک تابع Lambda بار درخواست را به عنوان یک فایل JSON در مشخص شده ذخیره می کند Input S3Uri محل. در 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 از پارامترهای زیر برای تولید تصویر پشتیبانی می کند:

  • نوع وظیفه – روش نقاشی بیرونی را برای جایگزینی پس‌زمینه تصویر مشخص می‌کند.
  • متن - یک پیام متنی برای تعریف پس‌زمینه.
  • متن منفی - یک پیام متنی برای تعریف مواردی که نباید در تصویر گنجانده شود.
  • maskPrompt - یک پیام متنی که ماسک را تعریف می کند. این مربوط به برچسب هایی است که می خواهید در تصاویر تولید شده نهایی نگه دارید.
  • ماسک تصویر - تصویر JPEG یا PNG کدگذاری شده در base64.
  • OutPaintingMode – مشخص می کند که آیا اجازه تغییر پیکسل های داخل ماسک داده شود یا خیر. DEFAULT اجازه می دهد تا تصویر داخل ماسک را تغییر دهید تا با پس زمینه بازسازی شده سازگاری داشته باشد. PRECISE از تغییر تصویر داخل ماسک جلوگیری می کند.
  • تعداد تصاویر - تعداد تصاویر برای تولید
  • کیفیت – کیفیت تصاویر تولید شده: 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 ایجاد کنید.

از طریق آمازون SNS ایمیل ارسال کنید

Step Functions یک اقدام API SNS Amazon را برای ارسال ایمیل فراخوانی می کند. این ایمیل حاوی جزئیاتی از جمله مکان S3 برای گزارش وضعیت و فایل‌های تصاویر نهایی است. در زیر نمونه ایمیل اطلاع رسانی است.

ایمیل اعلان

نتیجه

در این پست، ما یک نمای کلی از یک نمونه راه حل ارائه کردیم که اتوماسیون تغییر پس‌زمینه تصویر را در مقیاس با استفاده از آمازون بستر و توابع مرحله نشان می‌دهد. ما همچنین هر عنصر راه حل را به تفصیل توضیح دادیم. با استفاده از ادغام بهینه توابع Step با Amazon Bedrock، Distributed Map، و مدل Titan Image Generator G1، این راه حل به طور موثر پس زمینه تصاویر را به صورت موازی جایگزین می کند و بهره وری و مقیاس پذیری را افزایش می دهد.

برای استقرار راه حل، به دستورالعمل های موجود در قسمت مراجعه کنید مخزن GitHub.

منابع

برای کسب اطلاعات بیشتر در مورد Amazon Bedrock، به منابع زیر مراجعه کنید:

برای کسب اطلاعات بیشتر در مورد Titan Image Generator مدل G1، به منابع زیر مراجعه کنید:

برای کسب اطلاعات بیشتر در مورد استفاده از Amazon Bedrock با توابع Step، به منابع زیر مراجعه کنید:


درباره نویسنده

چتان مکوانا یک معمار ارشد راه حل با خدمات وب آمازون است. او با شرکا و مشتریان AWS کار می کند تا راهنمایی های معماری برای ساخت معماری مقیاس پذیر و اجرای استراتژی هایی برای پذیرش خدمات AWS به آنها ارائه دهد. او یک علاقه‌مند به فناوری و سازنده‌ای است که در زمینه هوش مصنوعی مولد، بدون سرور و DevOps فعالیت می‌کند. خارج از محل کار، او از تماشای نمایش، مسافرت و موسیقی لذت می برد. 

نقطه_img

جدیدترین اطلاعات

نقطه_img

چت با ما

سلام! چگونه می توانم به شما کمک کنم؟