受控自訂

「受控自訂」功能可讓您根據來源圖片或來源圖片信號 (Canny Edge 或塗鴉) 建立新圖片。本頁說明如何傳送兩種受控自訂要求:

  1. Imagen 3 受控自訂 (正式版功能)

    查看「Imagen for Editing and Customization」模型資訊卡

  2. Imagen 2 受控自訂功能 - Canny 邊緣或塗鴉來源圖片信號 (預覽功能)

下列模型支援受控自訂:

用途

Imagen 3 Controlled Customization 提供自由風格的提示詞,可能會讓您覺得模型的功能超出訓練範圍。以下各節將說明 Imagen 3 Controlled Customization 的應用實例和範例。

模型已根據我們提供的用途進行訓練,因此我們預期您在使用 Imagen 3 受控自訂功能時,會獲得良好的結果。如果要求模型以非預期的方式回覆,我們預期不會得到良好的結果。

預定用途範例

Imagen 3 Controlled Customization 經過訓練,可處理下列應用實例,並產生良好結果:

  • 生成圖片,並遵循提示和 Canny Edge 控制圖片。

  • 根據提示詞和塗鴉圖片生成圖片。

  • 為人物相片套用風格,同時保留臉部表情。

不當用途範例

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 Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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 Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. 為環境設定驗證機制。

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

撰寫自訂提示

使用 Imagen 3 自訂功能時,提示可能會影響生成的圖片品質。您可以參考下列提示範本,撰寫自訂提示。您可能需要傳送多個要求,才能取得目標輸出內容。

用途 參考圖片 提示範本 範例
控管自訂項目 手繪地圖 (1) 生成符合scribble map [1] 說明內容的圖片:${STYLE_PROMPT} ${PROMPT} 生成符合 scribble map [1] 的圖片,以符合說明:圖片應為印象派油畫風格,筆觸輕鬆。這類圖片具有自然光線的氛圍,且筆觸明顯。車輛的側面圖。車輛停在潮濕且會反射光線的路面上,水窪中映照著城市燈光。
控管自訂項目 Canny 控制圖片 (1) 生成圖片,使其與 edge map [1] 相符,以符合說明:${STYLE_PROMPT} ${PROMPT} 生成符合 edge map [1] 的圖片,與說明相符: 圖片應為印象派油畫風格,筆觸輕鬆。這類作品的氛圍自然明亮,筆觸清晰可見。車輛的側面圖。車輛停在潮濕且會反射光線的路面,水窪中映照著城市燈光。
使用 FaceMesh 輸入內容,為人物圖片套用風格 主體圖像 (1-3)

FaceMesh 控制圖像 (1)
Create an image about SUBJECT_DESCRIPTION [1] in the pose of the CONTROL_IMAGE [2] to match the description: a portrait of SUBJECT_DESCRIPTION [1] ${PROMPT} control image [2]的姿勢繪製「a woman with short hair [1]」的圖片,符合以下描述:a woman with short hair [1]的肖像照,採用 3D 卡通風格,背景模糊。可愛的角色,面帶微笑,面向鏡頭,柔和的色調,高畫質,4K,傑作,細節豐富,皮膚紋理,紋理對應,柔和的陰影,柔和逼真的光線,鮮豔的色彩
使用 FaceMesh 輸入內容,為人物圖片套用風格 主體圖像 (1-3)

FaceMesh 控制圖像 (1)
建立一張${STYLE_PROMPT}圖片,內容為SUBJECT_DESCRIPTION [1]擺出CONTROL_IMAGE [2]的姿勢,與以下說明相符:SUBJECT_DESCRIPTION [1]的肖像照${PROMPT} 3D 卡通風格繪製 a woman with short hair [1] 的圖片,姿勢要與 control image [2] 相同,並符合以下描述:a woman with short hair [1] 的肖像照,以 3D 卡通風格呈現,背景模糊。可愛又討喜的角色,面帶微笑,面向鏡頭,色調柔和,高畫質 4K 傑作,細節豐富,皮膚材質、材質對應、柔和陰影、柔和寫實光線、繽紛色彩

傳送 Imagen 3 受控自訂要求

請使用下列範例傳送 Imagen 3 受控自訂要求:

REST

如要進一步瞭解 Imagen API,請參閱下列內容:

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • LOCATION:專案的區域。例如 us-central1europe-west2asia-northeast3。如需可用區域的清單,請參閱「Vertex AI 生成式 AI 服務地區」。使用地區 API 端點時,系統會根據端點網址中的區域,決定要求處理位置,並忽略資源路徑中發生衝突的 LOCATION
  • TEXT_PROMPT:文字提示會引導模型生成圖片。如要使用 Imagen 3 受控自訂功能,請以 [$referenceId] 格式加入您提供的控制參考圖像 referenceId。例如:
    • 生成圖片,使其與塗鴉地圖 [1] 相符,並與說明相符: [image description]
  • BASE64_CONTROL_IMAGE:基本控制圖片 (草圖)。圖片必須指定為 base64 編碼的位元組字串。
    CONTROL_TYPE_SCRIBBLE:預期的塗鴉控制項圖片應為黑底白線。塗鴉控制項圖片範例
    適用於 CONTROL_TYPE_CANNY:預期的 Canny 邊緣控制圖片具有黑色背景和白色 Canny 邊緣。Canny 邊緣控制圖片範例
  • CONTROL_TYPE:控制信號的類型。使用 CONTROL_TYPE_CANNY 進行 Canny 邊緣偵測。使用 CONTROL_TYPE_SCRIBBLE 塗鴉。
  • enableControlImageComputation:如果您提供自己的控制圖片,請設為 false。在這種情況下,B64_BASE_IMAGE 應為控制訊號圖片。如要讓 Imagen 從參考圖像計算控制圖片,請設為 true。在這種情況下,B64_BASE_IMAGE 應為原始 RGB 圖片。
  • IMAGE_COUNT:生成的圖像數量。 接受的整數值:1 到 4。預設值:4。

HTTP 方法和網址:

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 邊緣

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

控制條件:canny edge

Imagen Control 比例:0.95

風格化輸出內容
棋步輸入
輸入圖片。圖片來源:Alec Cutter,取自 Unsplash
(已套用 Canny 邊緣偵測)。

提示:「數位藝術版」

負面提示:「黑白」

引導圖片類型:canny edge

Imagen Control 比例:0.95

風格化輸出內容

請使用下列範例傳送 Imagen 2 受控自訂要求:

REST

如要進一步瞭解 Imagen API,請參閱下列資源:

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • TEXT_PROMPT:文字提示,引導模型生成圖片。生成和編輯時都必須填寫這個欄位。
  • B64_BASE_IMAGE:要編輯或放大畫質的基本圖片。圖片必須指定為 base64 編碼的位元組字串。大小限制:10 MB。
  • EDIT_IMAGE_COUNT:編輯過的圖片數量。預設值: 4。
  • NEGATIVE_PROMPT:用於生成圖片的負面提示。例如: 「animals」(移除動物)、「blurry」(讓圖片更清晰)、「text」(移除文字) 或 「cropped」(移除裁剪過的圖片)。
  • CONDITIONstring。提供的控制項圖片信號類型。值: cannyEdgesscribble
  • CONTROL_SCALEfloat。控制圖片訊號的強度。值: 0.0 - 1.0。預設值為 0.95。建議範圍: 0.9 - 1.0
  • SAMPLING_STEPSinteger。取樣步數。值: 1 - 30。預設值:16
  • COMPUTE_CONDITION_MAPboolean。是否要從基本輸入圖片計算條件地圖。設為 false 時,服務會預期輸入圖片為塗鴉或 Canny 邊緣,並直接提供給模型。如果設為 true,服務會將輸入圖片視為 RGB 圖片,並根據 conditionName 從輸入圖片計算 Canny 邊緣或塗鴉資訊。接著,這項服務會將處理後的條件對應提供給模型,以進行圖片編輯。提供塗鴉圖片時,圖片應為黑色背景,並以白色線條描繪要生成的物件。預設值:false

HTTP 方法和網址:

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"
    }
  ]
}

產品使用量累進區間

如要查看與 Vertex AI 上的 Imagen 相關聯的使用標準和內容限制,請參閱使用指南

模型版本

你可以使用多種圖片生成模型。詳情請參閱「Imagen 模型」。

後續步驟

閱讀有關 Imagen 和其他 Vertex AI 生成式 AI 產品的文章: