生成圖像

您可以使用 Imagen API 在幾秒內生成高品質圖像,並透過文字提示引導生成作業。您也可以使用 Imagen API 提升圖片解析度。

查看生成模型的 Imagen 資訊卡

支援的型號

Imagen API 支援下列型號:

  • imagen-4-0-generate-preview-05-20 (預覽)
  • imagen-4.0-ultra-generate-exp-05-20 (實驗功能)
  • imagen-3.0-generate-002
  • imagen-3.0-generate-001
  • imagen-3.0-fast-generate-001
  • imagen-3.0-capability-001
  • imagegeneration@006
  • imagegeneration@005
  • imagegeneration@002

如要進一步瞭解各模型支援的功能,請參閱「圖像模型」。

語法範例

使用文字提示建立圖像的語法。

語法

生成圖像的語法。

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_VERSION}:predict \
-d '{
  "instances": [
    {
      "prompt": "..."
    }
  ],
  "parameters": {
    "sampleCount": ...
  }
}'

Python

generation_model = ImageGenerationModel.from_pretrained("MODEL_VERSION")

response = generation_model.generate_images(
    prompt="...",
    negative_prompt="...",
    aspect_ratio=...,
)
response.images[0].show()

參數清單

如需實作詳情,請參閱範例

生成圖像

REST

參數
prompt

string

這是必要旗標,圖片的文字提示。

sampleCount

int

這是必要旗標,要產生的圖片數量。預設值為 4。

seed

Uint32

(非必要) 圖像生成的隨機種子。當 addWatermark 設為 true 時,就無法使用這個選項。

如果 enhancePrompt 設為 trueseed 參數就無法運作,因為 enhancePrompt 會產生新的提示,導致新圖片或其他圖片。

enhancePrompt

boolean

(非必要) 這個選用參數可讓您使用以 LLM 為基礎的提示重寫功能,提供更能反映原始提示意圖的高畫質圖像。停用這項功能可能會影響圖片品質和提示遵循率。

negativePrompt

string

(非必要) 說明在生成的圖片中不宜出現的內容。

imagen-3.0-generate-002 及後續型號不支援 negativePrompt

aspectRatio

string

(非必要) 圖片的顯示比例。預設值為「1:1」。

outputOptions

outputOptions

(非必要) 說明 outputOptions 物件中的輸出圖片格式。

sampleImageStyle

string

(非必要) 描述產生圖片的風格。支援的值如下:

  • "photograph"
  • "digital_art"
  • "landscape"
  • "sketch"
  • "watercolor"
  • "cyberpunk"
  • "pop_art"

sampleImageStyle 僅由 imagegeneration@002 支援

personGeneration

string

(非必要) 允許模型產生人物。支援的值如下:

  • "dont_allow":禁止在圖片中加入人物或臉孔。
  • "allow_adult":僅允許產生成人。
  • "allow_all":允許產生所有年齡層的人物。

預設值為 "allow_adult"

language

string

(非必要) 與文字提示語言相對應的語言代碼。支援的值如下:

  • auto:自動偵測。如果 Imagen 偵測到支援的語言,系統會將提示和選用的否定提示翻譯成英文。如果系統不支援所偵測到的語言,Imagin 會逐字使用輸入的文字,這可能會導致非預期的輸出結果。系統不會傳回錯誤代碼。
  • en:英文 (如果省略,則為預設值)
  • zhzh-CN:中文 (簡體)
  • zh-TW:繁體中文
  • hi:北印度文
  • ja:日文
  • ko: 韓文
  • pt:葡萄牙文
  • es: 西班牙文
safetySetting

string

(非必要) 為安全篩選功能新增篩選層級。支援的值如下:

  • "block_low_and_above":最強的篩選層級,最嚴格的封鎖。已淘汰的值:"block_most"
  • "block_medium_and_above":封鎖部分有問題的提示和回應。已淘汰的值:"block_some"
  • "block_only_high":減少因安全篩選機制而遭到封鎖的要求數量。可能會增加 Imagen 產生的不當內容。已淘汰的值:"block_few"
  • "block_none":封鎖極少數有問題的提示和回應。這項功能的存取權受到限制。先前的欄位值:"block_fewest"

預設值為 "block_medium_and_above"

addWatermark

bool

(非必要) 為產生的圖片加上隱形浮水印。

預設值為 true,但下列型號除外:

  • imagegeneration@002
  • imagegeneration@005
storageUri

選用:string

用於儲存產生圖片的 Cloud Storage URI。

輸出選項物件

outputOptions 物件會描述圖片輸出內容。

參數
outputOptions.mimeType

選用:string

輸出內容應儲存為的圖片格式。支援下列值:

  • "image/png":儲存為 PNG 圖片
  • "image/jpeg":儲存為 JPEG 圖片

預設值為 "image/png"

outputOptions.compressionQuality

選用:int

如果輸出類型為 "image/jpeg",則壓縮等級。可接受的值為 0 到 100。預設值為 75。

回應

REST 要求的回應主體。

參數
predictions

VisionGenerativeModelResult 物件陣列,每個要求的 sampleCount 對應一個。如果任何圖片遭到負責任 AI 技術篩除,除非 includeRaiReason 設為 true,否則不會納入。

視覺生成式模型結果物件

模型結果的相關資訊。

參數
bytesBase64Encoded

產生的 Base64 編碼圖片。如果輸出圖片未通過負責任 AI 篩選器,則不會顯示。

mimeType

生成圖像的類型。如果輸出圖片未通過負責任 AI 篩選器,則不會顯示。

raiFilteredReason

負責任的 AI 技術篩選器原因。只有在啟用 includeRaiReason 且系統篩除此圖片時,才會傳回。

safetyAttributes.categories

安全性屬性名稱。只有在啟用 includeSafetyAttributes 且輸出圖片通過負責的 AI 篩選器時,才會傳回。

safetyAttributes.scores

安全性屬性分數。只有在啟用 includeSafetyAttributes 且輸出圖片通過負責的 AI 濾鏡時,才會傳回。

Python

參數
prompt

string

這是必要旗標,圖片的文字提示。

number_of_images

int

這是必要旗標,要產生的圖片數量。預設值為 1。

seed

int

(非必要) 圖像生成的隨機種子。當 addWatermark 設為 true 時,就無法使用這個選項。

如果 enhancePrompt 設為 trueseed 就無法運作,因為 enhancePrompt 會產生新的提示,導致新圖片或其他圖片。

negative_prompt

string

(非必要) 說明不建議在生成的圖片中出現哪些內容。

imagen-3.0-generate-002 及後續型號不支援 negative_prompt

aspect_ratio

string

(非必要) 圖片的顯示比例。預設值為「1:1」。

output_mime_type

string

(非必要) 輸出內容應儲存為的圖片格式。支援的值如下:

  • "image/png":儲存為 PNG 圖片
  • "image/jpeg":儲存為 JPEG 圖片

預設值為 "image/png"

compression_quality

int

(非必要) 如果輸出 MIME 類型為 "image/jpeg",則壓縮等級。預設值為 75。

language

string

(非必要) 圖片文字提示的語言。支援的值如下:

  • auto:自動偵測。如果 Imagen 偵測到支援的語言,系統會將提示和選用的否定提示翻譯成英文。如果系統不支援所偵測到的語言,Imagin 會逐字使用輸入的文字,這可能會導致非預期的輸出結果。系統不會傳回錯誤代碼。
  • en:英文 (如果省略,則為預設值)
  • zhzh-CN:中文 (簡體)
  • zh-TW:繁體中文
  • hi:北印度文
  • ja:日文
  • ko: 韓文
  • pt:葡萄牙文
  • es: 西班牙文

預設值為 "auto"

output_gcs_uri

string

(非必要) 用於儲存產生圖片的 Cloud Storage URI。

add_watermark

bool

(非必要) 為產生的圖片加上浮水印。

預設值為 true,但下列型號除外:

  • imagegeneration@002
  • imagegeneration@005
safety_filter_level

string

(非必要) 為安全篩選功能新增篩選層級。支援的值如下:

  • "block_low_and_above":最強的篩選層級,會導致最嚴格的封鎖。已淘汰的值:"block_most"
  • "block_medium_and_above":封鎖部分有問題的提示和回應。已淘汰的值:"block_some"
  • "block_only_high":減少封鎖有問題的提示和回應。已淘汰的值:"block_few"
  • "block_none":封鎖極少數有問題的提示和回應。已淘汰的值:"block_fewest"

預設值為 "block_medium_and_above"

person_generation

string

(非必要) 允許模型產生人物。支援的值如下:

  • "dont_allow":封鎖人物產生
  • "allow_adult":產生成人,但不產生兒童
  • "allow_all":產生成人和兒童

預設值為 "allow_adult"

提高圖片解析度

REST

參數
mode

string

這是必要旗標,必須設為 "upscale",才能進行要求升級。

upscaleConfig

UpscaleConfig

這是必要旗標,UpscaleConfig 物件

outputOptions

OutputOptions

(非必要) 說明 outputOptions 物件中的輸出圖片格式。

storageUri

string

(非必要) 儲存產生圖片的 Cloud Storage URI。

升級設定物件

參數
upscaleConfig.upscaleFactor

string

這是必要旗標,向上調整因數。支援的值為 "x2""x4"

回應

REST 要求的回應主體。

參數
predictions

VisionGenerativeModelResult 物件陣列,每個要求的 sampleCount 對應一個。如果任何圖片遭到負責任 AI 技術篩除,除非 includeRaiReason 設為 true,否則不會納入。

範例

以下範例說明如何使用 Imagen 模型產生圖片。

生成圖像

REST

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • MODEL_VERSION:要使用的 imagegeneration 模型版本。可用的值:
    • 圖 3:
      • imagen-3.0-generate-002 (最新型號)
      • imagen-3.0-generate-001
      • imagen-3.0-fast-generate-001 - 低延遲模型版本。
    • 預設模型版本:
      • imagegeneration - 使用預設模型版本 v.006。最佳做法是,您應一律指定模型版本,尤其是在正式環境中。

    如要進一步瞭解模型版本和功能,請參閱「模型版本」。

  • LOCATION:專案所在的區域。例如 us-central1europe-west2asia-northeast3。如需可用區域的清單,請參閱「Vertex AI 生成式 AI 位置」。
  • TEXT_PROMPT:文字提示,可引導模型產生哪些圖片。這個欄位是產生和編輯時的必填欄位。
  • IMAGE_COUNT:產生的圖片數量。可接受的整數值:1 到 8 (imagegeneration@002)、1 到 4 (所有其他模型版本)。預設值:4。
  • 其他選用參數

    請根據用途使用下列選用變數。在 "parameters": {} 物件中新增下列部分或所有參數。這份清單僅列出部分常見的選用參數,如要進一步瞭解選用參數,請參閱「Imagen API 參考資料:產生圖片」。

    "parameters": {
      "sampleCount": IMAGE_COUNT,
      "addWatermark": ADD_WATERMARK,
      "aspectRatio": "ASPECT_RATIO",
      "enhancePrompt": ENABLE_PROMPT_REWRITING,
      "includeRaiReason": INCLUDE_RAI_REASON,
      "includeSafetyAttributes": INCLUDE_SAFETY_ATTRIBUTES,
      "outputOptions": {
        "mimeType": "MIME_TYPE",
        "compressionQuality": COMPRESSION_QUALITY
      },
      "personGeneration": "PERSON_SETTING",
      "safetySetting": "SAFETY_SETTING",
      "seed": SEED_NUMBER,
      "storageUri": "OUTPUT_STORAGE_URI"
    }
    
    • ADD_WATERMARK:布林值。(非必要) 是否為生成的圖片啟用浮水印。當欄位設為 true 時,生成的任何圖像都會含有數位 SynthID,可用於驗證浮水印圖像。如果省略這個欄位,系統會使用預設值 true;您必須將值設為 false 才能停用這項功能。只有在 seed 欄位設為 false 時,才能使用該欄位取得確定性的輸出內容。
    • ASPECT_RATIO:字串。(非必要) 控制顯示比例的產生模式參數。支援的比例值及其用途:
      • 1:1 (預設值,正方形)
      • 3:4 (廣告、社群媒體)
      • 4:3 (電視、攝影)
      • 16:9 (橫向)
      • 9:16 (直向)
    • ENABLE_PROMPT_REWRITING:布林值。(非必要) 這個參數可讓您使用以 LLM 為基礎的提示重寫功能,提供更能反映原始提示意圖的高畫質圖像。停用這項功能可能會影響圖片品質和提示遵循率。預設值:true
    • INCLUDE_RAI_REASON:布林值。(非必要) 是否要在包含遭封鎖輸入內容或輸出內容的回覆中啟用 負責任的 AI 技術篩選原因代碼。預設值:false
    • INCLUDE_SAFETY_ATTRIBUTES:布林值。(非必要) 是否要為未篩選的輸入內容和輸出內容回應中列出的安全屬性,啟用四捨五入的負責任 AI 分數。安全性屬性類別:"Death, Harm & Tragedy""Firearms & Weapons""Hate""Health""Illicit Drugs""Politics""Porn""Religion & Belief""Toxic""Violence""Vulgarity""War & Conflict"。預設值:false
    • MIME_TYPE:字串。(非必要) 圖片內容的 MIME 類型。可用的值:
      • image/jpeg
      • image/gif
      • image/png
      • image/webp
      • image/bmp
      • image/tiff
      • image/vnd.microsoft.icon
    • COMPRESSION_QUALITY:整數。(非必要) 僅適用於 JPEG 輸出檔案。模型為以 JPEG 檔案格式產生的圖片保留的細節程度。值:0100,數字越大,壓縮率越高。預設值:75
    • PERSON_SETTING:字串。(非必要) 安全性設定,用於控管模型允許產生的人物或臉孔類型。可用值:
      • allow_adult (預設):允許產生成人,但不產生名人。不允許在任何設定下生成名人。
      • dont_allow:停用生成圖像中包含人物或臉孔的功能。
    • SAFETY_SETTING:字串。(非必要) 用於控制產生圖像的安全性篩選器門檻。可用值:
      • block_low_and_above:最高安全門檻,會導致最多的產生圖像遭到篩除。先前的值:block_most
      • block_medium_and_above (預設):中等安全性門檻,可平衡篩選出可能有害和安全的內容。先前的值:block_some
      • block_only_high:安全門檻,可減少因安全篩選機制而遭封鎖的要求數量。這項設定可能會增加 Imagen 產生的不當內容。先前的值:block_few
    • SEED_NUMBER:整數。(非必要) 您提供的任何非負整數,可讓系統確定輸出圖片。提供相同的種子值一律會產生相同的輸出圖片。如果您使用的模型支援數位浮水印,請務必將 "addWatermark": false 設為使用這個欄位。可接受的整數值:12147483647
    • OUTPUT_STORAGE_URI:字串。(非必要) 用於儲存輸出圖片的 Cloud Storage 值區。如果未提供,回應中會傳回 base64 編碼的圖片位元組。範例值:gs://image-bucket/output/

HTTP 方法和網址:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict

JSON 要求主體:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "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/MODEL_VERSION: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/MODEL_VERSION:predict" | Select-Object -Expand Content
以下是含有 "sampleCount": 2 的示例回應。回應會傳回兩個預測物件,其中包含以 base64 編碼的產生圖片位元組。
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

如果您使用支援提示強化功能的模型,回應會包含額外的 prompt 欄位,其中包含用於產生的強化提示:

{
  "predictions": [
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_1",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_1"
    },
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_2",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_2"
    }
  ]
}

Python

在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Python。詳情請參閱 Vertex AI Python API 參考說明文件

如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

在這個範例中,您會在 ImageGenerationModel (@006 版本) 上呼叫 generate_images 方法,並在本機儲存產生的圖片。接著,您可以選擇在筆記本中使用 show() 方法,顯示產生的圖片。如要進一步瞭解模型版本和功能,請參閱「模型版本」。


import vertexai
from vertexai.preview.vision_models import ImageGenerationModel

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# output_file = "input-image.png"
# prompt = "" # The text prompt describing what you want to see.

vertexai.init(project=PROJECT_ID, location="us-central1")

model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")

images = model.generate_images(
    prompt=prompt,
    # Optional parameters
    number_of_images=1,
    language="en",
    # You can't use a seed value and watermark at the same time.
    # add_watermark=False,
    # seed=100,
    aspect_ratio="1:1",
    safety_filter_level="block_some",
    person_generation="allow_adult",
)

images[0].save(location=output_file, include_generation_parameters=False)

# Optional. View the generated image in a notebook.
# images[0].show()

print(f"Created output image using {len(images[0]._image_bytes)} bytes")
# Example response:
# Created output image using 1234567 bytes

提高圖片解析度

REST

使用任何要求資料之前,請先替換以下項目:

  • LOCATION:專案所在的區域。例如 us-central1europe-west2asia-northeast3。如需可用區域的清單,請參閱「Vertex AI 生成式 AI 位置」。
  • PROJECT_ID:您的 Google Cloud 專案 ID
  • B64_BASE_IMAGE:要編輯或放大的基礎圖片。圖片必須指定為base64 編碼的位元組字串。大小限制:10 MB。
  • IMAGE_SOURCE:您要編輯或放大的圖片的 Cloud Storage 位置。例如:gs://output-bucket/source-photos/photo.png
  • UPSCALE_FACTOR:選用。圖片要放大至的倍數。如果未指定,系統會根據輸入圖片的長邊和 sampleImageSize 決定升降尺係數。可用的值:x2x4

HTTP 方法和網址:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict

JSON 要求主體:

{
  "instances": [
    {
      "prompt": "",
      "image": {
        // use one of the following to specify the image to upscale
        "bytesBase64Encoded": "B64_BASE_IMAGE"
        "gcsUri": "IMAGE_SOURCE"
        // end of base image input options
      },
    }
  ],
  "parameters": {
    "sampleCount": 1,
    "mode": "upscale",
    "upscaleConfig": {
      "upscaleFactor": "UPSCALE_FACTOR"
    }
  }
}

如要傳送要求,請選擇以下其中一個選項:

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/imagegeneration@002: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/imagegeneration@002:predict" | Select-Object -Expand Content

您應該會收到如下的 JSON 回應:

{
  "predictions": [
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "iVBOR..[base64-encoded-upscaled-image]...YII="
    }
  ]
}

後續步驟