הפוך את התהליך לשינוי רקע תמונה באמצעות Amazon Bedrock ו-AWS Step Functions | שירותי האינטרנט של אמזון

הפוך את התהליך לשינוי רקע תמונה באמצעות Amazon Bedrock ו-AWS Step Functions | שירותי האינטרנט של אמזון

לקוחות רבים, כולל אלו העוסקים בפרסום יצירתי, במדיה ובידור, במסחר אלקטרוני ואופנה, צריכים לעתים קרובות לשנות את הרקע במספר רב של תמונות. בדרך כלל, זה כולל עריכה ידנית של כל תמונה עם תוכנת צילום. זה יכול לקחת הרבה מאמץ, במיוחד עבור קבוצות גדולות של תמונות. למרות זאת, סלע אמזון ו פונקציות שלב AWS להפוך את התהליך הזה לאוטומטי בקנה מידה פשוט.

Amazon Bedrock מציעה את מודל הבסיס ה-AI הגנרטיבי Amazon Titan Image Generator G1, שיכול לשנות אוטומטית את הרקע של תמונה באמצעות טכניקה שנקראת ציור חוץ. Step Functions מאפשר לך ליצור זרימת עבודה אוטומטית שמתחברת בצורה חלקה עם Amazon Bedrock ושירותי AWS אחרים. יחד, Amazon Bedrock ו-Step Functions מייעלים את כל התהליך של שינוי אוטומטי של רקעים על פני מספר תמונות.

פוסט זה מציג פתרון המפשט את תהליך שינוי הרקע במספר תמונות. על ידי רתימת היכולות של AI ייצור עם Amazon Bedrock ודגם Titan Image Generator G1, בשילוב עם Step Functions, פתרון זה יוצר ביעילות תמונות עם הרקע הרצוי. פוסט זה מספק תובנה לגבי פעולתו הפנימית של הפתרון ועוזר לך להבין את בחירות העיצוב שנעשו כדי לבנות פתרון מותאם אישית זה.

ראה מאגר GitHub להנחיות מפורטות על פריסת פתרון זה.

סקירת פתרונות

בואו נסתכל על איך הפתרון עובד ברמה גבוהה לפני שנצלול עמוק יותר לתוך אלמנטים ספציפיים ושירותי ה-AWS שבהם נעשה שימוש. התרשים הבא מספק תצוגה פשוטה של ​​ארכיטקטורת הפתרון ומדגיש את מרכיבי המפתח.

אדריכלות פתרונות

זרימת העבודה מורכבת מהשלבים הבאים:

  1. משתמש מעלה תמונות מרובות לתוך שירות אחסון פשוט של אמזון (Amazon S3) דלי באמצעות אפליקציית אינטרנט של Streamlit.
  2. אפליקציית האינטרנט Streamlit קוראת an שער API של אמזון נקודת קצה REST API משולבת עם אמזון DetectLabels API, שמזהה תוויות עבור כל תמונה.
  3. עם ההגשה, אפליקציית האינטרנט Streamlit מעדכנת אמזון דינמו טבלה עם פרטי תמונה.
  4. עדכון DynamoDB מפעיל an AWS למבדה פונקציה, שמתחילה זרימת עבודה של Step Functions.
  5. זרימת העבודה של Step Functions מפעילה את השלבים הבאים עבור כל תמונה:
    5.1 בונה מטען בקשה עבור אמזון יסוד InvokeModel ה-API.
    5.2 מעורר את סלע אמזון InvokeModel פעולת API.
    5.3 מנתח תמונה מהתגובה ושומר אותה במיקום S3.
    5.4 עדכון מצב התמונה בטבלת DynamoDB.
  6. זרימת העבודה של Step Functions מפעילה פונקציית Lambda כדי ליצור דוח מצב.
  7. זרימת העבודה שולחת אימייל באמצעות שירות התראה פשוט של אמזון (Amazon SNS).

כפי שמוצג בצילום המסך הבא, אפליקציית האינטרנט Streamlit מאפשרת לך להעלות תמונות ולהזין הודעות טקסט כדי לציין רקעים רצויים, הנחיות שליליות ומצב צביעה מחוץ ליצירת תמונה. אתה יכול גם להציג ולהסיר תוויות לא רצויות המשויכות לכל תמונה שהועלתה שאינך רוצה לשמור בתמונות הסופיות שנוצרו.

אפליקציית אינטרנט יעילה

בדוגמה זו, ההנחיה עבור הרקע היא "רקע עיר לונדון". תהליך האוטומציה מייצר תמונות חדשות המבוססות על התמונות המקוריות שהועלו עם לונדון כרקע.

תמונות שנוצרו

העלאת אפליקציות אינטרנט ותמונות יעילה

אפליקציית אינטרנט Streamlit משמשת כקצה הקצה לפתרון זה. כדי להגן על האפליקציה מפני גישה לא מורשית, היא משתלבת עם אמזון קוגניטו מאגר משתמשים. API Gateway משתמש ב-an אישור אמזון קוגניטו לאימות בקשות. אפליקציית האינטרנט משלימה את השלבים הבאים:

  1. עבור כל תמונה שנבחרה, היא מאחזרת תוויות באמצעות Amazon Rekognition באמצעות נקודת קצה API Gateway REST API.
  2. עם ההגשה, האפליקציה מעלה תמונות לדלי S3.
  3. האפליקציה מעדכנת טבלת DynamoDB עם פרמטרים רלוונטיים, שמות תמונות ותוויות משויכות לכל תמונה באמצעות נקודת קצה אחרת של API Gateway REST 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"
    }
  ]
}

זרימת העבודה של Step Functions מבצעת לאחר מכן את שלושת השלבים הבאים:

  1. החלף את הרקע עבור כל התמונות.
  2. הפק דוח מצב.
  3. שלח אימייל דרך Amazon SNS.

צילום המסך הבא ממחיש את זרימת העבודה של Step Functions.

זרימת עבודה של AWS Step Functions

בואו נסתכל על כל שלב ביתר פירוט.

החלף רקע עבור כל התמונות

Step Functions משתמש ב-a מפה מבוזרת לעבד כל תמונה בזרימות עבודה מקבילות של ילדים. המפה המבוזרת מאפשרת עיבוד בו-זמנית גבוהה. לכל זרימת עבודה צאצא יש היסטוריית ריצה נפרדת משלה מזו של זרימת העבודה האב.

Step Functions משתמש ב-an פעולת API מותאמת של InvokeModel עבור Amazon Bedrock. ה-API מקבל בקשות ותגובות בגודל של עד 25 MB. עם זאת, ל-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 פרמטר מציין את מיקום המקור לאחזור נתוני הקלט. ה 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 – הנחית טקסט המגדירה את המסכה. זה מתאים לתוויות שברצונך לשמור בתמונות הסופיות שנוצרו.
  • 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 עם Step Functions, עיין במשאבים הבאים:


על המחבר

הפוך את התהליך לשינוי רקע תמונה באמצעות Amazon Bedrock ו-AWS Step Functions | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.צ'טן מקוואנה הוא ארכיטקט פתרונות בכיר עם שירותי האינטרנט של אמזון. הוא עובד עם שותפים ולקוחות של AWS כדי לספק להם הדרכה ארכיטקטונית לבניית ארכיטקטורה ניתנת להרחבה ויישום אסטרטגיות להנעת אימוץ שירותי AWS. הוא חובב טכנולוגיה ובונה עם תחום ליבה של עניין ב-AI גנרטיבי, ללא שרתים ו-DevOps. מחוץ לעבודה, הוא נהנה לצפות בתוכניות, לטייל ולמוזיקה. 

בול זמן:

עוד מ למידת מכונות AWS