הרחבת התוכן של תמונה באמצעות יצירת תמונה מסביב לתמונה קיימת

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

המודלים הבאים תומכים בהרחבה גנרטיבית:

דוגמה להרחבה גנרטיבית

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

תמונת בסיס לדוגמה
תמונה מקורית עם מסגרת תמונה שתתאים לגודל תמונת המסכה (יעד).
מקור התמונה: Kari Shea ב-Unsplash.
תמונת מסכה לדוגמה
תמונה של מסכה במידות של פלט היעד, עם מידות הפיקסלים והמיקום של התמונה המקורית.
תמונה לדוגמה של פלט
תמונה שנוצרה באמצעות הרחבה גנרטיבית (ללא פרומפט).

הצגת כרטיס המודל של Imagen for Editing and Customization

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. מגדירים אימות לסביבה.

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.

    REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

הרחבת התוכן של תמונה

אפשר להשתמש בדוגמאות הקוד הבאות כדי להרחיב את התוכן של תמונה קיימת.

המסוף

  1. במסוף Google Cloud , עוברים לדף Vertex AI > Vertex AI Studio .

    מעבר אל Vertex AI Studio

  2. לוחצים על יצירת מדיה.

  3. לוחצים על תמונה.

  4. ברשימה משימה, בוחרים באפשרות הוספת רקע.

  5. ברשימה Model, בוחרים את מודל Imagen שבו רוצים להשתמש.

  6. בקטע תמונת קלט לוחצים על הוספה ובוחרים את התמונה שרוצים לערוך כדי להעלות אותה.

  7. בתיבת הנחיה, כותבים פרומפט שמתאר את השינוי שרוצים לעשות בתמונה.

  8. בתפריט יחס הגובה-רוחב, בוחרים יחס גובה-רוחב:

    • crop_square ריבוע
    • ‫crop_16_9 16:9
    • ‫crop_9_16 9:16
    • crop_landscape 4:3
    • crop_portrait 3:4
    • fullscreen Custom
  9. בסרגל הכלים לעריכה, בוחרים את המיקום של התמונה:

    • יישור לשמאל:
    • יישור אופקי למרכז:
    • יישור לימין:
    • יישור למעלה:
    • יישור אנכי למרכז:
    • יישור למטה:
  10. לוחצים על Run.

REST

למידע נוסף על Imagen API, אפשר לעיין במקורות הבאים:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫LOCATION: האזור של הפרויקט. לדוגמה, us-central1, europe-west2 או asia-northeast3. רשימת המיקומים שבהם אפשר להשתמש ב-AI גנרטיבי ב-Vertex AI כשמשתמשים בנקודת קצה ל-API אזורית, האזור מכתובת ה-URL של נקודת הקצה קובע איפה הבקשה תעובד, והמערכת מתעלמת מהערך LOCATION בנתיב המשאב אם יש התנגשות.
  • ‫prompt: כדי להרחיב את התמונה, אפשר לספק מחרוזת ריקה כדי ליצור את התמונות הערוכות. אם בוחרים לספק פרומפט, מומלץ להשתמש בתיאור של האזור המוסתר כדי לקבל את התוצאות הטובות ביותר. לדוגמה, "שמיים כחולים" במקום "הוספת שמיים כחולים".
  • ‫referenceType: ReferenceImage היא תמונה שמספקת הקשר נוסף לעריכת תמונה. נדרשת תמונת הפניה רגילה בפורמט RGB raw (REFERENCE_TYPE_RAW) לתרחישי שימוש בעריכה. בכל בקשה יכולה להיות תמונת רפרנס אחת לכל היותר. הגובה והרוחב של תמונת הפלט זהים לאלה של תמונת הרפרנס הגולמית. נדרשת תמונת רפרנס של מסכה (REFERENCE_TYPE_MASK) לתרחישי שימוש בעריכה עם מסכה. אם יש תמונת רפרנס גולמית, תמונת המסכה צריכה להיות באותו גובה ובאותו רוחב כמו תמונת הרפרנס הגולמית. אם תמונת ההפניה של המסכה ריקה והמדיניות maskMode לא מוגדרת ל-MASK_MODE_USER_PROVIDED, המסכה מחושבת על סמך תמונת ההפניה הגולמית.
  • ‫B64_BASE_IMAGE: תמונת הבסיס לעריכה או להגדלה. התמונה צריכה להיות מחרוזת בייטים בקידוד base64. מגבלת גודל: 10MB.
  • ‫B64_OUTPAINTING_MASK: התמונה בשחור-לבן שרוצים להשתמש בה כשכבת מסכה כדי לערוך את התמונה המקורית. הרזולוציה של המסכה צריכה להיות זהה לרזולוציה של תמונת הקלט. רזולוציית תמונת הפלט תהיה זהה לרזולוציית תמונת הקלט. צריך לציין את תמונת המסכה כמחרוזת בייטים בקידוד Base64. מגבלת גודל: 10MB.
  • ‫MASK_DILATION – מספר ממשי (float). אחוז רוחב התמונה להרחבת המסכה. מומלץ להגדיר ערך של 0.03 ל-outpainting. הגדרת "dilation": 0.0 עשויה לגרום להופעת גבולות ברורים בנקודת התוסף, או ליצור אפקט של גבול לבן.
  • ‫EDIT_STEPS – מספר שלם. מספר שלבי הדגימה של מודל הבסיס. כדי להשתמש ב-outpainting, מתחילים עם 35 שלבים. אם האיכות לא עומדת בדרישות, מגדילים את מספר השלבים.
  • ‫EDIT_IMAGE_COUNT – מספר התמונות שנערכו. ערכים קבילים מסוג מספר שלם: 1-4. ערך ברירת המחדל: 4.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict

גוף בקשת JSON:

{
  "instances": [
    {
      "prompt": "",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceId": 2,
          "referenceImage": {
            "bytesBase64Encoded": "B64_OUTPAINTING_MASK"
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_OUTPAINT",
    "sampleCount": EDIT_IMAGE_COUNT
  }
}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
התגובה לדוגמה הבאה היא לבקשה עם "sampleCount": 2. התגובה מחזירה שני אובייקטים של חיזוי, עם בייטים של התמונה שנוצרה על ידי AI בקידוד base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

מגבלות

אם התמונה המורחבת גדולה ב-200% או יותר מהגודל של התמונה המקורית, יכול להיות שהמודל ייצור פרטים מעוותים. כשיטה מומלצת, אנחנו ממליצים להוסיף שלב של עיבוד לאחר היצירה כדי להפעיל מיזוג אלפא על תמונות שנוצרו באמצעות outpainting.

הקוד הבא הוא דוגמה לעיבוד שאחרי:

parameters = {
   "editConfig": {
       "outpaintingConfig": {
         "blendingMode": "alpha-blending",
         "blendingFactor": 0.01,
       },
   },
}

המאמרים הבאים

כדאי לקרוא מאמרים על Imagen ועל מוצרים אחרים של AI גנרטיבי ב-Vertex AI: