הוספת אובייקטים לתמונה באמצעות מילוי חוסרים

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

המודלים הבאים תומכים בהוספת אובייקטים לתמונה:

דוגמה להוספת תוכן

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

קלטים

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

* קרדיט על התמונה: Alex Lvrs ב-Unsplash.

פלט אחרי שמציינים אזור מיסוך ב Google Cloud מסוף

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

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

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

  1. 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

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

  3. 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

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

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

    המסוף

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

    REST

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

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

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

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

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

המסוף

  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, אפשר לעיין במקורות הבאים:

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

  • ‫REGION: האזור שבו נמצא הפרויקט. מידע נוסף על אזורים נתמכים זמין במאמר בנושא מיקומי AI גנרטיבי ב-Vertex AI.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫TEXT_PROMPT: אופציונלי. פרומפט טקסטואלי שמנחה את התמונות שהמודל יוצר. כדי לקבל את התוצאות הטובות ביותר, כדאי להשתמש בתיאור של האזור המוסתר ולהימנע מפרומפטים של מילה אחת. לדוגמה, במקום "קורגי" צריך לכתוב "קורגי חמוד".
  • ‫B64_BASE_IMAGE: תמונה בקידוד base64 של התמונה שעורכים, בגודל של עד 10MB. מידע נוסף על קידוד base64 זמין במאמר קידוד ופענוח של קבצים ב-Base64.
  • ‫B64_MASK_IMAGE: תמונה של מסכה בשחור-לבן בקידוד base64, בגודל של עד 10MB.
  • ‫MASK_DILATION: אופציונלי. ערך מספרי בין 0 ל-1, כולל, שמייצג את אחוז הרוחב של התמונה שבו צריך להגדיל את המסכה. השימוש ב-dilation עוזר לפצות על מסכות לא מדויקות. מומלץ להגדיר ערך של 0.01.
  • EDIT_STEPS: אופציונלי. מספר שלם שמייצג את מספר שלבי הדגימה. ערך גבוה יותר משפר את איכות התמונה, וערך נמוך יותר משפר את זמן האחזור.

    מומלץ לנסות את 35 השלבים האלה כדי להתחיל. אם האיכות לא עומדת בדרישות שלכם, מומלץ להגדיל את הערך עד למגבלה העליונה של 75.

  • SAMPLE_COUNT: אופציונלי. מספר שלם שמתאר את מספר התמונות שרוצים ליצור. הטווח המקובל של הערכים הוא 1 עד 4. ערך ברירת המחדל הוא 4.

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

POST https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/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",
          "referenceImage": {
            "bytesBase64Encoded": "B64_MASK_IMAGE"
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_INPAINT_INSERTION",
    "sampleCount": SAMPLE_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://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/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://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
התגובה לדוגמה הבאה היא לבקשה עם "sampleCount": 2. התגובה מחזירה שני אובייקטים של חיזוי, עם בייטים של התמונה שנוצרה בקידוד base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

הוספה עם זיהוי אוטומטי של מסכות

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

המסוף

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

    מעבר אל Vertex AI Studio

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

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

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

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

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

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

  8. בסרגל הכלים לעריכה, לוחצים על background_replaceחילוץ מסכה.

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

    • אלמנטים ברקע: זיהוי האלמנטים ברקע ויצירת מסכה סביבם.

    • רכיבים בחזית: מזהה את האובייקטים בחזית ויוצר מסכה סביבם.

    • ‫background_replace People: מזהה אנשים ויוצר מסכה סביבם.

  10. לוחצים על Run.

REST

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

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫LOCATION: האזור של הפרויקט. לדוגמה, us-central1, europe-west2 או asia-northeast3. רשימת האזורים הזמינים מופיעה במאמר מיקומים של AI גנרטיבי ב-Vertex AI. כשמשתמשים בנקודת קצה ל-API אזורית, האזור מכתובת ה-URL של נקודת הקצה קובע איפה הבקשה תעובד, והמערכת מתעלמת מהערך LOCATION בנתיב המשאב אם יש התנגשות.
  • ‫TEXT_PROMPT: הנחיית הטקסט קובעת אילו תמונות המודל יוצר. כשמשתמשים בפרומפט להוספת תיקון, מומלץ להשתמש בתיאור של האזור המוסתר כדי לקבל את התוצאות הטובות ביותר. אל תשתמשו בהנחיות שמורכבות ממילה אחת. לדוגמה, במקום "corgi" צריך לכתוב "a cute corgi".
  • ‫B64_BASE_IMAGE: תמונת הבסיס לעריכה או להגדלה. התמונה צריכה להיות מחרוזת בייטים בקידוד base64. מגבלת גודל: 10MB.
  • ‫MASK_MODE – מחרוזת שמגדירה את סוג יצירת המסכות האוטומטית שבה נעשה שימוש במודל. ערכים אפשריים:
    • ‫MASK_MODE_BACKGROUND: יצירת מסכה באופן אוטומטי באמצעות פילוח של הרקע.
    • ‫MASK_MODE_FOREGROUND: יוצר באופן אוטומטי מסכה באמצעות פילוח של חזית התמונה.
    • ‫MASK_MODE_SEMANTIC: יוצר באופן אוטומטי מסכה באמצעות פילוח סמנטי על סמך מחלקות הפילוח שצוינו במערך maskImageConfig.maskClasses. לדוגמה:
                "maskImageConfig": {
                  "maskMode": "MASK_MODE_SEMANTIC",
                  "maskClasses": [175, 176], // bicycle, car
                  "dilation": 0.01
                }
              
  • ‫MASK_DILATION - float. אחוז רוחב התמונה להרחבת המסכה. ‫A מומלץ להשתמש בערך 0.01 כדי לפצות על מסכות קלט לא מושלמות.
  • ‫EDIT_STEPS – מספר שלם. מספר שלבי הדגימה של מודל הבסיס. כדי להוסיף תוכן באמצעות Inpainting, מתחילים ב-35 שלבים. אם האיכות לא עומדת בדרישות שלכם, צריך להגדיל את מספר השלבים עד למגבלה העליונה של 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",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_INPAINT_INSERTION",
    "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. התגובה מחזירה שני אובייקטים של חיזוי, עם בייטים של התמונה שנוצרה בקידוד base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

מגבלות

בקטעים הבאים מוסבר על המגבלות של התכונה 'הסרת אובייקטים' ב-Imagen.

פיקסלים שעברו שינוי

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

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

הוספת מגבלה

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

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

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

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