החלפת הרקע של תמונה

בדף הזה מוסבר איך להחליף את הרקע של תמונה. ‫Imagen ב-Vertex AI מאפשר לכם להשתמש בפילוח אובייקטים אוטומטי כדי לשמור על התוכן הזה תוך שינוי תוכן אחר בתמונה. עם Imagen 3 אפשר גם לספק אזור מסכה משלכם כדי לקבל יותר שליטה בעריכה.

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

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

דוגמה לעריכת תמונת מוצר

בדוגמה הבאה מודגש שיפור של תמונת מוצר על ידי שינוי הרקע של התמונה, תוך שמירה על מראה המוצר בתמונה.

דוגמה לתמונה שנוצרה במסוף
תמונה שנוצרה באמצעות התכונה לעריכת תמונות מוצר של Imagen מהפרומפט: על שולחן בחנות בוטיק. מקור התמונה המקורית: Irene Kredenets ב-Unsplash.

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

  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. ברשימה מודל, בוחרים את מודל Imagen שרוצים להשתמש בו.

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

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

  8. בוחרים אחת מהאפשרויות הבאות לחילוץ המסכה:

    • רכיבי רקע: זיהוי רכיבי הרקע ויצירת מסכה סביבם.
    • רכיבים בחזית: מזהה את האובייקטים בחזית ויוצר מסכה סביבם.
    • ‫background_replace People: מזהה אנשים ויוצר מסכה סביבם.
  9. לוחצים על Run.

REST

מידע נוסף מופיע במאמר בנושא עריכת תמונות ב-API.

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫LOCATION: האזור של הפרויקט. לדוגמה, us-central1, europe-west2 או asia-northeast3. רשימת האזורים הזמינים מופיעה במאמר מיקומים של AI גנרטיבי ב-Vertex AI. כשמשתמשים בנקודת קצה ל-API אזורית, האזור מכתובת ה-URL של נקודת הקצה קובע איפה הבקשה תעובד, והמערכת מתעלמת מהערך LOCATION בנתיב המשאב אם יש התנגשות.
  • ‫TEXT_PROMPT: פרומפט טקסטואלי שמנחה את המודל לגבי התמונות שהוא יוצר. חובה למלא את השדה הזה גם כשיוצרים וגם כשעורכים.
  • ‫referenceType: ReferenceImage היא תמונה שמספקת הקשר נוסף לעריכת תמונה. נדרשת תמונת הפניה רגילה בפורמט RGB raw (REFERENCE_TYPE_RAW) לתרחישי שימוש בעריכה. בכל בקשה יכולה להיות תמונת רפרנס אחת לכל היותר של חומר גלם. הגובה והרוחב של תמונת הפלט זהים לאלה של תמונת ההפניה המקורית. נדרשת תמונת רפרנס של מסכה (REFERENCE_TYPE_MASK) לתרחישי שימוש בעריכה עם מסכה.
  • referenceId: מזהה המספר השלם של תמונת רפרנס. בדוגמה הזו, שני אובייקטי תמונות ההפניה הם מסוגים שונים, ולכן יש להם ערכים שונים של referenceId (1 ו-2).
  • ‫B64_BASE_IMAGE: תמונת הבסיס לעריכה או להגדלה. התמונה צריכה להיות מחרוזת בייטים בקידוד base64. מגבלת גודל: 10MB.
  • ‫maskImageConfig.maskMode: מצב המסכה לעריכת המסכה. האפשרות MASK_MODE_BACKGROUND משמשת לטשטוש אוטומטי של הרקע בלי שמשתמשים במסכה שהמשתמש סיפק.
  • ‫MASK_DILATION - float. אחוז רוחב התמונה להרחבת המסכה. מומלץ להשתמש בערך 0.00 כדי להימנע מהארכת השימוש במוצר בחזית. מינימום: 0, מקסימום: 1. ברירת מחדל: 0.03.
  • ‫EDIT_STEPS – מספר שלם. מספר שלבי הדגימה של מודל הבסיס. כדי לערוך תמונות של מוצרים, מתחילים בשלב 75.
  • ‫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": "TEXT_PROMPT",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceId": 2,
          "maskImageConfig": {
            "maskMode": "MASK_MODE_BACKGROUND",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_BGSWAP",
    "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
דוגמה לתגובה לבקשה לעריכת הרקע של מוצר: התגובה מחזירה ארבעה אובייקטים של חיזוי, עם בייטים של התמונה שנוצרה בקידוד Base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    },
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    }
  ]
}

עריכה עם אזור מסכה מוגדר

אתם יכולים לבחור להסתיר את האזור שמוחלף, במקום לאפשר ל-Imagen לזהות את המסכה באופן אוטומטי.

המסוף

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

    מעבר אל Vertex AI Studio

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

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

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

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

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

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

  8. כדי לציין מסכה, מבצעים אחת מהפעולות הבאות:

    • להעלות מסכה משלכם:
      1. יוצרים מסכה במחשב.
      2. לוחצים על העלאה ייבוא מסכה ובוחרים מסכה להעלאה.
    • מגדירים את המסכה: בסרגל הכלים לעריכה, משתמשים בכלי המסכה (תיבה, מכחול או masked_transitions, הכלי היפוך) כדי לציין את האזור או האזורים שרוצים להוסיף להם תוכן.
  9. לוחצים על Run.

REST

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

  • Method: endpoints.predict
  • VisionGenerativeModelInstance
  • VisionGenerativeModelParams
  • VisionGenerativeModelResult

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

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • ‫LOCATION: האזור של הפרויקט. לדוגמה, us-central1, europe-west2 או asia-northeast3. רשימת האזורים הזמינים מופיעה במאמר מיקומים של AI גנרטיבי ב-Vertex AI. כשמשתמשים בנקודת קצה ל-API אזורית, האזור מכתובת ה-URL של נקודת הקצה קובע איפה הבקשה תעובד, והמערכת מתעלמת מהערך LOCATION בנתיב המשאב אם יש התנגשות.
    • ‫TEXT_PROMPT: פרומפט טקסטואלי שמנחה את המודל לגבי התמונות שהוא יוצר. חובה למלא את השדה הזה גם כשיוצרים וגם כשעורכים.
    • referenceId: מזהה המספר השלם של תמונת רפרנס. בדוגמה הזו, שני אובייקטי תמונות ההפניה הם מסוגים שונים, ולכן יש להם ערכים שונים של referenceId (1 ו-2).
    • ‫B64_BASE_IMAGE: תמונת הבסיס לעריכה או להגדלה. התמונה צריכה להיות מחרוזת בייטים בקידוד base64. מגבלת גודל: 10MB.
    • ‫B64_MASK_IMAGE: התמונה בשחור-לבן שרוצים להשתמש בה כשכבת מסכה כדי לערוך את התמונה המקורית. התמונה צריכה להיות מחרוזת בייטים בקידוד Base64. מגבלת גודל: 10MB.
    • ‫MASK_DILATION - float. אחוז רוחב התמונה להרחבת המסכה. מומלץ להשתמש בערך 0.00 כדי להימנע מהארכת השימוש במוצר בחזית. מינימום: 0, מקסימום: 1. ברירת מחדל: 0.03.
    • ‫EDIT_STEPS – מספר שלם. מספר שלבי הדגימה של מודל הבסיס. כדי לערוך תמונות של מוצרים, מתחילים בשלב 75.
    • ‫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": "TEXT_PROMPT": [
            {
              "referenceType": "REFERENCE_TYPE_RAW",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "B64_BASE_IMAGE"
              }
            },
            {
              "referenceType": "REFERENCE_TYPE_MASK",
              "referenceId": 2,
              "referenceImage": {
                "bytesBase64Encoded": "B64_MASK_IMAGE"
              },
              "maskImageConfig": {
                "maskMode": "MASK_MODE_USER_PROVIDED",
                "dilation": MASK_DILATION
              }
            }
          ]
        }
      ],
      "parameters": {
        "editConfig": {
          "baseSteps": EDIT_STEPS
        },
        "editMode": "EDIT_MODE_BGSWAP",
        "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
    דוגמה לתגובה לבקשה לעריכת הרקע של מוצר:
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        },
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        }
      ]
    }
    

מגבלות

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

פתרון עקיף הוא לפלח את הפלט של המודל ואז לבצע מיזוג. בדוגמה הבאה מוצג קטע קוד ב-Python שמדגים פתרון עקיף:

blended = Image.composite(out_images[0].resize(image_expanded.size), image_expanded, mask_expanded)

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

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