您可以使用 Imagen API 在幾秒內生成高品質圖像,並透過文字提示引導生成作業。您也可以使用 Imagen API 提升圖片解析度。
支援的型號
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 |
這是必要旗標,圖片的文字提示。 |
sampleCount |
這是必要旗標,要產生的圖片數量。預設值為 4。 |
seed |
(非必要) 圖像生成的隨機種子。當
如果 |
enhancePrompt |
(非必要) 這個選用參數可讓您使用以 LLM 為基礎的提示重寫功能,提供更能反映原始提示意圖的高畫質圖像。停用這項功能可能會影響圖片品質和提示遵循率。 |
negativePrompt |
(非必要) 說明在生成的圖片中不宜出現的內容。
|
aspectRatio |
(非必要) 圖片的顯示比例。預設值為「1:1」。 |
outputOptions |
(非必要) 說明 |
sampleImageStyle |
(非必要) 描述產生圖片的風格。支援的值如下:
|
personGeneration |
(非必要) 允許模型產生人物。支援的值如下:
預設值為 |
language |
(非必要) 與文字提示語言相對應的語言代碼。支援的值如下:
|
safetySetting |
(非必要) 為安全篩選功能新增篩選層級。支援的值如下:
預設值為 |
addWatermark |
(非必要) 為產生的圖片加上隱形浮水印。
預設值為
|
storageUri |
選用: 用於儲存產生圖片的 Cloud Storage URI。 |
輸出選項物件
outputOptions
物件會描述圖片輸出內容。
參數 | |
---|---|
outputOptions.mimeType |
選用: 輸出內容應儲存為的圖片格式。支援下列值:
預設值為 |
outputOptions.compressionQuality |
選用: 如果輸出類型為 |
回應
REST 要求的回應主體。
參數 | |
---|---|
predictions |
|
視覺生成式模型結果物件
模型結果的相關資訊。
參數 | |
---|---|
bytesBase64Encoded |
產生的 Base64 編碼圖片。如果輸出圖片未通過負責任 AI 篩選器,則不會顯示。 |
mimeType |
生成圖像的類型。如果輸出圖片未通過負責任 AI 篩選器,則不會顯示。 |
raiFilteredReason |
負責任的 AI 技術篩選器原因。只有在啟用 |
safetyAttributes.categories |
安全性屬性名稱。只有在啟用 |
safetyAttributes.scores |
安全性屬性分數。只有在啟用 |
Python
參數 | |
---|---|
prompt |
這是必要旗標,圖片的文字提示。 |
number_of_images |
這是必要旗標,要產生的圖片數量。預設值為 1。 |
seed |
(非必要) 圖像生成的隨機種子。當 如果 |
negative_prompt |
(非必要) 說明不建議在生成的圖片中出現哪些內容。
|
aspect_ratio |
(非必要) 圖片的顯示比例。預設值為「1:1」。 |
output_mime_type |
(非必要) 輸出內容應儲存為的圖片格式。支援的值如下:
預設值為 |
compression_quality |
(非必要) 如果輸出 MIME 類型為 |
language |
(非必要) 圖片文字提示的語言。支援的值如下:
預設值為 |
output_gcs_uri |
(非必要) 用於儲存產生圖片的 Cloud Storage URI。 |
add_watermark |
(非必要) 為產生的圖片加上浮水印。
預設值為
|
safety_filter_level |
(非必要) 為安全篩選功能新增篩選層級。支援的值如下:
預設值為 |
person_generation |
(非必要) 允許模型產生人物。支援的值如下:
預設值為 |
提高圖片解析度
REST
參數 | |
---|---|
mode |
這是必要旗標,必須設為 |
upscaleConfig |
這是必要旗標, |
outputOptions |
(非必要) 說明 |
storageUri |
(非必要) 儲存產生圖片的 Cloud Storage URI。 |
升級設定物件
參數 | |
---|---|
upscaleConfig.upscaleFactor |
這是必要旗標,向上調整因數。支援的值為 |
回應
REST 要求的回應主體。
參數 | |
---|---|
predictions |
|
範例
以下範例說明如何使用 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。最佳做法是,您應一律指定模型版本,尤其是在正式環境中。
如要進一步瞭解模型版本和功能,請參閱「模型版本」。
-
圖 3:
- LOCATION:專案所在的區域。例如
us-central1
、europe-west2
或asia-northeast3
。如需可用區域的清單,請參閱「Vertex AI 生成式 AI 位置」。 - TEXT_PROMPT:文字提示,可引導模型產生哪些圖片。這個欄位是產生和編輯時的必填欄位。
- IMAGE_COUNT:產生的圖片數量。可接受的整數值:1 到 8 (
imagegeneration@002
)、1 到 4 (所有其他模型版本)。預設值:4。 - 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 檔案格式產生的圖片保留的細節程度。值:
0
到100
,數字越大,壓縮率越高。預設值: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
設為使用這個欄位。可接受的整數值:1
到2147483647
。 - OUTPUT_STORAGE_URI:字串。(非必要) 用於儲存輸出圖片的 Cloud Storage 值區。如果未提供,回應中會傳回 base64 編碼的圖片位元組。範例值:
gs://image-bucket/output/
。
其他選用參數
請根據用途使用下列選用變數。在 "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" }
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()
方法,顯示產生的圖片。如要進一步瞭解模型版本和功能,請參閱「模型版本」。
提高圖片解析度
REST
使用任何要求資料之前,請先替換以下項目:
- LOCATION:專案所在的區域。例如
us-central1
、europe-west2
或asia-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
決定升降尺係數。可用的值:x2
或x4
。
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=" } ] }
後續步驟
- 詳情請參閱「Vertex AI 的 Imagen 總覽」和「使用文字提示生成圖片」。