شعار زيفيرنت

قم بأتمتة عملية تغيير خلفيات الصور باستخدام Amazon Bedrock وAWS Step Functions | خدمات ويب أمازون

التاريخ:

غالبًا ما يحتاج العديد من العملاء، بما في ذلك العملاء العاملين في مجال الإعلانات الإبداعية والوسائط والترفيه والتجارة الإلكترونية والأزياء، إلى تغيير الخلفية في عدد كبير من الصور. عادةً ما يتضمن ذلك تحرير كل صورة يدويًا باستخدام برنامج الصور. يمكن أن يستغرق هذا الكثير من الجهد، خاصة بالنسبة للدفعات الكبيرة من الصور. لكن، أمازون بيدروك و وظائف خطوة AWS اجعل من السهل أتمتة هذه العملية على نطاق واسع.

تقدم Amazon Bedrock نموذج الأساس التوليدي للذكاء الاصطناعي أمازون تيتان مولد الصور G1، والتي يمكنها تغيير خلفية الصورة تلقائيًا باستخدام تقنية تسمى اللوحة الخارجية. تتيح لك Step Functions إنشاء سير عمل تلقائي يتصل بسلاسة مع Amazon Bedrock وخدمات AWS الأخرى. تعمل Amazon Bedrock وStep Functions معًا على تبسيط العملية الكاملة لتغيير الخلفيات تلقائيًا عبر صور متعددة.

يقدم هذا المنشور حلاً يبسط عملية تغيير الخلفيات في صور متعددة. من خلال تسخير قدرات الذكاء الاصطناعي التوليدي باستخدام Amazon Bedrock ونموذج Titan Image Generator G1، جنبًا إلى جنب مع Step Functions، يقوم هذا الحل بإنشاء الصور بكفاءة مع الخلفية المطلوبة. يوفر هذا المنشور نظرة ثاقبة على الأعمال الداخلية للحل ويساعدك على فهم اختيارات التصميم التي تم اتخاذها لإنشاء هذا الحل المخصص.

رؤية مستودع جيثب للحصول على إرشادات مفصلة حول نشر هذا الحل.

حل نظرة عامة

دعونا نلقي نظرة على كيفية عمل الحل على مستوى عالٍ قبل التعمق في عناصر محددة وخدمات AWS المستخدمة. يوفر الرسم التخطيطي التالي عرضًا مبسطًا لبنية الحل ويسلط الضوء على العناصر الأساسية.

هندسة الحلول

يتكون سير العمل من الخطوات التالية:

  1. يقوم المستخدم بتحميل صور متعددة إلى ملف خدمة تخزين أمازون البسيطة (Amazon S3) عبر تطبيق الويب Streamlit.
  2. يستدعي تطبيق الويب Streamlit بوابة أمازون API نقطة نهاية REST API متكاملة مع الأمازون إعادة الاعتراف واجهة برمجة تطبيقات DetectLabels، الذي يكتشف التسميات لكل صورة.
  3. عند التقديم، يقوم تطبيق الويب Streamlit بتحديث ملف الأمازون DynamoDB الجدول مع تفاصيل الصورة.
  4. يؤدي تحديث DynamoDB إلى تشغيل خطأ AWS لامدا الوظيفة، التي تبدأ سير عمل Step Functions.
  5. يقوم سير عمل Step Functions بتشغيل الخطوات التالية لكل صورة:
    5.1 إنشاء حمولة طلب لـ Amazon Bedrock InvokeModel API.
    5.2 يستدعي حجر أساس الأمازون InvokeModel عمل واجهة برمجة التطبيقات.
    5.3 يوزع صورة من الاستجابة ويحفظها في موقع S3.
    5.4 يقوم بتحديث حالة الصورة في جدول DynamoDB.
  6. يستدعي سير عمل Step Functions دالة Lambda لإنشاء تقرير حالة.
  7. يرسل سير العمل بريدًا إلكترونيًا باستخدام خدمة إعلام أمازون البسيطة (أمازون SNS).

كما هو موضح في لقطة الشاشة التالية، يتيح لك تطبيق الويب Streamlit تحميل الصور وإدخال مطالبات نصية لتحديد الخلفيات المطلوبة والمطالبات السلبية ووضع الرسم الخارجي لإنشاء الصور. يمكنك أيضًا عرض وإزالة التصنيفات غير المرغوب فيها المرتبطة بكل صورة تم تحميلها والتي لا تريد الاحتفاظ بها في الصور النهائية التي تم إنشاؤها.

تطبيق ويب Streamlit

في هذا المثال، يكون الموجه الخاص بالخلفية هو "خلفية مدينة لندن". تقوم عملية الأتمتة بإنشاء صور جديدة بناءً على الصور الأصلية التي تم تحميلها مع وجود لندن كخلفية.

الصور المولدة

تطبيق ويب Streamlit وتحميل الصور

يعمل تطبيق الويب Streamlit كواجهة أمامية لهذا الحل. ولحماية التطبيق من الوصول غير المصرح به، فإنه يتكامل مع أمازون كوجنيتو تجمع المستخدمين. تستخدم بوابة API أمازون كوجنيتو المعتمد لمصادقة الطلبات. يكمل تطبيق الويب الخطوات التالية:

  1. بالنسبة لكل صورة محددة، فإنه يسترد التسميات عبر Amazon Rekognition باستخدام نقطة نهاية API Gateway REST API.
  2. عند الإرسال، يقوم التطبيق بتحميل الصور إلى حاوية S3.
  3. يقوم التطبيق بتحديث جدول DynamoDB بالمعلمات ذات الصلة وأسماء الصور والتسميات المرتبطة بكل صورة باستخدام نقطة نهاية API Gateway REST API أخرى.

سير عمل معالجة الصور

عندما يتم تحديث جدول 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"
    }
  ]
}

يقوم سير عمل Step Functions بعد ذلك بتنفيذ الخطوات الثلاث التالية:

  1. استبدال الخلفية لجميع الصور.
  2. إنشاء تقرير الحالة.
  3. أرسل بريدًا إلكترونيًا عبر Amazon SNS.

توضح لقطة الشاشة التالية سير عمل Step Functions.

سير عمل وظائف خطوات AWS

دعونا ننظر في كل خطوة بمزيد من التفصيل.

استبدال الخلفية لجميع الصور

تستخدم وظائف الخطوة أ الخريطة الموزعة لمعالجة كل صورة في سير عمل فرعي متوازي. تسمح الخريطة الموزعة بمعالجة عالية التزامن. يحتوي كل سير عمل فرعي على محفوظات تشغيل منفصلة خاصة به عن سير العمل الأصلي.

تستخدم وظائف الخطوة إجراء InvocModel المحسّن لواجهة برمجة التطبيقات لـ Amazon Bedrock. تقبل واجهة برمجة التطبيقات (API) الطلبات والاستجابات التي يصل حجمها إلى 25 ميجابايت. ومع ذلك، فإن Step Functions لها حد يبلغ 256 كيلو بايت على إدخال وإخراج الحمولة النافعة للحالة. لدعم الصور الأكبر حجمًا، يستخدم الحل حاوية S3 حيث يمكن لـ InvokeModel تقرأ واجهة برمجة التطبيقات (API) البيانات من وتكتب النتيجة إليها. وفيما يلي التكوين ل InvokeModel واجهة برمجة التطبيقات لتكامل 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 تحدد المعلمة موقع المصدر لاسترداد بيانات الإدخال. ال 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 المعلمات التالية لإنشاء الصور:

  • نوع المهمة - يحدد طريقة الطلاء الخارجي لاستبدال خلفية الصورة.
  • نص - مطالبة نصية لتحديد الخلفية.
  • 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

تستدعي وظائف الخطوة إجراء Amazon SNS API لإرسال بريد إلكتروني. يحتوي البريد الإلكتروني على تفاصيل بما في ذلك موقع S3 لتقرير الحالة وملفات الصور النهائية. فيما يلي نموذج لإشعار البريد الإلكتروني.

البريد الإلكتروني الإخطار

وفي الختام

في هذا المنشور، قدمنا ​​نظرة عامة على نموذج حل يوضح أتمتة تغيير خلفيات الصور على نطاق واسع باستخدام Amazon Bedrock وStep Functions. لقد شرحنا أيضًا كل عنصر من عناصر الحل بالتفصيل. باستخدام التكامل الأمثل لـ Step Functions مع Amazon Bedrock، وDistributed Map، ونموذج Titan Image Generator G1، يستبدل الحل بكفاءة خلفيات الصور بالتوازي، مما يعزز الإنتاجية وقابلية التوسع.

لنشر الحل، راجع الإرشادات الموجودة في مستودع جيثب.

الموارد

لمعرفة المزيد حول Amazon Bedrock، راجع الموارد التالية:

لمعرفة المزيد حول نموذج Titan Image Generator G1، راجع الموارد التالية:

لمعرفة المزيد حول استخدام Amazon Bedrock مع Step Functions، راجع الموارد التالية:


عن المؤلف

تشيتان ماكفانا هو مهندس حلول أول في Amazon Web Services. إنه يعمل مع شركاء وعملاء AWS لتزويدهم بالتوجيه المعماري لبناء بنية قابلة للتطوير وتنفيذ استراتيجيات لدفع اعتماد خدمات AWS. إنه متحمس للتكنولوجيا ومنشئ له مجال اهتمام أساسي في الذكاء الاصطناعي التوليدي والخادم بدون خادم وDevOps. خارج العمل، يستمتع بمشاهدة العروض والسفر والموسيقى. 

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة