התאמה אישית מבוקרת

התכונה 'התאמה אישית מבוקרת' מאפשרת ליצור תמונות חדשות על סמך תמונת מקור או אות של תמונת מקור (קצוות קאני או שרבוט). בדף הזה מוסבר איך לשלוח שני סוגים של בקשות להתאמה אישית מבוקרת:

  1. התאמה אישית מבוקרת של Imagen 3 (תכונה ב-GA)

    הצגת כרטיס המודל של Imagen לעריכה ולהתאמה אישית

  2. התאמה אישית מבוקרת של Imagen 2 – אות מקור של קצה חכם או שרבוט (תכונת Preview)

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

תרחישים לדוגמה

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

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

דוגמאות לתרחישים לדוגמה

אלה תרחישי שימוש שבהם Imagen 3 Controlled Customization מאומן לבצע פעולות ומפיק תוצאות טובות:

  • יצירת תמונה שפועלת לפי ההנחיה ותמונות הבקרה של קצוות קאני.

  • יצירת תמונה בהתאם להנחיה ולתמונות של השרטוטים.

  • תעצב תמונה של אדם תוך שמירה על הבעת הפנים.

דוגמאות לתרחישי שימוש לא מכוונים

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

    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.

    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 כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud

    REST

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

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

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

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

כתיבת הנחיות להתאמה אישית

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

תרחיש שימוש תמונות לדוגמה תבנית הנחיה דוגמה
התאמה אישית מבוקרת מפת שרבוטים (1) יצירת תמונה שתתאים לתיאור הבא: ${STYLE_PROMPT} ${PROMPT}.scribble map [1] צור תמונה שתואמת לscribble map [1] כדי שתתאים לתיאור: התמונה צריכה להיות בסגנון של ציור שמן אימפרסיוניסטי עם משיכות מכחול רגועות. התמונה צריכה להיות עם אווירה מוארת באופן טבעי ומשיכות מכחול בולטות. מבט מהצד על מכונית. המכונית חונה על משטח כביש רטוב ומבריק, ואורות העיר משתקפים בשלוליות.
התאמה אישית מבוקרת תמונה של שליטה ב-Canny‏ (1) יצירת תמונה בהתאם לedge map [1] כדי להתאים לתיאור: ${STYLE_PROMPT} ${PROMPT} צור תמונה שתתאים לedge map [1] בהתאם לתיאור הבא: התמונה צריכה להיות בסגנון של ציור שמן אימפרסיוניסטי, עם משיכות מכחול רפויות. התמונה צריכה להיות מוארת באופן טבעי, עם אווירה נעימה ומשיכות מכחול בולטות. מבט מהצד על מכונית. המכונית חונה על משטח כביש רטוב ומבריק, ואורות העיר משתקפים בשלוליות.
עיצוב תמונה של אדם עם קלט FaceMesh תמונת הנושא (1-3)

תמונת בקרה של FaceMesh (1)
תצור תמונה בנושא SUBJECT_DESCRIPTION [1] בתנוחה של CONTROL_IMAGE [2] בהתאם לתיאור: דיוקן של SUBJECT_DESCRIPTION [1] ${PROMPT} תיצור תמונה של a woman with short hair [1] בתנוחה של control image [2] בהתאם לתיאור: פורטרט של a woman with short hair [1] בסגנון קריקטורה בתלת-ממד עם רקע מטושטש. דמות חמודה ומקסימה עם פנים מחייכות, פונה למצלמה, גוון פסטלי, באיכות גבוהה, 4k, יצירת מופת, פרטים סופר-מפורטים, מרקם עור, מיפוי מרקם, צללים רכים, תאורה רכה ומציאותית, צבעים עזים
עיצוב תמונה של אדם עם קלט FaceMesh תמונת הנושא (1-3)

תמונת בקרה של FaceMesh (1)
תיצור תמונה ${STYLE_PROMPT} של SUBJECT_DESCRIPTION [1] בתנוחה של CONTROL_IMAGE [2] שתתאים לתיאור הבא: פורטרט של SUBJECT_DESCRIPTION [1] ${PROMPT} צור תמונה בסגנון סרטים מצוירים בתלת ממד של a woman with short hair [1] בתנוחה של control image [2] בהתאם לתיאור: דיוקן של a woman with short hair [1] בסגנון סרטים מצוירים בתלת ממד עם רקע מטושטש. דמות חמודה ומקסימה עם פנים מחייכות, פונה למצלמה, גוון פסטל, איכות גבוהה, 4k, יצירת מופת, פרטים סופר-מפורטים, מרקם עור, מיפוי מרקם, צללים רכים, תאורה רכה ומציאותית, צבעים עזים

שליחת בקשה להתאמה אישית מבוקרת של Imagen 3

אפשר להשתמש בדוגמאות הבאות כדי לשלוח בקשה לשינוי מבוקר של Imagen 3:

REST

מידע נוסף על Imagen API:

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: האזור של הפרויקט. לדוגמה, us-central1,‏ europe-west2 או asia-northeast3. רשימת האזורים הזמינים מופיעה במאמר מיקומי AI גנרטיבי ב-Vertex AI. כשמשתמשים בנקודת קצה אזורית של API, האזור מכתובת ה-URL של נקודת הקצה קובע איפה הבקשה תעובד, והערך LOCATION בנתיב המשאב מתעלם אם יש התנגשות.
  • TEXT_PROMPT: הנחייה טקסטואלית קובעת אילו תמונות המודל יוצר. כדי להשתמש בהתאמה אישית מבוקרת של Imagen 3, צריך לכלול את referenceId של תמונה לדוגמה של הבקרה שסיפקתם בפורמט [$referenceId]. לדוגמה:
    • יצירת תמונה בהתאם למפה המשורטטת [1] כדי להתאים לתיאור: [image description].
  • BASE64_CONTROL_IMAGE: תמונת הבקרה הבסיסית (סקיצה). צריך לציין את התמונה כמחרוזת בייטים בקידוד base64.
    For CONTROL_TYPE_SCRIBBLE: The expected scribble control image has black background and white scribble line. תמונה לדוגמה של אמצעי בקרה על שרבוטים
    בשביל CONTROL_TYPE_CANNY: תמונת הבקרה הצפויה של קצוות קאני היא עם רקע שחור וקצוות קאני לבנים. תמונה לדוגמה של אמצעי בקרה על קצוות קאני
  • CONTROL_TYPE: סוג אות הבקרה. שימוש ב-CONTROL_TYPE_CANNY לזיהוי קצוות. משתמשים ב-CONTROL_TYPE_SCRIBBLE כדי לשרטט.
  • enableControlImageComputation: מגדירים את הערך false אם מספקים תמונה משלכם לבקרה. במקרה כזה, B64_BASE_IMAGE צריך להיות תמונה של אות הבקרה. מגדירים את הערך true אם רוצים ש-Imagen יחשב את תמונת הבקרה מתוך התמונה לדוגמה. במקרה הזה, B64_BASE_IMAGE צריך להיות תמונת ה-RGB הגולמית.
  • 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_CONTROL",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "BASE64_CONTROL_IMAGE"
          },
          "controlImageConfig": {
            "controlType": "CONTROL_TYPE",
            "enableControlImageComputation": false
          }
        }
      ]
    }
  ],
  "parameters": {
    "sampleCount": 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"
    }
  ]
}

Python

שרבוט

from google import genai
from google.genai.types import (
    ControlReferenceConfig,
    ControlReferenceImage,
    EditImageConfig,
    Image,
)

client = genai.Client()

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

# Create a reference image out of an existing scribble image signal
# using https://storage.googleapis.com/cloud-samples-data/generative-ai/image/car_scribble.png
control_reference_image = ControlReferenceImage(
    reference_id=1,
    reference_image=Image(gcs_uri="gs://cloud-samples-data/generative-ai/image/car_scribble.png"),
    config=ControlReferenceConfig(control_type="CONTROL_TYPE_SCRIBBLE"),
)

image = client.models.edit_image(
    model="imagen-3.0-capability-001",
    prompt="an oil painting showing the side of a red car[1]",
    reference_images=[control_reference_image],
    config=EditImageConfig(
        edit_mode="EDIT_MODE_CONTROLLED_EDITING",
        number_of_images=1,
        safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
        person_generation="ALLOW_ADULT",
        output_gcs_uri=output_gcs_uri,
    ),
)

# Example response:
# gs://your-bucket/your-prefix
print(image.generated_images[0].image.gcs_uri)

Canny edge

from google import genai
from google.genai.types import (
    ControlReferenceConfig,
    ControlReferenceImage,
    EditImageConfig,
    Image,
)

client = genai.Client()

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

# Create a reference image out of an existing canny edge image signal
# using https://storage.googleapis.com/cloud-samples-data/generative-ai/image/car_canny.png
control_reference_image = ControlReferenceImage(
    reference_id=1,
    reference_image=Image(gcs_uri="gs://cloud-samples-data/generative-ai/image/car_canny.png"),
    config=ControlReferenceConfig(control_type="CONTROL_TYPE_CANNY"),
)

image = client.models.edit_image(
    model="imagen-3.0-capability-001",
    prompt="a watercolor painting of a red car[1] driving on a road",
    reference_images=[control_reference_image],
    config=EditImageConfig(
        edit_mode="EDIT_MODE_CONTROLLED_EDITING",
        number_of_images=1,
        safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
        person_generation="ALLOW_ADULT",
        output_gcs_uri=output_gcs_uri,
    ),
)

# Example response:
# gs://your-bucket/your-prefix
print(image.generated_images[0].image.gcs_uri)

שליחת בקשה להתאמה אישית מבוקרת של Imagen 2

תמונת הקלט פרמטרים אחרים התמונה שנוצרה
קלט שחמט
תמונת הקלט. מקור התמונה: Alec Cutter ב-Unsplash.

הנחיה: "גרסה של יצירת אמנות דיגיטלית"

הנחיה שלילית: "שחור ולבן"

סוג תמונת ההנחיה: RGB רגיל

תנאי בקרה: קצה קאני

קנה מידה של Imagen Control: 0.95

פלט מסוגנן
קלט שחמט
תמונת הקלט. מקור התמונה: Alec Cutter ב-Unsplash
(הוחל זיהוי קצוות).

הנחיה: "גרסה של יצירת אמנות דיגיטלית"

הנחיה שלילית: "שחור ולבן"

סוג תמונת ההנחיה: קצה קאני

קנה מידה של Imagen Control: 0.95

פלט מסוגנן

אפשר להשתמש בדוגמאות הבאות כדי לשלוח בקשה להתאמה אישית מבוקרת של Imagen 2:

REST

מידע נוסף על Imagen API:

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • TEXT_PROMPT: הנחייה טקסטואלית שמנחה את המודל לגבי התמונות שהוא יוצר. חובה למלא את השדה הזה גם כשיוצרים וגם כשעורכים.
  • B64_BASE_IMAGE: תמונת הבסיס לעריכה או להגדלה. התמונה צריכה להיות מחרוזת בייטים בקידוד base64. מגבלת גודל: 10MB.
  • EDIT_IMAGE_COUNT: מספר התמונות שנערכו. ערך ברירת המחדל: 4.
  • NEGATIVE_PROMPT: הנחיה שלילית שתעזור ליצור את התמונות. לדוגמה: ‫"animals" (הסרת בעלי חיים), "blurry" (הבהרת התמונה), "text" (הסרת טקסט) או ‫"cropped" (הסרת תמונות חתוכות).
  • CONDITION: string. סוג אות התמונה של אמצעי הבקרה שסופק. ערכים: cannyEdges או scribble.
  • CONTROL_SCALE: float. עוצמת האות של תמונת הבקרה. ערכים: 0.0 - 1.0. ערך ברירת המחדל: 0.95. הטווח המומלץ: 0.9 עד 1.0.
  • SAMPLING_STEPS: integer. מספר שלבי הדגימה. ערכים: 1 - 30. ברירת מחדל: 16.
  • COMPUTE_CONDITION_MAP: boolean. האם לחשב מפת תנאים מתמונת הקלט הבסיסית. כשההגדרה היא false, השירות מצפה שתמונת הקלט תהיה שרבוט או קצוות של קאני, והתמונה מסופקת ישירות למודל. אם ההגדרה היא true, השירות מצפה שתמונת הקלט תהיה תמונת RGB, והשירות מחשב את קצוות קאני או מידע על שרבוטים מתמונת הקלט על סמך conditionName. לאחר מכן, השירות מספק למודל את מפת התנאים שעברה עיבוד לצורך עריכת התמונה. כשמספקים תמונות שרבוטים, הרקע שלהן צריך להיות שחור והקווים הלבנים צריכים לתאר את האובייקט שרוצים ליצור. ברירת מחדל: false.

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

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627:predict

גוף בקשת JSON:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT",
      "image": {
        "bytesBase64Encoded": "B64_BASE_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": EDIT_IMAGE_COUNT,
    "negativePrompt": "NEGATIVE_PROMPT",
    "controlPluginConfig":  {
      "conditions": [
        {
          "conditionName": "CONDITION",
          "controlScale": CONTROL_SCALE,
          "samplingSteps": SAMPLING_STEPS,
          "computeConditionMap": COMPUTE_CONDITION_MAP
        }
      ]
    }
  }
}

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

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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627: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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627:predict" | Select-Object -Expand Content
התגובה לדוגמה הבאה היא לבקשה עם "sampleCount": 2. התגובה מחזירה שני אובייקטים של חיזוי, עם בייטים של התמונה שנוצרה בקידוד Base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

שימוש במוצר

כדי לראות את תקני השימוש והגבלות התוכן שקשורים ל-Imagen ב-Vertex AI, אפשר לעיין בהנחיות השימוש.

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

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

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

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